将表从dynamodb转储到localstack

问题描述 投票:0回答:1

我正在尝试通过 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
amazon-web-services amazon-dynamodb localstack
1个回答
0
投票

我遇到了类似的问题,就我而言,这是由于

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 才能获得所需的结构。

© www.soinside.com 2019 - 2024. All rights reserved.