

# 데이터 스토어에 대한 네트워크 액세스 설정
<a name="start-connecting"></a>

작업을 추출, 변환 및 로드(ETL)하려면 AWS Glue는 데이터 스토어에 액세스할 수 있어야 합니다. 작업이 Virtual Private Cloud(VPC) 서브넷에서 실행될 필요가 없으면(예를 들어, 데이터를 Amazon S3에서 Amazon S3로 변환하는 것) 추가 구성이 필요 없습니다.

VPC 서브넷에서 작업을 실행해야 하는 경우(예: 프라이빗 서브넷의 JDBC 데이터 스토어에서 데이터 변환) AWS Glue는 작업이 VPC 내의 다른 리소스에 안전하게 연결할 수 있도록 [탄력적 네트워크 인터페이스](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)를 설정합니다. 지정한 서브넷의 IP 주소 범위에 속하는 프라이빗 IP 주소가 이 탄력적 네트워크 인터페이스에 할당됩니다. 퍼블릭 IP 주소가 할당되지 않습니다. AWS Glue 연결에 지정된 보안 그룹은 탄력적 네트워크 인터페이스 각각에 적용됩니다. 자세한 내용은 [AWS Glue에서 Amazon RDS 데이터 스토어에 대해 JDBC를 연결하도록 Amazon VPC 설정](setup-vpc-for-glue-access.md) 섹션을 참조하세요.

작업이 액세스한 모든 JDBC 데이터 스토어는 VPC 서브넷에서 사용 가능해야 합니다. VPC 안에서 Amazon S3에 액세스하려면 [VPC 엔드포인트](vpc-endpoints-s3.md)가 필요합니다. 작업에서 VPC 리소스와 퍼블릭 인터넷에 모두 액세스해야 할 경우 VPC 내부 네트워크 주소 변환(NAT) 게이트웨이가 VPC에 있어야 합니다.

 작업 또는 개발 엔드포인트는 한 번에 하나의 VPC(와 서브넷)에만 액세스할 수 있습니다. 다른 VPC의 데이터 스토어로 액세스하려면 다음과 같은 옵션이 있습니다.
+ VPC 피어링을 사용하여 데이터 스토어에 액세스합니다. VPC 피어링에 대한 자세한 내용은 [VPC 피어링 기초](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-basics.html) 단원을 참조하십시오.
+ Amazon S3 버킷을 중개 스토리지 위치로 사용합니다. 작업 1 출력값인 Amazon S3를 작업 2의 입력값으로 하여 작업을 두 가지로 분할합니다.

Amazon VPC를 사용하여 Amazon Redshift 데이터 스토어에 연결하는 방법에 대한 자세한 내용은 [Redshift 연결 구성](aws-glue-programming-etl-connect-redshift-home.md#aws-glue-programming-etl-connect-redshift-configure) 섹션을 참조하세요.

Amazon VPC를 사용하여 Amazon RDS 데이터 스토어에 연결하는 방법에 대한 자세한 내용은 [AWS Glue에서 Amazon RDS 데이터 스토어에 대해 JDBC를 연결하도록 Amazon VPC 설정](setup-vpc-for-glue-access.md) 섹션을 참조하세요.

Amazon VPC에 필요한 규칙을 설정한 후 데이터 스토어에 연결하는 데 필요한 속성을 사용하여 AWS Glue에서 연결을 생성합니다. 연결에 대한 자세한 정보는 [데이터에 연결](glue-connections.md) 섹션을 참조하세요.

**참고**  
AWS Glue DNS 환경을 설정하도록 합니다. 자세한 내용은 [VPC에서 DNS 설정](set-up-vpc-dns.md) 섹션을 참조하세요.

**Topics**
+ [AWS Glue에서 PyPI에 연결하도록 VPC 설정](setup-vpc-for-pypi.md)
+ [VPC에서 DNS 설정](set-up-vpc-dns.md)

# 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)을 참조하세요.

# VPC에서 DNS 설정
<a name="set-up-vpc-dns"></a>

도메인 이름 시스템(DNS)은 인터넷에서 사용되는 이름을 해당 IP 주소로 확인할 때 기준이 됩니다. DNS 호스트 이름은 컴퓨터를 고유적으로 지정하는 이름으로서, 호스트 이름과 도메인 이름으로 구성됩니다. DNS 서버는 DNS 호스트 이름을 해당 IP 주소로 확인합니다.

VPC에 DNS를 설정하려면 DNS 호스트 이름과 DNS 확인이 모두 VPC에서 활성화되었는지 확인합니다. VPC 네트워크 속성 `enableDnsHostnames` 및 `enableDnsSupport`는 `true`로 설정되어 있어야 합니다. 이러한 속성을 보고 수정하려면 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)의 VPC 콘솔로 이동합니다.

자세한 내용은 [VPC에서 DNS 사용하기](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) 단원을 참조하세요. 또한 AWS CLI를 사용하고 [modify-vpc-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-attribute.html) 명령을 호출하여 VPC 네트워크 속성을 구성할 수 있습니다.

**참고**  
Route 53를 사용한다면 구성이 DNS 네트워크 속성을 재정의하지 않도록 확인합니다.