Configurar o acesso entre contas aos catálogos de dados do AWS Glue
Você pode usar o recurso de catálogo do AWS Glue entre contas do Athena para registrar um catálogo do AWS Glue de outra conta sua. Depois de configurar as permissões do IAM necessárias para o AWS Glue e registrar o catálogo como um recurso DataCatalog do Athena, você poderá usar o Athena para executar consultas entre contas. Para obter informações sobre como usar o console do Athena para registrar um catálogo de outra conta, consulte Registrar um catálogo de dados de outra conta.
Para obter mais informações sobre o acesso entre contas no AWS Glue, consulte Concessão de acesso entre contas no Guia do desenvolvedor do AWS Glue.
Antes de começar
Como esse recurso usa as APIs existentes do recurso DataCatalog
e as funcionalidades do Athena para habilitar o acesso entre contas, recomendamos ler os seguintes tópicos antes de começar:
-
Conectar-se à fonte de dados: contém tópicos sobre como usar o Athena com as fontes de catálogo de dados AWS Glue, Hive ou Lambda.
-
Políticas de catálogo de dados de exemplo: mostra como escrever políticas que controlam o acesso aos catálogos de dados.
-
Usar a AWS CLI com metastores do Hive: mostra como usar a AWS CLI com metastores do Hive, mas contém casos de uso aplicáveis a outras origens de dados.
Considerações e limitações
No momento, o acesso entre contas ao catálogo do AWS Glue no Athena tem as seguintes limitações:
-
O recurso está disponível apenas nas Regiões da AWS compatíveis com o mecanismo Athena versão 2 ou posterior. Para obter informações sobre as versões do mecanismo do Athena, consulte Versionamento do mecanismo do Athena. Para fazer upgrade da versão do mecanismo para um grupo de trabalho, consulte Alterar versões do mecanismo do Athena.
-
Quando você registra o AWS Glue Data Catalog de outra conta na sua conta, cria um recurso
DataCatalog
regional vinculado aos dados da outra conta somente nessa região específica. -
No momento, as instruções
CREATE VIEW
que incluem um catálogo do AWS Glue entre contas não são permitidas. -
Catálogos criptografados usando chaves gerenciadas da AWS não podem ser consultados entre contas. Em vez disso, use chaves gerenciadas pelo cliente (
KMS_CMK
) para os catálogos que você deseja consultar entre contas. Para obter informações sobre as diferenças entre chaves gerenciadas pelo cliente e pela AWS, consulte Chaves do cliente e chaves da AWS no Guia do desenvolvedor do AWS Key Management Service.
Conceitos básicos
No cenário abaixo, a conta do “tomador” (666666666666) deseja executar uma consulta SELECT
que faz referência ao catálogo do AWS Glue que pertence à conta do “proprietária” (999999999999), como no seguinte exemplo:
SELECT * FROM ownerCatalog.tpch1000.customer
No procedimento a seguir, as etapas 1a e 1b mostram como conceder à conta do tomador acesso aos recursos do AWS Glue da conta do proprietário, tanto da perspectiva do tomador quanto do proprietário. O exemplo concede acesso ao banco de dados tpch1000
e à tabela customer
. Altere esses nomes de exemplo de acordo com as suas necessidades.
Etapa 1b: criar um perfil de tomador com acesso aos recursos do AWS Glue do proprietário
Para criar um perfil de conta do tomador com uma política para acessar os recursos do AWS Glue da conta do proprietário, é possível usar o console do AWS Identity and Access Management (IAM) ou a API do IAM. O procedimento a seguir usa o console do IAM.
Para criar um perfil de tomador e a política para acessar os recursos do AWS Glue da conta do proprietário
-
Faça login no console do IAM em https://console.aws.amazon.com/iam/
usando a conta do tomador. -
No painel de navegação, expanda Gerenciamento de acesso e escolha Políticas.
-
Escolha Criar política.
-
Em Editor de políticas, escolha JSON.
-
No editor de política, insira a seguinte política e modifique-a de acordo com os seus requisitos:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": [ "arn:aws:glue:
us-east-1
:999999999999
:catalog", "arn:aws:glue:us-east-1
:999999999999
:database/tpch1000
", "arn:aws:glue:us-east-1
:999999999999
:table/tpch1000
/customer
" ] } ] } -
Escolha Próximo.
-
Na página Revisar e criar, insira um nome para a política em Nome da política (p. ex.,
CrossGluePolicyForBorrowerRole
). -
Escolha Criar política.
-
No painel de navegação, escolha Roles.
-
Escolha Criar Perfil.
-
Na página Selecionar entidade confiável, escolha Conta da AWS e, em seguida, selecione Avançar.
-
Na página Adicionar permissões, insira na caixa de pesquisa o nome da política que você criou (p. ex.,
CrossGluePolicyForBorrowerRole
). -
Marque a caixa de seleção ao lado do nome da política e escolha Avançar.
-
Na página Name, review, and create (Nomear, revisar e criar), para Role name (Nome da função), digite um nome para a função (por exemplo,
CrossGlueBorrowerRole
). -
Selecione Criar função.
Etapa 1b: criar uma política do proprietário para permitir que o tomador tenha acesso ao AWS Glue
Para conceder acesso ao AWS Glue da conta do proprietário (999999999999) para o perfil do tomador, é possível usar o console do AWS Glue ou a operação de API PutResourcePolicy do AWS Glue. O procedimento a seguir usa o console do AWS Glue.
Para conceder acesso ao AWS Glue para a conta do mutuário do proprietário
-
Faça login no console do AWS Glue em https://console.aws.amazon.com/glue/
usando a conta do proprietário. -
No painel de navegação, expanda Data Catalog e escolha Configurações do catálogo.
-
Na caixa Permissions (Permissões), insira a política como mostrado a seguir. Em
rolename
, insira o perfil que o tomador criou na etapa 1a (p. ex.,CrossGlueBorrowerRole
). Para aumentar o escopo da permissão, é possível usar o caractere curinga*
para os dois tipos de recurso: banco de dados e tabela.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
666666666666
:user/username
", "arn:aws:iam::666666666666
:role/rolename
" ] }, "Action": "glue:*", "Resource": [ "arn:aws:glue:us-east-1
:999999999999
:catalog", "arn:aws:glue:us-east-1
:999999999999
:database/tpch1000
", "arn:aws:glue:us-east-1
:999999999999
:table/tpch1000
/customer
" ] } ] }
Ao concluir, recomendamos usar a API do AWS Glue para fazer algumas chamadas de teste entre contas a fim de confirmar se as permissões estão configuradas conforme o esperado.
Etapa 2: o mutuário registra o AWS Glue Data Catalog que pertence à conta de proprietário
O procedimento a seguir mostra como usar o console do Athena para configurar um AWS Glue Data Catalog na conta da Amazon Web Services do proprietário da fonte de dados. Para obter informações sobre como usar operações de API em vez do console para registrar o catálogo, consulte (Opcional) Usar a API para registrar um catálogo de dados do Athena que pertence à conta do proprietário.
Para registrar um AWS Glue Data Catalog pertencente a outra conta
Abra o console do Athena em https://console.aws.amazon.com/athena/
. Se o painel de navegação do console não estiver visível, escolha o menu de expansão à esquerda.
-
Expanda Administração e escolha Fontes de dados.
-
No canto superior direito do console, escolha Create data source (Criar fonte de dados).
-
Na página Escolher uma fonte de dados, em Fontes de dados, escolha S3 - AWS Glue Data Catalog e depois Próximo.
-
Na página Inserir detalhes da fonte de dados, na seção AWS Glue Data Catalog, para Escolher um AWS Glue Data Catalog, escolha AWS Glue Data Catalog em outra conta.
-
Em Data source details (Detalhes da origemdos dados), forneça as seguintes informações:
-
Data source name (Nome da origem dos dados): insira o nome que você deseja usar em suas consultas SQL para fazer referência ao catálogo de dados na outra conta.
-
Description (Descrição): insira uma descrição do catálogo de dados na outra conta (opcional).
-
Catalog ID (ID do catálogo): insira o ID de 12 dígitos da conta da Amazon Web Services à qual o catálogo de dados pertence. O ID da conta da Amazon Web Services é o ID do catálogo.
-
-
(Opcional) Expanda Etiquetas e adicione pares de chave-valor que você queira associar com a fonte de dados. Para obter mais informações sobre tags, consulte Marcar recursos do Athena com tags.
-
Escolha Próximo.
-
Na página Review and create (Revisar e criar), analise as informações fornecidas e selecione Create data source (Criar fonte de dados). A página Data source details (Detalhes da fonte de dados) lista os bancos de dados e etiquetas do catálogo de dados que você registrou.
-
Escolha Data sources (Origens de dados). O catálogo de dados que você registrou está listado na coluna Data source name (Nome da fonte de dados).
-
Para visualizar ou editar as informações do catálogo de dados, escolha o catálogo e selecione Actions (Ações), Edit (Editar).
-
Para excluir o novo catálogo de dados, escolha o catálogo e selecione Actions (Ações) Delete (Excluir).
Etapa 3: O mutuário envia uma consulta
O tomador envia uma consulta que faz referência ao catálogo usando a sintaxe catálogo
.banco de dados
.tabela
, conforme o seguinte exemplo:
SELECT * FROM ownerCatalog.tpch1000.customer
Em vez de usar a sintaxe totalmente qualificada, o tomador também pode especificar o catálogo contextualmente, passando o valor por QueryExecutionContext.
(Opcional) Configurar permissões adicionais do Amazon S3
-
Se a conta do tomador usar uma consulta do Athena para gravar novos dados em uma tabela na conta do proprietário, o proprietário não terá acesso automaticamente a esses dados no Amazon S3, mesmo que a tabela exista na conta do proprietário. Isso ocorre porque, a menos que seja configurado de outra forma, o tomador é o proprietário do objeto das informações no Amazon S3. Para permitir que o proprietário tenha acesso aos dados, defina as permissões nos objetos adequadamente em uma etapa adicional.
-
Determinadas operações DDL entre contas, como MSCK REPAIR TABLE, exigem permissões do Amazon S3. Por exemplo, se a conta do tomador estiver executando uma operação
MSCK REPAIR
entre contas em uma tabela na conta do proprietário que tenha os dados em um bucket do S3 da conta do proprietário, esse bucket deverá conceder permissões ao perfil assumido pelo tomador para que a consulta ocorra com êxito.
Para informações sobre como conceder permissões de bucket, consulte Como definir permissões de bucket de ACL? no Guia do usuário do console do Amazon Simple Storage Service.
(Opcional) Usar um catálogo dinamicamente
Em alguns casos, você pode querer executar testes rápidos em um catálogo do AWS Glue entre contas sem a etapa de pré-requisito de registro. Você poderá executar dinamicamente consultas entre contas sem criar o objeto de recurso DataCatalog
se as permissões necessárias do IAM e do Amazon S3 estiverem configuradas corretamente, conforme já foi descrito neste documento.
Para referenciar claramente um catálogo sem registro, use a sintaxe no seguinte exemplo:
SELECT * FROM "glue:arn:aws:glue:us-east-1:999999999999:catalog".tpch1000.customer
Use o formato “glue:
”, em que <arn>
é o ARN do AWS Glue Data Catalog que você deseja usar. No exemplo, o Athena usa essa sintaxe para apontar dinamicamente para o catálogo de dados do AWS Glue da conta 999999999999 como se você tivesse criado um objeto <arn>
DataCatalog
separado para ele.
Observações sobre o uso de catálogos dinâmicos
Ao usar catálogos dinâmicos, lembre-se dos pontos a seguir.
-
O uso de um catálogo dinâmico requer as permissões do IAM que você normalmente usa para as operações de API do Catálogo de dados do Athena. A principal diferença é que o nome do recurso Catálogo de dados segue a convenção de nomenclatura
glue:*
. -
O ARN do catálogo deve pertencer à mesma região onde a consulta está sendo executada.
-
Ao usar um catálogo dinâmico em uma consulta DML ou visualização, coloque-o entre aspas duplas escapadas (
\"
). Ao usar um catálogo dinâmico em uma consulta DDL, coloque-o entre caracteres de aceto grave (`
).
(Opcional) Usar a API para registrar um catálogo de dados do Athena que pertence à conta do proprietário
Em vez de usar o console do Athena conforme descrito na Etapa 2, é possível usar operações de API para registrar o catálogo de dados pertencente à conta do proprietário.
O criador do recurso DataCatalog do Athena deve ter as permissões necessárias para executar a operação de API CreateDataCatalog do Athena. Dependendo dos seus requisitos, o acesso às operações adicionais de API pode ser necessário. Para ter mais informações, consulte Políticas de catálogo de dados de exemplo.
O corpo da seguinte solicitação CreateDataCatalog
registra um catálogo do AWS Glue para acesso entre contas:
# Example CreateDataCatalog request to register a cross-account Glue catalog: { "Description": "Cross-account Glue catalog", "Name": "ownerCatalog", "Parameters": {"catalog-id" : "999999999999" # Owner's account ID }, "Type": "GLUE" }
O código de exemplo a seguir usa um cliente Java para criar o objeto DataCatalog
.
# Sample code to create the DataCatalog through Java client CreateDataCatalogRequest request = new CreateDataCatalogRequest() .withName("ownerCatalog") .withType(DataCatalogType.GLUE) .withParameters(ImmutableMap.of("catalog-id", "999999999999")); athenaClient.createDataCatalog(request);
Após essas etapas, o mutuário deverá ver ownerCatalog
quando chamar a operação de API ListDataCatalogs.
Recursos adicionais
-
Configure o acesso entre contas para um AWS Glue Data Catalog compartilhado usando o Amazon Athena no guia Padrões de orientação prescritivaAWS.
-
Consultar AWS Glue Data Catalog entre contas usando o Amazon Athena
no AWSBlog de Big Data -
Conceder acesso entre contas no AWS GlueGuia do desenvolvedor