python - 未能在 S3 上上传公开可用的文件
问题描述
我正在尝试使用 Boto3 在 S3 上上传一个公开可用的文件,但我收到以下错误消息:
boto3.exceptions.S3UploadFailedError: Failed to upload 1.txt to my-texts/1.txt: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
这是我的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::my-texts"
},
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my-texts/*"
}
]
}
这是失败的代码:
s3_client = boto3.client('s3',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
aws_session_token=aws_session_token,
region_name='us-east-1')
s3_client.upload_file(video_file_name, bucket_name, video_file_name, ExtraArgs={'ACL': 'public-read'})
如果我省略 ExtraArgs 我成功上传文件:
s3_client = boto3.client('s3',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
aws_session_token=aws_session_token,
region_name='us-east-1')
s3_client.upload_file(video_file_name, bucket_name, video_file_name)
谢谢,帕维尔
解决方案
推荐阅读
- core-data - 我可以使用单个 privateQueueConcurrencyType 托管对象上下文而没有主队列的 MOC 吗?
- git - Git 发出的这条 LF 和 CRLF 警告信息是什么意思?
- java - 程序制作的 Big-O 运行时
- html - 如何划分html页面
- sql - 如何获取表中两列的唯一值计数?
- python - 用多列熔化 Df
- android - 有没有更好更简单的方法来优化 kotlin 中的辅助回调和处理程序代码?
- python - 如何在 Python 中使用变量调用列表?
- c - 在 ELF(可执行和可链接格式)文件生成中使用 avr-gcc 和 avr-ld 的区别
- android - Android Altbeacon 导致扫描计划任务