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
あなたは同じバケットとオブジェクトにアクセスできますか?あなたのバケツのポリシーは何ですか? – cuongnv23
@cuongnvはい、私はバケツにアクセスできます。上記の場合は、同じ資格情報を使用しており、両方のシナリオで同じバケットにアクセスしようとしています。資格情報はハードコーディングされていますが、動作していないパラメータとして渡します。何か案が? – Maaraa
あなたの例外は、AccounrがHeadObjectをバケットに行う権限を持っていないことを意味します。こちらをご覧くださいhttp://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html。だから私はあなたのポリシーについて尋ねたのです – cuongnv23