Python 从Docker容器上载到S3

Python 从Docker容器上载到S3,python,docker,amazon-s3,Python,Docker,Amazon S3,我正试图控制Docker。我有一个非常基本的容器设置,它运行一个简单的python脚本: 查询数据库 编写查询结果的CSV文件 将CSV上传到S3。 当我从主机上运行脚本时,一切都按预期进行:查询启动,csv创建和上传完美。但是,当我从Docker容器中运行它时,tinys3失败并出现以下错误: requests.exceptions.ConnectionError: HTTPSConnectionPool(host='my-s3-bucket', port=443): Max retries

我正试图控制Docker。我有一个非常基本的容器设置,它运行一个简单的python脚本:

查询数据库 编写查询结果的CSV文件 将CSV上传到S3。 当我从主机上运行脚本时,一切都按预期进行:查询启动,csv创建和上传完美。但是,当我从Docker容器中运行它时,tinys3失败并出现以下错误:

requests.exceptions.ConnectionError: HTTPSConnectionPool(host='my-s3-bucket', port=443): Max retries exceeded with url: /bucket.s3.amazonaws.com/test.csv (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f4f17cf7790>: Failed to establish a new connection: [Errno -2] Name or service not known',))
在此之前的一切都可以用于查询和CSV创建。但这似乎不正确,因为从我的主机运行脚本不会导致错误


所以我的问题是:我是否遗漏了一些明显的东西?这是tinys3模块的问题吗?我需要在我的容器中设置一些东西来允许它调用吗?或者有更好的方法来实现这一点吗?

或者,您也可以使用客户端库来实现同样的目的

请查找示例代码

希望能有帮助


免责声明:我与

一起工作,我已经…解决了它。bucket/文件名的命名有点不一致。我可以将“/subbucket/file.csv”作为文件上载,但无法将“file.csv”上载到“bucket/subbucket”,即使后者在我的主机上工作。您是如何解决此问题的?我的请求超时,没有错误消息。这是一个关键错误。因此,我没有将bucket设置为'bucket/stuff/test',而希望将文件设置为'file.py',而是将bucket设置为'bucket',将文件名设置为'/stuff/test/file.py'。奇怪的是,前者在本地工作,而不是在我的服务器上。奇怪的问题,不确定你们的是否相似。
from minio import Minio
from minio.error import ResponseError

client = Minio('s3.amazonaws.com',
               access_key='YOUR-ACCESSKEYID',
               secret_key='YOUR-SECRETACCESSKEY')
# Put on object 'my-objectname-csv' with contents from
# 'my-filepath.csv' as 'application/csv'.
try:
    client.fput_object('my-bucketname', 'my-objectname-csv',
                       'my-filepath.csv', content_type='application/csv')
except ResponseError as err:
    print(err)