我在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
我没有在互联网上找到解决我问题的任何答复。
如果有人有任何线索或想法,我将很感激。
预先感谢
答案 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();