「Amazon S3」にアップロードしたCSVファイルを「Amazon DynamoDB」に自動登録する「AWS Lambda」関数の作り方:AWSチートシート
AWS活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS Lambda」を使って「Amazon S3」にアップロードしたCSVを「Amazon DynamoDB」に自動登録する方法を紹介する。
「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS Lambda」を使って「Amazon S3」にアップロードしたCSVファイルを「Amazon DynamoDB」に自動登録する方法を紹介します。
DynamoDBは、メンテナンスや管理、運用、スケーリングをAWSが行うフルマネージドNoSQLデータベースサービスです。主なユースケースとして、Webやスマホアプリのユーザー情報、セッション情報の管理、広告やゲームのユーザー行動履歴管理などがあります。
このDynamoDBを利用しているとたびたび出くわすのが「CSV形式のデータを一括でDynamoDBテーブルに取り込みたい」というシーンです。こちらの実現方法として、今回はLambdaとS3を利用します。
DynamoDBへのCSVファイル登録手順と構成
今回行うDynamoDBへのCSV登録は図1のような構成です。
下記の手順に沿って作業します。
- DynamoDBテーブルの作成
- S3バケットを作成してCSVファイルをアップロード
- Lambda関数が利用する「AWS Identity and Access Management」(IAM)ロールの作成
- DynamoDBにデータを登録するLambda関数の作成
- 作成したLambda関数のテスト
- S3バケットでイベントトリガーを設定
【ステップ1】DynamoDBテーブルの作成
DynamoDBコンソールから「テーブルの作成」をクリックしてテーブル作成画面(図2)に遷移し、次の通りに値を設定します。
- テーブル名:employee_table
- パーティションキー:id
ソートキーの指定は任意なので今回は省略し、その他の設定もデフォルトのままで「テーブルの作成」をクリックします。
数十秒〜数分でテーブルの作成が完了しステータスが「Active」になっていることを確認できます。
【ステップ2】S3バケットを作成してCSVファイルをアップロード
今度はS3ダッシュボードに遷移し、任意の名前を入力し、「バケットの作成」ボタンでS3バケットを作成します。
バケットの作成が完了したらDynamoDBにインポートするCSVファイルをアップロードします。
作成したバケット名をクリックし、「アップロード」ボタンでファイルをアップロードします。
本稿でアップロードした「employee.csv」は次のような内容です。
1,杉本,男,営業部 2,徳永,男,人事部 3,北田,女,システム部 4,赤松,女,システム部 5,志賀,男,総務部 6,藤原,女,システム部
【ステップ3】Lambda関数が利用するIAMロールの作成
Lambda関数の実行に必要となるIAMロールを作成します。
IAMダッシュボードから「ロール」→「ロールの作成」とクリックして遷移した画面で、次のように選択して「次のステップ:アクセス権限」に進みます。
- エンティティの種類:AWSサービス
- 一般的なユースケース:Lambda
IAMロールにアタッチするIAMポリシーは、以下のAWS管理ポリシーとユーザー管理ポリシーを指定します。
- AWS管理ポリシー
- AWSLambdaBasicExecutionRole
- AWSLambdaInvocation-DynamoDB
- AmazonS3ReadOnlyAccess
ユーザー管理ポリシーは自分で作成する必要があります。
- ユーザー管理ポリシー
- 名前:dynamodb-put-batchwrite
- アクセス権限:以下のポリシーを付与
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "*", "Action": [ "dynamodb:PutItem", "dynamodb:BatchWriteItem" ] } ] }
最後にロール名を指定して「ロールの作成」をクリックすれば、ステップ3は完了です。
- ロール名:lambda-import-csv-into-dynamodb
【ステップ4】DynamoDBにデータを登録するLambda関数の作成
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- AWS初心者でもサーバレスでここまでできる――クラウド運用の定型業務を9カ月で自動化した新入社員の挑戦
運用管理者に光を当てるオンラインイベント「Cloud Operator Days Tokyo 2021」。NTT東日本のセッション「新入社員が9ヶ月でクラウド運用の自動化システムを作ってみた」から、AWS初心者が運用監視の定型業務を自動化する際の流れ、苦労するポイントを学ぶ。 - アプリ開発者もインフラ管理者も知っておきたいサーバレスとAWS Lambdaの基礎知識
システム開発の常識を覆す「サーバレスアーキテクチャ」について「AWS Lambda」を使って構築方法を学ぶ連載。初回は、サーバレスアーキテクチャの仕組み、メリット、Lambdaの特徴と留意点について。 - 「AWS Lambda」が拡張機能を介して各種運用ツールと統合可能に
サーバのプロビジョニングや管理をすることなくコードを実行できる「AWS Lambda」サービスが利用しやすくなった。AWS Lambda拡張機能を使うことでモニタリングや可観測性、セキュリティ、ガバナンスのための運用ツールをAWS Lambdaと統合して利用できる。