AWS CLIを利用して、DynamoDBのテーブル(ハッシュキーのみ)を作成してみます。
前提条件
DynamoDBへの権限
DynamoDBに対してフル権限があること。
AWS CLIのバージョン
以下のバージョンで動作確認済
- AWS CLI 1.11.14
コマンド
aws --version
結果(例):
aws-cli/1.11.34 Python/2.7.10 Darwin/15.6.0 botocore/1.4.91
バージョンが古い場合は最新版に更新しましょう。
コマンド
sudo -H pip install -U awscli
テーブルの設計
テーブル名:
microservice-http
プライマリキーのタイプ:
ハッシュ
ハッシュ属性の名前と型:
属性名: Name (型: String)
範囲属性の名前と型:
(ハッシュキーモデルなので無し)
プロビジョニングされたスループット:
読み込みキャパシティーユニット: 5
書き込みキャパシティーユニット: 5
- 準備
=======
0.1. リージョンの決定
変数の設定
export AWS_DEFAULT_REGION='ap-northeast-1'
0.2. プロファイルの確認
プロファイルが想定のものになっていることを確認します。
変数の確認
aws configure list
結果(例):
Name Value Type Location
---- ----- ---- --------
profile dynamodbFull-prjz-mbpr13 env AWS_DEFAULT_PROFILE
access_key ****************XXXX shared-credentials-file
secret_key ****************XXXX shared-credentials-file
region ap-northeast-1 env AWS_DEFAULT_REGION
- 事前作業
===========
1.1. DynamoDBテーブル名の指定
コマンド
DYNAMO_TABLE_NAME='microservice-http'
1.2. ハッシュキーの指定
コマンド(例):
DYNAMO_HASH_NAME='Name'
DYNAMO_HASH_TYPE='S'
1.3. プロビジョンドスループットの指定
コマンド(例):
DYNAMO_READ_UNIT='5'
DYNAMO_WRITE_UNIT='5'
- テーブルの作成
=================
変数の設定
DYNAMO_ATTRIBUTE="AttributeName=${DYNAMO_HASH_NAME},AttributeType=${DYNAMO_HASH_TYPE}"
DYNAMO_KEY_SCHEMA="AttributeName=${DYNAMO_HASH_NAME},KeyType=HASH"
DYNAMO_PROV_THPUT="ReadCapacityUnits=${DYNAMO_READ_UNIT},WriteCapacityUnits=${DYNAMO_WRITE_UNIT}"
変数の確認
cat << ETX
DYNAMO_TABLE_NAME: ${DYNAMO_TABLE_NAME}
DYNAMO_ATTRIBUTE: ${DYNAMO_ATTRIBUTE}
DYNAMO_KEY_SCHEMA: ${DYNAMO_KEY_SCHEMA}
DYNAMO_PROV_THPUT: ${DYNAMO_PROV_THPUT}
ETX
コマンド
aws dynamodb create-table \
--table-name ${DYNAMO_TABLE_NAME} \
--attribute-definitions ${DYNAMO_ATTRIBUTE} \
--key-schema ${DYNAMO_KEY_SCHEMA} \
--provisioned-throughput ${DYNAMO_PROV_THPUT}
結果(例):
{
"TableDescription": {
"TableArn": "arn:aws:dynamodb:ap-northeast-1:XXXXXXXXXXXX:table/microservice-http",
"AttributeDefinitions": [
{
"AttributeName": "Name",
"AttributeType": "S"
}
],
"ProvisionedThroughput": {
"NumberOfDecreasesToday": 0,
"WriteCapacityUnits": 5,
"ReadCapacityUnits": 5
},
"TableSizeBytes": 0,
"TableName": "microservice-http",
"TableStatus": "CREATING",
"KeySchema": [
{
"KeyType": "HASH",
"AttributeName": "Name"
}
],
"ItemCount": 0,
"CreationDateTime": 1483187510.723
}
}
- 事後作業
===========
変数の設定
DYNAMO_TABLE_STATUS=$( \
aws dynamodb describe-table \
--table-name ${DYNAMO_TABLE_NAME} \
--query 'Table.TableStatus' \
--output text \
) \
&& echo ${DYNAMO_TABLE_STATUS}
結果(例):
ACTIVE
コマンド
aws dynamodb describe-table \
--table-name ${DYNAMO_TABLE_NAME}
結果(例):
{
"Table": {
"TableArn": "arn:aws:dynamodb:ap-northeast-1:XXXXXXXXXXXX:table/microservice-http",
"AttributeDefinitions": [
{
"AttributeName": "Name",
"AttributeType": "S"
}
],
"ProvisionedThroughput": {
"NumberOfDecreasesToday": 0,
"WriteCapacityUnits": 5,
"ReadCapacityUnits": 5
},
"TableSizeBytes": 0,
"TableName": "microservice-http",
"TableStatus": "ACTIVE",
"KeySchema": [
{
"KeyType": "HASH",
"AttributeName": "Name"
}
],
"ItemCount": 0,
"CreationDateTime": 1483187510.723
}
}