Troposphereで生成されたJSON(のDynamoDB部分)は次のとおりです。
"sandbox": {
"Properties": {
"AttributeDefinitions": [
{
"AttributeName": "audit_id",
"AttributeType": "S"
},
{
"AttributeName": "status",
"AttributeType": "S"
},
{
"AttributeName": "filename",
"AttributeType": "S"
},
{
"AttributeName": "file_detected_dt",
"AttributeType": "S"
},
{
"AttributeName": "time_taken",
"AttributeType": "N"
},
{
"AttributeName": "number_rows_processed_file",
"AttributeType": "N"
},
{
"AttributeName": "number_rows_created_db",
"AttributeType": "N"
},
{
"AttributeName": "info_messages",
"AttributeType": "S"
}
],
"KeySchema": [
{
"AttributeName": "audit_id",
"KeyType": "HASH"
}
],
"ProvisionedThroughput": {
"ReadCapacityUnits": {
"Ref": "ReadCapacityUnits"
},
"WriteCapacityUnits": {
"Ref": "WriteCapacityUnits"
}
}
},
"Type": "AWS::DynamoDB::Table"
}
CloudFormationは、VPCをスピンアップしようとするとProperty AttributeDefinitions is inconsistent with the KeySchema of the table and the secondary indexes
というエラーを表示します。
しかし...それは? audit_id
を単独のキーとして指定していますが、これは間違いなくAttributeDefinitionsリスト内に存在します。私はCF(およびその点でDynamo)が初めてなので、非常に明白な何かを見逃しているかもしれませんが、現時点ではそれは明らかではありません。
私はグーグルで調べましたが、実際にこのエラーについて言及しているのは1つだけでした。CF自体ではなく、開発者とCFの間のレイヤーに関係していました。
私のテンプレートの何が問題なのか、誰でも指摘できますか?
これは、DynamoDBに関する私の側の誤解によるものです。ここで定義する必要があるonly属性は、キーとして使用される属性です。したがって、AttributeDefinitions配列を次のように変更すると、問題が解決しました。
"AttributeDefinitions": [
{
"AttributeName": "audit_id",
"AttributeType": "S"
}
]