Etapa 2: criar o serviço de proxy (Amazon API Gateway) no console de gerenciamento da AWS

O Snowflake não envia dados (solicitações HTTP POST) diretamente para um serviço remoto. Em vez disso, o Snowflake envia os dados para um serviço de proxy que os retransmite para o serviço remoto (por exemplo, uma função AWS Lambda) e os transmite de volta.

Este tópico fornece instruções para a criação e configuração de um Amazon API Gateway para usá-lo como serviço de proxy para sua função externa.

A configuração de um Amazon API Gateway como serviço de proxy exige várias etapas, incluindo:

  • Criar uma nova função IAM (gestão de identidade e acesso) em sua conta AWS.

  • Criar um ponto de extremidade do Amazon API Gateway e configurá-lo.

  • Proteger seu ponto de extremidade do Amazon API Gateway.

  • Criar um objeto de Integração de API no Snowflake.

  • Definir uma relação de confiança entre o Snowflake e a nova função IAM.

As etapas para isso são intercaladas porque:

  • A integração de API precisa de informações do API Gateway, como o ARN (Nome de recurso da Amazon) da função.

  • O API Gateway precisa de informações da integração de API, como API_AWS_EXTERNAL_ID e API_AWS_IAM_USER_ARN.

Neste tópico:

Criar uma nova função IAM em sua conta AWS

Para que o Snowflake autentique a sua conta AWS, um usuário de IAM (gestão de identidade e acesso) de propriedade do Snowflake deve ter permissão para assumir uma função IAM em sua conta AWS.

As etapas para criar uma função IAM são:

  1. Criar uma nova função IAM: no console AWS, procure por IAM, clique em Roles e depois clique em Create Role.

  2. Quando aparecer a solicitação para selecionar o tipo de entidade de confiança, escolha Another AWS account.

  3. Quando aparecer a solicitação para Specify accounts that can use this role, cole o valor do campo da planilha chamado Your AWS Account ID.

    (Use sua ID de conta AWS, não a do Snowflake. O ARN do Snowflake será associado a essa função IAM posteriormente).

  4. Clique em Next: Permissions.

  5. Opcionalmente, defina permissões (Attach permissions policies).

  6. Clique em Next: Tags.

  7. Opcionalmente, adicione tags.

  8. Clique em Next: Review.

  9. Insira um nome de função.

    • Registre o nome da função no campo New IAM Role Name na planilha.

  10. Clique no botão Create role. Depois que você criar a função:

    • Registre o Role ARN no campo New IAM Role ARN na planilha.

Criar o ponto de extremidade do API Gateway

Antes de criar e configurar seu API Gateway, escolha se deseja utilizar um ponto de extremidade regional ou um ponto de extremidade privado. Para obter mais informações, consulte Como escolher seu tipo de ponto de extremidade: ponto de extremidade regional vs. ponto de extremidade privado.

Se você planeja usar um ponto de extremidade privado, você precisa da ID de VPC (Virtual Private Cloud) que você registrou na sua planilha de rastreamento.

