

# AWS Glue에서 PyPI에 연결하도록 VPC 설정
<a name="setup-vpc-for-pypi"></a>

Python Package Index(PyPI)는 Python 프로그래밍 언어용 소프트웨어 리포지토리입니다. 이 주제에서는 pip 설치 패키지(세션 생성자가 `--additional-python-modules` 플래그를 사용하여 지정함) 사용을 지원하는 데 필요한 세부 정보를 다룹니다.

커넥터와 함께 AWS Glue 대화형 세션을 사용하면 커넥터에 지정된 서브넷을 통해 VPC 네트워크를 사용하게 됩니다. 따라서 특별 구성을 설정하지 않으면 AWS 서비스 및 기타 네트워크 대상을 사용할 수 없습니다.

이 문제의 해결 방법은 다음과 같습니다.
+ 세션에서 연결할 수 있는 인터넷 게이트웨이 사용.
+ 패키지 세트의 종속성에서 전이 폐쇄 특성을 포함하는 PyPI/simple 리포지토리로 S3 버킷의 설정 및 사용.
+ PyPI를 미러링하고 VPC에 연결하는 CodeArtifact 리포지토리 사용.

## 인터넷 게이트웨이 설정
<a name="setup-vpc-for-pypi-internet-gateway"></a>

기술적 측면은 [NAT 게이트웨이 사용 사례](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-scenarios.html)에 자세히 설명되어 있지만 `--additional-python-modules` 사용에 관한 다음 요구 사항도 참고하세요. 특히, VPC의 구성에 따라 결정되는 pypi.org에 대한 액세스 권한이 `--additional-python-modules`에 필요합니다. 다음과 같은 요구 사항을 확인합니다.

1. 사용자 세션의 경우 pip install을 통해 추가 python 모듈을 설치해야 합니다. 세션에서 커넥터를 사용하는 경우 구성이 영향을 받을 수 있습니다.

1. `--additional-python-modules`에서 커넥터를 사용할 때 세션이 시작되면 커넥터의 `PhysicalConnectionRequirements`에 연결된 서브넷이 pypi.org에 도달하기 위한 네트워크 경로를 제공해야 합니다.

1. 구성이 올바른지 확인해야 합니다.

## 대상 PyPI/simple 리포지토리를 호스팅하도록 Amazon S3 버킷 설정
<a name="setup-vpc-for-pypi-s3-bucket"></a>

이 예제는 Amazon S3에서 패키지 세트 및 해당 종속성에 대한 PyPI 미러를 설정합니다.

패키지 세트에 대한 PyPI 미러를 설정하려면:

```
# 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/*
```

기존 아티팩트 리포지토리가 이미 있는 경우, 위와 같이 Amazon S3 버킷의 예제 URL 대신 제공할 수 있는 pip 사용을 위한 인덱스 URL이 있을 것입니다.

몇 가지 예제 패키지에서 사용자 지정 indexx-url을 사용하려면:

```
%%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"
}
```

## VPC에 연결된 pypi의 CodeArtifact 미러 설정
<a name="setup-vpc-for-pypi-code-artifact"></a>

미러를 설정하려면:

1. 커넥터에서 사용하는 서브넷과 동일한 리전에서 리포지토리를 생성합니다.

   `Public upstream repositories`를 선택하고 `pypi-store`를 선택합니다.

1. 서브넷에 VPC에서 리포지토리로의 액세스를 제공합니다.

1. `python-modules-installer-option`을 사용하여 올바른 `--index-url`을 지정합니다.

   ```
   %%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"
   }
   ```

자세한 내용은 [VPC에서 CodeArtifact 사용](https://docs.aws.amazon.com/codeartifact/latest/ug/use-codeartifact-from-vpc.html)을 참조하세요.