Gerenciamento de pontos de extremidade de conectividade privada: AWS

Este tópico fornece informações sobre como gerenciar pontos de extremidade de conectividade privada para uso com conectividade privada de saída para AWS.

Provisionar pontos de extremidade de conectividade privada

Nota

A AWS não oferece suporte para pontos de extremidade da interface do VPC entre regiões para o serviço Amazon S3. Portanto, o PrivateLink entre regiões não é compatível para conectividade de saída para estágios e volumes externos que usam o serviço Amazon S3.

O suporte entre regiões para AWS PrivateLink não está disponível em regiões governamentais ou na República Popular da China.

You can use the SYSTEM$PROVISION_PRIVATELINK_ENDPOINT system function to create a private connectivity endpoint by specifying the service or resource, and the host name. You must use the ACCOUNTADMIN role when you use this system function.

Nota

If you use private connectivity for an external stage or external volume, you must use the wildcard character * when you specify the host name. Using the wildcard doesn’t mean that all Amazon S3 buckets are accessed over a private connection. Only buckets referenced by a Snowflake object that is enabled for private connectivity — that is, the external stage or external volume — can be accessed through the VPC endpoint.

For example, to create a PrivateLink endpoint that connects to Amazon S3, execute the following SQL statement to configure an endpoint for us-west-2:

SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
  'com.amazonaws.us-west-2.s3',
  '*.s3.us-west-2.amazonaws.com'
);
Copy

Nota

When you configure an endpoint for Amazon S3 or another platform as a service (PaaS), such as KMS, that service must be in the same region as your Snowflake account.

A função SYSTEM$PROVISION_PRIVATELINK_ENDPOINT aceita um nome de serviço de provedor e um nome de host como argumentos. É possível obter esses valores usando o subcomando describe-vpc-endpoint-services na linha de comando do AWS. Conforme descrito na documentação AWS, este subcomando do AWS retorna um objeto JSON com um campo ServiceName e um campo PrivateDnsName. Use a tabela a seguir para determinar os valores a serem usados na função SYSTEM$PROVISION_PRIVATELINK_ENDPOINT:

Argumento SYSTEM$PROVISION_PRIVATELINK_ENDPOINT

Saída de describe-vpc-endpoint-services

provider_service_name

ServiceName

host_name

PrivateDnsName

If you use private connectivity for external stages or external volumes, you must use the value with a wildcard.

É possível criar um ponto de extremidade de conectividade privada para um serviço de ponto de extremidade de VPC em uma região da AWS diferente da sua região do Snowflake. Se fizer isso, certifique-se de que o serviço de ponto de extremidade da VPC seja compatível com a região do Snowflake.

Importante

Antes de especificar provider_service_name como um argumento para a função SYSTEM$PROVISION_PRIVATELINK_ENDPOINT, consulte a seção sobre preços de conectividade entre regiões na página de preços do AWS PrivateLink para determinar a região apropriada.

If the target service is a VPC endpoint service, the endpoint service must allow Snowflake to connect to it. Before you create an endpoint, add the value of privatelink-account-principal from the output of SYSTEM$GET_PRIVATELINK_CONFIG as an allowed principal of the VPC endpoint service.

The following SQL statement configures an endpoint to a VPC endpoint service:

SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
  'com.amazonaws.vpce.us-west-2.vpce-svc-012345678910f1234',
  'my.onprem.storage.com'
);
Copy

Nota

Neste exemplo, o serviço pode estar em uma região diferente da sua conta Snowflake.

Após criar um ponto de extremidade, há um atraso antes de você poder usá-lo. Para obter informações sobre como verificar o status de um ponto de extremidade criado, consulte SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.

Configure a conectividade com um ponto de extremidade que não pode ser acessado diretamente

Nem todos os serviços permitem que o Snowflake se conecte diretamente a instâncias específicas por meio de um ponto de extremidade de interface. Nesses casos, você pode habilitar o acesso ao serviço configurando um proxy e expondo o serviço como um serviço de ponto de extremidade VPC.

Para obter um passo a passo específico para o Amazon RDS, consulte a postagem do blog Conexão com o Amazon RDS usando a conectividade privada Snowflake.

Descubra se um serviço está disponível para acesso direto

Em geral, o Snowflake pode acessar um serviço AWS diretamente por meio de conectividade privada se uma das opções a seguir for verdadeira:

  • O nome DNS do serviço – seu valor PrivateDnsName da saída de AWS DescribeVpcEndpointServices – é prefixado com um curinga.

    Se o nome DNS do serviço começar com um caractere curinga *, é provável que o AWS ofereça suporte ao acesso direto a recursos individuais nesse serviço. O nome DNS geralmente está nesse formato:

    *.<service>.<region>.amazonaws.com
    
    Copy
  • O serviço é puramente de plano de dados. o AWS Bedrock Runtime é um exemplo.

    Para descobrir isso sobre um determinado serviço, consulte a documentação do AWS e as postagens do blog.

Acesse um serviço quando o acesso direto não estiver disponível

Quando um serviço não está disponível por meio de acesso direto via ponto de extremidade de interface, você pode habilitar o acesso ao serviço configurando um proxy e expondo o serviço como um serviço de ponto de extremidade VPC.

Exemplos de tais serviços incluem o seguinte:

  • Instâncias de Amazon EC2 em ec2.us-west-2.amazonaws.com

  • Servidores do Amazon Relational Database Service (RDS) em rds.us-west-2.amazonaws.com

Configure o AWS para acesso por meio de um proxy

