2016-12-03 8 views
0

私はS3に画像をアップロードするためにPythonとBotoを使用しています。 「Any Authenticated AWS User」の権限受領者を追加し、この権限受領者にアップロード/削除の許可を与えると、それを動作させることができます。しかし、このサイトのドキュメントといくつかの異なる投稿からの私の印象は、アカウントに認証された認証されたAWSユーザーだけでなく、文字通り、バケツにアクセスすることを許可するということです。しかし、私は唯一のアップロードを与える場合、私は、ファイル(403)をアップロードすることができません/私はこのような認証を行うにもかかわらず、アカウントの所有者に許可を削除します。私はこのような状況で間違ったS3 Boto 403禁止「Any Authenticated AWS User」へのアクセスが許可されていない限り

s3 = boto.connect_s3(aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY) 

im = Image.open(BytesIO(urllib.urlopen(self.url).read())) 
filename = self.url.split('/')[-1].split('.')[0] 
extension = self.url.split('.')[-1] 
out_im2 = cStringIO.StringIO() 
im.save(out_im2, im.format) 
key = bucket.new_key(filename + "." + extension) 
key.set_contents_from_string(out_im2.getvalue(), headers={ 
    "Content-Type": extension_contenttype_mapping[extension], 
}) 
key.set_acl('public-read') 
self.file = bucket_url + filename + "." + extension 

何をしているのですか?

答えて

0

私が探していた答えではないにしても、少なくとも私は答えを見つけました。このバケットに固有のユーザーを作成し、そのユーザーをAmazonS3FullAccess権限を持つグループに追加しました。作成する必要があります。そして、彼らは代わりに、アカウントの所有者のこのユーザを使用するように私は私のboto要求を変更し、私はこのバケットポリシーを追加しました:バケットポリシーがいた場合、私は知りませんが、

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "arn:aws:iam::111111111111:root" 
      }, 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::media.example.com", 
       "arn:aws:s3:::media.example.com/*" 
      ] 
     } 
    ] 
} 

これは、私のために働きました解決策の一部であるかどうかは分かりませんが、所有者ユーザーとして試していたときになぜそれがうまくいかなかったのかまだ分かりません。これは、とにかくやり方をより適切かつ安全に行う方法です。

関連する問題