AWS Lamdaを使ってみよう

Lamdaを使ったことがないので、とりあえず簡単なログ出力を実装しようと思います。
今回はLamdaでS3へファイルをアップロードした際にログを出力するようにします。

まずはLamdaを作成しましょう。
管理コンソールからLamdaを選択して下さい。Lamdaのページに飛ぶと「関数の作成」のボタンがあるので選択。

関数作成画面が表示されたら、「一から作成」を選択し、関数名を入れます。
他は変更しなくても良いかと思います。

これでLamdaの作成完了。
後はトリガーと実行内容を追加していきます。

作成後はDesignerの画面が表示されるので「トリガーを追加」を選択

トリガー追加画面で「S3」選択。
ログを出力する対象のバケットを選択してトリガーの設定は完了です。


Designer画面でS3が追加されました。

次は関数の設定です。実際に動作する内容のコードを記載します。
Designer画面でLamdaを選択してください。

「index.js」のコードが表示されます。

ここに下記のコードを記載してください。

exports.handler = async (event) => {
// TODO implement
var Bucket = event.Records[0].s3.bucket.name;
var ObjKey = event.Records[0].s3.object.key;
var FilePath = Bucket + '/' + ObjKey;
console.log('Bucket : ' + Bucket);
console.log('ObjKey : ' + ObjKey);
console.log('FilePath : ' + FilePath);
};

コードを記載したらLamdaの設定は完了です。
Lamdaを保存してください。

それでは確認していきましょう。
S3に何かしらファイルをアップロードして下さい。

アップロードが完了したら、Lamdaのログを確認しましょう。
Lamdaのモニタリングを選択し、「CloudWatchのログを表示」をクリックします。

ログを見ると、バケット名やキー、ファイルパスが表示されていることがわかります。


以上になります。
今回作成したのを基に、SESに連携しメールを飛ばす機能ができそうですね。
Lamdaの勉強のため、色々試していこうと思います。

~詰まったこと~
一度Lamdaを作成し、削除、再度作成をした際にトリガー追加設定時にエラーになりました。

tiggerの作成中にエラーが発生しました。Configurations overlap.~

これはLamdaは削除されたがS3のイベントに残っていると、追加できないみたいです。
S3の画面でイベントを選択し、Lamdaが紐づいているので削除して下さい。
削除したら、S3のトリガー追加ができます。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です