Por que meu notebook Amazon SageMaker Studio no modo somente VPC não se conecta ao meu aplicativo KernelGateway?

Data da última atualização: 09/12/2022

Estou tendo problemas de conectividade entre meu notebook Amazon SageMaker Studio no modo somente VPC e meu aplicativo KernelGateway.

Breve descrição

Você pode receber os seguintes erros ao usar o SageMaker Studio somente no modo VPC e não conseguir iniciar o aplicativo KernelGateway:

Você pode iniciar o SageMaker Studio, mas seu kernel falha com o seguinte erro:

SageMaker Studio is unable to connect KernelGateway App. In VPCOnly mode, please ensure that security groups allow TCP traffic within the security group

Em geral, você recebe esse erro porque o grupo de segurança não está se autorreferenciando para permitir a conectividade entre as instâncias em seu Domínio do SageMaker.

Por exemplo, suponha que você possa iniciar o SageMaker Studio, mas ele leva muito tempo para carregar e o kernel falhe ao iniciar:

Failed to start kernel
Failed to launch app [None]. SageMaker Studio is unable to reach SageMaker endpoint. Please ensure your VPC has connectivity to SageMaker via Internet or VPC Endpoint. If you are using VPC Endpoints, please ensure Security Groups allows traffic between Studio and VPC endpoints.

Esse erro ocorre quando seu domínio somente VPC não consegue se conectar à Internet ou aos endpoints da Amazon Virtual Private Cloud (Amazon VPC). Há vários motivos para isso acontecer, como os seguintes:

  • Os grupos de segurança não estão configurados corretamente.
  • Sua sub-rede não tem os endpoints da VPC corretos.
  • Seu domínio está conectado a uma sub-rede privada e nenhum gateway NAT ativo é adicionado à sua tabela de rotas.
  • Você configurou seu SageMaker Studio para se conectar a sub-redes públicas.

Resolução

Certifique-se de que os grupos de segurança do SageMaker Studio incluam as regras necessárias

Certifique-se de que o tráfego do AWS Network File System (AWS NFS) entre o domínio e o volume do Amazon Elastic File System (Amazon EFS) seja permitido via TCP na porta 2049. Seus dados do SageMaker Studio são armazenados usando o Amazon EFS. Portanto, você deve ter as regras para permitir conexões de entrada e saída para fins de armazenamento.

Para permitir o tráfego de entrada do Amazon EFS para seus recursos, faça o seguinte:

  1. Abra o console do Amazon VPC.
  2. No painel de navegação, escolha Security Groups (Grupos de segurança).
  3. Selecione o grupo de segurança que você deseja atualizar.
  4. Escolha Actions (Ações) e escolha Edit inbound rules (Editar regras de entrada).
  5. Escolha Add rule (Adicionar regra) e insira o seguinte:
    Para Type (Tipo), escolha NFS.
    Em Source (Origem), escolhaCustom (Personalizado) e insira a ID do Amazon EFS.
  6. Selecione Save rules (Salvar regras).

Você deve permitir o tráfego TCP dentro do grupo de segurança para permitir a conectividade entre os aplicativos JupyterServer e KernelGateway. Como você criou o domínio Studio no modo VPC only (somente VPC), deve especificar pelo menos um grupo de segurança para seus recursos de domínio do SageMaker Studio. Esse grupo de segurança deve permitir o tráfego de entrada por TCP nas portas 8192-65535 e todo o tráfego de saída para 0.0.0.0/0.

Para permitir a conectividade entre os aplicativos JupyterServer e KernelGateway, faça o seguinte:

  1. Abra o console do Amazon VPC.
  2. No painel de navegação, escolha Security Groups (Grupos de segurança).
  3. Selecione o grupo de segurança que você deseja atualizar.
  4. Escolha Actions (Ações) e escolha Edit inbound rules (Editar regras de entrada).
  5. Escolha Add rule (Adicionar regra) e insira o seguinte:
    Em Type (Tipo), selecione Custom TCP (TCP personalizada).
    Em Port range (Intervalo de portas), insira 8192-65535.
    Em Source (Origem), escolha Custom (Personalizado) e insira o ID do grupo de segurança que você está editando.
  6. Selecione Save rules (Salvar regras).

Quando você acessa um recurso em sua Amazon VPC pelo seu notebook SageMaker Studio, o tráfego da conta de serviço do SageMaker é roteado por meio de sua interface de rede elástica. Observe que os aplicativos JupyterServer e KernelGateway estão na VPC da sua conta de serviço do SageMaker. Eles se comunicam entre si por meio das interfaces de rede elásticas conectadas à sua VPC. Embora esses aplicativos façam parte da conta de serviço de domínio do SageMaker Studio, eles são executados em diferentes instâncias do Amazon Elastic Compute Cloud (Amazon EC2). Esses aplicativos usam as portas efêmeras para estabelecer uma conexão entre si. Não há uma porta específica pela qual esses aplicativos se conectem. Portanto, é uma prática recomendada permitir que todas as portas TCP sejam abertas em grupos de segurança de autorreferência. Para obter mais informações, consulte Dive deep into Amazon SageMaker Studio notebooks architecture (Aprofundamento sobre a arquitetura de notebooks do Amazon SageMaker Studio).

Certifique-se de ter criado os endpoints da VPC necessários

