見出し画像

「AWS Lambdaを使って自動化する -実践-」AWSをマスターする#25

1. 画像を格納するS3のバケットを準備
2. AWS Lambdaで関数を作成
3. テスト実施
4. Lambda実行して、画像作成

ーまえがきー
前回はAWS Lambdaの概要について、説明してきました。
今回は、実際にLambdaを使って画像をアップすると、自動でサムネイル画像を作るという処理を作っていきます。
(以下の画像の処理)

Lambdaの動き

1. 画像を格納するS3のバケットを準備

まず、S3に画像を格納するバケット(フォルダのようなもの)を作成しておきます。

画像12

ここで、元の画像を入れるバケットと、AWS Lambdaによって画像のリサイズ処理された画像を格納するバケットの2つを用意しておきます。

画像1

2. AWS Lambdaで関数を作成

画像13

次に格納された画像に対する処理を決めるための関数を作成していきます。
関数の作成ではAWSの方で、一般的に使用されるテンプレートをいくつか用意されてますので、今回はそのテンプレートを使いながら作っていこうと思います。
「s3-get-object」というs3 のデータ取得に関するテンプレートを使っていきます。(以下の画像)
これで次の画面へ。

画像2

次に「関数名」などを決めていきます。
ここでは、得にポリシーテンプレート・オプションの箇所をS3のアクセス権限を設定しておかないと、S3に画像の情報を取りにいくことが出来ないので、要注意です。(以下の画像のピンクの枠)

画像3

その下にスクロールして進めていくと、S3トリガーという項目が出てきます。
こちらでAWS Lambdaが動くきっかけとなる動作を設定します。
バケットの項目では最初に作ったS3のバケットが選択できるようになってるので、今回元の素材画像を格納する「image-wwd」のバケットを選択します。

画像4

【イベントタイプ】
また、その下にあるイベントタイプは「PUT(ファイルが置かれたら)」で設定しておきます。

画像5

【関数のコード】
ここでは関数のコード記されていて、ここのコードに書いている内容の動きをしてくれます。
最初に「S3のオブジェクトを取得」というテンプレートを選んでますので、そこまでの処理は書かれている状態です。

画像6

今回は、取得した画像をリサイズして、別のバケットに格納するという処理が必要なので、その記載を後で追加します。

3. テスト実施

とりあえずちゃんとS3の画像が取得出来ているかをテスト!
右上にテストの項目があります。

画像7

しかし、、、

画像8

エラーが出て、画像の取得が出来ない。。
原因を調べていったところS3の画像にアクセスする権限がないことが原因のよう。。
ここで完全に詰まってしまった。。

権限の設定が問題のようなので、権限を新しく振ってみた。
https://aws.amazon.com/jp/iam/
それぞれのアクセス権限を設定するところがあるので、そちらで

画像9

「ポリシーをアタッチします」を選択すると、設定できる権限の一覧が出てくる。
「S3FullAccess」があったので、それを設定!

画像10

しかし、、

画像11

また同じエラー画面が出現。。。
これは困った。。

明日、このエラーを解決して、画像の自動処理を完成させます!!

この記事が気に入ったらサポートをしてみませんか?