きっかけ
案件でS3ファイルのPUTをトリガーにLambdaを動かして、PUTされたファイルを加工するような処理が必要なため、仕組みの具体的な設定内容の確認をしたかったため。
やりたいこと概要
前提
- AWS: 社用アカウント利用
構築Step
- S3バケット作成
- Lambdaの構築、ソース修正
- Lambdaに紐づくIAMロール修正
- Originバケット PUTトリガー設定
- 動作確認
1. S3バケット作成
2. Lambdaの構築、ソース修正
Lambdaのソースコードを以下の内容に修正、デプロイを実施
index.js
'use strict';
const aws = require('aws-sdk');
const s3 = new aws.S3();
exports.handler = async (event) => {
//S3から送られたトリガー内容を確認
console.log(event);
const bucket = event['Records'][0]['s3']['bucket']['name'];
const key = event['Records'][0]['s3']['object']['key'];
console.log(bucket);
console.log(key);
//S3.copyObjectを実施(params内Bucket,CopySource, Keyは必須)
const params = {
Bucket: "copied-bucket-210731/210731",
CopySource: bucket+'/'+key,
Key: key
};
const result = await s3.copyObject(params).promise();
console.log(result)
};
3. Lambdaに紐づくIAMロール修正
4. Originバケット PUTトリガー設定
5. 動作確認
-
OriginバケットにAWS CLIでファイルをアップロードする
-
AWS CloudShellを起動、適当なテキストファイルを作成、CLIコマンドによりS3のOriginバケットへファイルをアップロードする
参考サイト