目前,我正试图使用s3连接到我的企业boto3 URL (不是amazon服务),我有以下错误。
EndpointConnectionError:无法连接到端点URL:"布吉..。“,这绝对不是代码中给出的端点。
s3 = boto3.resource(service_name='s3',
aws_access_key_id= 'XXXXXX',
aws_secret_access_key='YYYYYYY',
endpoint_url= 'https://my_buket.s3.my_region.my_company_enpoint_url')
my_bucket=s3.Bucket(s3_bucket_name)
bucket_list = []
for file in my_bucket.objects.filter(Prefix='boston.csv'):
bucket_list.append(file.key)从误差图像 boto3中可以看出,它试图连接到amazonaws url,而这不是我的企业。最后,我想指出,我能够使用minIO https://docs.min.io/连接到我的企业minIO,这表明在aws_access_key_id、与boto3一起使用的aws_secret_access_key和endpoint_url中没有错误。
我使用python3.9环境(Boto3版本1.22.1)、anaconda3.9环境(Boto3版本1.22.0)和jupyter记事本执行代码,总是有相同的错误。操作系统是在Oracle VM虚拟盒上虚拟化的Ubuntu20.04.4LTS。
发布于 2022-07-04 07:56:45
因为有些人似乎也有同样的问题,所以我发布了我找到的解决方案。
出于某种原因,问题中的代码仍然不适用于我。或者,仅通过首先创建会话并从会话创建资源和客户端来处理指向企业S3的操作。注意,在endpoint_url中,没有指示桶。
由于endpoint_url中没有桶,所以可以访问与凭据传递相关联的所有桶,因此有必要在资源和客户端实例方法中指定桶。
session = boto3.Session(region_name=my_region)
resource = session.resource('s3',
endpoint_url='https://s3.my_region.my_company_enpoint_url',
aws_access_key_id='XXXXXX',
aws_secret_access_key='YYYYYY')
client = session.client('s3',
endpoint_url='https://s3.my_region.my_company_enpoint_url',
aws_access_key_id='XXXXXX',
aws_secret_access_key='YYYYYY')
client.upload_file(path_to_local_file, bucket_name, upload_path,
Callback=call,
ExtraArgs=ExtraArgs)发布于 2022-04-27 09:52:47
https://my_buket.s3.my_region.my_company_enpoint_url不是端点。有效的S3端点列表是这里。但通常您不必显式地指定它。Boto3将“知道”要为每个区域使用哪个端点。
https://stackoverflow.com/questions/72026659
复制相似问题