クライアントサイドJavascriptでDynamoDBのレコードを抽出する

今日もクライアントサイドJavascriptでAWSネタです。今回はDynamoDBのデータを抽出してみたいと思います。

0 前提

前回に引き続き、以下の記事の「1 Amazon Cognito から IDプールを作成する」「2 AWS認証情報を取得する」を実施してください。

https://usefuledge.com/clientside-js-call-aws-service.html

その後、以下の記事の「1 UnauthロールにDynamoDBアクセスポリシーを設定する」を参考に、DynamoDBのアクセス権をアタッチしてください。

https://usefuledge.com/client-side-js-update-aws-dynamodb.html

1 テストテーブルとデータ

以下のように「CoppetsCode」というテーブルがあることを前提とします。

2 全件抽出するソースコード

早速ですが、DynamoDBのテーブルの全レコードを抽出するソースコードです。

// AWS Cognito 認証情報を貼りつけ
AWS.config.region = 'XXXXXXXXXX'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'XXXXXXXXXX:YYYYYYYYYYYYYYYYYYYYYYYYYY',
});

    // Create DynamoDB service object
    var ddb = new AWS.DynamoDB({ apiVersion: '2012-08-10' });

    var params = {
        TableName: 'CoppetsCode'
    };

    ddb.scan(params, function (err, data) {
        if (err) {
            console.log("Error", err);
        } else {
            //console.log("Success", data.Items);
            data.Items.forEach(function (element, index, array) {
                console.log(element);
            });
        }
    });

実行すると、以下のようにデータが取得できれば成功です。

3 条件に合致するレコードのみ抽出

「CodeKeyName = C#_Console」を満たすレコードのみ抽出するソースコードです。

    // Create DynamoDB service object
    var ddb = new AWS.DynamoDB({ apiVersion: '2012-08-10' });

    var params = {
        ExpressionAttributeValues: {
            ':s': { S: 'C#_Console' }
        },
        KeyConditionExpression: 'CodeKeyName = :s',
        ProjectionExpression: 'CodeKeyName, Revision, Code',
        TableName: 'CoppetsCode'
    };

    ddb.query(params, function (err, data) {
        if (err) {
            console.log("Error", err);
        } else {
            //console.log("Success", data.Items);
            data.Items.forEach(function (element, index, array) {
                console.log(element);
            });
        }
    });

以下のようにデータが抽出できれば成功です。

「KeyConditionExpression」など詳しい情報は以下に公式ドキュメントがあります。

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html#API_Query_RequestSyntax

コメントする