【问题标题】:Cannot Access Subfolder of S3 bucket – Python, Boto3无法访问 S3 存储桶的子文件夹 – Python、Boto3
【发布时间】:2021-08-21 19:43:24
【问题描述】:

我已获得访问 S3 存储桶的子文件夹的权限,并希望使用 Python 和 boto3 访问其中的所有文件。我是 S3 的新手,并且已经将文档阅读到死,但无法弄清楚如何仅成功访问一个子文件夹。我了解 s3 不使用类 unix 的目录结构,但我无权访问根存储桶。

如何将 boto3 配置为仅连接到此子文件夹?

我已成功使用此 AWS CLI 命令将整个子文件夹下载到我的机器:

aws s3 cp --recursive s3://s3-bucket-name/SUB_FOLDER/ /Local/Path/Where/Files/Download/To --profile my-profile

这段代码:

AWS_BUCKET='s3-bucket-name'
s3 = boto3.client("s3", region_name='us-east-1', aws_access_key_id=AWS_KEY_ID, aws_secret_access_key=AWS_SECRET)
response = s3.list_objects(Bucket=AWS_BUCKET)

返回此错误:

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied

我也尝试在调用 list_objects 时指定“前缀”选项,但这会产生相同的错误。

【问题讨论】:

  • 您是否为您的帐户生成了程序密钥?
  • 我不是帐户的管理员,所以我无法在其中进行任何调整。话虽如此,我有密钥 ID 和密钥,它们使用 CLI 工作。

标签: python amazon-web-services amazon-s3 boto3


【解决方案1】:

您想aws configure 并保存您的凭据和区域,然后使用 boto3 非常简单。

使用 boto3.resource 并像这样获取客户端:

s3_resource = boto3.resource('s3')
s3_client   = s3_resource.meta.client
s3_client.list_objects(Bucket=AWS_BUCKET)

你应该很高兴。

【讨论】:

  • 谢谢。我已经设置好了。我收到与以前相同的错误。
  • AWS 允许区分编程访问和 CLI 访问。我认为这是您的问题,您必须就此联系您的管理员
  • 哦,这可能是它!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多