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¶
É possível usar a função de sistema SYSTEM$PROVISION_PRIVATELINK_ENDPOINT para criar um ponto de extremidade de conectividade privada especificando o serviço ou recurso e o nome do host. É necessário usar a função ACCOUNTADMIN ao usar esta função do sistema.
Nota
Se estiver usando a conectividade privada para um estágio externo ou volume externo, é necessário usar um caractere curinga (*
) ao especificar o nome de host. O uso do curinga não significa que todos os buckets S3 sejam acessados por meio de uma conexão privada. Somente os buckets referenciados por um objeto Snowflake que esteja habilitado para conectividade privada (ou seja, o estágio externo ou volume externo) podem ser acessados por meio do ponto de extremidade da VPC.
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 |
---|---|
|
|
|
Se estiver usando conectividade privada para estágios externos ou volumes externos, é necessário usar o valor com um curinga. |
Por exemplo, para criar um PrivateLink com acesso externo ao Amazon S3, execute a seguinte instrução SQL para configurar um ponto de extremidade para us-west-2
:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.us-west-2.s3',
'*.s3.us-west-2.amazonaws.com'
);
Se o serviço de destino for um serviço de ponto de extremidade de VPC, o serviço de ponto de extremidade precisará permitir que o Snowflake se conecte a ele. Antes de criar um ponto de extremidade, adicione o valor de privatelink-account-principal
da saída de SYSTEM$GET_PRIVATELINK_CONFIG como uma entidade permitida do serviço de ponto de extremidade VPC.
A instrução SQL a seguir configura um ponto de extremidade para um serviço de ponto de extremidade VPC. Observe que o serviço deve estar na mesma região que sua conta Snowflake:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'com.amazonaws.vpce.us-west-2.vpce-svc-012345678910f1234',
'my.onprem.storage.com'
);
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
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:
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.
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.
Crie um grupo de destino que contenha a instância de serviço que você deseja acessar.
Crie um balanceador de carga de rede que encaminhe o tráfego para o grupo de destino que você criou.
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.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())));
Nos resultados da consulta, localize a chave
privatelink-account-principal
e anote seu valor.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.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.
No AWS, aprove a conexão PrivateLink:
Navegue até as conexões de ponto de extremidade para o serviço de ponto de extremidade que você criou.
Selecione a conexão de ponto de extremidade relevante em um estado pendente.
Clique em Accept Endpoint Connection Request.
Verifique o status do ponto de extremidade executando a seguinte consulta.
Verifique se o status do ponto de extremidade foi alterado de
pendingAcceptance
paraavailable
.SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
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');
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');
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();
[
{
"provider_service_name": "com.amazonaws.us-west-2.s3",
"snowflake_endpoint_name": "vpce-123456789012abcdea",
"endpoint_state": "CREATED",
"host": "*.s3.us-west-2.amazonaws.com",
"status": "Available"
},
...
]
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.