

# Configurar uma VPC para se conectar ao PyPI para AWS Glue
<a name="setup-vpc-for-pypi"></a>

O Python Package Index (PyPI) é um repositório de software para a linguagem de programação Python. Este tópico aborda os detalhes necessários para oferecer suporte ao uso de pacotes instalados pelo pip (conforme especificado pelo criador da sessão usando o sinalizador `--additional-python-modules`).

O uso de sessões interativas do AWS Glue com um conector resulta no uso da rede VPC por meio da sub-rede especificada para o conector. Consequentemente, os serviços do AWS e outros destinos de rede não estão disponíveis, a menos que você defina uma configuração especial.

As resoluções para esse problema incluem:
+ Uso de um gateway da internet que seja acessível por sua sessão.
+ Configuração e uso de um bucket S3 com um repositório PyPI/simple contendo o fechamento transitivo das dependências de um conjunto de pacotes.
+ Uso de um repositório CodeArtifact que está espelhando o PyPI e anexado à sua VPC.

## Configuração de um gateway da Internet
<a name="setup-vpc-for-pypi-internet-gateway"></a>

Os aspectos técnicos são detalhados em [Casos de uso do gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-scenarios.html), mas observe esses requisitos para usar o `--additional-python-modules`. Especificamente, o `--additional-python-modules` requer acesso ao pypi.org, que é determinado pela configuração da sua VPC. Observe os seguintes requisitos:

1. A exigência de instalar módulos adicionais do python via pip install para uma sessão do usuário. Se a sessão usar um conector, sua configuração poderá ser afetada.

1. Quando um conector está sendo usado com o `--additional-python-modules`, quando a sessão é iniciada, a sub-rede associada aos `PhysicalConnectionRequirements` do conector deve fornecer um caminho de rede para alcançar pypi.org.

1. Você deve determinar se sua configuração está correta ou não.

## Configurar um bucket do Amazon S3 para hospedar um repositório PyPI/simple de destino
<a name="setup-vpc-for-pypi-s3-bucket"></a>

Este exemplo configura um espelho PyPI no Amazon S3 para um conjunto de pacotes e suas dependências.

Para configurar o espelho PyPI para um conjunto de pacotes:

```
# pip download all the dependencies
pip download -d s3pypi --only-binary :all: plotly gglplot
pip download -d s3pypi --platform manylinux_2_17_x86_64 --only-binary :all: psycopg2-binary
# create and upload the pypi/simple index and wheel files to the s3 bucket
s3pypi -b test-domain-name --put-root-index -v s3pypi/*
```

Se você já tiver um repositório de artefatos existente, ele terá um URL de índice para uso do pip que você pode fornecer no lugar do URL de exemplo para o bucket do Amazon S3, conforme descrito acima.

Para usar o index-url personalizado, com alguns pacotes de exemplo:

```
%%configure
{
    "--additional-python-modules": "psycopg2_binary==2.9.5",
    "python-modules-installer-option": "--no-cache-dir --verbose --index-url https://test-domain-name.s3.amazonaws.com/ --trusted-host test-domain-name.s3.amazonaws.com"
}
```

## Configurar um espelho CodeArtifact de pypi conectado à sua VPC
<a name="setup-vpc-for-pypi-code-artifact"></a>

Para configurar um espelho:

1. Crie um repositório na mesma região da sub-rede usada pelo conector.

   Selecione `Public upstream repositories` e escolha `pypi-store`.

1. Forneça acesso ao repositório da VPC para a sub-rede.

1. Especifique o `--index-url` correto usando o `python-modules-installer-option`. 

   ```
   %%configure
   {
       "--additional-python-modules": "psycopg2_binary==2.9.5",
       "python-modules-installer-option": "--no-cache-dir --verbose --index-url https://test-domain-name.s3.amazonaws.com/ --trusted-host test-domain-name.s3.amazonaws.com"
   }
   ```

Para obter mais informações, consulte [Use CodeArtifact from a VPC](https://docs.aws.amazon.com/codeartifact/latest/ug/use-codeartifact-from-vpc.html).