web-dev-qa-db-ja.com

CloudFormationは、DynamoDB作成JSONが無効であると主張していますが..

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の間のレイヤーに関係していました。

私のテンプレートの何が問題なのか、誰でも指摘できますか?

78
user1381745

これは、DynamoDBに関する私の側の誤解によるものです。ここで定義する必要があるonly属性は、キーとして使用される属性です。したがって、AttributeDefinitions配列を次のように変更すると、問題が解決しました。

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