问题描述
我为镜像 localstack/localstack:0.12.9.1 启动了一个 Docker 容器。 我通过命令打开了这个容器的内壳:
docker exec -it <container-name> sh
我执行了命令:
aws s3 cp /my-file.txt s3://my-bucket/. --region local --endpoint-url=http://local
stack:4566
然后我收到错误消息:
上传失败:../../../my-file.txt 到 s3://my-bucket/。调用时发生错误 (500) PutObject 操作(达到最大重试次数:4):内部服务器 错误
为了确保这个bucket存在,我执行了以下命令:
aws s3api list-buckets --region local --endpoint-url=http://localstack:4566
我得到了:
{
"Buckets": [
{
"Name": "my-bucket","CreationDate": "2021-05-14T14:23:03.000Z"
}
],"Owner": {
"displayName": "webfile","ID": "bcaf1ffd86f41161ca5fb16fd081034f"
}
}
所以问题不在于桶丢失了。
解决方法
您是否还确保文件 /my-file.txt
存在?因为它应该位于内部容器
对 s3 进行了一些更改/修复。您是否也尝试过使用 localstack/localstack:latest
图像?
作为一种解决方法,您可以打开端口 4566
并从容器外部与其交互,这应该可行。这也可以避免您将文件复制到容器中。