web-dev-qa-db-ja.com

PropertyDefinitionが矛盾しています

Cloudformation UIでdynamoDBテーブルを作成するために使用している次のテンプレートがあります。 PrimaryKeyとしてIDおよびsortKeyasValue

{
  "AWSTemplateFormatVersion" : "2010-09-09",

  "Description" : "DB Description",

  "Resources" : {
    "TableName" : {
      "Type" : "AWS::DynamoDB::Table",
      "Properties" : {
        "AttributeDefinitions": [ { 
          "AttributeName" : "ID",
          "AttributeType" : "S"
        }, { 
          "AttributeName" : "Value",
          "AttributeType" : "S"
        } ],
        "KeySchema": [
          { 
            "AttributeName": "ID", 
            "KeyType": "HASH"
          }
        ]                
      },
      "TableName": "TableName"
    }
  }
}

CF UIで、新しいスタックをクリックし、ローカルコンピューターからtemplateファイルをポイントし、スタックに名前を付けて、[次へ]をクリックします。しばらくすると、Property AttributeDefinitionsがテーブルのKeySchemaおよびセカンダリインデックスと矛盾するというエラーが表示されます

57
Em Ae

問題は、Resources.Properties.AttributeDefinitionsキーがonlyインデックスまたはキーに使用される列を定義する必要があることです。つまり、Resources.Properties.AttributeDefinitionsのキーは、Resources.Properties.KeySchemaで定義されているキーと一致する必要があります。

AWSドキュメント:

AttributeDefinitions:テーブルとインデックスのキースキーマを記述するAttributeNameおよびAttributeTypeオブジェクトのリスト。

結果のテンプレートは次のようになります。

{
  "AWSTemplateFormatVersion" : "2010-09-09",

  "Description" : "DB Description",

  "Resources" : {
    "TableName" : {
    "Type" : "AWS::DynamoDB::Table",
    "Properties" : {
      "AttributeDefinitions": [ { 
        "AttributeName" : "ID",
        "AttributeType" : "S"
      } ],
      "ProvisionedThroughput":{
        "ReadCapacityUnits" : 1,
        "WriteCapacityUnits" : 1
      },
      "KeySchema": [
        { 
          "AttributeName": "ID", 
          "KeyType": "HASH"
        }
       ] ,               
      "TableName": "table5"
    }
   }
  }
}
99
jens walter