Загрузите файл из AWS S3, используя Python - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь загрузить файл из корзины 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')

Может ли кто-нибудь помочь мне в этом. Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Для тех, кто пытается загрузить файлы из 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
0 голосов
/ 30 апреля 2018

Вы не используете созданный вами сеанс для загрузки файла, вы используете созданный клиент 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...