はじめに
チュートリアル: Amazon S3 で AWS Lambda を使用するで公開されているチュートリアルを試しながら、LambdaからS3を利用した時のメモになります。
(Cloud9の環境構築はCloud9_環境構築2021にまとめています。)
S3にアップロードされる画像のサムネイルを作成する
- IAM コンソールの [Roles] ページを開きます
- [ロールの作成] を選択します
- 次のプロパティでロールを作成します
- [信頼されたエンティティ] – [AWS Lambda]
- [Permissions (アクセス許可)] – [AWSLambdaExecute]
- ロール名 – lambda-s3-role
チュートリアルにあるサンプルを準備します。
$cd ~
$mkdie lambda-s3
$cd lambda-s3
$vi index.js
---
(チュートリアルの内容)
---
$zip -rfunction.zip ./index.js
$aws lambda create-function --function-name CreateThumbnail \--zip-file fileb://function.zip --handler index.handler --runtime nodejs12.x \--timeout 10 --memory-size 1024 \--role arn:aws:iam::<<作成したロールを渡してください>>:role/lambda-s3-role \--cli-binary-format raw-in-base64-out
$aws lambda update-function-configuration --function-name CreateThumbnail --timeout 30 //TIMEOUT=30
$cd ~/enviroment/
$mkdir nodejs
$cd nodejs
$npm init ※パラメータはデフォルト値を指定します。
$npm install sharp // 画像処理パッケージをインストールします。
$cd ~
$zip -r nodejs.zip ./nodejs/ // ディレクトリ名は変更できないようです。
$less nodejs.zip // 内容を確認します。
$aws lambda publish-layer-version \--layer-name<mylayer> \--zip-file fileb://nodejs.zip \--compatible-runtimes nodejs12.x
$aws lambda update-function-configuration \--function-name CreateThumbnail \--layers<yourlayerバージョンARN>
// 動作確認
$vi inputFile.txt
---
(チュートリアルの内容)
※画像ファイルとバケット(src/dist)を準備します。
---
$aws lambda invoke --function-name CreateThumbnail --invocation-type Event --payload fileb://inputFile.txt outputfile.txt
(note: export NODE_PATH=/home/ec2-user/environment/nodejs/node_modules)
上記LambdaとVue Applicationsを連携します。
How to Build Serverless Vue Applications with AWS Amplifyで公開されているチュートリアルを連携します。
$aws lambda add-permission --function-name CreateThumbnail \--principal s3.amazonaws.com \--statement-id s3invoke \--action"lambda:InvokeFunction"\--source-arn arn:aws:s3:::(ソースバケット)\--source-account(ユーザID12桁)// ポリシーの確認
$aws lambda get-policy --function-name CreateThumbnail
S3 バケットにLamdaへのイベントを設定する
通知を設定するには
Amazon S3 コンソールを開きます。
ソースバケットを選択します。
[Properties (プロパティ)] を選択します。
[Events (イベント)] で、以下の設定を使用して通知を設定します。
Name: lambda-trigger。
Events: All object create events。
Send to: Lambda function。
Lambda: CreateThumbnail。