我正在尝试使用npm serverless软件包将新的Lambda函数和API网关部署到AWS。新功能将部署在以前的现有功能之上,新的DynamoDB表将与新的lambda函数一起创建。
部署失败,出现以下错误:
An error occurred: authDB - At least one of ProvisionedThroughput, BillingMode, UpdateStreamEnabled, GlobalSecondaryIndexUpdates or SSESpecification or ReplicaUpdates is required (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException;
“ authDB”是DynamoDB中已经存在的表。此数据库表的serverless.yml文件如下:
authDB:
Type: "AWS::DynamoDB::Table"
DeletionPolicy: Retain
Properties:
AttributeDefinitions:
- AttributeName: key
AttributeType: S
KeySchema:
- AttributeName: key
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5
TableName: "auth-db"
由于定义了“ ProvisionedThroughput”,因此我不确定为什么会收到此错误。
[UPDATE]此authDB配置自从最初部署以来就没有更改...除了新功能/数据库资源外,对serverless.yml的唯一更改是添加了serverless-plugin-split -stacks绕过CloudFormation 200资源限制。这是serverless-plugin-split-stacks的配置:
custom:
splitStacks:
perFunction: true
perType: false
perGroupFunction: false
答案 0 :(得分:0)
在{strong> serverless-plugin-split-stacks 的documentation中指出:
“许多资源(例如DynamoDB表)无法在CloudFormation堆栈之间自由移动(只能通过完全移除和重新创建阶段才能实现)”
我不是100%确定这是引发错误并带有错误消息的错误,而是要对其进行测试。我会尝试将您的CloudFormation模板应用于一个空的新AWS帐户,然后查看是否成功。