6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Node.js】LambdaからDynamoDBのデータを取得する方法

Posted at

はじめに

Lambdaを使用してDynamoDBのデータを取得する方法について紹介します:point_up_tone1:
データ取得までの流れは 画面 → API Gateway → Lambda → DynamoDB となっていますが、画面からLambdaを呼び出すところまでは割愛します。

ソースコード

userIdを条件にして、データを取得するという例を紹介します。

const { DynamoDBClient } = require('@aws-sdk/client-dynamodb');
const { QueryCommand, DynamoDBDocumentClient } = require('@aws-sdk/lib-dynamodb');

const client = new DynamoDBClient({});
const docClient = DynamoDBDocumentClient.from(client);

exports.handler = async(event) => {
    // Cloudwatchで確認できるようにログ出力
    console.log(event);

    try {
        // 画面から送られてきたユーザーIDを取得
        const userId = event.queryStringParameters.userId;

        const command = new QueryCommand({
            TableName: 'DynamoDBのテーブル名',
            // 条件を指定
            KeyConditionExpression: 'userId = :userId',
            // KeyConditionExpressionで使用するために:userIdに変数「userId」を設定
            ExpressionAttributeValues: {
                ':userId': userId
            }
        })

        // データ取得
        const response = await docClient.send(command);

        return {
            statusCode: 200,
            headers: {
                'Access-Control-Allow-Origin' : '*',
            },
            body: JSON.stringify(response)
        }
    } catch (error) {
        // Cloudwatchで確認できるようにログ出力
        console.log(error);

        return {
            statusCode: 400,
            headers: {
                'Access-Control-Allow-Origin' : '*',
            },
            body: error.message
        }
    }
}

補足

API GatewayでLambda プロキシ統合を設定しているため、指定された形でレスポンスを返却する必要がありました。この辺りの設定が上手く出来ていないとCORSエラーが発生してしまうので、ご注意ください:information_desk_person_tone1:

さいごに

こちらの記事参考になれば幸いです:woman_tone1::point_up_tone1::dizzy:

6
2
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
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?