Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用boto3从AWS S3 Bucket下载文件会导致ClientError:发生错误(403):禁止_Python_Amazon Web Services_Amazon S3_Boto3_Botocore - Fatal编程技术网

Python 使用boto3从AWS S3 Bucket下载文件会导致ClientError:发生错误(403):禁止

Python 使用boto3从AWS S3 Bucket下载文件会导致ClientError:发生错误(403):禁止,python,amazon-web-services,amazon-s3,boto3,botocore,Python,Amazon Web Services,Amazon S3,Boto3,Botocore,我试图使用提供的访问密钥ID和秘密访问密钥从s3存储桶下载文件。但是,即使我能够浏览数据库并找到文件(因为我已经通过aws cli配置了凭据),尝试下载它们也会导致以下错误: “botocore.exceptions.ClientError:调用HeadObject操作时发生错误(403):禁止” 使用相同的凭据,我可以浏览相同的数据库,并通过云存储浏览器(如Cyberduck)手动下载文件,因此Cyberduck访问数据的方式不会引发403禁止错误 我还验证了boto3能够访问我的aws凭据,

我试图使用提供的访问密钥ID和秘密访问密钥从s3存储桶下载文件。但是,即使我能够浏览数据库并找到文件(因为我已经通过aws cli配置了凭据),尝试下载它们也会导致以下错误: “botocore.exceptions.ClientError:调用HeadObject操作时发生错误(403):禁止”

使用相同的凭据,我可以浏览相同的数据库,并通过云存储浏览器(如Cyberduck)手动下载文件,因此Cyberduck访问数据的方式不会引发403禁止错误

我还验证了boto3能够访问我的aws凭据,并尝试对其进行硬编码

我尝试下载数据的方式非常简单,复制了boto3文档示例:


这会将文件下载到文件名指定的位置和文件,但会调用403禁止错误。

下载文件时,您还需要通过bucket区域。尝试使用CLI配置
region
,或在创建客户端时传递
region\u name

s3 = boto3.client('s3',
    aws_access_key_id=ACCESS_KEY_ID,
    aws_secret_access_key=ACCESS_KEY,
    region_name=AWS_REGION)

我知道这听起来可能很可笑,但请确保您的存储桶名称中没有输入错误或类似的内容

我花了很长时间试图解决这个问题,结果发现我在为s3存储桶设置的env变量中添加了一个额外的字母


奇怪的是,他们给了你一个禁止的错误,而不是“找不到”的错误,但是他们确实给了你。

试着确保你有正确的s3 bucket名称和正确的文件密钥。根据这一点,如果您没有该bucket的ListObject权限,您将获得403(拒绝访问),而不是404(“没有这样的密钥”)。因此,错误代码可能有点误导。尽管在我的案例中指定了区域,但仍然不起作用:(
s3 = boto3.client('s3',
    aws_access_key_id=ACCESS_KEY_ID,
    aws_secret_access_key=ACCESS_KEY,
    region_name=AWS_REGION)