Amazon DynamoDB 詳しく設定を見てみた

#1.DynamoDB テーブルの作成#

- テーブル名:任意
- プライマリキー:ID(数値）、部署名(文字列)で入力します。

*RDSなどの場合は、データベースを作成していきますが、DynamoDBは、テーブルから作成していきます。*
*ID(数値）がハッシュキー、部署名(文字列)がレンジキーです。*
![スクリーンショット 2019-05-10 19.10.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/6a465ff0-8a02-158a-d4d7-bcce240251e8.png)


- デフォルト設定の使用:チェックを外す

*デフォルト設定を使用することも可能ですが、今回は画面を確認を確認するためにデフォルト設定にはしないでいきます。*
![スクリーンショット 2019-05-10 19.14.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/03062725-be48-9a9a-55e1-16009ef1c8eb.png)


- セカンダリインデックス:今回は設定しません。

*LSIを使うときに入力します。*
![スクリーンショット 2019-05-10 19.18.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/f0719def-3c0e-635a-d35a-68cf48ab4ed1.png)


- 読み込み/書き込みキャパシティーモード:プロビジョンド

*「プロビジョンド」にすると、事前にこのぐらいのキャパシティを使うよと設定してあげるのでわかりやすい。*
*「オンデマンド」にすると、使った分だけ料金を使うということになる。*
![スクリーンショット 2019-05-10 19.23.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/acb4322f-d63f-803b-262a-29602443a20a.png)


- プロビジョニングされたキャパシティ:デフォルト
- Auto Scaling:デフォルト

*デフォルトでは、読み込みキャパシティーユニット/書き込みキャパシティーユニットは5です。*
*Auto Scaling が設定されていて、キャパシティの使用量が超えた場合は、ユニットを増加することができます。
![スクリーンショット 2019-05-10 19.29.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/3be4c345-5c3b-8b07-6242-64eea7c0a407.png)

- 保管時の暗号化:DEFAULT

![スクリーンショット 2019-05-10 19.29.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/2f4af7d5-d18f-19a6-b842-15ff2722a5fe.png)


#2.項目の作成#

「Append」-「String」で

- 姓
- 名

の項目を追加します。
![スクリーンショット 2019-05-10 19.36.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/ee0d63c2-4f27-2283-3968-1d654fd76cd1.png)

Value を追加していきます。
![スクリーンショット 2019-05-10 19.37.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/51040e60-2f40-771a-eef7-2818e74395a8.png)

↓のように作成される。
![スクリーンショット 2019-05-10 19.41.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/9f911096-2bfd-fc2f-e2b4-496a5e929616.png)


#3.その他の機能#

##1 メトリックス##
キャパシティーなどのメトリックを表示することが可能です。
CloudWatch メトリクスに表示することもできます。

##2 アラーム##
CloudWatch にアラームを鳴らすことが可能です。

##3 キャパシティー##
「1.DynamoDBの作成」のキャパシティの設定で行ったものを再設定できます。

##4 インデックス##
GSIを設定することができます。
LSIはテーブル作成時にできますが、GSIはここで作成する必要があります。

##5 グローバルテーブル##
複数のリージョンでテーブルを共有するといったことができます。
利用するためには、DynamoDB Streams を有効する必要があります。
なぜかというと、ストリームして、データが変更されたレブリケーションするといったことをグローバルテーブルで行うので、ストリームを有効化する必要があります。

実際にやって見ます。
グローバルテーブルを作成するためには、空のテーブルでないとできません。
そのため、項目にデータがある場合は削除してください。

「リージョンの追加」から今作成しているリージョン以外のものを指定し追加してみる。
![スクリーンショット 2019-05-10 19.58.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/0f81867b-c3c9-60e5-e9a5-e05295c4a92a.png)

これで、リージョン間を跨いで同じテーブルが共有されているということになる。


##6 バックアップ##
自動（ポイントインタイムリカバリ）でも手動（オンデマンドバックアップおよび復元）でもバックアップを作成できます。


##7 トリガー##
DynamoDB トリガーは、DynamoDB ストリームを Lambda 関数に接続します。
テーブル内の項目が変更されるたびに、新しいストリームレコードが書き込まれ、その後 Lambda 関数がトリガーされて実行されます。 


##8 アクセスコントロール##
アクセスコントロールリストを使って、アクセス制限をかけることも可能です。


#4 DAX#
キャッシュを使った高速アクセスを実現します。

##1 クラスタの作成##

- クラスター名:任意
- ノードのタイプ:dax.r4.large 
- クラスターサイズ:3
- - 暗号化:暗号化の有効化にチェック

![スクリーンショット 2019-05-10 20.14.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/c2fc2015-eb61-b06b-dfda-dfdc2dd4cf07.png)

- DynamoDB アクセスのための IAM サービスロール:新規作成
- IAM ロール名:任意
- IAM ロールポリシー:ポリシーなし

![スクリーンショット 2019-05-10 20.14.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/53340789-6e0a-1ed3-5135-a9b2a8800ac5.png)

- サブネットグループ:新規作成
- 名前:任意
- 説明:任意
- VPC ID:任意
- サブネット:任意

![スクリーンショット 2019-05-10 20.17.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/7183756a-ddbf-30e6-92df-c55ef8245c2e.png)

- セキュリティグループ:default

![スクリーンショット 2019-05-10 20.17.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/a77555ef-dba1-d391-3254-4f2b96d1b2f4.png)
 
- クラスター設定:デフォルト設定の使用にチェック

![スクリーンショット 2019-05-10 20.20.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/895a2b55-1845-c052-2098-6014cb188a84.png)