似乎我可能遇到了其他问题(例如,时钟偏移不是问题,并且我已经尝试过设置validate=False,并且我相信我拥有正确的密钥和秘密密钥,因为尝试伪造的密钥或秘密密钥会给我带来不同的错误) 。这是我的脚本:
validate=False
import boto import sys from boto.s3.key import Key BUCKET_NAME = sys.argv[1] AWS_ACCESS_KEY_ID = sys.argv[2] AWS_SECRET_ACCESS_KEY = sys.argv[3] conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) bucket = conn.get_bucket(BUCKET_NAME, validate=False) k = Key(bucket) k.key = 'barbaz' k.set_contents_from_filename('/tmp/barbaz.txt')
结果:
Traceback (most recent call last): File "/home/jonderry/sdmain/src/scripts/jenkins/upload_to_s3.py", line 16, in <module> k.set_contents_from_filename('/tmp/barbaz.txt') File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 1360, in set_contents_from_filename encrypt_key=encrypt_key) File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 1291, in set_contents_from_file chunked_transfer=chunked_transfer, size=size) File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 748, in send_file chunked_transfer=chunked_transfer, size=size) File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 949, in _send_file_internal query_args=query_args File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 664, in make_request retry_handler=retry_handler File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1068, in make_request retry_handler=retry_handler) File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 939, in _mexe request.body, request.headers) File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 882, in sender response.status, response.reason, body) boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>***someRequestId***</RequestId><HostId>***someHostId</HostId></Error>
任何想法是什么问题,或如何进一步诊断?
您似乎无权在此存储桶上进行写操作。什么是水桶政策?您可以确定这个IAM用户可以放这个桶吗?