无服务器部署失败:ProvisionedThroughput、..中至少有一个..是必需的



我正在尝试使用npm无服务器包将新的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的唯一更改是添加了无服务器插件拆分堆栈,以绕过CloudFormation 200的资源限制。这是无服务器插件拆分堆栈的配置:

custom:
splitStacks:
perFunction: true
perType: false
perGroupFunction: false

无服务器插件拆分堆栈的文档中,它指出:

"许多类型的资源(例如DynamoDB表(不能在CloudFormation堆栈之间自由移动(这只能通过完全移除和重新创建阶段来实现(";

我不能100%确定这是抛出的错误,带有错误消息,但要测试一下。我会尝试将您的CloudFormation模板应用于一个空的、新的AWS帐户,看看是否成功。

相关内容

最新更新