Configure uma integração de catálogo para AWS Glue Iceberg REST¶
Siga as etapas deste tópico para criar uma integração de catálogo para o ponto de extremidade do Iceberg REST do AWS Glue com autenticação Signature Versão 4 (SigV4).
Etapa 1: configurar permissões de acesso para o catálogo de dados do AWS Glue¶
Crie uma política IAM para que o Snowflake acesse o AWS Glue Data Catalog. Anexe a política a uma função IAM, que você especifica ao criar uma integração de catálogo. Para obter instruções, consulte Criação de políticas de IAM e Modificação de uma política de permissões de função no Guia do usuário do gerenciamento de identidade e acesso do AWS.
Exemplo de política somente leitura¶
No mínimo, o Snowflake requer as seguintes permissões no AWS Glue Data Catalog para acessar informações usando o catálogo Glue Iceberg REST.
- glue:GetCatalog
- glue:GetDatabase
- glue:GetDatabases
- glue:GetTable
- glue:GetTables
O exemplo de política a seguir (no formato JSON) fornece as permissões necessárias para acessar todas as tabelas em um banco de dados especificado.
{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "AllowGlueCatalogTableAccess",
         "Effect": "Allow",
         "Action": [
           "glue:GetCatalog",
           "glue:GetDatabase",
           "glue:GetDatabases",
           "glue:GetTable",
           "glue:GetTables"
         ],
         "Resource": [
            "arn:aws:glue:*:<accountid>:table/*/*",
            "arn:aws:glue:*:<accountid>:catalog",
            "arn:aws:glue:*:<accountid>:database/<database-name>"
         ]
      }
   ]
}
Nota
- Você pode modificar o elemento - Resourcedesta política para restringir ainda mais os recursos permitidos (por exemplo, catálogo, bancos de dados ou tabelas). Para obter mais informações, consulte Tipos de recursos definidos pelo AWS Glue.
- Se você usar criptografia para o AWS Glue, deverá modificar a política para adicionar permissões do AWS Key Management Service (AWS KMS). Para obter mais informações, consulte Configuração de criptografia no AWS Glue. 
Exemplo de política de leitura e gravação¶
O exemplo de política a seguir (no formato JSON) fornece as permissões necessárias para acesso de leitura e gravação a todas as tabelas em todos os bancos de dados. Para configurar o acesso de gravação para tabelas gerenciadas externamente, use esta política como exemplo.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowGlueCatalogTableAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "glue:GetCatalog",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:CreateDatabase",
        "glue:DeleteDatabase",
        "glue:GetTable",
        "glue:GetTables",
        "glue:CreateTable",
        "glue:UpdateTable",
        "glue:DeleteTable"
      ],
      "Resource": [
        "arn:aws:glue:*:<accountid>:table/*/*",
        "arn:aws:glue:*:<accountid>:catalog",
        "arn:aws:glue:*:<accountid>:database/*",
        "arn:aws:s3:<external_volume_path>"
      ]
    }
  ]
}
Nota
- A política deve fornecer acesso ao seu local de armazenamento para que o catálogo do AWS Glue grave metadados no local da tabela. 
- A linha - "arn:aws:glue:*:<accountid>:database/*"no elemento- Resourcedesta política especifica todos os bancos de dados. Isso é necessário se você deseja criar um novo banco de dados no Glue a partir do Snowflake com o comando CREATE SCHEMA. Para limitar o acesso a um único banco de dados, você pode especificar o banco de dados pelo nome. Para obter mais informações sobre a definição de recursos, consulte Tipos de recursos definidos pelo AWS Glue.
- Se você usar criptografia para o AWS Glue, deverá modificar a política para adicionar permissões do AWS Key Management Service (AWS KMS). Para obter mais informações, consulte Configuração de criptografia no AWS Glue. 
(Opcional) Configurar o controle de acesso do Lake Formation¶
Se você usar o AWS Lake Formation para controle de acesso refinado, certifique-se de que a configuração do Lake Formation permita que o Snowflake acesse seus objetos de catálogo e dados subjacentes.
A função do IAM que você criou na etapa anterior – a função que você especifica no Snowflake ao criar uma integração de catálogo – deve ter a permissão do IAM lakeformation:GetDataAccess. Essa permissão concede acesso de leitura e gravação aos dados subjacentes:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lakeformation:GetDataAccess",
            "Resource": "*"
        }
    ]
}
Para obter mais informações, consulte Controle de acesso a dados subjacentes na documentação do Lake Formation.
Você também deve conceder permissões de dados à função do IAM. O método usado para conceder permissões de dados depende da configuração do Lake Formation. Por exemplo, você pode usar o método de recursos nomeados para conceder permissões a objetos do AWS Glue ou pode usar o controle de acesso baseado em tags. Para obter mais informações e instruções, consulte a documentação do AWS Lake Formation.
Etapa 2: criar uma integração de catálogo no Snowflake¶
Crie uma integração de catálogo para o ponto de extremidade AWS Glue Iceberg REST usando o comando CREATE CATALOG INTEGRATION (Apache Iceberg™ REST). Especifique a função IAM que você configurou. Para CATALOG_NAME, use seu AWS de conta ID.
CREATE CATALOG INTEGRATION glue_rest_catalog_int
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = 'rest_catalog_integration'
  REST_CONFIG = (
    CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
    CATALOG_API_TYPE = AWS_GLUE
    CATALOG_NAME = '123456789012'
  )
  REST_AUTHENTICATION = (
    TYPE = SIGV4
    SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my-role'
    SIGV4_SIGNING_REGION = 'us-west-2'
  )
  ENABLED = TRUE;
