Amazon dynamodb 如何配置现有dynamodb表的StreamArn
我正在创建无服务器框架项目 DynamoDB表是由其他CloudFormation堆栈创建的 如何在Amazon dynamodb 如何配置现有dynamodb表的StreamArn,amazon-dynamodb,serverless-framework,amazon-dynamodb-streams,Amazon Dynamodb,Serverless Framework,Amazon Dynamodb Streams,我正在创建无服务器框架项目 DynamoDB表是由其他CloudFormation堆栈创建的 如何在serverless.yml 我有如下配置 resources: Resources: MyDbTable: //'arn:aws:dynamodb:us-east-2:xxxx:table/MyTable' provider: name: aws ... onDBUpdate: handler: handler.onDBUpdate events:
serverless.yml
我有如下配置
resources:
Resources:
MyDbTable: //'arn:aws:dynamodb:us-east-2:xxxx:table/MyTable'
provider:
name: aws
...
onDBUpdate:
handler: handler.onDBUpdate
events:
- stream:
type: dynamodb
arn:
Fn::GetAtt:
- MyDbTable
- StreamArn
编辑:-如果您的表是在另一个无服务器服务中创建的,您可以跳过步骤1、4和8。
-如果您的表是在标准的CloudFormation堆栈中创建的,请编辑此堆栈以添加步骤2的输出,并跳过步骤1、4和8
针对同一问题,我提出了以下解决方法:
serverless.yml
配置自动缩放:
plugins:
- serverless-dynamodb-autoscaling
custom:
capacities:
- table: FoosTable # DynamoDB Resource
read:
minimum: 5 # Minimum read capacity
maximum: 50 # Maximum read capacity
usage: 0.75 # Targeted usage percentage
write:
minimum: 5 # Minimum write capacity
maximum: 50 # Maximum write capacity
usage: 0.75 # Targeted usage percentage
Outputs:
FoosTableName:
Value:
Ref: FoosTable
FoosTableArn:
Value: {"Fn::GetAtt": ["FoosTable", "Arn"]}
FoosTableStreamArn:
Value: {"Fn::GetAtt": ["FoosTable", "StreamArn"]}
为了做到这一点,我使用了在新旧表位于同一区域并且表不是很大的情况下效果很好的方法。对于较大的表,您可能希望使用AWS数据管道
provider:
environment:
stage: ${opt:stage}
region: ${self:provider.region}
dynamoDBTablesStack: "MyResourcesStack-${opt:stage}" # Your resources stack's name and the current stage
foosTable: "${cf:${self:provider.environment.dynamoDBTablesStack}.FoosTableName}"
foosTableArn: "${cf:${self:provider.environment.dynamoDBTablesStack}.FoosTableArn}"
foosTableStreamArn: "${cf:${self:provider.environment.dynamoDBTablesStack}.FoosTableStreamArn}"
functions:
myFunction:
handler: myFunction.handler
events:
- stream:
batchSize: 100
type: dynamodb
arn: ${self:provider.environment.foosStreamArn}
您找到解决方案了吗?没有解决方案,我已将streamArn保存在配置文件中并从中引用。我想出了一个很好的解决方案。。。如果您不介意复制现有表,请检查下面我的答案。我编辑我的答案是考虑到您的表是在CloudFormation堆栈中创建的。如果我的ddb表不是由任何cfn模板创建的,该怎么办?
provider:
environment:
stage: ${opt:stage}
region: ${self:provider.region}
dynamoDBTablesStack: "MyResourcesStack-${opt:stage}" # Your resources stack's name and the current stage
foosTable: "${cf:${self:provider.environment.dynamoDBTablesStack}.FoosTableName}"
foosTableArn: "${cf:${self:provider.environment.dynamoDBTablesStack}.FoosTableArn}"
foosTableStreamArn: "${cf:${self:provider.environment.dynamoDBTablesStack}.FoosTableStreamArn}"
functions:
myFunction:
handler: myFunction.handler
events:
- stream:
batchSize: 100
type: dynamodb
arn: ${self:provider.environment.foosStreamArn}