やっつけ不定記

好きなときに好きなことをちゃっちゃと書いてます

AWSの基礎を学ぼう 温故知新編 基本サービスをみんなで触ってみる DynamoDB

表記イベントに参加していました。
https://awsbasics.connpass.com/event/225581/

通常は月曜と土曜に開催され、特に土曜日は新サービス系のハンズオンなのですが、
今回は試しにメジャーなサービスをハンズオンするという趣向です。
もともと歩留まりの悪さがこのイベント自体の課題となっており、
温故知新編は歩留まり50%を切ったら次回開催がないという条件付きです
(50%超えたようなので、次回はある模様)。

内容はいつもの土曜日と少し違って、Googleフォームの無記名アンケートからスタート。
DynamoDBは情報が世の中に氾濫しすぎてて、実際に利用者は何が届いてて
何が届いていないのかを把握したいとのこと。
個人的にメジャー系の公式ハンズオンが減ってるなと薄ら思っていたのですが、
やっぱりみんなそうだったのね。

本編は座学の後、
https://aws.amazon.com/jp/getting-started/hands-on/create-manage-nonrelational-database-dynamodb/
に従ってハンズオンを進めて、最後にLTという流れでした。

こちらのスペックは、DynamoDBは月曜日の講義である程度見聞きしている程度で、
RDS,Aurora,DynamoDBの違いがやっとわかり始めたかどうかというところ。
以下、いつも通り技術的な詳細は誰かが書いてくれると信じて、自分はわからんなりに
質疑応答とハンズオン中の留意点で拾えた分をメモしてみます。

[座学]

  • DynamoDBは費用の見積が難しい
    RDSやEC2はCPUやメモリで課金されるのに対して、DynamoDBは割り当てられる読み書きのキャパシティに応じて課金される。
    →オンデマンドにするとよい
  • NoSQLはRDB以外すべてを指し、明確な定義はないため、NoSQLの話題を扱うときはどの文脈(キーバリューことなのかなど)で話がなされているのかを識別する必要がある
  • インデックス必須。これがないと検索対象になってくれない。ただし、インデックスを作っただけでキャパシティを消費する。なんでもかんでもインデックス貼ればいいもんでもない

[ハンズオン]

  • リージョンはバージニア北部前提
  • 環境構築時のBoto3インストールはpipではなくpip3コマンド読み替えること
  • create_table.pyの実行には10分弱程度の時間がかかる(多くの人が同時に実施したため?)
  • update_item.pyの冒頭に下記を入れること
import boto3
dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
table = dynamodb.Table('Books')

[LT]

  • DynamoDBとLambdaの話
    DynamoDB DataMapper※を使えばAPIの制限(putが25件、getが100件)を超えたときの
    リトライ処理を楽に書けそうとのこと。

※これのことっぽい
https://awslabs.github.io/dynamodb-data-mapper-js/packages/dynamodb-data-mapper/

[質疑応答]

  • プロビジョンドにするといいケースってどんなときなのでしょうか?
     →あまりない。大規模にDynamoDBを使っているとオンデマンドが
      追い付かなくなることがある(サポートにアドバイスを求めるべし)
  • 25件のリミットというのはハードリミットで引き上げ不可なのでしょうか
     →あかんぽい

[その他]
https://www.slideshare.net/AmazonWebServicesJapan/20170809-black-belt-dynamodb