AWS Database Speciality 対策1

またAWS認定専門知識受けようと思ってます。

今回は「Database Specialty」です。

RDS、Auroraは業務で使ってるものの、やっぱりエンジンごとの細かいパラメータとかまで突っ込まれるのでなかなか難しい。

今回は初心に帰ってDynamoDBのハンズオンを行いました。

ただ、GUIだと瞬殺なんですがCLIだとどうなんだ?というところが疑問に思ってやってみたら意外とつまりました。

せっかくなのでブログ化しておきます。

参考URL

https://aws.amazon.com/jp/getting-started/hands-on/create-nosql-table/?nc1=h_ls

検索だと何故か意外と引っ掛からなかったですね。

CLIコマンド

DB作成

プロビジョンじゃなくてオンデマンドで作ってます。

オプション名が名称と違うのややこしいですね…

aws dynamodb create-table \
--attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
--table-name 'Music' \
--key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
--billing-mode "PAY_PER_REQUEST" \
--table-class "STANDARD"

Item作成

せっかくなので一括処理。

JSONの階層が若干深いので少しみづらい。

{
    "Music": [
        {
            "PutRequest": {
                "Item": {
                    "Artist": {
                        "S": "No One You Know"
                    },
                    "SongTitle": {
                        "S": "Call Me Today"
                    }
                }
            }
        },
        {
            "PutRequest": {
                "Item": {
                    "Artist": {
                        "S": "No One You Know"
                    },
                    "SongTitle": {
                        "S": "My Dog Spot"
                    }
                }
            }
        },
        {
            "PutRequest": {
                "Item": {
                    "Artist": {
                        "S": "No One You Know"
                    },
                    "SongTitle": {
                        "S": "Somewhere Down The Road"
                    }
                }
            }
        },
        {
            "PutRequest": {
                "Item": {
                    "Artist": {
                        "S": "The Acme Band"
                    },
                    "SongTitle": {
                        "S": "Still in Love"
                    }
                }
            }
        },
        {
            "PutRequest": {
                "Item": {
                    "Artist": {
                        "S": "The Acme Band"
                    },
                    "SongTitle": {
                        "S": "Look Out, World"
                    }
                }
            }
        }
    ]
}

クエリ1

一旦パーティションキーを基にした単純なクエリ。

CLIだとこういう書き方しないといけないんですね。

aws dynamodb query \
--table-name "Music" \
--key-condition-expression "Artist = :v1)" \
--expression-attribute-values file://test.json
{
    ":v1": {"S": "The Acme Band"}
}

クエリ2

パーティションキーを指定しつつ、ソートキーを基に頭文字でソート。

複数条件書けることに気づかず、filterとかかけようとしてだいぶ苦戦しました。。

でもこれはやっといてよかった。

aws dynamodb query \
--table-name "Music" \
--key-condition-expression "Artist = :v1 AND begins_with ( SongTitle, :v2 )" \
--expression-attribute-values file://test.json
{
    ":v1": {"S": "The Acme Band"},
    ":v2": {"S": "S"}
}

まとめ

意外とCLIに関する記事はWebでもなかったので、どなたかの参考になれば幸いです。

まあ、業務で使うならCLIだと制約多いので素直にSDK使ったほうが良さそうだなと思いました。

おすすめの記事