DynamoDBにテーブルを作成する – AWS
https://console.aws.amazon.com/dynamodb/homeから以下画面にアクセスします。
「テーブルの作成」をクリックします。
「DynamoDB テーブルの作成」画面が表示されます。
テーブル名、プライマリキー名を入力し、「作成」をクリックします。
これでテーブルが作成されます。
インデックスの作成
次にインデックスを作成してみます。
「インデックスの作成」をクリックします。
インデックスのプライマリキーをnameにし、射影される属性に「datetime」を含めます。
これで、nameをキーにしてクエリーを発行することができるようになります。
この際、もともとのテーブルのプライマリキー、レンジキーとnameと射影される属性に含んだdatetimeが検索対象になります。
「インデックスの作成」をクリックします。
インデックスが作成されていることが確認できます。また、属性で検索対象が確認できます。
以下のような2レコードあるテーブルをインデックスで検索してみます。
queryの引数は以下のようにオブジェクトで渡します。
let params = {
TableName: 'sample',
IndexName: 'name-index',
KeyConditionExpression: ' #name = :value ',
ExpressionAttributeNames: {
'#name': 'name'
},
ExpressionAttributeValues: {
':value': 'jiro'
}
};
全コードは以下のとおりです。
var AWS = require('aws-sdk');
var dynamo = new AWS.DynamoDB.DocumentClient();
let params = {
TableName: 'sample',
IndexName: 'name-index',
KeyConditionExpression: ' #name = :value ',
ExpressionAttributeNames: {
'#name': 'name'
},
ExpressionAttributeValues: {
':value': 'jiro'
}
};
exports.handler = (event, context, callback) => {
dynamo.query(params, function(err, data) {
if (err) {
context.fail(err); // エラー時
} else {
context.succeed(data); // 正常時
}
});
};
このLambda関数を実行してみます。
結果は以下のように1件だけ取得できます。
{
"Items": [
{
"datetime": "20171013",
"sortkey": "2",
"id": "1",
"name": "jiro"
}
],
"Count": 1,
"ScannedCount": 1
}
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント