はじめに
AWS Lambda 関数のデッドレターキューを試します。
非同期呼び出しが失敗した際に、メールを送信するように設定します。
今回は CloudFormation を利用して構築しました。
使用したテンプレートはGithubに。
AWS SAM テンプレート作成
AWS SAM テンプレートで Lambda, SNS の設定をします。
[参考資料]
AWS SAM テンプレートを作成する
Lambda関数とデッドレターキューの設定は以下の部分
Type: AWS::Serverless::Function
Properties:
FunctionName: !Ref MainFunctionName
CodeUri: bin/
Handler: main
MemorySize: 256
Runtime: go1.x
Description: 'Sample DLQ Function'
DeadLetterQueue:
Type: SNS
TargetArn: !Ref DLQSNSTopic
Policies:
- SNSPublishMessagePolicy:
TopicName: !Ref DLQSNSTopicName
Environment:
Variables:
REGION: !Ref 'AWS::Region'
Lambda関数作成
※ Lambda関数は aws-lambda-go を利用しました。
func HandleRequest(ctx context.Context, request events.APIGatewayProxyRequest) (Response, error) {
log.Fatal("Error")
return Response {
StatusCode: 200,
Body: "success",
}, nil
}
Lambda関数の非同期呼び出し
aws lambda invoke --function-name ServerlessDLQLambdaFunction --invocation-type Event response.json
終わりに
Lambdaの非同期呼び出しが失敗した際に、メールを送信するように設定しました。
今回はメール送信するため、デッドレターキューのタイプをSNSに設定しましたが、
SQSも選択できるため今後試して行こうと思います。