Amazon SNS でのAWS Lambdaの使用 - AWS Lambda

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SNS でのAWS 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-1: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-1.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-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:test-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "TopicArn":"arn:aws:sns:us-east-1:123456789012:sns-lambda", "Subject": "TestInvoke" } } ] }

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

警告

Lambda イベントソースマッピングは各イベントを少なくとも 1 回処理し、バッチの重複処理が発生する可能性があります。重複するイベントに関連する潜在的な問題を避けるため、関数コードを冪等にすることを強くお勧めします。詳細については、 AWS ナレッジセンターの「Lambda 関数を冪等にするにはどうすればよいですか?」を参照してください。

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

詳細については、Amazon Simple Notification Service デベロッパーガイドFanout to Lambda functions を参照してください。

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

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