AWS и Python: пакет Boto3

Домо Аригато, AWS Boto

Наступает 2020 год, и мир облачных хранилищ и вычислений, скорее всего, станет направлением для большинства предприятий в ближайшие десятилетия. Перспектива иметь масштабируемое хранилище и вычислительную мощность без необходимости покупать физическое оборудование очень привлекательна. Три больших собаки облака - это Amazon Web Service (AWS), Microsoft Azure и Google Cloud Service.

Поскольку Python является одним из самых популярных языков (на момент написания этой статьи), имеет смысл рассмотреть пакеты, которые позволяют работающему инженеру по данным, специалисту по данным и специалисту по машинному обучению, которые используют Python, использовать мощь облака. , независимо от того, какую услугу вы выберете. У Microsoft Azure есть пакет azure, у Google есть свои облачные пакеты google, а у AWS есть boto3. В этой статье речь пойдет о boto3.

Настройка

Во-первых, нам нужно все настроить. AWS предлагает бесплатные услуги, и вы можете бесплатно зарегистрироваться. Вам понадобятся имя пользователя и токен для входа в boto3 через серверную часть, поэтому перейдите на https://aws.amazon.com и зарегистрируйтесь для получения бесплатной учетной записи. Вам также понадобится установить boto3 в вашей среде IDE, ноутбуке и т. Д. Это просто делается с помощью pip или conda install boto3.

Затем вам нужно будет создать пользователя через консоль Amazon Identity and Access Management (IAM). Здесь вы можете добавлять пользователей, группы и все, что связано с доступом. Вам нужно будет создать роль для себя, чтобы иметь постоянный токен авторизации для учетных данных.

После этих шагов, описанных выше, просто подтвердите настройки, и пользователь получит идентификатор ключа доступа и секретный ключ доступа. Они понадобятся для запуска сеанса AWS на вашем локальном компьютере.

Начать сеанс

Здесь будет сэкономлено ваше время. Начать сеанс так же просто, как открыть свою среду IDE или записную книжку и использовать следующее:

import boto3

s3 = boto3.client(‘service_name’, region_name=’region_name’,
                   aws_access_key_id=key,
                   aws_secret_access_key=password)

Для контекста: service_name будет означать, к какому сервису AWS вы подключаетесь (S3, SNS, Comprehend, Rekognition и т. Д.), А регион - это регион вычислительного сервиса, к которому вы подключаетесь. Регион важен, потому что в некоторых случаях от него зависят затраты. См. Список услуг на веб-сайте AWS и список регионов https://howto.lintel.in/list-of-aws-regions-and-availability-zones/. Доступны будут только те сервисы, на которые у пользователя есть разрешение. Извините, на данный момент список служб не требуется, поэтому вам нужно будет загружать их по очереди.

Примеры услуг и функций.

S3. Простое решение для хранения данных AWS. Здесь создаются папки и файлы и происходит их хранение. Это нереляционное хранилище, поэтому оно может занимать много разных типов файлов. Термин AWS для папок - «корзины», а файлы - «объекты». Вот несколько функций для S3:

import boto3, login into ‘s3’ via boto.client
#### create bucket
bucket = s3.create_bucket(Bucket=’bucket_name’)
        
#### list bucket
bucket_response=s3.list_buckets() #requests a list of buckets
buckets = bucket_response[‘Buckets’] #sets bucket list from Buckets key
print(buckets) 
        
#### delete bucket
response = s3.delete_bucket(Bucket=‘bucket_to_be_deleted’)
    
#### upload object
s3.upload_file(Filename=’local_file_path’,
               Bucket = ‘bucket_name’,
               Key = ‘object_name’,
               ExtraArgs={‘ACL’:’acl_type’, #sets access control limit type
               ‘ContentType’:’content_type’} #to specify type of content (html, jpg, etc.)
             
#### list objects
#obtain many files
response =s3.list_objects(Bucket=’bucket_name’,
                          MaxKeys=2 #maximum number of files to list
                          Prefix=’prefix_of_file_for_search’)
print(response)
#obtain single file
response =s3.head_object(Bucket=’bucket_name’, Key=’file_name’)
        print(response)
#### download files
s3.download_file(Filename=’local_path_to_save_file’,Bucket=’bucket_name’,Key=’file_name’)
        
#### delete file

s3.delete_object(Bucket=’bucket_name’,Key=’file_name’)

SNS. Простая система уведомлений AWS. Эта служба будет отправлять уведомления группам и пользователям в соответствии с условиями, установленными администратором. Вот некоторые функции для SNS:

import boto3, login into ‘sns’ via boto.client
#### create topic
response=sns.create_topic(Name=’topic_name’)[‘TopicArn’] #sets topic and grabs response
        
#### list topics
response=sns.list_topics()
        
#### delete topics
sns.delete_topic(TopicArn=’full_topic_arn_value’)
        
#### create subscription
resp_sms = sns.subscribe(TopicArn = topic_name,  
                         Protocol='delivery_method,
                         Endpoint=’phone_email_etc’)
                            
#### list subscriptions
response = sns.list_subscriptions_by_topic(TopicArn = topic_name)
    subs = pd.DataFrame(response['Subscriptions']) #converts list to a df
#### delete subscription
sns.unsubscribe(SubscriptionArn=’full_sub_arn’)
    
#### send messages
##### publish to a topic
response = sns.publish(TopicArn = topic_arn, 
                        Message = ‘body of message’ #can use string formatting,
                        Subject = ‘Subject line’)
                        
##### sending single sms
response = sns.publish(PhoneNumber = ‘phone_number’,Message = ‘body of message’) #can use string formatting

Понимать. Comprehend - это сервис AWS для обработки естественного языка. Он может определять, на каком языке написан файл, переводить и проводить анализ тональности. Вот эти функции:

#### text translate
translate = ‘translate’ via boto.client
response=translate.translate_text(Text=variable,’string’,etc.,
                                  SourceLanguageCode = ‘auto’,
                                  TargetLanguageCode = ’language_to_translate_to’)
                             
#### detecting language
comprehend = ‘comprehend’ via boto.client
  response=comprehend.detect_dominant_language(Text=variable,’string’,etc.,)
        
#### sentiment analysis
comprehend = ‘comprehend’ via boto.client    
    response=comprehend.detect_sentiment(Text=variable,’string’,etc.,LanguageCode=’language’)

Признание. Это сервис распознавания изображений AWS. На самом деле он довольно хорошо обнаруживает объекты и извлекает текст из изображений. Вот несколько функций:

#### object detection
import boto3, login into ‘s3’ via boto.client
#upload file where images are located
rekog = ‘rekognition’ via boto.client
  response=rekog.detect_labels(Image=’image_name’:
                              {‘Bucket: ’bucket_name’, ’Name’: ’file_name’},
                              MaxLabels = maximum # of objects to detect
                              MinConfidence = set confidence level of classification)
              
#### text detection
import boto3, login into ‘s3’ via boto.client
#upload file where images are located
rekog = ‘rekognition’ via boto.client
response = rekog.detect_text(Image=’image_name’:
                           {‘Bucket: ’bucket_name’, ’Name’: ’file_name’},
                            MinConfidence = set confidence level of classification)

Очевидно, что существует множество сервисов и намного больше функций, на обобщение которых уйдет некоторое время. Это даст вам хорошее начало и возможность изучить сервисы AWS через Python. Как всегда, репозитории для этих элементов доступны через мой Github по адресу https://github.com/Jason-M-Richards/Data-Science-Toolkit.