1. AWS に登録する
まずは AWS に登録しましょう。無料枠が結構ありますので試しに使ってみるというのもいいと思います。
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
だけですので、AttributeName
はid
だけになります。
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==)
コメント