我无法从使用docker运行的localstack获取dynamoDB表的列表

时间:2018-07-12 09:49:23

标签: docker atlassian-localstack

我在docker容器中安装了localstack和awscli。 我运行不同的aws命令以列出流和存储桶,但是当我尝试列出dynamoDB表时(如下所示),它失败了:

{
  "rules": {
    "GeneralMessage": {
      ".read": "root.child('user').child(auth.uid).child('inGeneral').child('general').val() === true",
      ".write": "root.child('user').child(auth.uid).child('inGeneral').child('general').val() === true"
    }
  }
}

这是我得到的错误:

aws --region us-east-1 --endpoint-url=http://localhost:4569 dynamodb list-tables

我没有在互联网上找到解决我问题的任何答复。

如果有人有任何线索或想法,我将很感激。

预先感谢

2 个答案:

答案 0 :(得分:1)

如果要在localstack上查看Dynamo数据库,则可以安装Commandeer,它为您提供本地和AWS的UI。 https://getcommandeer.com

答案 1 :(得分:1)

如果您使用的是Java,则可以使用jar库来模拟一些亚马逊组件:

首先,您需要在pom.xml中添加以下组件,以便能够在测试期间直接初始化本地堆栈:

<dependency>
    <groupId>cloud.localstack</groupId>
    <artifactId>localstack-utils</artifactId>
    <version>0.2.0</version>
    <scope>test</scope>
</dependency>

然后,如果需要使用dynamo,则需要指定以下库,因为从aws提供的最新库不符合最新版本的localstack:

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-core</artifactId>
    <version>1.11.721</version>
    <scope>test</scope>
</dependency>

现在,您可以使用以下注释来使用docker实例化堆栈,如果系统中不存在这些图像,则会自动将其拉出。因此,无需运行任何docker / docker-compose映像。

@LocalstackDockerProperties(services = {"dynamodb"})
@ExtendWith(LocalstackDockerExtension.class)
@Slf4j
public class TestPipelineComplete {

public static final String AWS_ACCESS_KEY_ID = "foo";
public static final String AWS_SECRET_ACCESS_KEY = "bar";
    static {
        System.setProperty("AWS_ACCESS_KEY_ID", AWS_ACCESS_KEY_ID);
        System.setProperty("AWS_SECRET_ACCESS_KEY", AWS_SECRET_ACCESS_KEY);
    }
}

现在,如果您需要初始化DynamoDB客户端,则可以使用以下行:

final AmazonDynamoDB clientDynamoDB = cloud.localstack.TestUtils.getClientDynamoDB();