4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudShellでDynamoDB localが使えるようになったので試してみた

Last updated at Posted at 2025-05-21

はじめに

5/19(日本では5/20)に「DynamoDB local is now accessible on AWS CloudShell」というタイトルでアップデートがありました。
こちらはタイトルの通りCloudShell上でDynamoDB Localが使えるようになったとのことで、ものは試しで早速触ってみました。

DynamoDB localとは

そもそもDynamoDB localってなんやねん、という話から。AWSではNoSQLデータベースサービスであるDynamoDBが利用できますが、そのDynamoDBをローカル環境(個人PC上など)にDynamoDBを模擬したものを構築することができる優れものです。

共用で使ってる開発環境のDynamoDBを触りたくないけど、作っているアプリケーションのテストはしたい...みたいな時にローカルで動作確認できる点が良いですね。ローカルで動くものなので、コストがかからないのもメリットです。

CloudShellで試す

以下、デフォルトVPCのCloudShellで実施しています。

というわけでCloudShellからDynamoDB localを試してみます。
CloudShellを立ち上げたら、アップデートの記事にも記載がある通り、--endpoint-urlにlocalhost:8000を指定することで接続ができます。

記事によると、

You can now start DynamoDB local just by using dynamodb-local alias in CloudShell

とあるので、aliasコマンドで確認してみました。

スクリーンショット 2025-05-20 22.43.35.png

一番上にある通り、dynamodb-localを叩くだけで起動ができそうです。

ちなみに、私のAWSアカウントでは5/20現在で東京リージョンにエイリアスは設定されていませんでした。バージニア北部しか勝たん。

DynamoDB local自体のjarファイルはあるので、起動自体はできそうです。

スクリーンショット 2025-05-20 22.47.25.png

dynamodb-localで起動すると、この状態になりました。

スクリーンショット 2025-05-20 22.53.57.png

コマンドを受け付ない(フォアグラウンドで立ち上がったままの)ようなので、別タブを立ち上げます。あとはaws cliコマンドを使ってDynamoDB localを操作します。(--endpoint-urlを忘れずに!)

今はDynamoDBテーブルが存在しないのでlist-tablesは空です。
スクリーンショット 2025-05-20 22.56.16.png

テーブルを作成してみます。

~ $ aws dynamodb create-table --table-name Users --attribute-definitions AttributeName=UserId,AttributeType=S --key-schema AttributeName=UserId,KeyType=HASH --billing-mode PAY_PER_REQUEST --endpoint-url http://localhost:8000
{
    "TableDescription": {
        "AttributeDefinitions": [
            {
                "AttributeName": "UserId",
                "AttributeType": "S"
            }
        ],
        "TableName": "Users",
        "KeySchema": [
            {
                "AttributeName": "UserId",
                "KeyType": "HASH"
            }
        ],
        "TableStatus": "ACTIVE",
        "CreationDateTime": "2025-05-20T14:01:09.795000+00:00",
        "ProvisionedThroughput": {
            "LastIncreaseDateTime": "1970-01-01T00:00:00+00:00",
            "LastDecreaseDateTime": "1970-01-01T00:00:00+00:00",
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 0,
            "WriteCapacityUnits": 0
        },
        "TableSizeBytes": 0,
        "ItemCount": 0,
        "TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/Users",
        "BillingModeSummary": {
            "BillingMode": "PAY_PER_REQUEST",
            "LastUpdateToPayPerRequestDateTime": "2025-05-20T14:01:09.795000+00:00"
        },
        "DeletionProtectionEnabled": false
    }
}

AWS CLIを使うことでテーブルが作成できました!せっかくなので、作ったテーブルに項目を追加するPythonコードを作成してみました。

main.py
import boto3

dynamodb = boto3.resource('dynamodb', endpoint_url='http://localhost:8000')

table_name = 'Users'
table = dynamodb.Table(table_name)

item = {
    'UserId': '1',
    'Name': 'Ryotaro Harada'
}   

response = table.put_item(Item=item)

このコードを実行後、get-itemをしてみました。

~ $ python3 main.py 
~ $ aws dynamodb get-item --table-name Users --key '{ "UserId": { "S": "1" } }' --endpoint-url http://localhost:8000
{
    "Item": {
        "UserId": {
            "S": "1"
        },
        "Name": {
            "S": "Ryotaro Harada"
        }
    }
}

ちゃんと処理されていそうですね!

--endpoint-urlを指定しないと、AWS上のリソースを操作をしてしまうので、同じテーブル名が存在する場合は注意が必要です。

まとめ

今回は簡単にDynamoDB localが使えるようになったCloudShellの紹介でした!

参考

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?