amazon-s3 - 尝试编写使用 BOTO 将 EC2 实例中的任何数据上传到 S3 存储桶的脚本时几乎没有错误
问题描述
我一直在尝试将我的 EC2 实例备份到 S3 存储桶,但在运行文件时遇到了一些错误。最值得注意的错误是 S3ResponceError: 403 Forbidden
仅供参考,我正在使用我的 aws 访问密钥 ID,来自 Rossetahub 的访问密钥(由学校提供)
下面是我写的代码
import boto
import boto.s3
import os.path
import sys
AWS_ACCESS_KEY_ID = ''
AWS_ACCESS_KEY_SECRET = ''
bucket_name = 'bucketpoly'
sourceDir = 'example_files/'
destDir = 'example_files1/'
conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY_SECRET)
bucket= conn.get_bucket(bucket_name)
uploadFileNames = []
for (sourceDir, dirname, filename) in os.walk(sourceDir):
uploadFileNames.extend(filename)
break
def percent_cb(complete, total):
sys.stdout.write('.')
sys.stdout.flush()
for filename in uploadFileNames:
sourcepath = os.path.join(sourceDir + filename)
destpath = os.path.join(destDir, filename)
print ('Uploading %s to Amazon S3 bucket %s' %
(sourcepath, bucket_name))
print ("singlepart upload")
k = boto.s3.key.Key(bucket)
k.key = destpath
k.set_contents_from_filename(sourcepath, cb=percent_cb, num_cb=10)
这是由此产生的错误
Traceback (most recent call last):
File "/home/student/Desktop/PROJECT FILES/testing2.py", line 11, in <module>
bucket= conn.get_bucket(bucket_name)
File "/usr/local/lib/python3.5/dist-packages/boto/s3/connection.py", line 509, in get_bucket
return self.head_bucket(bucket_name, headers=headers)
File "/usr/local/lib/python3.5/dist-packages/boto/s3/connection.py", line 542, in head_bucket
raise err
boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden
你认为这可能是什么问题?
解决方案
403 Forbidden IAM权限不足导致。根据错误,IAM 用户没有 Listobject 和 Listbucket 权限。
这是您可以用来开始使用 S3 权限的链接:
https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html
推荐阅读
- node.js - 错误:Pm2 管理器节点 js 中的未知选项“--port”
- google-sheets - 使用部分日期/时间戳作为通配符标准的 Google 表格 SUMIF
- asp.net - ASP .Net 文本框中无法识别换行符
- arrays - 在程序开始时不知道大小的情况下声明 char 指针数组
- .htaccess - 为什么我的网站网址末尾有双斜杠,如下所示://
- docker - 使用命令永久删除正在运行/停止/未使用的容器?
- google-cloud-platform - 使用 Google Cloud Storage 托管图像共享站点的图像
- python - 不和谐机器人。bot.loop.create_task(background_task()) 不起作用
- java - 如何将protobuf中的图像转换为Android程序中的位图
- ios - 在 Swift (iOS 13/14) 中为屏幕转换设置导航栏分隔符颜色?