Управление идентификацией и доступом в AWS Glue
Для доступа к AWS Glue требуются учетные данные. Эти учетные данные должны иметь разрешения на доступ к AWS.
ресурсов, таких как таблица AWS Glue или экземпляр Amazon Elastic Compute Cloud (Amazon EC2). Следующие разделы
предоставить подробную информацию о том, как вы можете использовать AWS Identity and Access Management
(IAM) и AWS Glue для защиты доступа к вашим ресурсам.
Темы
- Аутентификация
- Управление правами доступа для AWS Glue
ресурсы - Разрешения, необходимые для использования AWS Glue
консоль - Политики на основе удостоверений (политики IAM) для
управление доступом - Политики ресурсов AWS Glue для управления доступом
- Предоставление доступа между учетными записями
- Указание ARN ресурсов AWS Glue
- Примеры политики управления доступом AWS Glue
- Разрешения API AWS Glue:
Действия
и ссылка на ресурсы
Вы можете получить доступ к AWS под любым из следующих типов удостоверений:
Корневой пользователь учетной записи AWS
При создании учетной записи AWS вы начинаете с одного удостоверения для входа, которое имеет полный доступ ко всем сервисам AWS.
и ресурсы на счету. Этот идентификатор называется корневым пользователем AWS , и доступ к нему осуществляется
войдите в систему с адресом электронной почты и паролем, которые вы использовали для создания учетной записи. Мы
настоятельно рекомендуется не использовать пользователя root для выполнения повседневных задач. Защитите свои учетные данные пользователя root и используйте их для
выполнять задачи, которые может выполнять только пользователь root. Полный список задач, требующих входа в систему в качестве пользователя root, см. в разделе Задачи, для которых требуются учетные данные пользователя root в Справочное руководство по управлению учетными записями AWS .Пользователи и группы IAM
Пользователь IAM — это личность в вашей учетной записи AWS, которая имеет определенные разрешения для одного человека или приложения. По возможности мы рекомендуем использовать временные учетные данные вместо создания пользователей IAM с долгосрочными учетными данными, такими как пароли и ключи доступа. Однако если у вас есть конкретные варианты использования, требующие долгосрочных учетных данных от пользователей IAM, мы рекомендуем чередовать ключи доступа. Дополнительные сведения см. в разделе Регулярно меняйте ключи доступа для случаев использования, требующих долгосрочных учетных данных в Руководство пользователя IAM .
Группа IAM — это идентификатор, указывающий набор пользователей IAM.
Вы не можете войти в группу. Вы можете использовать группы, чтобы указать разрешения для нескольких пользователей одновременно. Группы упрощают управление разрешениями для
большие группы пользователей. Например, вы можете создать группу с именем IAMAdmins и предоставить этой группе права на администрирование IAM.
Ресурсы.Пользователи отличаются от ролей. Пользователь однозначно связан с одним человеком или приложением, но предполагается, что роль может быть назначена кем угодно.
кому это нужно. Пользователи имеют постоянные долгосрочные учетные данные, но роли предоставляют временные учетные данные. Дополнительные сведения см. в разделе Когда создавать пользователя IAM (вместо роли) в
Руководство пользователя IAM .Роль IAM
Роль IAM — это идентификатор IAM, который
вы можете создать в своей учетной записи, которая имеет определенные разрешения. Роль IAM похожа на
пользователя IAM, поскольку это удостоверение AWS с политиками разрешений, которые определяют
что личность может и не может делать в AWS. Однако вместо однозначной связи
с одним человеком роль предназначена для того, чтобы ее мог взять на себя любой, кто в ней нуждается. А также роль
не имеет стандартных долгосрочных учетных данных, таких как пароль или ключи доступа, связанные
с этим. Вместо этого, когда вы принимаете роль, она предоставляет вам временные учетные данные безопасности.
для вашей ролевой сессии.
Роли IAM с временными учетными данными полезны в
следующие ситуации:Доступ федеративных пользователей –
Чтобы назначить разрешения для федеративного удостоверения, вы создаете роль и определяете разрешения для роли. Когда федеративное удостоверение проходит проверку подлинности, оно связывается с ролью и получает разрешения, определенные этой ролью. Сведения о ролях для федерации см.
Создание роли для стороннего поставщика удостоверений в руководстве пользователя IAM .
Если вы используете IAM Identity Center, вы настраиваете набор разрешений. Чтобы управлять доступом ваших удостоверений после аутентификации, IAM Identity Center сопоставляет набор разрешений с ролью в IAM.
Сведения о наборах разрешений см.
Наборы разрешений в AWS IAM Identity Center (преемник AWS Single Sign-On) Руководство пользователя .Доступ к сервису AWS –
Роль службы — это роль IAM, которую служба предполагает выполнять.
действия от вашего имени. Администратор IAM может создавать, изменять и удалять роли службы из IAM. За
дополнительные сведения см. в разделе Создание роли для делегирования разрешений.
к сервису AWS в руководстве пользователя IAM .Приложения, работающие на Amazon EC2 –
Вы можете использовать роль IAM для управления временными учетными данными для приложений, которые работают на инстансе EC2 и отправляют запросы AWS CLI или AWS API.
Это предпочтительнее хранения ключей доступа в экземпляре EC2. Чтобы назначить роль AWS экземпляру EC2 и сделать его
доступным для всех его приложений, вы создаете профиль экземпляра, который прикрепляется к
экземпляр. Профиль экземпляра содержит роль и позволяет программам, работающим на экземпляре EC2,
получить временные полномочия. Дополнительные сведения см. в разделе Использование роли IAM для предоставления разрешений приложениям, работающим на инстансах Amazon EC2 в
Руководство пользователя IAM .
Javascript отключен или недоступен в вашем браузере.
Чтобы использовать документацию Amazon Web Services, должен быть включен Javascript. Инструкции см. на страницах справки вашего браузера.
Условные обозначения документов
Разработка
конечные точки
Обзор управления доступом
AWS Glue 101: все, что вам нужно знать, из полного пошагового руководства | Кевин Бок
Фото Erika Pugliese из Pexels
Вы когда-нибудь задумывались, как крупные технологические компании проектируют свои производственные ETL-конвейеры? Заинтересованы в том, чтобы узнать, как TB, ZB данных легко захватываются и эффективно анализируются в базу данных или другое хранилище для удобного использования учеными и аналитиками данных?
В этом посте я подробно объясню ( с графическим представлением! ) дизайн и реализацию процесса ETL с использованием сервисов AWS (Glue, S3, Redshift). Любой, у кого нет предыдущего опыта и знакомства со стеками AWS Glue или AWS (или даже глубоким опытом разработки), должен легко пройти через это. Пошаговое руководство к этому посту должно послужить хорошим начальным руководством для тех, кто заинтересован в использовании AWS Glue.
Прежде чем мы углубимся в пошаговое руководство, давайте кратко ответим на три (3) часто задаваемых вопроса:
Что такое AWS Glue?
Каковы особенности и преимущества использования клея?
Каков реальный сценарий?
Так что же такое клей? AWS Glue — это просто бессерверный инструмент ETL. ETL относится к трем (3) процессам, которые обычно необходимы в большинстве процессов анализа данных/машинного обучения: извлечение, преобразование, загрузка. Извлечение данные из источника, преобразование их в правильном направлении для приложений, а затем загрузка их обратно в хранилище данных. А AWS помогает нам творить чудеса. Пользовательский интерфейс консоли AWS предлагает нам простые способы выполнить всю задачу до конца. Никаких дополнительных скриптов кода не требуется.
- Каталог данных: Каталог данных содержит метаданные и структуру данных.
- База данных: Используется для создания или доступа к базе данных для источников и целей.
- Таблица: Создайте одну или несколько таблиц в базе данных, которые могут использоваться источником и целью.
- Искатель и классификатор: Искатель используется для извлечения данных из источника с использованием встроенных или пользовательских классификаторов. Он создает/использует таблицы метаданных, предварительно определенные в каталоге данных.
- Задание: Задание — это бизнес-логика, выполняющая задачу ETL. Внутри Apache Spark с языком python или scala пишет эту бизнес-логику.
- Триггер: Триггер запускает выполнение задания ETL по требованию или в определенное время.
- Конечная точка разработки: Создает среду разработки, в которой сценарий задания ETL можно тестировать, разрабатывать и отлаживать.
Чем полезен клей? Вот некоторые из преимуществ его использования в вашей собственной рабочей области или в организации. Amazon S3 и т. д.)
Вот практический пример использования AWS Glue.
Игровое программное обеспечение ежедневно производит несколько МБ или ГБ игровых данных пользователя. Сервер, который собирает пользовательские данные из программного обеспечения, отправляет данные в AWS S3 каждые 6 часов (соединение JDBC соединяет источники данных и цели с помощью Amazon S3, Amazon RDS, Amazon Redshift или любой внешней базы данных).
Мы, компания, хотим предсказать продолжительность игры, учитывая профиль пользователя. Чтобы выполнить задачу, команды инженеров данных должны получить все необработанные данные и правильно их предварительно обработать. Glue предлагает Python SDK, в котором мы могли бы создать новый Python-скрипт Glue Job, который упростил бы ETL. Код работает поверх Spark (распределенной системы, которая может ускорить процесс), которая автоматически настраивается в AWS Glue. Благодаря Spark данные будут разделены на небольшие фрагменты и обрабатываться параллельно на нескольких машинах одновременно.
Извлечение — Скрипт будет считывать все данные об использовании из корзины S3 в один фрейм данных (вы можете представить фрейм данных в Pandas)
Преобразование — Допустим, исходные данные содержат 10 разных журналов. в секунду в среднем. Команда аналитиков хочет, чтобы данные собирались каждую минуту с определенной логикой.
Загрузка — Запись обработанных данных обратно в другую корзину S3 для команды аналитиков.
В рамках проекта мы будем использовать образец CSV-файла из набора данных Telecom Churn (данные содержат 20 различных столбцов. Целью набора данных является бинарная классификация, и цель состоит в том, чтобы предсказать, не будет ли каждый человек продолжайте подписываться на телеком на основе информации о каждом человеке.Описание данных и набор данных, которые я использовал в этой демонстрации, можно загрузить, нажав на эту ссылку Kaggle).
Фото автора
Вам нужна соответствующая роль для доступа к различным службам, которые вы собираетесь использовать в этом процессе. Роль IAM аналогична пользователю IAM тем, что это удостоверение AWS с политиками разрешений, которые определяют, что удостоверение может и не может делать в AWS. Когда вы получаете роль, она предоставляет вам временные учетные данные безопасности для вашего сеанса роли. Подробнее о ролях IAM можно узнать здесь
- Откройте консоль Amazon IAM
- Щелкните Роли → Создать роль .
- Выберите службу Glue из « Выберите службу, которая будет использовать эту роль».
- Выберите Glue из раздела « Выберите вариант использования ».
- Нажмите Далее: Метки . Оставьте поле Добавить теги пустым. Создать роль.
- Теперь ваша роль получает полный доступ к AWS Glue и другим сервисам
Фото автора
- В консоли Amazon S3 нажмите Создать корзину , в которой можно хранить файлы и папки.
Фото автора
- Введите имя корзины , выберите Регион и нажмите Далее
- Остальные настройки конфигурации теперь могут оставаться пустыми. Нажмите Далее , чтобы создать корзину S3.
- Создайте новую папку в своей корзине и загрузите исходные файлы CSV
- (Необязательно) Перед загрузкой данных в ведро можно попробовать сжать размер данных в другой формат (т.е. паркет) с помощью нескольких библиотек на питоне
Фото автора
Для того чтобы добавить данные в каталог данных Glue, который помогает хранить метаданные и структуру данных, нам нужно определить базу данных Glue как логический контейнер.
Итак, нам нужно инициализировать базу данных клея
Поскольку наша база данных клея готова, нам нужно передать наши данные в модель. Итак, что мы пытаемся сделать, так это: мы создадим сканеры, которые в основном сканируют все доступные данные в указанной корзине S3. Сканер автоматически определяет наиболее распространенные классификаторы, включая CSV, JSON и Parquet.
Фото автора
- На левой панели консоли AWS Glue нажмите Crawlers -> Добавить Crawler
- Нажмите синюю кнопку Добавить сканер .
- Присвойте краулеру имя , и оставьте как есть для «Укажите тип краулера»
Фото автора
- В хранилище данных , выберите S3 и выберите созданную вами корзину. Развернуть, чтобы выбрать папку прочитать
Фото автора
- В роли IAM , выберите роль, которую вы создали выше
- Оставьте частоту на «Запуск по запросу». Вы всегда можете изменить расписание работы поискового робота в соответствии с вашими интересами позже.
- В Output, укажите базу данных Glue, которую вы создали выше ( sampledb )
Фото автора
- Затем будет создан Glue Crawler, который читает все файлы в указанной корзине S3
- Установите флажок и Запустите сканер, нажав Запустить Crawler
- Когда это будет сделано, вы должны увидеть его статус «Остановка». И указаны «Последнее время выполнения» и «Добавленные таблицы».
Фото автора
- Затем Базы данных → Таблицы на левой панели позволяют проверить, были ли таблицы созданы сканером автоматически.
Имея окончательные таблицы, мы знаем, что можно создавать Glue Jobs, которые можно запускать по расписанию, по триггеру или по запросу. Интересная вещь в создании заданий Glue заключается в том, что на самом деле это может быть почти полностью основанным на графическом интерфейсе действием, с помощью всего нескольких нажатий кнопок, необходимых для автоматической генерации необходимого кода Python. Однако я внесу несколько правок, чтобы синтезировать несколько исходных файлов и выполнить проверку качества данных на месте. По умолчанию Glue использует объекты DynamicFrame для хранения таблиц реляционных данных, и их можно легко преобразовать в фреймы данных PySpark для пользовательских преобразований.
Обратите внимание, что на этом этапе у вас есть возможность развернуть другую базу данных (например, AWS RedShift) для хранения окончательных таблиц данных, если размер данных от сканера становится большим. В рамках проекта мы пропустим это и поместим обработанные таблицы данных обратно в другую корзину S3
Фото автора
- На левой панели нажмите Jobs , затем нажмите Add Job
Фото автора
- Дайте имя и выберите Роль IAM , ранее созданная для AWS Glue
- Выберите Spark для Введите и выберите Spark 2.4, Python 3 для Glue Version
- Вы можете изменить количество единиц DPU) в (Значения единиц обработки данных) поле Максимальная емкость поля Конфигурация безопасности, библиотеки сценариев и параметры задания (необязательно).
- Остальная конфигурация не является обязательной.
- Выберите таблицу источника данных из Выберите раздел источника данных . Вы можете выбрать только один источник данных.
Фото автора
- Добавить подключение JDBC к AWS Redshift. Нам нужно выбрать место, где мы хотели бы хранить окончательные обработанные данные. Вы можете выбрать существующую базу данных, если она у вас есть. Или вы можете перезаписать обратно в кластер S3. В этом уроке мы будем использовать сопоставление по умолчанию. Бизнес-логика также может позже изменить это.
Фото автора
- Откройте сценарий Python, выбрав имя недавно созданного задания. Нажмите Action -> Edit Script .
- На левой панели показано визуальное представление процесса ETL. На правой панели показан код сценария, а чуть ниже вы можете увидеть журналы запущенного задания.
- Сохраните и выполните задание, нажав «Выполнить задание».
Фото автора
- Получаем историю после запуска скрипта и получаем окончательные данные, заполненные в S3 (или готовые данные для SQL, если у нас был Redshift в качестве конечного хранилища данных)
Подводя итог, мы построили один полный процесс ETL: мы создали корзину S3, загрузили наши необработанные данные в корзину, запустили связующую базу данных, добавили сканер, который просматривает данные в указанной выше корзине S3, создали GlueJobs , который можно запускать по расписанию, по триггеру или по запросу, и, наконец, обновлять данные обратно в корзину S3.
Дополнительная работа, которую можно выполнить, заключается в пересмотре сценария Python, предоставленного на этапе GlueJob, с учетом потребностей бизнеса.
(т.е. улучшить предварительную обработку для масштабирования числовых переменных)
В целом, описанная выше структура поможет вам начать настройку конвейера ETL в любой бизнес-среде.
Для получения более подробной информации об изучении других тем, связанных с наукой о данных, нижеприведенные репозитории Github также будут полезны. Он содержит простые в использовании коды, которые помогут вам начать работу с объяснениями.
- AWS SageMaker в производственной среде
Сквозные примеры, показывающие, как решать бизнес-задачи с помощью Amazon SageMaker и его алгоритма машинного обучения/обучения. - PySpark
Функции и утилиты с примерами реальных данных. Может использоваться для создания полного процесса моделирования данных ETL - Система рекомендаций
Реализации системы рекомендаций на уровне производства в Pytorch.