

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用基于 VPC 的出口创建一个 SFTP 连接器
<a name="create-vpc-sftp-connector-procedure"></a>

本主题提供创建具有 VPC 连接的 SFTP 连接器的 step-by-step说明。支持 vpc\$1Lattice 的连接器使用 Amazon VPC Lattice 通过您的虚拟私有云路由流量，从而实现与私有终端节点的安全连接或使用您自己的 NAT 网关访问互联网。

**何时使用 VPC 连接**

在以下情况下，对 SFTP 连接器使用 VPC 连接：
+ **私有 SFTP 服务器**：连接到只能从您的 VPC 访问的 SFTP 服务器。
+ **本地连接**：通过 Di AWS rect Connect 或 AWS Site-to-Site VPN 连接连接到本地 SFTP 服务器。
+ **自定义 IP 地址**：使用您自己的 NAT 网关和弹性 IP 地址，包括 BYOIP 场景。
+ **集中式安全控制**：通过组织的中央 ingress/egress 控制进行文件传输。

![\[架构图显示了 SFTP 连接器基于 VPC 的出口，说明了跨VPC资源访问如何通过您的虚拟私有云实现安全连接。\]](http://docs.aws.amazon.com/zh_cn/transfer/latest/userguide/images/vpc-egress-diagram.png)


## 支持 vpc\$1lattice 的 SFTP 连接器的先决条件
<a name="vpc-connector-prerequisites"></a>

在创建支持 vpc\$1lattice 的 SFTP 连接器之前，必须满足以下先决条件：

**基于 VPC 的连接的工作原理**

VPC Lattice 使您能够安全地与其他 AWS 服务共享 VPC 资源。 AWS Transfer Family 使用服务网络来简化资源共享过程。关键组件包括：
+ **资源网关**：用作您的 VPC 的访问点。你可以在你的 VPC 中创建它，至少有两个可用区。
+ **资源配置**：包含要连接的 SFTP 服务器的私有 IP 地址或公有 DNS 名称。

创建支持 vpc\$1Lattice 的连接器时， AWS Transfer Family 使用正向访问会话 (FAS) 临时获取您的凭证，并将您的资源配置与我们的服务网络相关联。

**必需的设置步骤**

1. **VPC 基础设施**：确保您的 VPC 配置正确，其中包含满足您的 SFTP 服务器连接要求所需的子网、路由表和安全组。

1. **资源网关**：使用 VPC Lattice `create-resource-gateway` 命令在您的 VPC 中创建资源网关。资源网关必须与至少两个可用区中的子网关联。有关更多信息，请参阅 *Amazon VPC Lattice 用户指南*中的[资源网关](https://docs.aws.amazon.com/vpc-lattice/latest/ug/resource-gateway.html)。

1. **资源配置**：使用 VPC Lattic `create-resource-configuration` e 命令创建代表目标 SFTP 服务器的资源配置。您可以指定下列之一：
   + 私有端点的私有 IP 地址
   + 公共终端节点的公有 DNS 名称（公共终端节点不支持 IP 地址）

1. **身份验证凭证**： AWS Secrets Manager 如中所述，将 SFTP 用户凭据存储在中。[在 Secrets Manager 中存储 SFTP 连接器的身份验证凭证](sftp-connector-secret-procedure.md)

**重要**  
资源网关和资源配置必须在同一个 AWS 账户中创建。创建资源配置时，必须先设置资源网关。

有关 VPC 资源配置的更多信息，请参阅 *Amazon VPC Lattice 用户指南*中的[资源配置](https://docs.aws.amazon.com/vpc-lattice/latest/ug/resource-configuration.html)。

**注意**  
在 Amazon VPC Lattice 资源可用 AWS 区域 的地方，可以使用 SFTP 连接器的 VPC 连接。有关更多信息，请参阅 [VPC 莱迪思。 FAQs](https://aws.amazon.com/vpc/lattice/faqs/#topic-0)可用区支持因地区而异，资源网关至少需要两个可用区。

## 创建支持 vpc\$1lattice 的 SFTP 连接器
<a name="create-vpc-connector-procedure"></a>

完成先决条件后，您可以使用 AWS 管理控制台或 AWS SDKs创建具有 VPC 连接的 AWS CLI SFTP 连接器。

------
#### [ Console ]<a name="create-vpc-sftp-connector"></a>

**创建支持 vpc\$1lattice 的 SFTP 连接器**

1. 打开 AWS Transfer Family 控制台，网址为[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/)。

1. 在左侧导航窗格中，选择 **SFTP 连接器**，然后选择**创建 SFTP** 连接器。

1. 在**连接器配置**部分中，对于**出口类型，选择 **VPC Lat** t** ice。

   此选项使用 Amazon VPC Lattice 通过您的 VPC 路由流量，实现跨虚拟私有云资源访问。您可以使用此选项连接到私有托管的服务器终端节点，通过 VPC 的安全控制来路由流量，或者使用自己的 NAT 网关和弹性 IP 地址。远程 SFTP 服务器的地址以您的 VPC 中的资源配置表示。有关资源配置的更多信息，请参阅 Amazon [VPC Lattice 用户指南中的 VPC 资源的资源配置](https://docs.aws.amazon.com/vpc-lattice/latest/ug/resource-configuration.html)。

1. 完成连接器配置：
   + 对于**访问角色**，请选择要使用的 (IAM) 角色的 Amazon 资源名称 AWS Identity and Access Management (ARN)。
     + **确保此角色提供对 `StartFileTransfer` 请求中所使用文件位置父目录提供读取和写入权限**。
     + **请确保此角色为 `secretsmanager:GetSecretValue` 提供访问密钥的权限**。
**注意**  
在策略中，您必须为密钥指定 ARN。ARN 包含机密名称，但在名称后面附加了六个随机的字母数字字符。密钥的 ARN 格式如下。  

       ```
       arn:aws:secretsmanager:region:account-id:secret:aws/transfer/SecretName-6RandomCharacters
       ```
     + **此角色还应包含一个信任关系**，从而允许服务器在为用户的传输请求提供服务时访问您的资源。有关建立信任关系的详细信息，请参阅 [建立信任关系](requirements-roles.md#establish-trust-transfer)。  
****  

     ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
             "Sid": "AllowListingOfUserFolder",
             "Action": [
                 "s3:ListBucket",
                 "s3:GetBucketLocation"
             ],
             "Effect": "Allow",
             "Resource": [
                 "arn:aws:s3:::amzn-s3-demo-bucket"
             ]
         },
         {
             "Sid": "HomeDirObjectAccess",
             "Effect": "Allow",
             "Action": [
                 "s3:PutObject",
                 "s3:GetObject",
                 "s3:DeleteObject",
                 "s3:DeleteObjectVersion",
                 "s3:GetObjectVersion",
                 "s3:GetObjectACL",
                 "s3:PutObjectACL"
             ],
             "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
         },
         {
             "Sid": "GetConnectorSecretValue",
             "Effect": "Allow",
             "Action": [
                 "secretsmanager:GetSecretValue"
             ],
             "Resource": "arn:aws:secretsmanager:us-west-2:111122223333:secret:aws/transfer/SecretName-6RandomCharacters"
         }
       ]
     }
     ```
**注意**  
对于访问角色，该示例授予对单个密钥的访问权限。但是，您可以使用通配符，如果您想为多个用户和密钥重复使用相同的 IAM 角色，这样可以节省工作量。例如，以下资源语句为名称以 `aws/transfer` 开头的所有密钥授予权限。  

     ```
     "Resource": "arn:aws:secretsmanager:region:account-id:secret:aws/transfer/*"
     ```
您也可以将包含您的 SFTP 凭据的密钥存储在另一个 AWS 账户中。有关启用跨账户秘密访问的详细信息，请参阅[其他账户中用户的 AWS Secrets Manager 密钥权限](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples_cross.html)。
   + 对于**资源配置 ARN**，请输入指向您的 SFTP 服务器的 VPC Lattice 资源配置的 ARN：

     ```
     arn:aws:vpc-lattice:region:account-id:resourceconfiguration/rcfg-12345678
     ```
   + （可选）对于**日志记录角色**，选择连接器用于将事件推送到 CloudWatch 日志的 IAM 角色。  
****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "VisualEditor0",
                 "Effect": "Allow",
                 "Action": [
                     "logs:CreateLogStream",
                     "logs:DescribeLogStreams",
                     "logs:CreateLogGroup",
                     "logs:PutLogEvents"
                 ],
                 "Resource": "arn:aws:logs:*:*:log-group:/aws/transfer/*"
             }
         ]
     }
     ```

1. 在 **SFTP 配置**面板中提供以下信息：
   + 对于**连接器凭据**，请选择中 AWS Secrets Manager 包含 SFTP 用户私钥或密码的密钥的名称。
   + 对于**受信任的主机密钥**，请粘贴用于标识外部服务器的主机密钥的公共部分，或者将其留空，以便以后使用`TestConnection`命令进行配置。

     由于此主机密钥用于 VPC\$1LATTICE 连接器，因此请删除密钥中的主机名
   + （可选）在 “**最大并发连接**数” 中，选择您的连接器创建到远程服务器的并发连接数（默认为 5）。

1. 在**加密算法选项**部分，从下拉列表中选择一个**安全策略**。

1. （可选）在 “**标签**” 部分中，将标签添加为键值对。

1. 选择**创建 SFTP 连接器**以创建支持 vpc\$1Lattice 的 SFTP 连接器。

在配置资源关联`PENDING`时，连接器的创建状态将为，这通常需要几分钟。状态更改为后`ACTIVE`，连接器就可以使用了。

------
#### [ CLI ]

使用以下命令创建支持 vpc\$1lattice 的 SFTP 连接器：

```
aws transfer create-connector \
    --url "sftp://my.sftp.server.com:22" \
    --access-role arn:aws:iam::123456789012:role/TransferConnectorRole \
    --sftp-config UserSecretId=my-secret-id,TrustedHostKeys="ssh-rsa AAAAB3NzaC..." \
    --egress-config VpcLattice={ResourceConfigurationArn=arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-1234567890abcdef0} \
    --security-policy-name TransferSecurityPolicy-2024-01
```

VPC 连接的关键参数是`--egress-config`，它指定了定义您的 SFTP 服务器目标的资源配置 ARN。

------

## 监控 VPC 连接器状态
<a name="vpc-connector-status-monitoring"></a>

支持 vpc\$1Lattice 的连接器具有异步设置过程。创建后，监视连接器状态：
+ **待处理**：连接器正在配置中。服务网络配置正在进行中，通常需要几分钟。
+ **激活**：连接器已准备就绪，可以传输文件。
+ **错误**：连接器配置失败。查看错误详细信息以获取疑难解答信息。

使用`describe-connector`以下命令检查连接器状态：

```
aws transfer describe-connector --connector-id c-1234567890abcdef0
```

在 PENDING 状态下，`test-connection`API 将返回 “连接器不可用”，直到配置完成。

## 限制和注意事项
<a name="vpc-connectivity-limitations"></a>
+ **公共终端节点**：通过 VPC 连接到公共终端节点时，必须在资源配置中提供 DNS 名称。不支持公有 IP 地址。
+ **区域可用**性：VPC 连接仅在部分区域提供 AWS 区域。不支持跨区域资源共享。
+ **可用区要求**：资源网关必须与至少两个可用区中的子网关联。并非所有可用区在每个区域都支持 VPC Lattice。
+ **连接限制**：每个资源最多 350 个连接，TCP 连接的空闲超时时间为 350 秒。

## 成本注意事项
<a name="vpc-connectivity-costs"></a>

 AWS Transfer Family 除常规服务费外，不收取任何额外费用。但是，如果客户使用自己的 NAT 网关访问互联网，则可能需要向 Amazon VPC Lattice 收取与共享其亚马逊虚拟私有云资源相关的额外费用；如果客户使用自己的 NAT 网关访问互联网，则可能需要支付 NAT 网关费用。

要了解完整的 AWS Transfer Family 定价信息，请参阅定[AWS Transfer Family 价页面](https://aws.amazon.com/aws-transfer-family/pricing/)。

## SFTP 连接器的 VPC 连接示例
<a name="sftp-connectors-vpc-examples"></a>

本节提供了在各种场景中创建具有 VPC 连接的 SFTP 连接器的示例。在使用这些示例之前，请确保您已按照 VPC 连接文档中所述完成了 VPC 基础设施设置。

### 示例：私有端点连接
<a name="vpc-connector-private-endpoint-example"></a>

此示例说明如何创建 SFTP 连接器，该连接器可连接到只能从您的 VPC 访问的私有 SFTP 服务器。

**先决条件**

1. 在您的 VPC 中创建资源网关：

   ```
   aws vpc-lattice create-resource-gateway \
       --name my-private-server-gateway \
       --vpc-identifier vpc-1234567890abcdef0 \
       --subnet-ids subnet-1234567890abcdef0 subnet-0987654321fedcba0
   ```

1. 为您的私有 SFTP 服务器创建资源配置：

   ```
   aws vpc-lattice create-resource-configuration \
       --name my-private-server-config \
       --resource-gateway-identifier rgw-1234567890abcdef0 \
       --resource-configuration-definition ipResource={ipAddress="10.0.1.100"} \
       --port-ranges 22
   ```

**创建支持 vpc\$1lattice 的连接器**

1. 创建具有 VPC 连接的 SFTP 连接器：

   ```
   aws transfer create-connector \    
       --access-role arn:aws:iam::123456789012:role/TransferConnectorRole \
       --sftp-config UserSecretId=my-private-server-credentials,TrustedHostKeys="ssh-rsa AAAAB3NzaC..." \
       --egress-config VpcLattice={ResourceConfigurationArn=arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-1234567890abcdef0,PortNumber=22}
   ```

1. 监视连接器状态，直到它变成`ACTIVE`：

   ```
   aws transfer describe-connector --connector-id c-1234567890abcdef0
   ```

远程 SFTP 服务器将看到来自您的 VPC CIDR 范围内的资源网关 IP 地址的连接。

### 示例：通过 VPC 的公共终端节点
<a name="vpc-connector-public-endpoint-example"></a>

此示例说明如何通过您的 VPC 将连接路由到公有 SFTP 服务器，以利用集中式安全控制并使用您自己的 NAT 网关 IP 地址。

**先决条件**

1. 在您的 VPC 中创建资源网关（与私有终端节点示例相同）。

1. 使用公共 SFTP 服务器的 DNS 名称为其创建资源配置：

   ```
   aws vpc-lattice create-resource-configuration \
       --name my-public-server-config \
       --resource-gateway-identifier rgw-1234567890abcdef0 \
       --resource-configuration-definition dnsResource={domainName="sftp.example.com"} \
       --port-ranges 22
   ```
**注意**  
对于公共终端节点，必须使用 DNS 名称，而不是 IP 地址。

**创建连接器**
+ 创建 SFTP 连接器：

  ```
  aws transfer create-connector \
      --access-role arn:aws:iam::123456789012:role/TransferConnectorRole \
      --sftp-config UserSecretId=my-public-server-credentials,TrustedHostKeys="ssh-rsa AAAAB3NzaC..." \
      --egress-config VpcLattice={ResourceConfigurationArn=arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-0987654321fedcba0,PortNumber=22}
  ```

流量将从连接器流向您的资源网关，然后通过您的 NAT 网关到达公共 SFTP 服务器。远程服务器会将您的 NAT 网关的弹性 IP 地址视为来源。

### 示例：跨账户私有终端节点
<a name="vpc-connector-cross-account-example"></a>

此示例说明如何使用资源共享以不同的 AWS 账户连接到私有 SFTP 服务器。

**注意**  
如果您已经通过其他机制（例如）启用了跨VPC资源共享 AWS Transit Gateway，则无需配置此处所述的资源共享。SFTP 连接器会自动使用现有的路由机制，例如 Transit Gateway 路由表。您只需要在创建 SFTP 连接器的同一个帐户中创建资源配置即可。

**账户 A（资源提供者）-共享资源配置**

1. 在账户 A 中创建资源网关和资源配置（与前面的示例相同）。

1. 使用 Resource Access Manager 与账户 B 共享 AWS 资源配置：

   ```
   aws ram create-resource-share \
       --name cross-account-sftp-share \
       --resource-arns arn:aws:vpc-lattice:us-east-1:111111111111:resourceconfiguration/rcfg-1234567890abcdef0 \
       --principals 222222222222
   ```

**账户 B（资源使用者）-接受并使用共享**

1. 接受资源共享邀请：

   ```
   aws ram accept-resource-share-invitation \
       --resource-share-invitation-arn arn:aws:ram:us-east-1:111111111111:resource-share-invitation/invitation-id
   ```

1. 在账户 B 中创建 SFTP 连接器：

   ```
   aws transfer create-connector \
       --access-role arn:aws:iam::222222222222:role/TransferConnectorRole \
       --sftp-config UserSecretId=cross-account-server-credentials,TrustedHostKeys="ssh-rsa AAAAB3NzaC..." \
       --egress-config VpcLattice={ResourceConfigurationArn=arn:aws:vpc-lattice:us-east-1:111111111111:resourceconfiguration/rcfg-1234567890abcdef0,PortNumber=22}
   ```

账户 B 中的连接器现在可以通过共享资源配置访问账户 A 中的专用 SFTP 服务器。

### 常见故障排除场景
<a name="vpc-connector-troubleshooting-examples"></a>

以下是创建启用 vpc\$1Lattice 的连接器时常见问题的解决方案：
+ **连接器停留在 PENDING 状态**：检查您的资源网关是否处于活动状态，并且子网位于支持的可用区。如果连接器仍处于 PENDING 状态，请`UpdateConnector`使用最初使用的相同配置参数进行调用。这会触发一个可能解决问题的新状态事件。
+ **连接超时**：验证安全组规则允许端口 22 上的流量以及您的 VPC 路由是否正确。
+ **DNS 解析问题**：对于公共终端节点，请确保您的 VPC 通过 NAT 网关或 Internet Gateway 实现互联网连接。
+ **跨账户访问被拒绝**：验证资源共享是否被接受以及资源配置 ARN 是否正确。如果在原始账户创建资源共享时将适当的权限策略附加到资源配置中，则需要以下权限：`vpc-lattice:AssociateViaAWSService`、`vpc-lattice:AssociateViaAWSService-EventsAndStates`、`vpc-lattice:CreateServiceNetworkResourceAssociation`、`vpc-lattice:GetResourceConfiguration`。