我正在尝试通过 docker 设置本地堆栈以进行本地开发,但在尝试从 AWS Dynamodb 实例导入表时遇到了困难。
我通过 describe-table:
转储表格aws dynamodb describe-table --table-name tableName --profile dev --region ap-southeast-2 > table.json
然后将其转储到我的本地堆栈:
aws dynamodb create-table --endpoint-url http://localhost:4566 --region ap-sountheast-2 --cli-input-json file://table.json
我得到的只是以下错误:
Parameter validation failed:
Missing required parameter in input: "AttributeDefinitions"
Missing required parameter in input: "TableName"
Missing required parameter in input: "KeySchema"
Unknown parameter in input: "Table", must be one of: AttributeDefinitions, TableName, KeySchema, LocalSecondaryIndexes, GlobalSecondaryIndexes, BillingMode, ProvisionedThroughput, StreamSpecification, SSESpecification, Tags, TableClass, DeletionProtectionEnabled, ResourcePolicy, OnDemandThroughput
json 文件中肯定存在 AttributeDefinitions、TableName 和 KeySchema。 我的 awscli 版本如下:
aws-cli/2.17.16 Python/3.11.9
我遇到了类似的问题,就我而言,这是由于
describe-table
命令的输出造成的。在我使用的 CLI 版本中(根据文档,CLI 版本可能会影响 JSON 结构)该命令返回 JSON 结构:
{
Table: {
... // all the table properties needed by create-table
}
}
使用 jq 命令创建了一个新的临时文件,用作
create-table
命令的输入:
jq -r '.Table' table.json >> newtable.json
但这还不够,因为
describe-table
仍然提供 create-table
无法解析的附加信息。有点痛苦,但我必须更多地操作 json 才能获得所需的结构。