21 января 2020 г. 3:30

243

Используем Amazon SDK в python boto3

Amazon  Web Services (AWS)- это облачная платформа, разработанная и поддерживаемая компанией Amazon c 2006 года.  Эта платформа предоставляет огромное количествео сервисов , которые вы можете использовать для  решения самых различных задач

В данной статье мы рассмотрим библиотеку Boto3 , которая предоставляет SDK для работы с AWS с использованием языка программирования Python

Установливаем самую последную версию Boto3


pip install boto3

Для авторизации на AWS нам нужны aws_access_key_id и aws_secret_access_key

Для этого нам нужно зарегистрироваться на AWS.

Учетные данные для вашей учетной записи AWS можно найти в консоли IAM.

В boto3 есть два разных уровня API

Клиентские(низкоуровневые) API

API ресурсов

Так начнем работу с AWS. Многие наверно слышали о самом популярном сервисе AWS , который представляет собой файловое хранилище и которое именуется Amazon Simple Storage Service (S3). Файлы хранятся в бакетах(buckets), в которых также можно создавать директории

В первом примере мы авторизуемся на AWS и посмотрим какие имеются у нам buckets


import boto3

client = boto3.client(
    's3',
    # Так делать не рекомендуется 
    aws_access_key_id='ваш access_key_id',
    aws_secret_access_key='ваш secret_access_key'
)

response = client.list_buckets()
print('Ваши buckets:')
for bucket in response['Buckets']:
    print(f'  {bucket["Name"]}')

Во-втором примере мы попытаемся создать новый бакет. Но перед этим мы создадим файл ~/.aws/credentials, где будут храниться наши aws_access_key_id и aws_secret_access_key. Этот файл представляет собой файл в формате INI с именами разделов, соответствующими профилям. Для каждого раздела могут быть указаны три указанные выше конфигурационные переменные: aws_access_key_id, aws_secret_access_key, aws_session_token. Это единственные поддерживаемые значения в общем файле учетных данных.

Устанавливаем библиотеку awscli


pip install awscli

Далеее запускаем команду aws configure:


$ aws configure
AWS Access Key ID: _your_access_key
AWS Secret Access Key: your_secret_access_key
Default region name [us-west-2]: your_region
Default output format [None]: json

Теперь вам не нужно передавать aws_access_key_id и aws_secret_access_key в метод client.Boto3 сам их возьмет из файла ~/.aws/credentials

Теперь напишем сам код , который создает новый бакет


import logging
import boto3
from botocore.exceptions import ClientError


def create_bucket(name, region=None):
    try:
        s3_client = boto3.client('s3')
        s3_client.create_bucket(Bucket=name)
    except ClientError as e:
        logging.error(e)
        return False
    return True

#Обратите внимание ,что имя бакета должно быть уникальным
bucket_name = "your_unique_bucket_name"
create_bucket(bucket_name)

s3 = boto3.client('s3')
response = s3.list_buckets()
print('Existing buckets:')
for bucket in response['Buckets']:
    print(f'  {bucket["Name"]}')

При создании нового bucket нужно обратить внимание на то, что название должно быть уникалным и еще после создания нельзя менять регион , где расположен этот bucket

Заключение

В этой статье были рассмотрены базовые возможности библиотеки boto3 , которые включали в себе вывод и создание buckets

comments powered by Disqus