Tôi đang cố gắng sử dụng tính năng "IAM role for EC2" được công bố gần đây của AWS, cho phép ủy nhiệm bảo mật tự động được gửi tới các phiên bản EC2. (xem http://aws.amazon.com/about-aws/whats-new/2012/06/11/Announcing-IAM-Roles-for-EC2-instances/).boto vấn đề với vai trò IAM
Tôi đã thiết lập một cá thể có vai trò IAM như được mô tả. Tôi cũng có thể nhận được (dường như) khóa truy cập/thông tin xác thực phù hợp với curl.
Tuy nhiên, boto không thực hiện cuộc gọi đơn giản như "get_all_buckets", mặc dù tôi đã bật TẤT CẢ quyền S3 cho vai trò.
Các lỗi tôi nhận được là "The ID Khóa AWS truy cập mà bạn cung cấp không tồn tại trong hồ sơ của chúng tôi"
Tuy nhiên, phím truy cập được liệt kê trong các lỗi phù hợp với một tôi nhận được từ curl.
Đây là kịch bản thất bại, chạy trên một thể hiện EC2 với một vai trò quan IAM kèm theo cung cấp cho tất cả các quyền S3:
import urllib2
import ast
from boto.s3.connection import S3Connection
resp=urllib2.urlopen('http://169.254.169.254/latest/meta-data/iam/security-credentials/DatabaseApp').read()
resp=ast.literal_eval(resp)
print "access:" + resp['AccessKeyId']
print "secret:" + resp['SecretAccessKey']
conn = S3Connection(resp['AccessKeyId'], resp['SecretAccessKey'])
rs= conn.get_all_buckets()
Đối với phương pháp thủ công, bạn nói đúng, thêm security_token đã sửa nó. Cảm ơn bạn! Tôi đánh dấu bạn là 'câu trả lời' cho điều đó. – Nils
Phiên bản đơn giản mà bạn đã đăng cũng hoạt động sau khi nâng cấp lên 2.5.1. Vì vậy, nếu tôi có thể cung cấp cho bạn 2 chấp nhận, tôi sẽ! – Nils
Tuyệt vời, vui vì nó làm việc cho bạn bây giờ. Tôi thích tính năng IAM Roles mới, nó thực sự mượt mà. – garnaat