Para expor uma instância de serviço por meio de um proxy, você configura uma nuvem privada virtual (VPC) e um balanceador de carga no AWS e, em seguida, cria um ponto de extremidade de link privado do Snowflake usando o nome do serviço e o nome do balanceador de carga DNS do serviço de ponto de extremidade AWS.

A seguir, descrevemos as etapas básicas:

  1. No AWS, crie uma nuvem privada virtual (VPC) com sub-redes que abrangem três zonas de disponibilidade diferentes.

    Escolha as zonas de disponibilidade iniciais (por exemplo, az1 e az2) para seus recursos; o Snowflake pode não ser compatível com as AZs mais recentes em algumas regiões. Certifique-se de que os pontos de extremidade e outros recursos sejam criados nas mesmas zonas de disponibilidade para evitar o tráfego entre zonas.

  2. Nas configurações de rede da instância de serviço que deseja acessar, certifique-se de que a instância esteja na VPC que você criou.

  3. Crie um grupo de destino que contenha a instância de serviço que você deseja acessar.

  4. Crie um balanceador de carga de rede que encaminhe o tráfego para o grupo de destino que você criou.

  5. Crie um serviço de ponto de extremidade com o balanceador de carga de rede que você criou.

    Registre o nome do serviço de ponto de extremidade – endpoint_service_name – para uso ao configurar o Snowflake para acesso ao serviço.

  6. No Snowflake, execute a seguinte consulta para recuperar a entidade da conta Snowflake para permitir a criação de pontos de extremidade:

    SELECT key, value FROM TABLE(FLATTEN(INPUT => PARSE_JSON(SYSTEM$GET_PRIVATELINK_CONFIG())));
    
    Copy
  7. Nos resultados da consulta, localize a chave privatelink-account-principal e anote seu valor.

  8. No AWS, para o serviço de ponto de extremidade que você criou, atualize a seção Allow principals para adicionar uma entidade cujo ARN seja o valor da chave privatelink-account-principal do Snowflake.

  9. No Snowflake, crie um ponto de extremidade privado para o serviço de ponto de extremidade AWS que você criou.

    Ao executar a função SYSTEM$PROVISION_PRIVATELINK_ENDPOINT, use os seguintes valores como argumentos:

    Argumento SYSTEM$PROVISION_PRIVATELINK_ENDPOINT

    Valor da configuração do AWS

    provider_service_name

    Ponto de extremidade AWS Service name – o valor endpoint_service_name – da seção de detalhes do serviço de ponto de extremidade.

    host_name

    DNS Name do balanceador de carga de rede que você criou.

  10. No AWS, aprove a conexão PrivateLink:

    1. Navegue até as conexões de ponto de extremidade para o serviço de ponto de extremidade que você criou.

    2. Selecione a conexão de ponto de extremidade relevante em um estado pendente.

    3. Clique em Accept Endpoint Connection Request.

  11. Verifique o status do ponto de extremidade executando a seguinte consulta.

    Verifique se o status do ponto de extremidade foi alterado de pendingAcceptance para available.

    SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
    
    Copy

Alterar o nome do host de um ponto de extremidade de conectividade privada

Você pode alterar apenas o nome do host de um ponto de extremidade de conectividade privada provisionado anteriormente sem alterar seu recurso de rede. Alterar o nome do host de um ponto de extremidade informa ao Snowflake que esse ponto de extremidade agora se conecta ao mesmo serviço usando um nome de host diferente. Para alterar o nome do host, chame a função do sistema SYSTEM$SET_PRIVATELINK_ENDPOINT_HOSTNAME.

Remova um ponto de extremidade de conectividade privada para os serviços

É possível usar a função do sistema SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT para remover um ponto de extremidade de conectividade privada especificando o serviço ou o recurso.

Depois que o ponto de extremidade é removido, ele é colocado em uma fila para ser excluído após 7 dias.

Você precisa usar a função ACCOUNTADMIN ao empregar esta função do sistema.

Por exemplo, para remover um PrivateLink com acesso externo ao Amazon S3, execute a seguinte instrução SQL:

SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('com.amazonaws.us-west-2.s3');
Copy

Restauração de um ponto de extremidade de conectividade privada para serviços

É possível usar a função do sistema SYSTEM$RESTORE_PRIVATELINK_ENDPOINT para restaurar um ponto de extremidade de conectividade privada removido que ainda esteja na fila de exclusão, especificando o serviço ou recurso. Se o ponto de extremidade não for encontrado na fila de exclusão, você não poderá restaurá-lo.

Você precisa usar a função ACCOUNTADMIN ao empregar esta função do sistema.

Por exemplo, para restaurar um PrivateLink com acesso externo ao Amazon S3, execute a seguinte instrução SQL:

SELECT SYSTEM$RESTORE_PRIVATELINK_ENDPOINT('com.amazonaws.us-west-2.s3');
Copy

Como listar todos os pontos de extremidade de conectividade privada para serviços

É possível usar a função do sistema SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO para listar todos os pontos de extremidade de conectividade privada e as informações sobre os pontos de extremidade em sua conta.

Você precisa usar a função ACCOUNTADMIN ao empregar esta função do sistema.

Por exemplo, para listar todos os pontos de extremidade AWS PrivateLink com serviços AWS, execute a seguinte instrução SQL:

SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
Copy

Para obter uma descrição dos campos do objeto JSON retornado pela função, consulte Retornos.

Nota

Você também pode consultar a exibição OUTBOUND_PRIVATELINK_ENDPOINTS no esquema ACCOUNT_USAGE para listar os pontos de extremidade privados em sua conta.