使用AWS CloudFormation YAML创建DynamoDB表时Type属性矛盾报错求助
解决AWS CloudFormation DynamoDB表的Type属性矛盾问题
这种矛盾报错十有八九是你混淆了CloudFormation中DynamoDB资源定义里的不同层级的类型字段,我来给你拆解清楚:
核心误区:用错了字段名
CloudFormation对DynamoDB表的属性定义有严格的字段要求:
- 在
AttributeDefinitions列表中,每个属性的类型字段是AttributeType(不是Type),取值只能是S(字符串)、N(数字)、B(二进制) - 在
KeySchema列表中,键的类型字段是KeyType(不是Type),取值只能是HASH(分区键)或RANGE(排序键)
如果你把AttributeType写成了Type,CloudFormation会提示“不支持的属性Type”;但如果你完全删掉这个类型字段,又会因为缺少必填的属性类型而报错,这就是你遇到矛盾的原因。
正确的DynamoDB表YAML示例
下面是一个标准的单分区键表的定义,你可以对照修改你的模板:
AWSTemplateFormatVersion: "2010-09-09" Resources: MyDynamoDBTable: Type: AWS::DynamoDB::Table Properties: TableName: MySampleTable AttributeDefinitions: - AttributeName: "UserId" AttributeType: "S" # 这里必须用AttributeType,不是Type KeySchema: - AttributeName: "UserId" KeyType: "HASH" # 这里必须用KeyType,不是Type ProvisionedThroughput: ReadCapacityUnits: 1 WriteCapacityUnits: 1
额外检查点
如果你用的是按需计费模式,记得替换ProvisionedThroughput为BillingMode: PAY_PER_REQUEST,避免不必要的报错。
内容的提问来源于stack exchange,提问作者maranovot
相关产品推荐
相关产品推荐

