1

私はこのコードを使用しています。これは非常に単純ですが、機能しません。なぜアイデアはありますか?資格情報があれば実行できるはずです。

from boto.s3.connection import S3Connection
import boto
import json

iam = boto.connect_iam(main_aws_id,main_aws_key)
iam.create_group('test_admin')

create_admin_policy = {"Statement":[{"Effect":"Allow","Action":"*", "Resource":"*"}]}
admin_policy=json.dumps(create_admin_policy)

iam.put_group_policy('test_admin', 'AdminPolicy', admin_policy)

iam.create_user('harry')

iam.add_user_to_group('test_admin', 'harry')

key_response=iam.create_access_key('harry')

a=json.dumps(key_response).split(',')   #my way of getting user's id and key
user_AWS_ID=a[4][19:-3]
user_AWS_KEY=a[3][23:-3]

#needs a bit of time for the key to activates

user_conn=S3Connection(user_AWS_ID,user_AWS_KEY)
user_conn.create_bucket('harry_bucket')   #returns: 403 Forbidden. the request signature we calculated does not match the signature you provided
4

1 に答える 1

1

問題は、メソッドからaccess_key_idandを抽出しようとするコードにあります。あなたのコードは、 から 2 文字を切り捨ててしまいます。値を取得するより良い方法は、次のようにすることです。secret_access_keycreate_access_keysecret_access_key

user_conn=boto.connect_s3(key_response.access_key_id, key_response.secret_access_key)
user_conn.create_bucket('<bucket_name>')

を JSON 文字列に変換する必要はありませんkey_response。IAM 呼び出しは特別な Python ディクショナリを返すため、属性としてアクセスすることで埋め込みキーにアクセスできます。次のように通常の辞書アクセスを使用することもできます。

key_response['create_access_key_response']['create_access_key_result']['access_key']['access_key_id']

しかし、ご覧のとおり、これはかなり不器用です。

于 2013-06-04T13:32:39.563 に答える