As etapas para criar um ponto de extremidade do API Gateway são:

  1. No console de gerenciamento da AWS, selecione API Gateway.

  2. Selecione Create API.

  3. Selecione o tipo de ponto de extremidade (regional ou privado).

    • Se você quiser um ponto de extremidade regional, então:

      • Encontre REST API e clique no botão Build.

    • Se você quiser um ponto de extremidade privado, então:

      • Encontre REST API private e clique no botão Build.

    Importante

    Certifique-se de escolher REST API ou REST API private. Não selecione HTTP API ou outra opção.

  4. Selecione a opção New API.

  5. Digite um nome para a nova API.

    Registre esse nome no campo New API Name da planilha.

  6. Se houver uma solicitação para selecionar Endpoint Type, selecione Regional ou Private.

  7. Deixe o campo VPC Endpoint IDs em branco.

  8. Clique no botão Create API.

  9. Para criar um recurso, clique em Actions e depois clique em Create Resource.

    Registre o nome do recurso no campo API Gateway Resource Name da planilha.

    Clique no botão Create Resource. A tela exibe No methods defined for the resource.

  10. Para criar um novo método, clique em Actions e selecione Create Method.

    Na caixa do menu suspenso do nome do recurso, selecione POST e depois clique na marca de verificação cinza ao lado.

  11. O Integration type deve ser Lambda Function. Se isso ainda não tiver sido selecionado, selecione-o.

  12. Marque a caixa de seleção Use Lambda Proxy integration.

    É importante selecionar a integração de proxy do Lambda porque o JSON sem a integração de proxy do Lambda seria diferente do JSON com a integração de proxy do Lambda. Para obter mais informações sobre a integração de proxy do Lambda, consulte a documentação da AWS para:

  13. No campo Lambda Function, cole o Lambda Function Name que você registrou na planilha.

  14. Clique no botão Save.

  15. Clique no botão Actions e selecione a ação Deploy API.

  16. Selecione ou crie um estágio. Clique em Deploy.

  17. Abaixo do nome do recurso, você verá POST.

    Se isso não for exibido, talvez seja necessário expandir a árvore de recursos clicando no triângulo que está à esquerda do nome do recurso.

  18. Clique em POST e registre a Invoke URL para a solicitação POST no campo Resource Invocation URL na planilha.

    Certifique-se de que a URL de invocação inclui o nome do recurso que você criou; se não incluir, você pode ter clicado na URL de invocação para o estágio, e não para o recurso.

  19. Clique em Save Changes.

Testar o API Gateway

Verifique se o API Gateway pode chamar sua função Lambda.

  1. Siga as instruções de testes da AWS .

  2. Na etapa apropriada das instruções da AWS, cole o seguinte texto no Request Body:

    {
        "data":
            [
                [0, 43, "page"],
                [1, 42, "life, the universe, and everything"]
            ]
    }
    
    Copy

Depois de executar o teste, Request, Status, Latency, and Response Body deverá ser exibido à direita (talvez você precise rolar para vê-lo).

Se o status retornado for 200, seu API Gateway invocou a função Lambda correta.

(Esta etapa de verificação ignora a autenticação e, portanto, não descobre problemas relacionados a permissões).

Proteger seu ponto de extremidade do Amazon API Gateway

Para uma visão geral da proteção dos pontos de extremidade do serviço de proxy, como pontos de extremidade do Amazon API Gateway, consulte Proteger o serviço de proxy.

