Перейти к содержимому
Последнее обновление

AWS Glue

В этом документе описана настройка параметров при использовании AWS Glue Catalog для доступа к таблицам Iceberg или таблицам Hive с помощью CREATE CATALOG.

Поддерживаемые типы Glue Catalog​

В настоящее время AWS Glue Catalog поддерживает три типа Catalog:

Тип CatalogИдентификатор типа (type)Описание
HiveglueCatalog для подключения к Hive Metastore
IcebergglueCatalog для работы с форматом таблиц Iceberg
IcebergrestCatalog для работы с форматом таблиц Iceberg через Glue Rest Catalog

В этой документации приведены подробные описания параметров для каждого типа, которые помогут выполнить настройку.

Обзор общих параметров​

Имя параметраОписаниеОбязательныйЗначение по умолчанию
glue.regionРегион AWS Glue, например, us-east-1ДаНет
glue.endpointКонечная точка AWS Glue, например, https://glue.us-east-1.amazonaws.comДаНет
glue.access_keyAWS Access Key IDДаПусто
glue.secret_keyAWS Secret Access KeyДаПусто
glue.catalog_idID Glue Catalog (пока не поддерживается)НетПусто
glue.role_arnIAM Role ARN для доступа к Glue (поддерживается с версии 3.1.2+)НетПусто
glue.external_idIAM External ID для доступа к Glue (поддерживается с версии 3.1.2+)НетПусто

Параметры аутентификации​

Для доступа к Glue требуются данные аутентификации. Поддерживаются следующие два способа:

  1. Аутентификация с помощью Access Key

    Доступ к Glue аутентифицируется с помощью Access Key, заданного параметрами glue.access_key и glue.secret_key.

  2. Аутентификация с помощью IAM Role (поддерживается с версии 3.1.2+)

    Доступ к Glue аутентифицируется с помощью IAM Role, заданной параметром glue.role_arn.

    Для этого способа Doris должен быть развёрнут на AWS EC2, а экземпляр EC2 должен быть связан с IAM Role, у которой есть разрешение на доступ к Glue.

    Если требуется доступ с использованием External ID, необходимо также настроить glue.external_id.

Примечания:

  • Необходимо настроить хотя бы один из двух способов. Если настроены оба, приоритет имеет аутентификация с помощью Access Key.

Пример:

```sql
CREATE CATALOG hive_glue_catalog PROPERTIES (
'type' = 'hms',
'hive.metastore.type' = 'glue',
'glue.region' = 'us-east-1',
'glue.endpoint' = 'https://glue.us-east-1.amazonaws.com',
-- Using Access Key authentication
'glue.access_key' = '<YOUR_ACCESS_KEY>',
'glue.secret_key' = '<YOUR_SECRET_KEY>'
-- Or using IAM Role authentication
-- 'glue.role_arn' = '<YOUR_ROLE_ARN>',
-- 'glue.external_id' = '<YOUR_EXTERNAL_ID>'
);
```

Инструкции по настройке аутентификации и авторизации AWS приведены в документе Аутентификация и авторизация AWS

Hive Glue Catalog​

Hive Glue Catalog используется для доступа к таблицам Hive через интерфейс AWS Glue, совместимый с Hive Metastore. Параметры настройки:

Имя параметраОписаниеОбязательныйЗначение по умолчанию
typeФиксированное значение: hmsДаНет
hive.metastore.typeФиксированное значение: glueДаНет
glue.regionРегион AWS Glue, например, us-east-1ДаНет
glue.endpointКонечная точка AWS Glue, например, https://glue.us-east-1.amazonaws.comДаНет
glue.access_keyAWS Access Key IDНетПусто
glue.secret_keyAWS Secret Access KeyНетПусто
glue.catalog_idID Glue Catalog (пока не поддерживается)НетПусто
glue.role_arnIAM Role ARN для доступа к GlueНетПусто
glue.external_idIAM External ID для доступа к GlueНетПусто

Пример​

CREATE CATALOG hive_glue_catalog PROPERTIES (
'type' = 'hms',
'hive.metastore.type' = 'glue',
'glue.region' = 'us-east-1',
'glue.endpoint' = 'https://glue.us-east-1.amazonaws.com',
'glue.access_key' = 'YOUR_ACCESS_KEY',
'glue.secret_key' = 'YOUR_SECRET_KEY'
);

Iceberg Glue Catalog​

Iceberg Glue Catalog обращается к Glue через Glue Client. Параметры настройки:

