无服务器部署失败:至少需要ProvisionedThroughput,...之一

时间:2020-10-28 18:44:48

标签: aws-lambda serverless-framework serverless aws-serverless

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

在{strong> serverless-plugin-split-stacks 的documentation中指出:

“许多资源(例如DynamoDB表)无法在CloudFormation堆栈之间自由移动(只能通过完全移除和重新创建阶段才能实现)”

我不是100%确定这是引发错误并带有错误消息的错误,而是要对其进行测试。我会尝试将您的CloudFormation模板应用于一个空的新AWS帐户,然后查看是否成功。