TypeScript で AWS DynamoDB のテーブル作成からデータ登録までを行う

1. AWS に登録する

まずは AWS に登録しましょう。無料枠が結構ありますので試しに使ってみるというのもいいと思います。

https://aws.amazon.com/jp/

2. IAM でDynamoDB にアクセスできるユーザーを作成する

IAM は Identity and Access Management の略で、AWS のサービスに接続するためのユーザーやアクセス権限を設定するためのものです。

今回は dynamouser というユーザーを作成します。SDKからのアクセスが必要なので、「プログラムによるアクセス」にチェックを入れます。また、コンソールのアクセスは不要なので、こちらはチェックを外しています。

権限は AmazonDynamoDBFullAccess にしました。実際の運用でフルアクセス権限を付与するのはあまりよくないと思いますが、今回は動作確認ですのでフルアクセス権限のユーザーを作成します。

ユーザーの作成が完了したら、アクセスキーIDとシークレットアクセスキーが表示されます。SDKからの接続時に使用するので、メモしておくか、CSVファイルをダウンロードしておきます。

3. node モジュールの aws-sdk をインストールする

サクッとDynamoDB を使いたいので、Javascript の aws-sdk をインストールします。このコマンドでインストールもサクサク終わります。

npm i aws-sdk

AWS Javascript SDK の公式ドキュメントは以下にあります。

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/

4. DynamoDB にテーブルを作成する

    // create_dynamo_db.ts
    import * as AWS from "aws-sdk"
    AWS.config.update({
        region: "ap-northeast-1",
        accessKeyId: "アクセスキーID",
        secretAccessKey: "シークレットアクセスキー"
    })
    let dynamodb = new AWS.DynamoDB();
    let params : any = {
        TableName: "SampleTable1",
        KeySchema: [
            { AttributeName: "id", KeyType: "HASH" }
        ],
        AttributeDefinitions: [
            { AttributeName: "id", AttributeType: "N" }
        ],
        ProvisionedThroughput: {
            ReadCapacityUnits: 5,
            WriteCapacityUnits: 5
        }
    };
    dynamodb.createTable(params, (err, data) => {
        if(err) {
            console.log(Unable to create table: ${JSON.stringify(err, undefined, 2)})
        }else {
            console.log(Created table: ${JSON.stringify(data, undefined, 2)})
        }
    })
  • AWS.config.update に入力する情報はさきほどIAMでユーザー登録した情報です。このユーザーでDynamoDBにアクセスしていきます。regionは基本的に東京(ap-northeast-1)だと思いますが、違う場所に作成している場合は以下からregisonを調べることができます。

https://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html

  • TableName に今回作成するDynamoDB のテーブル名を入力します。
  • KeySchema は、DynamoDBのパーティションキーやソートキーを定義するものです。今回はキー項目はidだけですので、AttributeNameidだけになります。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html

  • AttributeDefinitions は属性定義です。idという項目が数値なのか文字列なのか、などを定義します。N は数値型です。詳しくは以下のページに記載されています。

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBMapper.DataTypes.html

AWSのDynamoDBのページを開いて、以下のように表示されていたら成功です。

5. DynamoDB にデータを登録する

    import * as AWS from "aws-sdk"
    AWS.config.update({
        region: "ap-northeast-1",
        accessKeyId: "アクセスキーID",
        secretAccessKey: "シークレットアクセスキー"
    })
    var docClient = new AWS.DynamoDB.DocumentClient();
    let params : any = {
        TableName: "SampleTable1",
        Item: {
            "id": 1,
            "info": {
                "data": "This is test data",
                "created": "2019-04-08",
                "JP": "これはテストデータです。"
            }
        }
    };
    docClient.put(params, (err, data) => {
        if(err) {
            console.log(Unable to add item: ${JSON.stringify(err, undefined, 2)})
        }else {
            console.log(PutItem succeeded: ${JSON.stringify(data, undefined, 2)})
        }
    })
  • インサートは、DocumentClient.put を使用します。
  • TableName にさきほど作成したテーブル名をセットします。
  • Info は、キー項目である id に紐づいて格納するデータになります。今回は3項目 data, created, JP を格納しています。

AWSのDynamoDBのページを開いて、以下のように表示されていたら成功です。

info の項目をコピーすると、さきほど登録した情報が取得できます。

{ "created" : { "S" : "2019-04-08" }, "data" : { "S" : "This is test data" }, "JP" : { "S" : "これはテストデータです。" }}

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

実践TypeScript【電子書籍】[ 吉井健文 ]
価格:3726円 (2019/7/23時点)

[

楽天で購入

](https://hb.afl.rakuten.co.jp/hgc/18648e8b.7d833591.18648e8c.ed1bab3c/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Frakutenkobo-ebooks%2F5456816fd8833397a6aa8b80647873ad%2F%3Fscid%3Daf_pc_bbtn&m=http%3A%2F%2Fm.rakuten.co.jp%2Frakutenkobo-ebooks%2Fi%2F18341447%2F%3Fscid%3Daf_pc_bbtn&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjEsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxfQ==)

速攻でメモできる QuickNote リリースしました!

QuickNoteは動作が超軽量でサクサクかけるノートアプリです。一瞬の閃きを逃さずにノートを開き書き始めることができます。 アカウント登録も不要です。お試しあれ!

Excel操作をコマンドで! proBoarderExcel

Excelはマウスで操作するのが基本ですが、マウス操作に疲れてはいませんか? キーボードでExcel操作ができるようになるアプリです。オープンソースで無料です。

積み上げ! Daily Stack リリースしました!

Daily Stack は日々の積み上げを管理するToDoアプリです。過去の積み上げの振り返りだけでなく、ツイート機能もあります。 アカウント登録不要ですぐに使い始めることができます。

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