Para proteger seu ponto de extremidade do Amazon API Gateway:

  1. Neste ponto, você deve estar na tela que exibe as informações do API Gateway e você deverá ver seu recurso e método POST.

    Se você ainda não estiver lá, faça o seguinte:

    1. No console de gerenciamento da AWS, acesse a página do API Gateway.

    2. Selecione seu API Gateway.

    3. No painel da esquerda, clique em Resources.

    4. Clique no método POST. (Se isso não for exibido, expanda a árvore de recursos clicando no triângulo à esquerda do recurso no painel Resources, que geralmente é o segundo painel a partir da esquerda).

  2. Copie o Method Request ARN da caixa Method Request para o campo Method Request ARN na planilha.

  3. Clique no título Method Request.

  4. Clique no símbolo de edição ao lado de Authorization e selecione AWS_IAM para especificar que a solicitação do método requer autorização AWS_IAM.

    Clique na marca de seleção ao lado do menu para confirmar sua escolha.

  5. Para definir a política de recursos para o API Gateway para especificar quem está autorizado a invocar o ponto de extremidade do gateway, clique em Resource Policy na coluna à esquerda da janela para a API.

    • Ponto de extremidade regional:

      Cole o modelo de política de recursos com formatação JSON abaixo no editor de políticas de recursos e, em seguida, substitua os espaços reservados pelos valores correspondentes da planilha, conforme descrito abaixo.

      {
          "Version": "2012-10-17",
          "Statement":
          [
              {
              "Effect": "Allow",
              "Principal":
                  {
                  "AWS": "arn:aws:sts::<12-digit-number>:assumed-role/<external_function_role>/snowflake"
                  },
              "Action": "execute-api:Invoke",
              "Resource": "<method_request_ARN>"
              }
          ]
      }
      
      Copy

      Substitua as seguintes partes da política de recursos:

      • Substitua <12-digit-number> pelo valor no campo Your AWS Account ID, que você registrou na planilha.

      • Substitua <external_function_role> pelo nome da função do campo New IAM Role Name da planilha.

        Por exemplo, se seu nome da função AWS for:

        arn:aws:iam::987654321098:role/MyNewIAMRole
        
        Copy

        então o resultado deve ser:

        "AWS": "arn:aws:sts::987654321098:assumed-role/MyNewIAMRole/snowflake"
        
        Copy
      • Substitua <method_request_ARN> pelo valor no campo Method Request ARN da planilha. Esse é o ARN do método POST do recurso.

        Nota

        Ao definir o recurso para o ARN da solicitação de método, você especifica que o API Gateway deve permitir chamadas apenas para o recurso especificado. É possível especificar um subconjunto do ARN da solicitação de método como um prefixo, que permite chamar múltiplos recursos a partir do mesmo API Gateway.

        Por exemplo, se o ARN da solicitação de método for:

        arn:aws:execute-api:us-west-1:123456789012:a1b2c3d4e5/*/POST/MyResource
        
        Copy

        então você pode especificar apenas o seguinte prefixo:

        arn:aws:execute-api:us-west-1:123456789012:a1b2c3d4e5/*
        
        Copy
      • Apenas para usuários do GovCloud do governo dos Estados Unidos:

        • Atualize o ARN da solicitação de método para usar aws-us-gov, por exemplo:

          arn:aws-us-gov:execute-api:us-gov-west-1:123456789012:a1b2c3d4e5/*
          
          Copy
        • Certifique-se de usar uma região do GovCloud, por exemplo, us-gov-west-1.

    • Ponto de extremidade privado:

      Cole o modelo de política de recursos abaixo no editor de políticas de recursos e, em seguida, substitua os espaços reservados pelos valores correspondentes da planilha, conforme descrito abaixo.

      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:sts::<12-digit-number>:assumed-role/<external_function_role>/snowflake"
                  },
                  "Action": "execute-api:Invoke",
                  "Resource": "<method_request_ARN>",
                  "Condition": {
                      "StringEquals": {
                          "aws:sourceVpc": "<VPC_ID>"
                      }
                  }
              }
          ]
      }
      
      Copy

      Substitua as seguintes partes da política de recursos:

      • Substitua <12-digit-number>, <external_function_role> e <method_request_ARN> como descrito acima por um ponto de extremidade regional.

      • Substitua <VPC_ID> pela VPC ID do Snowflake para sua região, que deve estar registrada no campo Snowflake VPC ID da planilha.

      • Apenas para usuários do GovCloud do governo dos Estados Unidos:

        • Atualize o ARN da solicitação de método para usar aws-us-gov, por exemplo:

          arn:aws-us-gov:execute-api:us-gov-west-1:123456789012:a1b2c3d4e5/*
          
          Copy
        • Certifique-se de usar uma região do GovCloud, por exemplo, us-gov-west-1.

  6. Clique em Save para salvar a política de recursos.

  7. Implante a API atualizada. Para fazer isso, clique no nome da API na trilha de localização no topo da página. Clique em Actions e depois clique em Deploy API. Selecione seu estágio de implantação e clique em Deploy.

Na próxima etapa, você vai criar um objeto de integração de API do Snowflake. Não feche a janela do console de gerenciamento da AWS agora; você deve voltar a ela mais tarde.