1. ホーム
  2. amazon-dynamodb

[解決済み] CloudFormationがDynamoDBの作成JSONが無効だと主張する。

2023-06-24 09:18:26

質問

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に関する私の誤解が原因でした。その のみ 属性は、キーとして使用されるものだけです。よって、AttributeDefinitionsの配列を以下のように変更することで問題が解決しました。

"AttributeDefinitions": [
            {
                "AttributeName": "audit_id",
                "AttributeType": "S"
            }
]