【问题标题】:Create tables in local AWS dynamoDB besed on information from aws-sam template.yaml file using Java使用 Java 根据来自 aws-sam template.yaml 文件的信息在本地 AWS dynamoDB 中创建表
【发布时间】:2021-03-10 06:47:15
【问题描述】:

我在 Java 集成测试中运行本地 dynamoDB

AmazonDynamoDBLocal embeddedDynamo = DynamoDBEmbedded.create()
AmazonDynamoDB client = embeddedDynamo.amazonDynamoDB();
DynamoDB dynamoDB = new DynamoDB(client);

现在我需要根据 SAM template.yaml 文件中的定义创建表。我可以使用 Gradle 在类路径上复制该文件,并通过一些 Java/Groovy 工具对其进行解析,然后使用解析后的映射来提供 DynamoDB 实例 API 以创建这些表。

但我想知道是否有任何库或工具可以为我做这件事?

谢谢你, 卢卡斯

【问题讨论】:

    标签: java amazon-web-services amazon-dynamodb aws-sam


    【解决方案1】:

    您需要自己创建它。您可以使用 json 文件和 aws cli 的 dynamodb 命令来执行此操作,例如:

    my-table.json

    {
        "TableName": "MyTable",
        "KeySchema": [
          { "AttributeName": "Id", "KeyType": "HASH" }
        ],
        "AttributeDefinitions": [
          { "AttributeName": "Id", "AttributeType": "S" }
        ],
        "ProvisionedThroughput": {
          "ReadCapacityUnits": 1,
          "WriteCapacityUnits": 1
        }
    }
    

    aws cli 的 dynamodb create-table 命令示例

    aws dynamodb create-table --cli-input-json file://my-table.json --endpoint-url http://localhost:8000

    备注

    【讨论】:

    • 但是你告诉我如何使用 CLI 来完成。问题是如何使用java代码来做到这一点。关键是我有集成测试,他们需要能够完全设置环境,然后在测试运行时清理它。数据库仅在测试运行时启动。而且我还在 yaml 中定义了 dynamoDB 设置,并且实际部署和测试都需要使用相同的定义。所以没有分隔的json
    • 啊。我现在明白了。我相信这个答案应该对你有用。 stackoverflow.com/a/43385883/794088
    • 不,你没有。你分享了如何使用 API。但是我想在jave代码中直接说“获取template.yaml,从该文件中提取dynamoDB设置并使用它在本地创建这些表”。我在问现有的工具。但我想没有类似的东西,所以我必须创建一些
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 2021-03-24
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多