Amazon SNS での Lambda の使用 - AWS Lambda

Amazon SNS での Lambda の使用

Lambda 関数を使用して、Amazon Simple Notification Service (Amazon SNS) 通知を処理することができます。Amazon SNS は、トピックに送信されるメッセージのターゲットとして Lambda 関数をサポートしています。関数は、同じアカウントまたは他の AWS アカウントのトピックにサブスクライブできます。

Amazon SNS は、メッセージやメタデータが含まれたイベントを使用して、関数を非同期的に呼び出します。

例 Amazon SNS メッセージイベント

{ "Records": [ { "EventVersion": "1.0", "EventSubscriptionArn": "arn:aws:sns:us-east-2:123456789012:sns-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "EventSource": "aws:sns", "Sns": { "SignatureVersion": "1", "Timestamp": "2019-01-02T12:45:07.000Z", "Signature": "tcc6faL2yUC6dgZdmrwh1Y4cGa/ebXEkAi6RibDsvpi+tE/1+82j...65r==", "SigningCertUrl": "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", "Message": "Hello from SNS!", "MessageAttributes": { "Test": { "Type": "String", "Value": "TestString" }, "TestBinary": { "Type": "Binary", "Value": "TestBinary" } }, "Type": "Notification", "UnsubscribeUrl": "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:123456789012:test-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "TopicArn":"arn:aws:sns:us-east-2:123456789012:sns-lambda", "Subject": "TestInvoke" } } ] }

非同期呼び出しの場合、Lambda はそのメッセージをキューに入れ、再試行を処理します。Amazon SNS が Lambda に到達できない場合、またはメッセージが拒否される場合、Amazon SNS は、数時間にわたって間隔を増やして再試行します。詳細については、Amazon SNS のよくある質問の「信頼性」をご参照ください。

Lambda へのクロスアカウント Amazon SNS 配信を実行するには、Amazon SNS が Lambda 関数を呼び出すことを承認する必要があります。代わりに、Amazon SNS は、Lambda 関数を持つ AWS アカウントが Amazon SNS トピックにサブスクライブできるようにする必要があります。たとえば、Amazon SNS トピックがアカウント A にあり、Lambda 関数がアカウント B にある場合は、それぞれのリソースにアクセスできるように、両方のアカウントにアクセス権限を付与する必要があります。クロスアカウント権限を設定するためのすべてのオプションが AWS マネジメントコンソール から利用できるわけではないため、設定には AWS Command Line Interface (AWS CLI) を使用する必要があります。

詳細については、Amazon Simple Notification Service 開発者ガイド の「Lambda 関数へのファンアウト」をご参照ください。

Amazon SNS イベントの入力タイプ

Java、.NET、および Go での Amazon SNS イベントの入力タイプの例については、AWS GitHub リポジトリで以下をご参照ください: