我已经搜索过高低,并且无法为我的生活设置无服务器设置dynamodb触发器。
我用过:
- stream:
type: dynamodb
batchSize: 100
enabled: true
arn:
Fn::GetAtt:
- MyDynamoDbTable
- StreamArn
我尝试了一个硬编码的arn并且没有发生任何事情,我可以在aws控制台中看到。我是无服务器的新手。如果您有任何指示,请发布。
答案 0 :(得分:5)
有关如何在serverless.yml中配置dynamodb流的示例
functions:
dynamodb-trigger:
handler: yourfunction.handler
events:
- stream:
type: dynamodb
batchSize: 1
startingPosition: LATEST
arn:
Fn::GetAtt:
- MyDynamoDbTable
- StreamArn
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:ListStreams
- dynamodb:DescribeTable
- dynamodb:UpdateItem
- dynamodb:GetItem
Resource:
- "Fn::Join": ["", ["arn:aws:dynamodb:" , {"Ref": "AWS::Region"}, ":", {"Ref": "AWS::AccountId"} , ":table/${self:provider.environment.MFA_DYNAMODB_TABLE}"] ]
resources:
Resources:
MyDynamoDbTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Delete
Properties:
AttributeDefinitions:
-
AttributeName: id
AttributeType: S
KeySchema:
-
AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: ${self:provider.environment.MFA_DYNAMODB_TABLE}
StreamSpecification:
StreamViewType: NEW_IMAGE
答案 1 :(得分:1)
events:
- stream: arn:aws:dynamodb:us-west-2:xxxxxx:table/tableName/stream/2018-04-19T16:40:37.833
这是在dynamodb上创建触发器的正确方法
答案 2 :(得分:1)
我们遇到了同样的问题。答案基本上是您无法做到的。更确切地说,您不必每次都销毁Dynamo DB表。我们构建了此插件,使您可以连接它。 https://www.npmjs.com/package/serverless-dynamo-stream-plugin。
我们的团队根据项目通过ansible或terraform创建Dynamo DB表,然后使用此插件将其连接在一起。
我们正在通过github上的开放源代码回购维护此问题,因此,如果您有任何问题或建议,可以在此处或此处向我发送消息。希望这会有所帮助,因为我们现在在生产代码库中使用它。