AWS Lambda
開発者ガイド

AWS Lambda を Amazon SNS に使用する

Lambda 関数を使用して、Amazon Simple Notification Service 通知を処理することができます。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 よくある質問の「信頼性」を参照してください。

複数のアカウントから Amazon SNS を Lambda に配信するには、Amazon SNS からの Lambda 関数の呼び出しを許可する必要があります。また、Lambda アカウントが Amazon SNS トピックに登録できるように Amazon SNS で許可する必要があります。たとえば、Amazon SNS トピックがアカウント A にあり、Lambda 関数がアカウント B にある場合は、それぞれのリソースにアクセスできるように、両方のアカウントにアクセス権限を付与する必要があります。クロスアカウント権限を設定するためのすべてのオプションが AWS コンソールから使用できるわけではないため、プロセス全体をセットアップしている AWS CLI を使用します。

詳細については、『Amazon Simple Notification Service 開発者ガイド』の「Amazon SNS 通知を使用した Lambda 関数の呼び出し」を参照してください。