Screaming Loud

日々是精進

lambdaでSNSからS3イベントを取得する

最近Goを書き始め、LambdaをGoで動かすものを書き始めたので、メモ。

やること

S3にオブジェクトが置かれたときに、SNSを経由してlambdaをキックする。

SNSTopic

S3からオブジェクトが登録されたときのイベントを受け取るには、最低でもPutとCompleteMultiPartUploadを設定しておくとよいです。 f:id:yuutookun:20180612210052p:plain

参考: S3 バケットのイベント通知を有効化および設定する方法 - Amazon Simple Storage Service

実装

main関数は起動したときに呼ばれます。 lambdaインスタンスが落ちるまでmain関数は再度呼ばれないので、初期化周りはmainで実行します。

handlerに関しては、以下に書いてあるようにcontextを受け取ることもできます。

Lambda 関数ハンドラ (Go) - AWS Lambda

SNSイベントにはMessageとしてjsonで入ってくるので、自分でaws.S3Event の形にmarshallしてあげると良いです。