

# 设置对数据存储的网络访问
<a name="start-connecting"></a>

要运行提取、转换和加载 (ETL) 作业，AWS Glue 必须能够访问您的数据存储。如果不需要在您的 Virtual Private Cloud（VPC）子网中运行任务（例如，将数据从 Amazon S3 转换到 Amazon S3），则无需进行额外的配置。

如果需要在您的 VPC 子网中运行任务（例如，转换私有子网中的 JDBC 数据存储中的数据），AWS Glue 将设置[弹性网络接口](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)，使您的任务能够安全可靠地连接您 VPC 中的其他资源。每个弹性网络接口都会从您指定的子网中的 IP 地址范围内获得一个私有 IP 地址。不会获得公有 IP 地址。在 AWS Glue 连接中指定的安全组应用于每个弹性网络接口上。有关更多信息，请参阅 [设置 Amazon VPC 以建立从 AWS Glue 到 Amazon RDS 数据存储的 JDBC 连接](setup-vpc-for-glue-access.md)。

必须能够从 VPC 子网使用作业访问的所有 JDBC 数据存储。要从您的 VPC 内访问 Amazon S3，需要一个 [VPC 终端节点](vpc-endpoints-s3.md)。如果您的任务既要访问 VPC 资源又要访问公有 Internet，VPC 内部必须具有网络地址转换（NAT）网关。

 一个作业或开发终端节点一次只能访问一个 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 数据存储的详细信息，请参阅 [设置 Amazon VPC 以建立从 AWS Glue 到 Amazon RDS 数据存储的 JDBC 连接](setup-vpc-for-glue-access.md)。

在 Amazon VPC 中设置必要规则后，您就可以在 AWS Glue 中创建一个连接以连接您的数据存储所需的属性。有关连接的更多信息,请参阅 [连接到数据](glue-connections.md)。

**注意**  
确保针对 AWS Glue 设置您的 DNS 环境。有关更多信息，请参阅 [在 VPC 中设置 DNS](set-up-vpc-dns.md)。

**Topics**
+ [设置 VPC 以连接到 PyPI for AWS Glue](setup-vpc-for-pypi.md)
+ [在 VPC 中设置 DNS](set-up-vpc-dns.md)

# 设置 VPC 以连接到 PyPI for AWS Glue
<a name="setup-vpc-for-pypi"></a>

Python Package Index（PyPI）是 Python 编程语言的软件库。本主题介绍支持使用 pip install 的软件包所需的详细信息（由会话创建者使用 `--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` 的这些要求。具体而言，`--additional-python-modules` 需要访问 pypi.org，这取决于您的 VPC 的配置。请注意以下要求：

1. 要求通过 pip install 为用户会话安装其他 python 模块。如果会话使用连接器，则您的配置可能会受到影响。

1. 当连接器与 `--additional-python-modules` 一起使用时，启动会话时，与该连接器的 `PhysicalConnectionRequirements` 关联的子网必须提供到达 pypi.org 的网络路径。

1. 您必须确定配置是否正确。

## 设置 Amazon S3 存储桶以托管目标 PyPI/simple 存储库
<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/*
```

如果您已经有现有构件存储库，它将有一个索引 URL 供 pip 使用，您可以提供该索引 URL 来代替上述 Amazon S3 存储桶的示例 URL。

要使用自定义 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 的 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"
   }
   ```

有关更多信息，请参阅 [Use CodeArtifact from a VPC](https://docs.aws.amazon.com/codeartifact/latest/ug/use-codeartifact-from-vpc.html)。

# 在 VPC 中设置 DNS
<a name="set-up-vpc-dns"></a>

域名系统 (DNS) 是 Internet 中名称使用的标准，以将名称解析到各自相应的 IP 地址。DNS 主机名称可以唯一的命名计算机，它由主机名称和域名组成。DNS 服务器会将 DNS 主机名称解析到其相应的 IP 地址。

要在 VPC 中设置 DNS，请确保您的 VPC 中同时启用了 DNS 主机名和 DNS 解析。VPC 网络属性 `enableDnsHostnames` 和 `enableDnsSupport` 必须设置为 `true`。要查看和修改这些属性，请转到 VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 。

有关更多信息，请参阅[将 DNS 与您的 VPC 一起使用](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 网络属性。