レコードが dynamodb テーブルにコミットされるたびに Lambda 関数が呼び出されるように、イベント ソース マップを設定しようとしています。からの指示をフォローアップしようとしています
https://github.com/serverless/serverless/blob/master/docs/guide/overview-of-event-sources.md
私の現在serverless.yml
は使用しています:
service: sl-pipeline
provider:
name: aws
runtime: python2.7
memorySize: ${memoryVar}
iamRoleStatements:
- Effect: "Allow"
Action:
- "dynamodb:*"
Resource: "arn:aws:dynamodb:*:*:table/MyTable*"
- Effect: "Allow"
Action:
- "dynamodb:GetRecords"
- "dynamodb:GetShardIterator"
- "dynamodb:DescribeStream"
- "dynamodb:ListStreams"
Resource: "arn:aws:dynamodb:*:*:table/MyTable*/stream/*"
# you can overwrite defaults here
defaults:
stage: dev
region: us-east-1
functions:
main:
handler: handler.main
# Add event trigger from dynamodb Stream Table
resources:
Resources:
mapping:
Type: AWS::Lambda::EventSourceMapping
Properties:
BatchSize: 10
EventSourceArn: "arn:aws:dynamodb:us-east-1:XXXXXXXXX:table/MyTable/stream"
FunctionName: "sl-pipeline-dev-main"
StartingPosition: LATEST
を呼び出すたびにserverless deploy
、次のようになります。
Serverless Error ---------------------------------------
An error occurred while provisioning your cloudformation:
The following resource(s) failed to create: [IamRoleLambda,
mapping].
これは IAM ロールのアクセス許可に関係していると推測していますが、修正方法がわかりません。サーバーレス自体に使用する役割については、次のものを使用しようとしました。
Action: "*"
Resource: "*"
だから何でもできるはずです。
resources
からセクションを削除すると、serverless.yml
正しくデプロイできることに注意してください。dynamodb テーブルに移動して、手動でトリガーをラムダ関数に追加することもでき、すべてが機能します。
前もって感謝します