Onde:
- CATALOG_URIé o ponto de extremidade do servidor para o catálogo AWS Glue Iceberg REST.
- CATALOG_NAMEé o ID de sua conta AWS.
Para obter mais informações, consulte CREATE CATALOG INTEGRATION (Apache Iceberg™ REST), que inclui instruções para configurar uma integração de catálogo para o AWS Glue.
Etapa 3: recuperar o usuário AWS IAM e o ID externo para sua conta Snowflake¶
Para recuperar informações sobre o usuário do AWS IAM e o ID externo para sua conta Snowflake, execute o comando DESCRIBE CATALOG INTEGRATION. Forneça essas informações à AWS na próxima etapa para estabelecer uma relação de confiança.
DESCRIBE CATALOG INTEGRATION glue_rest_catalog_int;
Registre os seguintes valores:
Valor
Descrição
GLUE_AWS_IAM_USER_ARNO usuário AWS IAM criado para sua conta Snowflake, por exemplo,
arn:aws:iam::123456789001:user/abc1-b-self1234. O Snowflake fornece um único usuário IAM para toda a sua conta Snowflake. Todas as integrações do catálogo do Glue em sua conta usam esse usuário IAM.
GLUE_AWS_EXTERNAL_IDUm ID externo para estabelecer um relacionamento de confiança.
Etapa 4: Conceder ao usuário do IAM acesso ao Catálogo de dados do AWS Glue¶
Atualize a política de confiança para a mesma função IAM especificada com o ARN ao criar a integração de catálogo (GLUE_AWS_ROLE_ARN). Adicione os valores registrados na etapa anterior à política de confiança.
Para obter instruções, consulte Modificação de uma política de confiança.
O exemplo de política a seguir mostra onde especificar os valores GLUE_AWS_IAM_USER_ARN e GLUE_AWS_EXTERNAL_ID:
{
   "Version": "2012-10-17",
   "Statement": [
      {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
         "AWS": "<glue_iam_user_arn>"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
         "StringEquals": {
            "sts:ExternalId": "<glue_aws_external_id>"
         }
      }
      }
   ]
}
Onde:
glue_iam_user_arné o valorGLUE_IAM_USER_ARNque você registrou.
glue_aws_external_idé o valorGLUE_AWS_EXTERNAL_IDque você registrou.
Nota
- Por motivos de segurança, se você criar uma nova integração de catálogo (ou recriar uma integração de catálogo existente usando a sintaxe CREATE OR REPLACE CATALOG INTEGRATION), a nova integração de catálogo terá um ID externo diferente e não poderá resolver o relacionamento de confiança, a menos que você modifique a política de confiança com o novo ID externo. 
- Para verificar se as suas permissões estão configuradas corretamente, crie uma tabela Iceberg que use essa integração de catálogo. O Snowflake não verifica se suas permissões estão definidas corretamente até que você crie uma tabela Iceberg que faça referência a essa integração de catálogo. 
Próximos passos¶
Após configurar uma integração de catálogo para o Iceberg REST do AWS Glue, você pode criar uma tabela Iceberg.