Имя параметраОписаниеОбязательныйЗначение по умолчанию
typeФиксированное значение: icebergДаНет
iceberg.catalog.typeФиксированное значение: glueДаНет
warehouseПуть к хранилищу данных Iceberg, например, s3://my-bucket/iceberg-warehouse/Даs3://doris
glue.regionРегион AWS Glue, например, us-east-1ДаНет
glue.endpointКонечная точка AWS Glue, например, https://glue.us-east-1.amazonaws.comДаНет
glue.access_keyAWS Access Key IDНетПусто
glue.secret_keyAWS Secret Access KeyНетПусто
glue.catalog_idID Glue Catalog (пока не поддерживается)НетПусто
glue.role_arnIAM Role ARN для доступа к Glue (пока не поддерживается)НетПусто
glue.external_idIAM External ID для доступа к Glue (пока не поддерживается)НетПусто

Пример​

CREATE CATALOG iceberg_glue_catalog PROPERTIES (
'type' = 'iceberg',
'iceberg.catalog.type' = 'glue',
'glue.region' = 'us-east-1',
'glue.endpoint' = 'https://glue.us-east-1.amazonaws.com',
'glue.access_key' = '<YOUR_ACCESS_KEY>',
'glue.secret_key' = '<YOUR_SECRET_KEY>'
);

Iceberg Glue Rest Catalog​

Iceberg Glue Rest Catalog обращается к Glue через интерфейс Glue Rest Catalog. В настоящее время поддерживаются только таблицы Iceberg, хранящиеся в AWS S3 Table Bucket. Параметры настройки:

Имя параметраОписаниеОбязательныйЗначение по умолчанию
typeФиксированное значение: icebergДаНет
iceberg.catalog.typeФиксированное значение: restДаНет
iceberg.rest.uriКонечная точка сервиса Glue Rest, например, https://glue.ap-east-1.amazonaws.com/icebergДаНет
warehouseПуть к хранилищу данных Iceberg, например, <account_id>:s3tablescatalog/<bucket_name>ДаНет
iceberg.rest.sigv4-enabledВключение формата подписи V4; фиксированное значение: trueДаНет
iceberg.rest.signing-nameТип подписи; фиксированное значение: glueДаПусто
iceberg.rest.access-key-idAccess Key для доступа к Glue (также используется для доступа к S3 Bucket)ДаПусто
iceberg.rest.secret-access-keySecret Key для доступа к Glue (также используется для доступа к S3 Bucket)ДаПусто
iceberg.rest.signing-regionРегион AWS Glue, например, us-east-1ДаПусто

Пример​

CREATE CATALOG glue_s3 PROPERTIES (
'type' = 'iceberg',
'iceberg.catalog.type' = 'rest',
'iceberg.rest.uri' = 'https://glue.<region>.amazonaws.com/iceberg',
'warehouse' = '<acount_id>:s3tablescatalog/<s3_table_bucket_name>',
'iceberg.rest.sigv4-enabled' = 'true',
'iceberg.rest.signing-name' = 'glue',
'iceberg.rest.access-key-id' = '<ak>',
'iceberg.rest.secret-access-key' = '<sk>',
'iceberg.rest.signing-region' = '<region>'
);

Политики разрешений​

В зависимости от сценария использования политики делятся на политики только для чтения и для чтения и записи.

1. Разрешения только на чтение​

Разрешает только чтение сведений о базах данных и таблицах из Glue Catalog.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GlueCatalogReadOnly",
"Effect": "Allow",
"Action": [
"glue:GetCatalog",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetTable",
"glue:GetTables",
"glue:GetPartitions"
],
"Resource": [
"arn:aws:glue:<region>:<account-id>:catalog",
"arn:aws:glue:<region>:<account-id>:database/*",
"arn:aws:glue:<region>:<account-id>:table/*/*"
]
}
]
}

2. Разрешения на чтение и запись​

В дополнение к разрешениям на чтение позволяет создавать, изменять и удалять базы данных и таблицы.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GlueCatalogReadWrite",
"Effect": "Allow",
"Action": [
"glue:GetCatalog",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetTable",
"glue:GetTables",
"glue:GetPartitions",
"glue:CreateDatabase",
"glue:UpdateDatabase",
"glue:DeleteDatabase",
"glue:CreateTable",
"glue:UpdateTable",
"glue:DeleteTable"
],
"Resource": [
"arn:aws:glue:<region>:<account-id>:catalog",
"arn:aws:glue:<region>:<account-id>:database/*",
"arn:aws:glue:<region>:<account-id>:table/*/*"
]
}
]
}

Примечания​

  1. Замена заполнителей

    • <region> → Ваш регион AWS (например, us-east-1).
    • <account-id> → ID вашей учётной записи AWS (12-значное число).
  2. Принцип минимальных привилегий

    • Если выполняются только запросы, не предоставляйте разрешения на запись.
    • Для дополнительного ограничения разрешений можно заменить * конкретными ARN баз данных или таблиц.
  3. Разрешения S3

    • Приведённые выше политики относятся только к Glue Catalog.
    • Для чтения файлов данных нужны дополнительные разрешения S3 (например, s3:GetObject, s3:ListBucket и т. д.).