LoginSignup
0
0

More than 3 years have passed since last update.

DynamoDB Local で pythonを使っての採番処理の作成 準備編

Last updated at Posted at 2020-08-10

概要

pythonの採番処理を作成するときにDynamoDBを使うときに開発中に実際のDynamoDBを使うのは・・・という場合DynamoDB Local を使っての開発すると思うのでその方法をまとめていきます。
まずは準備としてdockerのコンテナを作ってテーブルの作成まで行います。

事前準備

  • dockerをまず導入します。windows Homeの場合は Docker Quickstart Terminal を使います。
  • aws cli もインストールします。
    • aws cli インストール後 aws config で設定を行います。region , aws_access_key_id は設定してください。後続の処理でコマンドが実行できないため。値は適当でも大丈夫です。

docker fileの設定

  • データを永続化させるため こちらを参考にdocker-compose.yml,Dockerfile を作成します。実際に使ったのは以下のものです。

  • docker-compose.yml

version: '3.7'

services:
  dynamodb:
    build: ./dynamodb
    volumes:
      - dynamodb_data:/home/dynamodblocal/data
    ports:
      - 8000:8000
    command: -jar DynamoDBLocal.jar -dbPath ./data

volumes:
  dynamodb_data:

  • Dockerfile
FROM amazon/dynamodb-local

WORKDIR /home/dynamodblocal

# UID=1000 → DynamoDB Local の実行ユーザ
RUN mkdir data && chown -R 1000 data
  • docker-compose up のコマンドを使うとコンテナが起動します。 image.png

テーブルの作成

  • こちらを参照にまずスケルトンJSONを作成します。以下のコマンドを実行します。
    • aws dynamodb create-table --generate-cli-skeleton > skel_dynamodb_create-table.json
  • jsonファイルにテーブル定義を作成します以下のように作成しました。
{
    "AttributeDefinitions": [
        {
            "AttributeName": "sequence_key",
            "AttributeType": "S"
        }
    ],
    "TableName": "sequences",
    "KeySchema": [
        {
            "AttributeName": "sequence_key",
            "KeyType": "HASH"
        }
    ],
    "BillingMode": "PROVISIONED",
    "ProvisionedThroughput": {
        "ReadCapacityUnits": 1,
        "WriteCapacityUnits": 1
    }
}
  • 以下のコマンドでテーブルを作成します。

    • aws dynamodb create-table --cli-input-json file://skel_dynamodb_create-table.json --endpoint-url http://localhost:8000
      • Docker Quickstart Terminal の場合はlocalhostをIPに変えてください。 image.png
  • コンテナのほうでアクセス権がない場合は以下のようなエラーログが出るので注意
    image.png

  • テーブルが作成されたかの確認は DynamoDB shell から行えます。

  • http://localhost:8000/shell/ にアクセスすることでブラウザ上で確認ができます。

    • Docker Quickstart Terminal の場合はlocalhostをIPに変えてください。
    • CTRL+スペースキーで補完ができるので適当にやってみるといいかも
  • 下記のコマンドで作成されているテーブルの確認ができます。テーブルを作成したときのリージョンとAWS Access key を合わせないとみることができないので設定を忘れずに。

    • リージョンを ap-northeast-1 に設定していますがこちらはawsconfigでの設定値に合わせてください。
    • 右上の方の歯車のアイコンでaws_access_key_id を設定してください。
dynamodb.config.update({
 region: "ap-northeast-1"
})
dynamodb.listTables().eachPage(function(err, data) {
    if (err) {
        ppJson(err); // an error occurred
    } else if (data) {
        ppJson(data);
    }
});
0
0
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
0
0