2013-06-04 3 views
1

이 코드를 사용하고 있는데이 코드는 매우 간단하지만 작동하지 않습니다. 왜 어떤 아이디어? 자격 증명이있는 경우이를 실행할 수 있어야합니다.amzon s3 boto, 새 그룹 부여 IAM 액세스, 403 오류

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 

답변

1

문제는 create_access_key 방법에서 access_key_idsecret_access_key를 추출하려고 당신의 코드입니다. 코드가 secret_access_key의 두 문자를 잘라 버립니다. 값을 얻을 수있는 더 좋은 방법은이 작업을 수행하는 것입니다 :

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

IAM 호출하면 의해 임베디드 키에 액세스 할 수있는 특별한 파이썬 사전을 반환 이후 JSON 문자열로 key_response을 변환 할 필요가 없습니다 속성으로 액세스합니다. 다음과 같이 일반 사전 액세스를 사용할 수도 있습니다.

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

그러나 알다시피이 방법은 다소 서툴 릅니다.

+0

나는 그 실수를 믿을 수 없다. 도와 줘서 고맙다. – Kiarash