2016-08-11 1 views
1

Boto3の公式ドキュメントでは、認証情報をパラメータとして渡してS3バケットに接続できます。しかし、私は問題に直面しています。資格をパラメータとして渡してboto3を使用してS3 Bucketからファイルをダウンロードしてください。

ワーキングシナリオ:ハードコーディングキーID &秘密鍵

s3r = boto3.resource('s3', aws_access_key_id='XXXXXXXXXXXXXXXXXXXX', 
    aws_secret_access_key='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') 
buck = s3r.Bucket('bucket name') 
buck.download_file(filename,filename) 

ノンワーキングシナリオ:渡す

AccessKey = 'XXXXXXXXXXXXXXXXXXXX' 
SecretKey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' 
s3r = boto3.resource('s3', aws_access_key_id=AccessKey, aws_secret_access_key=SecretKey) 
buck = s3r.Bucket('bucket name') 
buck.download_file(filename,filename) 

をパラメータとして、私は非稼働シナリオにエラーの下に直面しています。

botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden 
+0

あなたは同じバケットとオブジェクトにアクセスできますか?あなたのバケツのポリシーは何ですか? – cuongnv23

+0

@cuongnvはい、私はバケツにアクセスできます。上記の場合は、同じ資格情報を使用しており、両方のシナリオで同じバケットにアクセスしようとしています。資格情報はハードコーディングされていますが、動作していないパラメータとして渡します。何か案が? – Maaraa

+0

あなたの例外は、AccounrがHeadObjectをバケットに行う権限を持っていないことを意味します。こちらをご覧くださいhttp://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html。だから私はあなたのポリシーについて尋ねたのです – cuongnv23

答えて

0

http://boto3.readthedocs.io/en/latest/guide/configuration.html

session = boto3.Session(aws_access_key_id=AccessKey, aws_secret_access_key=SecretKey) 
s3 = session.resource('s3') 
+0

これは今私がファイルをダウンロードしているのですが、なぜそれがパラメータとして渡されても動作していないのでしょうか? – Maaraa

関連する問題