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'
);
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 |
|---|---|
|
|
|
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'
);
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
PrivateDnsNameda 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.comServidores 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-principale 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-principaldo 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_namePonto de extremidade AWS Service name – o valor
endpoint_service_name– da seção de detalhes do serviço de ponto de extremidade.host_nameDNS 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
pendingAcceptanceparaavailable.SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
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');
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.