我们如何在 docker 上运行 Neptune 图形数据库
由于 Neptune DB 最近已产品化,因此在 Localstack 上不可用,有人可以指导我如何将 AWS Neptune DB Service 部署到 docker 容器中
amazon-web-services docker docker-compose amazon-neptune localstack
我有一个奇怪的问题,试图让boto3在AWS SAM local连接到localstack S3。我知道这特别奇怪,因为SQS工作正常。这两个localstack和AWS SAM local被调用,以泊坞窗网我已经创建,称为内运行test。
我的(非工作 S3)Python 代码是:
ACCESS_KEY='123'
SECRET_KEY='abc'
s3 = boto3.client('s3',
endpoint_url="http://docker.for.mac.localhost:4572",
use_ssl=False,
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
print s3.list_buckets()
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我错误:An error occurred (NoSuchBucket) when calling the ListBuckets operation: The specified bucket does not exist: NoSuchBucket.
但是,如果我将代码更改为 use localstack SQS,如下所示:
ACCESS_KEY='123'
SECRET_KEY='abc'
sqs = boto3.client('sqs',
endpoint_url="http://docker.for.mac.localhost:4576",
use_ssl=False,
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
print sqs.list_queues()
Run Code Online (Sandbox Code Playgroud)
一切正常,它列出了我在localstack SQS.
我已经根据文章如何使用 LocalStack 在本地伪造 AWS设置了localstack安装。我已经测试过将文件复制到模拟的 S3 服务,并且效果很好。
我开始寻找我上传的测试文件。我看到我上传的文件有一个编码版本.localstack/data/s3_api_calls.json,但我在其他任何地方都找不到。
鉴于:DATA_DIR=/tmp/localstack/data我期待在那里找到它,但事实并非如此。
我可以直接在文件系统上访问它并不重要,但这会很好。
我的问题是:是否有任何地方/方式可以查看上传到 localstack 的模拟 S3 服务的文件?
我正在尝试在 Windows 10 计算机上试验Localstack 。
所以我似乎 Localstack 运行正常,但是当我尝试对 Localstack 实例运行 AWS 命令时,出现错误Unable to locate credentials。
例如
CMD > docker run --rm -it amazon/aws-cli --endpoint-url=http://localhost:4566 s3 mb s3://testbucket
make_bucket failed: s3://testbucket Unable to locate credentials
Run Code Online (Sandbox Code Playgroud)
和我的泊坞窗文件:
version: '3.2'
services:
localstack:
image: localstack/localstack # This will pull the latest
container_name: localstack …Run Code Online (Sandbox Code Playgroud) 通过 docker-compose 运行 localstack 和 app 来虚拟一个 s3 存储桶,但出现错误:
"msg":"Failed to upload file /test-data/test.txt: The AWS Access Key Id you provided does not exist in our records."
Run Code Online (Sandbox Code Playgroud)
如果我使用有效的 AWS 凭证运行应用程序docker run,它将成功运行并连接。有什么想法我做错了什么吗?
version: '3.8'
services:
postbox:
build: .
ports:
- "8000:8000"
environment:
- S3_BUCKET=localstack-postbox-s3
- MESSAGE_BUS_ENDPOINT=http://localhost
- AWS_REGION=eu-west-2
- AWS_ACCESS_KEY_ID=xyz
- AWS_SECRET_ACCESS_KEY=aaa
- NODE_ENV=test
depends_on:
- localstack
localstack:
container_name: localstack
image: localstack/localstack:0.14.2
ports:
- "4566-4599:4566-4599"
environment:
- SERVICES=s3
volumes:
- ./infra/localstack:/docker-entrypoint-initaws.d
aws:
container_name: aws-cli
image: amazon/aws-cli:latest
environment:
- AWS_REGION=eu-west-2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 LocalStack 进行端到端测试,但无法阅读通过 LocalStack/SES 发送的电子邮件。有没有办法做到这一点?
我希望我的 Cypress e2e 测试调用我的后端服务,后端服务撰写一封包含链接的电子邮件并通过 LocalStack/SES 发送电子邮件。然后我希望我的 e2e 测试等待该电子邮件,阅读其中发送的链接,然后继续。
我设法调用 LocalStack 的 SES 来发送电子邮件,并且我知道支持 LocalStack 的 moto 库将发送的消息存储在内存中。有没有办法阅读这些消息?
我的团队正在尝试为我们的项目进行本地设置。我们正在使用 image 运行相同的 docker-compose 文件localstack/localstack:0.8.10。我们正在运行相同的 shell 脚本。我们的脚本看起来像这样......
awslocal sns subscribe \
--topic-arn arn:aws:sns:us-east-1:123456789012:cx-clientcomm-traffic-controller-sent \
--protocol sqs \
--notification-endpoint http://localhost:4576/queue/cx-clientcomm-request-processor-queue
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,两名开发人员都会收到此错误。Could not connect to the endpoint URL: http://localhost:4566对于 SQS。
我知道这个端口用于最新版本的 localstack,但他们运行与我们相同的映像。
有任何想法吗??
我已经克隆了 localstack 存储库并使用 docker-compose up 公开了它,我得到了端口 4566,正如您可以看到日志一样:
localstack_main | [2021-02-26 06:30:24 +0000] [22] [INFO] Running on https://0.0.0.0:4566 (CTRL + C to quit)
localstack_main | 2021-02-26T06:30:24:INFO:hypercorn.error: Running on https://0.0.0.0:4566 (CTRL + C to quit)
localstack_main | Starting mock API Gateway service on http port 4566 ...
localstack_main | Starting mock CloudFormation service on http port 4566 ...
localstack_main | Starting mock CloudWatch service on http port 4566 ...
localstack_main | Waiting for all LocalStack services to be ready
localstack_main | Starting …Run Code Online (Sandbox Code Playgroud) 我使用 docker-compose 在 2 个独立的容器中运行 python API 和 Localstack 实例,以进行本地开发。
该 API 有一个端点,可生成预签名的 AWS S3 URL 并重定向用户,以便直接从 S3 加载图像。
在本地开发中,API 使用 localstack 容器的地址作为自定义端点 url(即:boto3.client("s3",endpoint_url="http://localstack:4566"))来实例化 boto3 客户端,这允许 API 访问 localstack 容器内的资源。
问题是 boto3 客户端返回的预签名 URL 使用该localstack地址,浏览器无法加载它,因为 localstack 资源暴露给主机,位于http://localhost:4566.
如果我尝试在 boto3 客户端实例化中将 aws 资源端点 url 设置为localhost,则在容器内运行的 API 将在其自己的容器的本地主机中查找 AWS 资源,而不是在主机中查找 localstack 资源被暴露。
有没有办法使用相同的地址从主机的浏览器和不同的容器访问在 docker 容器中运行的 localstack 资源?
[编辑]我在 mac 上使用 docker,以防发生任何变化[/编辑]
操作系统:mac Os Big sur
您好,我想从也在测试网络中运行的另一个 docker 容器连接到在测试网络中的 4566 上运行的本地堆栈。
如果我运行,则从 docker 容器内部:
aws --endpoint-url=http://localhost:4566 dynamodb list-tables
Could not connect to the endpoint URL: "http://localhost:4566/"
Run Code Online (Sandbox Code Playgroud)
如果我运行,则在 Docker 容器之外:
aws --endpoint-url=http://localhost:4566 dynamodb list-tables
{
"TableNames": [
"test-table-1"
]
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激