ホームページ >バックエンド開発 >Python チュートリアル >Lambda 関数を使用した So DynamoDB からのデータの解析とロード
多くのシナリオでは、JSON としてフォーマットされたデータを操作する必要があり、データを抽出して処理し、将来使用できるようにテーブルに保存したいと考えています。
この記事では、Lambda 関数を使用して JSON 形式のデータを S3 バケットから DynamoDB テーブルにロードする方法について説明します
以下のアーキテクチャは、3 つの AWS サービスを使用していることを示しています
リフレッシュとして以下のサービスの簡単な説明:
上記の図をデプロイするための手順と構成を順に見ていきます
1- 以下の構成で Lambda 関数を作成します
ゼロから作成
関数名: ParserDemo
ランタイム: Python 3.1x
残りはデフォルトのままにしておきます
Lambda を作成した後、以下のようにタイムアウト設定と実行ロールを変更する必要があります:
ロジックを実行するためにこの Python コードを書きました
import json import boto3 s3_client = boto3.client('s3') dynamodb = boto3.resource('dynamodb') def lambda_handler(event, context): bucket_name = event['Records'][0]['s3']['bucket']['name'] # Getting the bucket name from the event triggered by S3 object_key = event['Records'][0]['s3']['object']['key'] # Getting the Key of the item when the data is uploaded to S3 print(f"Bucket: {bucket_name}, Key: {object_key}") response = s3_client.get_object( Bucket=bucket_name, Key=object_key ) # We will convert the streamed data into bytes json_data = response['Body'].read() string_formatted = json_data.decode('UTF-8') #Converting data into string dict_format_data = json.loads(string_formatted) #Converting Data into Dictionary # Inserting Data Into DynamoDB table = dynamodb.Table('DemoTable') if isinstance(dict_format_data, list): #check if the file contains single record for record in dict_format_data: table.put_item(Item=record) elif isinstance(dict_format_data, dict): # check if the file contains multiple records table.put_item(Item=data) else: raise ValueError("Not Supported Format") # Raise error if nothing matched
2- S3 バケットを作成します
BucketName: 一意の名前を使用します
残りの構成はデフォルトのままにしておきます
以下のように、作成した S3 バケットをトリガーとしてラムダ関数に追加します。
3- 以下の構成で DynamoDB にテーブルを作成します
テーブル名: DemoTable
パーティションキー: UserId
テーブル設定: カスタマイズ
容量モード: プロビジョニング済み
コストを節約するには、読み取り/書き込み用にプロビジョニングされたキャパシティ ユニットを低い値 (1 または 2 ユニット) で構成します
これでセットアップの準備が整いました。S3 にファイルをアップロードしてテストできます。ファイルにアップロードしたレコードを含む DynamoDB テーブル上に作成されたアイテムが表示されます。
Lambda 関数の CloudWatch ログ
DynamoDB アイテム
この記事が面白かったと思っていただければ幸いです。何かコメントがあればぜひお知らせください。
S3 API
DynamoDB API
AWS サービスの boto3 演習
以上がLambda 関数を使用した So DynamoDB からのデータの解析とロードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。