首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有完全S3访问权限的IAM用户无法下载文件

具有完全S3访问权限的IAM用户无法下载文件
EN

Stack Overflow用户
提问于 2020-11-17 21:48:29
回答 1查看 59关注 0票数 1

我已经用我的管理员帐户创建了一个S3存储桶,并且我已经创建了一个IAM用户(仅限编程访问)。我上传了一个虚拟的txt文件(以管理员身份),我正在使用python boto3下载这个文件,但是我得到了一个Access denied异常。

我不清楚为什么,因为这是一个非常简单的设置。

我的python代码:

代码语言:javascript
运行
复制
import os
import boto3
from dotenv import load_dotenv

# load environment variables
load_dotenv()

boto_session = boto3.session.Session(aws_access_key_id=os.getenv('AWS_ACCESS_ID'), aws_secret_access_key=os.getenv('AWS_ACCESS_KEY'), region_name=os.getenv('AWS_REGION'))
s3 = boto3.client('s3')

with open('test.txt', 'wb') as f:
    s3.download_fileobj('dev-tom', 'readme.txt', f)

我已经检查过,环境中的凭据对于IAM用户是正确的。

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "/.../lib/python3.7/site-packages/boto3/s3/inject.py", line 678, in download_fileobj
    return future.result()
  File "/.../lib/python3.7/site-packages/s3transfer/futures.py", line 106, in result
    return self._coordinator.result()
  File "/.../lib/python3.7/site-packages/s3transfer/futures.py", line 265, in result
    raise self._exception
  File "/.../lib/python3.7/site-packages/s3transfer/tasks.py", line 255, in _main
    self._submit(transfer_future=transfer_future, **kwargs)
  File "/.../lib/python3.7/site-packages/s3transfer/download.py", line 343, in _submit
    **transfer_future.meta.call_args.extra_args
  File "/.../lib/python3.7/site-packages/botocore/client.py", line 357, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/.../lib/python3.7/site-packages/botocore/client.py", line 676, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden

我的存储桶没有附加策略,所以它是默认的。

我的IAM用户配置:

我的文件详细信息:

EN

回答 1

Stack Overflow用户

发布于 2020-11-17 22:08:10

显然,我的问题与存储桶或其权限无关...

这一行忽略了我之前设置的所有会话内容:

代码语言:javascript
运行
复制
s3 = boto3.client('s3')

并只获取它在环境中可以找到的任何访问凭据,这些凭据被设置为另一个没有完全s3访问权限的IAM用户。

(其中之一)正确的解决方案是:

代码语言:javascript
运行
复制
s3 = boto_session.client('s3')

我应该学习编程,仅此而已。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64876520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档