以下のコードを使用して、Amazon S3バケットからローカルにファイルをダウンロードしようとしていますが、「認証情報が見つかりません」というエラーが表示されます
以下に、私が書いたコードを示します。
from boto3.session import Session
import boto3
ACCESS_KEY = 'ABC'
SECRET_KEY = 'XYZ'
session = Session(aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
s3 = session.resource('s3')
your_bucket = s3.Bucket('bucket_name')
for s3_file in your_bucket.objects.all():
print(s3_file.key) # prints the contents of bucket
s3 = boto3.client ('s3')
s3.download_file('your_bucket','k.png','/Users/username/Desktop/k.png')
誰もこれで私を助けることができます。ありがとう。
作成したセッションを使用してファイルをダウンロードするのではなく、作成したs3クライアントを使用しています。クライアントを使用する場合は、資格情報を指定する必要があります。
your_bucket.download_file('k.png', '/Users/username/Desktop/k.png')
または
s3 = boto3.client('s3', aws_access_key_id=... , aws_secret_access_key=...)
s3.download_file('your_bucket','k.png','/Users/username/Desktop/k.png')
AWS S3からファイルをダウンロードして他の産業用強度機能を備えたよりユーザーフレンドリーなソリューションを探している他のユーザーについては、 https://github.com/d6t/d6tpipe をご覧ください。 S3機能をよりシンプルなインターフェースに抽象化します。また、ディレクトリ同期、ファイルのアップロード、アクセス許可、およびS3(およびftp)からファイルを同期するために必要な他の多くのこともサポートしています。
import d6tpipe
api = d6tpipe.api.APILocal() # keep permissions locally for security
settings = \
{
'name': 'my-files',
'protocol': 's3',
'location': 'bucket-name',
'readCredentials' : {
'aws_access_key_id': 'AAA',
'aws_secret_access_key': 'BBB'
}
}
d6tpipe.api.create_pipe_with_remote(api, settings)
pipe = d6tpipe.Pipe(api, 'my-files')
pipe.scan_remote() # show all files
pipe.pull_preview() # preview
pipe.pull(['k.png']) # download single file
pipe.pull() # download all files
pipe.files() # show files
file=open(pipe.dirpath/'k.png') # access file