AWS Lambda 関数を AWS CloudFormation スタックの Amazon Simple Storage Service (Amazon S3) イベント通知または Amazon Simple Notification Service (Amazon SNS) トピックにサブスクライブさせることができません。AWS::Lambda::EventSourceMapping リソースを使おうとすると、次のエラーが返されます。

「Unrecognized event source, must be kinesis or dynamodb stream. (認識できないイベントリソースです。kinesis または dynamodb のストリームである必要があります。)」

AWS::Lambda::EventSourceMapping リソースは、Amazon DynamoDB イベントストリームおよび Amazon Kinesis など、プッシュベースのイベントソース用に作られています。S3 イベント通知機能や Amazon SNS メッセージなど、プッシュベースのイベントソースを使用すると、イベントソースが Lambda 関数を起動する役割を果たします。プッシュベースのイベントソースが Lambda 関数を起動できるようにするには、関数のリソースポリシーでそのイベントソースを承認しておく必要があります。サポート対象のイベントソースのリストは、Supported Event Sources に含まれています。

[AWS CloudFormation template (AWS CloudFormation テンプレート)] に、AWS::Lambda::Permission リソースを使用して、Lambda 関数ポリシーを追加します。たとえば、以下の Lambda 関数ポリシーでは、Amazon SNS トピックに Lambda 関数の起動を許可する、リソースベースの Lambda 関数ポリシーが追加されます。

"LambdaResourcePolicy": {
  "Type": "AWS::Lambda::Permission",
  "Properties": {
    "FunctionName" : { "Ref" : "MyFunction" },
    "Principal": "sns.amazonaws.com",
    "Action": "lambda:InvokeFunction",
    "SourceArn" : { "Ref" : "MySNSTopic" }
  }
}

前の例では、Lambda 関数を S3 バケットにサブスクライブさせる S3 NotificationConfiguration ステートメントが必要です。Amazon SNS トピックイベントソースの場合、トピックポリシーも定義しておく必要があります。詳細については、「クロスアカウント権限のセットアップ」を参照してください。トピックポリシーを設定していない場合、デフォルトのポリシーに必要な権限が含まれます。


このページは役に立ちましたか? はい | いいえ

AWS サポートナレッジセンターに戻る

サポートが必要ですか?AWS サポートセンターをご覧ください。

公開日: 2016 年 09 月 02 日

更新: 2018 年 4 月 10 日