Se os seus recursos do SageMaker Studio não precisarem de acesso à Internet, não será necessário adicionar um gateway NAT. No entanto, os seguintes endpoints são necessários para executar notebooks Studio:

  • API do SageMaker: com.amazonaws.<aws-region>.sagemaker.api
  • Tempo de execução do SageMaker: com.amazonaws.<aws-region>.sagemaker.runtime

Certifique-se de criar os seguintes endpoints para acessar o Amazon Simple Storage Service (Amazon S3) e os modelos de Projeto:

  • Para o Amazon S3: com.amazonaws. <aws-region>.s3
  • Para modelos de projetos do Amazon SageMaker: com.amazonaws.<aws-region>.servicecatalog

Certifique-se de associar os grupos de segurança da sua VPC a esses endpoints da VPC fazendo o seguinte:

  1. Abra o console do Amazon VPC.
  2. No painel de navegação, escolha Endpoints.
  3. Escolha o endpoint que você deseja atualizar.
  4. Escolha Actions (Ações) e Manage security groups (Gerenciar grupos de segurança).
  5. Selecione o grupo de segurança que deve estar associado a esse endpoint.
  6. Escolha Save (Salvar).

Para mais informações, consulte os links a seguir:

Certifique-se de usar um gateway NAT se precisar de conectividade com a Internet

Se seus recursos do SageMaker Studio precisarem de acesso à Internet, primeiro certifique-se de que seu SageMaker Studio esteja configurado para se conectar a sub-redes privadas. Em seguida, crie um gateway NAT e permita o tráfego do gateway NAT por meio da tabela de rotas da sua sub-rede privada. Para obter mais informações, consulte How do I set up a NAT gateway for a private subnet in Amazon VPC? (Como faço para configurar um gateway NAT para uma sub-rede privada no Amazon VPC?) Observe que o domínio do SageMaker Studio conectado a uma sub-rede pública não permite que você se conecte à Internet.

Certifique-se de que os requisitos de rede para sua VPC sejam atendidos

Se você iniciou seu SageMaker Studio no modo VPC only (somente VPC), certifique-se de que sua VPC atenda aos seguintes requisitos:

  • As sub-redes devem ter endereços IP disponíveis suficientes para a instância.
  • Para permitir o acesso à Internet, não se esqueça de associar seu domínio do SageMaker a uma sub-rede privada durante a criação do domínio. Além disso, use o gateway NAT para acesso à Internet.
  • Se você estiver usando um endpoint da VPC para executar APIs do SageMaker, certifique-se de que os atributos Enable DNS hostnames (Ativar nomes de host DNS) e Enable DNS Support (Ativar suporte de DNS) estejam definidos como true (verdadeiro) para sua VPC. Isso é necessário para que sua VPC se conecte ao endpoint da API do SageMaker ao iniciar o kernel.

Você pode usar os comandos da AWS Command Line Interface (AWS CLI) para garantir que os grupos de segurança corretos estejam vinculados ao domínio. Para atualizar as DefaultUserSettings do seu domínio do Studio para usar o novo grupo de segurança, use o comando update-domain:

aws sagemaker update-domain –domain-id <value> --default-user-settings SecurityGroups=<list>

Você também pode reconfigurar o domínio recriando o domínio anexado aos grupos de segurança necessários. A saída do parâmetro SecurityGroups lista todos os grupos de segurança da VPC que o Studio usa para comunicação.

Observação: para executar o comando anterior, você deve excluir todos os aplicativos com status InService dos seus perfis de usuário.

Depois que o comando update-domain for bem-sucedido, você poderá verificar seu domínio usando o comando describe-domain:

Exemplo:

$ aws sagemaker describe-domain --domain-id d-xyzxyz

Em seguida, você pode iniciar o SageMaker Studio novamente e confirmar se o notebook está iniciando corretamente. Você também pode testar a conectividade com a Internet executando !curl amazon.com de dentro de uma célula de notebook.

Observação: se você receber erros ao executar comandos da AWS CLI, verifique se está utilizando a versão mais recente da AWS CLI.

Exclua o aplicativo JupyterServer e inicie um novo para que as configurações atualizadas entrem em vigor. Você pode usar seu perfil de usuário do SageMaker Studio depois de atualizar as configurações do Amazon VPC. Para obter mais informações, consulte a seção Requisitos para usar o modo somente VPC em Conectar notebooks do SageMaker Studio em uma VPC a recursos externos.

Outras considerações

Se apenas um usuário tiver esse problema, verifique se o aplicativo padrão foi iniciado antes da conclusão das atualizações da VPC. Nesse caso, o aplicativo JupyterServer padrão não é atualizado automaticamente para utilizar a nova configuração de VPC, resultando em problemas de conectividade. Além disso, verifique se o aplicativo JupyterServer padrão foi iniciado antes de semanas ou meses. Isso pode fazer com que o aplicativo tenha arquivos de log e arquivos temporários grandes. Tente recriar o aplicativo padrão para liberar espaço ou garantir que o aplicativo use a configuração de VPC atualizada.

O problema pode acontecer se os usuários do SageMaker Studio estiverem configurados com uma função de execução diferente. Certifique-se de que as permissões da função de execução dos usuários incluam as políticas necessárias. Essas políticas devem ativar a função de execução para executar a ação DescribeApp necessária para criar notebooks do Studio. Depois de atualizar essas permissões para a função de execução, tente provisionar notebooks Studio no modo somente VPC.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?