Habilitar consultas federadas entre contas - Amazon Athena

Habilitar consultas federadas entre contas

A consulta federada permite consultar as origens de dados que não são do Amazon S3 usando os conectores de origem de dados implantados no AWS Lambda. O recurso de consulta federada entre contas permite que a função do Lambda e as origens de dados a serem consultadas estejam localizadas em contas diferentes.

Como administrador de dados, você pode habilitar consultas federadas entre contas compartilhando seu conector de dados com uma conta de analista de dados ou, como analista de dados, usando um ARN do Lambda compartilhado de um administrador de dados para adicionar à sua conta. Quando alterações de configuração são feitas em um conector na conta de origem, a configuração atualizada é aplicada automaticamente às instâncias compartilhadas do conector nas outras contas de usuário.

Considerações e limitações

  • O recurso de consulta federada entre contas está disponível para conectores de dados de metastore não Hive que usam uma origem de dados baseada no Lambda.

  • O recurso não está disponível para o tipo de origem de dados AWS Glue Data Catalog. Para obter informações sobre o acesso entre contas aos AWS Glue Data Catalogs, consulte Acesso aos catálogos de dados do AWS Glue entre contas.

  • Se a resposta da função do Lambda do conector excede o limite de tamanho de resposta do Lambda de 6 MB, o Athena automaticamente criptografa, agrupa e distribui a resposta para um bucket do Amazon S3 que você configurou. A entidade que executa a consulta do Athena deve ter acesso ao local do vazamento para que o Athena leia os dados vazados. Recomendamos definir uma política de ciclo de vida do Amazon S3 para excluir objetos do local do vazamento, pois os dados não serão necessários após a conclusão da consulta.

  • Não há suporte para o uso de consultas federadas em Regiões da AWS.

Permissões obrigatórias

  • Para que a Conta A de administrador de dados compartilhe uma função do Lambda com a Conta B de analista de dados, a Conta B requer a função invoke do Lambda e acesso ao bucket de vazamento. Consequentemente, a Conta A deve adicionar uma política baseada em recursos à função do Lambda e acesso do principal ao bucket de vazamento no Amazon S3.

    1. A política a seguir concede as permissões da função invoke do Lambda à Conta B em uma função do Lambda na conta A.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountInvocationStatement", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::account-B-id:user/username"] }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:aws-region:account-A-id:function:lambda-function-name" } ] }
    2. A política a seguir concede acesso ao bucket de vazamento a entidade principal na conta B.

      { "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::account-B-id:user/username"] }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::spill-bucket", "arn:aws:s3:::spill-bucket/*" ] } ] }
    3. Se a função do Lambda criptografar o bucket de vazamento com uma chave AWS KMS, em vez de usar a criptografia padrão oferecida pelo SDK da federação, a política de chave AWS KMS na conta A deverá conceder acesso ao usuário na Conta B, como no exemplo a seguir.

      { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::account-B-id:user/username"] }, "Action": [ "kms:Decrypt" ], "Resource": "*" // Resource policy that gets placed on the KMS key. }
  • Para que a Conta A compartilhe seu conector com a Conta B, a Conta B deve criar uma função chamada AthenaCrossAccountCreate-account-A-id, que a Conta A assume chamando a ação de API AssumeRole do AWS Security Token Service.

    A política a seguir, que permite a ação CreateDataCatalog, deve ser criada na Conta B e adicionada à função AthenaCrossAccountCreate-account-A-id que a Conta B cria para a Conta A.

    { "Effect": "Allow", "Action": "athena:CreateDataCatalog", "Resource": "arn:aws:athena:*:account-B-id:datacatalog/*" }

Compartilhar uma origem de dados na conta A com a conta B

Depois que as permissões estiverem em vigor, você pode usar a página Data sources (Origens de dados) no console do Athena para compartilhar um conector de dados em sua conta (Conta A) com outra conta (Conta B). A conta A mantém total controle e propriedade do conector. Quando a conta A faz alterações de configuração no conector, a configuração atualizada se aplica ao conector compartilhado na conta B.

Para compartilhar uma origem de dados do Lambda na conta A com a conta B
  1. Abra o console do Athena em https://console.aws.amazon.com/athena/.

  2. Se o painel de navegação do console não estiver visível, escolha o menu de expansão à esquerda.

    
                            Escolha o menu de expansão.
  3. Escolha Data sources (Origens de dados).

  4. Na página Data sources (Origens de dados), escolha o link do conector que deseja compartilhar.

  5. Na página de detalhes de uma origem dos dados do Lambda, escolha a opção Share (Compartilhar) no canto superior direito.

    
                        Selecione Share.
  6. Na caixa de diálogo Share nome do Lambda with another account (Compartilhar nome-do-Lambda com outra conta), insira as informações necessárias.

    • Para Data source name (Nome da origem dos dados), insira o nome da origem de dados copiada como você deseja que apareça na outra conta.

    • Para Account ID, (ID da conta), insira o ID da conta com a qual deseja compartilhar sua origem dos dados (neste caso, Conta B).

    
                        Insira um nome da origem dos dados e um ID de conta da Conta da AWS.
  7. Selecione Share. O conector de dados compartilhados que você especificou é criado na Conta B. As alterações de configuração do conector na Conta A se aplicam ao conector na Conta B.

Adicionar uma origem de dados compartilhada da conta A à conta B

Como analista de dados, você pode receber, de um administrador de dados, o ARN de um conector para adicionar à sua conta. Você pode usar a página Data sources (Origem dos dados) do console do Athena para adicionar o ARN do Lambda fornecido pelo administrador à sua conta.

Para adicionar o Lambda ARN de um conector de dados compartilhado à sua conta
  1. Abra o console do Athena em https://console.aws.amazon.com/athena/.

  2. Se você estiver usando a nova experiência de console e o painel de navegação não estiver visível, escolha o menu de expansão à esquerda.

  3. Escolha Data sources (Origens de dados).

  4. Na página Data sources (Origens de dados), escolha Connect data source (Conectar origem dos dados).

    
                        Escolha Connect data source (Conectar fonte de dados).
  5. Selecione Custom or shared connector (Conector personalizado ou compartilhado).

    
                        Selecione Custom or shared connector (Conector personalizado ou compartilhado).
  6. Na seção Lambda function (Função do Lambda), certifique-se de que a opção Use an existing Lambda function (Usar uma função do Lambda existente) esteja selecionada.

    
                        Especificar o ARN do Lambda de outra conta.
  7. Para Choose or enter a Lambda function (Escolher ou inserir uma função do Lambda) insira o ARN do Lambda da Conta A.

  8. Escolha Connect data source (Conectar fonte de dados).

Solução de problemas

Se você receber uma mensagem de erro informando que a Conta A não tem permissões para assumir uma função na Conta B, certifique-se de que o nome da função criada na Conta B esteja escrito corretamente e ela que tenha a política adequada anexada.