Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8896

LambdaからS3を利用する

$
0
0

はじめに

チュートリアル: Amazon S3 で AWS Lambda を使用するで公開されているチュートリアルを試しながら、LambdaからS3を利用した時のメモになります。
(Cloud9の環境構築はCloud9_環境構築2021にまとめています。)

S3にアップロードされる画像のサムネイルを作成する

  1. IAM コンソールの [Roles] ページを開きます
  2. [ロールの作成] を選択します
  3. 次のプロパティでロールを作成します
  4. [信頼されたエンティティ] – [AWS Lambda]
  5. [Permissions (アクセス許可)] – [AWSLambdaExecute]
  6. ロール名 – 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。


Viewing all articles
Browse latest Browse all 8896

Trending Articles