AWS DYNAMODBローカル環境で使用(2)


AWS DYNAMODBローカル環境での使用(1)-ローカル環境設定を参照
前回の記事では、ローカルで利用可能なDynamoDBを構築し、CURL通信を使用してCRUDを実行するAWS CLIを使用しました.
まず、私の場合は以下の手順で行います.
1.Postmanを使用したcURLコードの生成
2.生成されたコード.shファイルで実行(端末)
ではPostmanでどうやって作ったのか見てみましょう

1.Postman設定



上のスクリーンショットから、コアはHeaders宣言の認証部分とターゲットであることがわかります.
X-Amz-Targetの内容については、正式な書類を確認すれば、どのように入力するかを確認できると思いますが、Authorization認証なら公式文書を確認しても曖昧な点が多いです.ローカルではCremential={a}/{b}/{c}と同じ形でデータを入れるだけで済むからかもしれません.実際のDynamodBにアクセスするには、IAMのアクセスキーを使って認証する必要があります.この部分はローカル環境なので、問題のないスキップと見なしてスキップしましょう.
Bodyはjsonによって書かれています
{
    "AttributeDefinitions": [
        {
            "AttributeName": "id",
            "AttributeType": "S"
        },
        {
            "AttributeName": "mentionId",
            "AttributeType": "N"
        },
        {
            "AttributeName": "createdAt",
            "AttributeType": "S"
        }
    ],
    "TableName": "Comment5",
    "KeySchema": [
        {
            "AttributeName": "id",
            "KeyType": "HASH"
        }
    ],
    "GlobalSecondaryIndexes": [
        {
            "IndexName": "byMentionId",
            "KeySchema": [
                {
                    "AttributeName": "mentionId",
                    "KeyType": "HASH"
                },
                {
                    "AttributeName": "createdAt",
                    "KeyType": "RANGE"
                }
            ],
            "Projection": {
                "ProjectionType": "ALL"
            },
            "ProvisionedThroughput": {
                "ReadCapacityUnits": 1,
                "WriteCapacityUnits": 1
            }
        }
    ],
    "ProvisionedThroughput": {
        "ReadCapacityUnits": 1,
        "WriteCapacityUnits": 1
    }
}
書き終わったら右側のコードを開くと、完成したcURLコードが表示されます.

2.Shellスクリプトの作成と実行


上で生成したコードをshファイルにコピーすればいいです.Shellスクリプト宣言#!/bin/bash.
作成
  • Table
  • #!/bin/bash
    
    curl --location --request POST 'http://localhost:8000' \
    --header 'Authorization: AWS4-HMAC-SHA256 Credential=key1/20190526/ap-northeast-2' \
    --header 'X-Amz-Target: DynamoDB_20120810.CreateTable' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "TableName": "Comment",
        "AttributeDefinitions": [
            {
                "AttributeName": "id",
                "AttributeType": "S"
            },
            {
                "AttributeName": "mentionId",
                "AttributeType": "N"
            },
            {
                "AttributeName": "createdAt",
                "AttributeType": "S"
            }
        ],
        "KeySchema": [
            {
                "AttributeName": "id",
                "KeyType": "HASH"
            }
        ],
        "GlobalSecondaryIndexes": [
            {
                "IndexName": "byMentionId",
                "KeySchema": [
                    {
                        "AttributeName": "mentionId",
                        "KeyType": "HASH"
                    },
                    {
                        "AttributeName": "createdAt",
                        "KeyType": "RANGE"
                    }
                ],
                "Projection": {
                    "ProjectionType": "ALL"
                },
                "ProvisionedThroughput": {
                    "ReadCapacityUnits": 1,
                    "WriteCapacityUnits": 1
                }
            }
        ],
        "ProvisionedThroughput": {
            "ReadCapacityUnits": 1,
            "WriteCapacityUnits": 1
        }
    }'
    作成および変更
  • Item
  • #!/bin/bash
    
    curl --location --request POST 'http://localhost:8000' \
    --header 'Authorization: AWS4-HMAC-SHA256 Credential=key1/20190526/ap-northeast-2' \
    --header 'X-Amz-Target: DynamoDB_20120810.PutItem' \
    --header 'Content-Type: application/json' \
    --data-raw '
        {
            "TableName": "Comment",
            "Item": {
                "id": {"S": "1"},
                "name": {"S": "testName"},
                "mentionId": {"N": "1"},
                "content": {"S": "testContent"},
                "createdAt": {"S": "2022-03-24"}
            }
        }'
  • Itemクエリ
  • #!/bin/bash
    
    curl --location --request POST 'http://localhost:8000' \
    --header 'Authorization: AWS4-HMAC-SHA256 Credential=key1/20190526/ap-northeast-2' \
    --header 'X-Amz-Target: DynamoDB_20120810.GetItem' \
    --header 'Content-Type: application/json' \
    --data-raw '
        {
            "TableName": "Comment",
            "Key": {
                "id": {"S": "1"}
            }
        }'
    削除
  • Item
  • #!/bin/bash
    
    curl --location --request POST 'http://localhost:8000' \
    --header 'Authorization: AWS4-HMAC-SHA256 Credential=key1/20190526/ap-northeast-2' \
    --header 'X-Amz-Target: DynamoDB_20120810.DeleteItem' \
    --header 'Content-Type: application/json' \
    --data-raw '
        {
            "TableName": "Comment",
            "Key": {
                "id": {"S": "1"}
            }
        }'
    削除
  • Table
  • #!/bin/bash
    
    curl --location --request POST 'http://localhost:8000' \
    --header 'Authorization: AWS4-HMAC-SHA256 Credential=key1/20190526/ap-northeast-2' \
    --header 'X-Amz-Target: DynamoDB_20120810.DeleteTable' \
    --header 'Content-Type: application/json' \
    --data-raw '
        {
            "TableName": "Comment"
        }'
    cURLでdynamodbにアクセスするのはここまでです.Springbootで使われている部分をまとめてみましょう.