我正在尝试从公开且无需身份验证的 S3 存储桶下载文件(意味着无需对访问 key 和 key 进行硬编码即可访问或将其存储在 AWS CLI 中),但我仍然无法通过 boto3 访问它。
Python代码
import boto3
import botocore
from botocore import UNSIGNED
from botocore.config import Config
BUCKET_NAME = 'converted-parquet-bucket'
PATH = 'json-to-parquet/names.snappy.parquet'
s3 = boto3.client('s3', config=Config(signature_version=UNSIGNED))
try:
s3.Bucket(BUCKET_NAME).download_file(PATH, 'names.snappy.parquet')
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
print("The object does not exist.")
else:
raise
执行代码时收到此错误代码
AttributeError: 'S3' object has no attribute 'Bucket'
如果有帮助,这是我的公共(public)政策
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::converted-parquet-bucket/*"
}
]
}
如果您的建议是存储 key ,请不要,这不是我想要做的。
最佳答案
尝试使用资源s3 = boto3.resource('s3')
而不是s3 = boto3.client('s3')
关于python - 使用 Python 在无需身份验证的情况下下载公共(public) S3 存储桶上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58544347/