lambdaでSNSからS3イベントを取得する
最近Goを書き始め、LambdaをGoで動かすものを書き始めたので、メモ。
やること
S3にオブジェクトが置かれたときに、SNSを経由してlambdaをキックする。
SNSTopic
S3からオブジェクトが登録されたときのイベントを受け取るには、最低でもPutとCompleteMultiPartUploadを設定しておくとよいです。
参考: S3 バケットのイベント通知を有効化および設定する方法 - Amazon Simple Storage Service
実装
main関数は起動したときに呼ばれます。 lambdaインスタンスが落ちるまでmain関数は再度呼ばれないので、初期化周りはmainで実行します。
handlerに関しては、以下に書いてあるようにcontextを受け取ることもできます。
Lambda 関数ハンドラ (Go) - AWS Lambda
SNSイベントにはMessageとしてjsonで入ってくるので、自分でaws.S3Event の形にmarshallしてあげると良いです。