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.