

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定和使用 SFTP 連接器
<a name="sftp-connectors-tutorial"></a>

連接器的目的是在 AWS 儲存體與合作夥伴的 SFTP 伺服器之間建立關係。您可以將檔案從 Amazon S3 傳送至外部、合作夥伴擁有的目的地。您也可以使用 SFTP 連接器從合作夥伴的 SFTP 伺服器擷取檔案。

本教學課程說明如何設定具有服務受管和 VPC\_LATTICE 輸出類型的 SFTP 連接器，然後在 Amazon S3 儲存體和 SFTP 伺服器之間傳輸檔案。

SFTP 連接器會從 擷取 SFTP 登入資料 AWS Secrets Manager ，以向遠端 SFTP 伺服器進行身分驗證並建立連線。連接器會將檔案傳送至遠端伺服器或從遠端伺服器擷取檔案，並將檔案存放在 Amazon S3 中。您可以選擇服務受管輸出 （使用 AWS 受管基礎設施） 或 VPC 輸出 （使用跨 VPC 資源存取透過 VPC 路由）。IAM 角色用於允許存取 Amazon S3 儲存貯體和存放在 Secrets Manager 中的登入資料。您也可以登入 Amazon CloudWatch。

![SFTP 連接器如何與 Secrets Manager、Amazon S3、CloudWatch 日誌、IAM 角色和遠端 SFTP 伺服器互動的架構圖。](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/sftp-connector-arch-diag.png)


下列部落格文章提供使用 SFTP 連接器建置 MFT 工作流程的參考架構，包括在使用 SFTP 連接器將檔案傳送到遠端 SFTP 伺服器之前，先使用 PGP 加密檔案：[使用 AWS Transfer Family SFTP 連接器和 PGP 加密來架構安全且合規的受管檔案傳輸。](https://aws.amazon.com/blogs//storage/architecting-secure-and-compliant-managed-file-transfers-with-aws-transfer-family-sftp-connectors-and-pgp-encryption/)

## 連接器輸出類型
<a name="connector-egress-types"></a>

SFTP 連接器支援兩種輸出類型，可決定連接器將流量路由到遠端 SFTP 伺服器的方式：
+ **SERVICE\_MANAGED** （預設）：將 AWS Transfer Family 受管基礎設施與靜態 IP 地址用於傳出連線。
+ **VPC**：使用跨 VPC 資源存取透過 VPC 路由流量，啟用私有端點連線和使用您自己的 NAT 閘道。

本教學課程涵蓋這兩種輸出類型。當您需要以下項目時，請選擇 VPC 輸出類型：
+ 連線至 VPC 中的私有 SFTP 伺服器 （私有 IP 地址）
+ 透過 Direct Connect 或 VPN 連線至內部部署 SFTP 伺服器
+ 透過 VPC 路由公有端點流量以進行安全控制
+ 使用您自己的彈性 IP 地址進行傳出連線

**Topics**
+ [連接器輸出類型](#connector-egress-types)
+ [步驟 1：建立必要的支援資源](#create-prereq-resources)
+ [步驟 2：建立和測試 SFTP 連接器](#create-connector-tutorial)
+ [步驟 3：使用 SFTP 連接器傳送和擷取檔案](#use-connector-tutorial)
+ [建立 Transfer Family 伺服器以用作遠端 SFTP 伺服器的程序](#non-standard-tutorial-procedures)

## 步驟 1：建立必要的支援資源
<a name="create-prereq-resources"></a>

您可以使用 SFTP 連接器在 Amazon S3 和任何遠端 SFTP 伺服器之間複製檔案。在本教學課程中，我們使用 AWS Transfer Family 伺服器做為遠端 SFTP 伺服器。我們需要建立和設定下列資源：
+ 建立 Amazon S3 儲存貯體以將檔案存放在您的 AWS 環境中，以及從遠端 SFTP 伺服器傳送和擷取檔案：[建立 Amazon S3 儲存貯體](#sftp-tutorial-s3-bucket)。
+ 在 Secrets Manager 中建立存取 Amazon S3 儲存體和秘密 AWS Identity and Access Management 的角色：[建立具有必要許可的 IAM 角色](#sftp-tutorial-role)。
+ 建立使用 SFTP 通訊協定的 Transfer Family 伺服器，以及使用 SFTP 連接器在 SFTP 伺服器之間傳輸檔案的服務受管使用者：[建立 Transfer Family SFTP 伺服器和使用者](#sftp-tutorial-server)。
+ 建立 AWS Secrets Manager 秘密，以存放 SFTP 連接器用來登入遠端 SFTP 伺服器的登入資料：[在 中建立和存放秘密 AWS Secrets Manager](#sftp-tutorial-secret)。

對於 VPC 輸出類型連接器，您也需要：
+ 具有適當子網路和安全群組的 VPC
+ 資源閘道 （至少需要 2 個可用區域）：[建立資源閘道 （僅限 VPC 輸出類型）](#sftp-tutorial-resource-gateway)。
+ 指向 SFTP 伺服器的資源組態：[建立資源組態 （僅限 VPC 輸出類型）](#sftp-tutorial-resource-config)。如需詳細資訊，請參閱《Amazon VPC Lattice 使用者指南》**中的[資源組態](https://docs.aws.amazon.com/vpc-lattice/latest/ug/resource-configuration.html)。

### 建立 Amazon S3 儲存貯體
<a name="sftp-tutorial-s3-bucket"></a>

**建立 Amazon S3 儲存貯體**

1. 在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 登入 AWS Transfer Family 主控台。

1. 選擇區域並輸入名稱。

    在本教學課程中，我們的儲存貯體位於 **US East (N. Virginia) us-east-1**，名稱為 **sftp-server-storage-east**。

1. 接受預設值，然後選擇**建立儲存貯**體。

如需建立 Amazon S3 儲存貯體的完整詳細資訊，請參閱[如何建立 S3 儲存貯體？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket-overview.html) *Amazon Simple Storage Service 使用者指南*中的 。

### 建立具有必要許可的 IAM 角色
<a name="sftp-tutorial-role"></a>

針對存取角色，建立具有下列許可的政策。

------
#### [ JSON ]

****  

```
{
  "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}}"
    }
  ]
}
```

------

取代項目，如下所示：
+ 對於 `amzn-s3-demo-bucket`，教學課程使用 **sftp-server-storage-east**。
+ 對於{{區域}}，教學課程使用 **us-east-1**。
+ 針對 {{account-id}}，使用您的 AWS 帳戶 ID。
+ 對於 {{SecretName-6RandomCharacters}}，我們**using sftp-connector1**是名稱 （秘密會有自己的六個隨機字元）。

您還必須確保此角色包含信任關係，允許連接器在為使用者的傳輸請求提供服務時存取您的資源。如需建立信任關係的詳細資訊，請參閱 [建立信任關係](requirements-roles.md#establish-trust-transfer)。

**注意**  
若要查看我們用於教學課程的角色詳細資訊，請參閱 [合併使用者和存取角色](#sftp-tutorial-combined-role)。

### 在 中建立和存放秘密 AWS Secrets Manager
<a name="sftp-tutorial-secret"></a>

我們需要將秘密存放在 Secrets Manager 中，以存放 SFTP 連接器的使用者登入資料。您可以使用密碼、SSH 私有金鑰或兩者。針對教學課程，我們使用私有金鑰。

**注意**  
當您將秘密存放在 Secrets Manager 時， AWS 帳戶 會產生費用。如需關於定價的資訊，請參閱[AWS Secrets Manager 定價](https://aws.amazon.com/secrets-manager/pricing)。

開始存放秘密的程序之前，請擷取私有金鑰並將其格式化。私有金鑰必須對應至遠端 SFTP 伺服器上為使用者設定的公有金鑰。在我們的教學課程中，私有金鑰必須對應到為測試使用者儲存在用作遠端伺服器的 Transfer Family SFTP 伺服器上的公有金鑰。

若要執行此操作，請執行下列命令：

```
jq -sR . {{path-to-private-key-file}}
```

例如，如果您的私有金鑰檔案位於 中`~/.ssh/sftp-testuser-privatekey`，則命令如下。

```
jq -sR . ~/.ssh/sftp-testuser-privatekey
```

這會以正確的格式 （含內嵌換行字元） 將金鑰輸出至標準輸出。將此文字複製到某個位置，因為您需要在下列程序中貼上 （步驟 6)。

**在 Secrets Manager 中存放 SFTP 連接器的使用者登入資料**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 開啟 AWS Secrets Manager 主控台。

1. 在左側導覽窗格中，選擇**秘密**。

1. 在**秘密**頁面上，選擇**儲存新的秘密**。

1. 在**選擇秘密類型**頁面上，針對**秘密類型**，選擇**其他類型的秘密**。

1. 在**鍵/值對**區段中，選擇**鍵/值**索引標籤。
   + **金鑰** — 輸入 **Username**。
   + **value** — 輸入我們使用者的名稱 **sftp-testuser**。

1. 若要輸入金鑰，建議您使用**純文字**索引標籤。

   1. 選擇**新增列**，然後輸入 **PrivateKey**。

   1. 選擇**純文字**索引標籤。欄位現在包含下列文字：

      ```
      {"Username":"sftp-testuser","PrivateKey":""}
      ```

   1. 在空雙引號 ("") 之間貼上私有金鑰的文字 （稍早儲存）。

      您的畫面應如下所示 （索引鍵資料呈現灰色）。  
![純文字的秘密，顯示使用者名稱和私有金鑰。](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/sftp-tutorial-secret.png)

1. 選擇**下一步**。

1. 在**設定秘密**頁面上，輸入秘密的名稱。在本教學課程中，我們將秘密命名為 **aws/transfer/sftp-connector1**。

1. 選擇**下一步**，然後在**設定輪換**頁面上接受預設值。然後選擇**下一步**。

1. 在**檢閱**頁面上，選擇**存放**以建立和存放秘密。

### 建立資源閘道 （僅限 VPC 輸出類型）
<a name="sftp-tutorial-resource-gateway"></a>

對於 VPC 輸出類型連接器，您需要在 VPC 中建立資源閘道。資源閘道可做為跨 VPC 資源存取的進入點。

**建立資源閘道**

1. 執行下列命令來建立資源閘道 （將 VPC ID 和子網路 IDs 取代為您的值）：

   ```
   aws vpc-lattice create-resource-gateway \
       --name my-sftp-resource-gateway \
       --vpc-identifier vpc-12345678 \
       --subnet-ids subnet-12345678 subnet-87654321
   ```
**注意**  
資源閘道需要至少 2 個可用區域中的子網路。

1. 請注意回應中的資源閘道 ID，以便在下一個步驟中使用。

### 建立資源組態 （僅限 VPC 輸出類型）
<a name="sftp-tutorial-resource-config"></a>

建立指向 SFTP 伺服器的資源組態。這可以是 VPC 中伺服器的私有 IP 地址，或外部伺服器的公有 DNS 名稱。如需資源組態的詳細資訊，請參閱《*Amazon VPC Lattice 使用者指南*》中的[資源組態](https://docs.aws.amazon.com/vpc-lattice/latest/ug/resource-configuration.html)。

**建立資源組態**

1. 對於私有 SFTP 伺服器，請執行：

   ```
   aws vpc-lattice create-resource-configuration \
       --name my-sftp-resource-config \
       --port-ranges 22 \
       --type SINGLE \
       --resource-gateway-identifier rgw-12345678 \
       --resource-configuration-definition ipResource={ipAddress="10.0.1.100"}
   ```

1. 對於公有 SFTP 伺服器 （僅限 DNS 名稱），請執行：

   ```
   aws vpc-lattice create-resource-configuration \
       --name my-public-sftp-resource-config \
       --port-ranges 22 \
       --type SINGLE \
       --resource-gateway-identifier rgw-12345678 \
       --resource-configuration-definition dnsResource={domainName="sftp.example.com"}
   ```
**注意**  
公有端點必須使用 DNS 名稱，而不是 IP 地址。

1. 建立連接器時，請注意來自 回應的資源組態 ARN。

## 步驟 2：建立和測試 SFTP 連接器
<a name="create-connector-tutorial"></a>

在本節中，我們會建立使用先前建立之所有資源的 SFTP 連接器。如需詳細資訊，請參閱[建立 SFTP 連接器](configure-sftp-connector.md)。

**建立 SFTP 連接器**

1. 在 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) 開啟 AWS Transfer Family 主控台。

1. 在左側導覽窗格中，選擇 **SFTP 連接器**，然後選擇**建立 SFTP 連接器**。

1. 針對**輸出類型**，選擇下列其中一項：
   + **服務受**管 （預設）：將 AWS Transfer Family 受管基礎設施與靜態 IP 地址用於傳出連線。
   + **VPC Lattice**：使用跨 VPC 資源存取透過 VPC 路由流量。選擇此選項進行私有端點連線，或使用您自己的 NAT 閘道。
**重要**  
您無法在建立連接器後變更輸出類型。請根據您的連線需求謹慎選擇。

1. 在**連接器組態**區段中，提供下列資訊：
   + 針對 **URL**，輸入遠端 SFTP 伺服器的 URL。在教學課程中，我們會輸入用作遠端 SFTP 伺服器的 Transfer Family 伺服器 URL。

     ```
     sftp://s-{{1111aaaa2222bbbb3}}.server.transfer.us-east-1.amazonaws.com
     ```

     以 Transfer Family 伺服器 ID 取代 {{1111aaaa2222bbbb3}}。
   + 針對**存取角色**，輸入我們先前建立的角色 **sftp-connector-role**。
   + 針對**資源組態 ARN** （僅限 VPC Lattice 輸出類型），輸入您先前建立的資源組態 ARN：

     ```
     arn:aws:vpc-lattice:us-east-1:{{account-id}}:resourceconfiguration/rcfg-{{12345678}}
     ```
   + 針對**記錄角色**，選擇在主體元素`transfer.amazonaws.com`中包含具有 之信任政策的角色。

     **秘訣：**除了將 Transfer Family 新增為信任的實體之外，您還可以將 **AWSTransferLoggingAccess** AWS 受管政策新增至角色。此政策會在 [AWSTransferLoggingAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSTransferLoggingAccess.html) 中詳細說明。  
![Transfer Family SFTP 連接器主控台，顯示 連接器組態設定。](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/create-connector-example-config.png)

1. 在 **SFTP 組態**區段中，提供下列資訊：
   + 針對 **Connector 登入**資料，選擇包含 SFTP 登入資料之 Secrets Manager 資源的名稱。針對教學課程，選擇 **aws/transfer/sftp-connector1**。
   + 對於**信任的主機金鑰 **，請貼入主機金鑰的公有部分。您可以`ssh-keyscan`為 SFTP 伺服器執行 來擷取此金鑰。如需如何格式化和存放信任主機金鑰的詳細資訊，請參閱 [https://docs.aws.amazon.com//transfer/latest/APIReference/API_SftpConnectorConfig.html](https://docs.aws.amazon.com//transfer/latest/APIReference/API_SftpConnectorConfig.html)資料類型文件。
   + 針對**最大並行連線**，選取從 1 到 5 的整數值：預設值為 5。  
![Transfer 系列 SFTP 連接器主控台，顯示 SFTP 組態設定。](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/create-connector-example-sftp-config.png)

1. 確認所有設定後，請選擇**建立連接器**以建立 SFTP 連接器。

您也可以使用 建立連接器 AWS Command Line Interface。
+ 若要使用服務管理的輸出建立 SFTP 連接器，請執行下列命令：

  ```
  aws transfer create-connector \
      --url "sftp://s-1111aaaa2222bbbb3.server.transfer.us-east-1.amazonaws.com" \
      --access-role "arn:aws::iam::account-id:role/sftp-connector-role" \
      --sftp-config UserSecretId="aws/transfer/sftp-connector1",TrustedHostKeys="ssh-rsa AAAAB3NzaC..."
  ```
+ 若要使用 VPC 型輸出建立 SFTP 連接器，請執行下列命令：

  ```
  aws transfer create-connector \
     --url "sftp://my.sftp.server.com:22" \
     --access-role "arn:aws::iam::account-id:role/sftp-connector-role" \
     --sftp-config UserSecretId="aws/transfer/sftp-connector1",TrustedHostKeys="ssh-rsa AAAAB3NzaC..." \
     --egress-config VpcLattice={ResourceConfigurationArn="arn:aws:vpc-lattice:us-east-1:account-id:resourceconfiguration/rcfg-12345678",PortNumber=22}
  ```

建立 SFTP 連接器後，建議您在嘗試使用新連接器傳輸任何檔案之前進行測試。

**注意**  
對於 VPC 輸出類型連接器，DNS 解析可能需要幾分鐘才能建立。在此期間，連接器狀態將為 `PENDING`，`TestConnection`並將傳回「無法使用連接器」。等待狀態變成 ，`ACTIVE`再嘗試傳輸檔案。

------
#### [ Test a connector using the console ]

**測試 SFTP 連接器**

1. 在 https：//[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) 開啟 AWS Transfer Family 主控台。

1. 在左側導覽窗格中，選擇 **SFTP 連接器**，然後選取連接器。

1. 從**動作**功能表中，選擇**測試連線**。  
![Transfer Family 主控台，顯示選取的 SFTP 連接器，以及反白顯示的測試連線測試連線動作。](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/connector-test-choose.png)

系統會傳回訊息，指出測試通過或失敗。如果測試失敗，系統會根據測試失敗的原因提供錯誤訊息。

![SFTP 連接器測試連線面板，顯示成功的測試。](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/connector-test-success.png)


![SFTP 連接器測試連線面板，顯示測試失敗：錯誤訊息指出連接器的存取角色不正確。](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/connector-test-fail-role.png)


------
#### [ Test a connector using the CLI ]

若要使用 測試連接器 AWS Command Line Interface，請在命令提示字元中執行下列命令 （以實際連接器 ID 取代 {{連接器 ID}})：

```
aws transfer test-connection --connector-id c-{{connector-id}}
```

如果測試成功，則會傳回下列行：

```
{
   "Status": "OK",
   "StatusMessage": "Connection succeeded"
}
```

如果測試失敗，您會收到描述性錯誤訊息，例如：

```
{
   "Status": "ERROR",
   "StatusMessage": "Unable to assume the configured access role"
}
```

------

當您描述 VPC 輸出類型連接器時，回應會包含新欄位：

```
{
   "Connector": { 
      "AccessRole": "arn:aws:iam::219573224423:role/sftp-connector-role",
      "Arn": "arn:aws:transfer:us-east-1:219573224423:connector/c-5dfa309ccabf40759",
      "ConnectorId": "c-5dfa309ccabf40759",
      "Status": "ACTIVE",
      "EgressConfig": {
        "ResourceConfigurationArn": "arn:aws:vpc-lattice:us-east-1:025066256552:resourceconfiguration/rcfg-079259b27a357a190"
      },
      "EgressType": "VPC",
      "ServiceManagedEgressIpAddresses": null,
      "SftpConfig": { 
         "TrustedHostKeys": [ "ssh-rsa AAAAB3NzaC..." ],
         "UserSecretId": "aws/transfer/sftp-connector1"
      },
      "Url": "sftp://my.sftp.server.com:22"
   }
}
```

請注意，VPC 輸出類型連接器為 `ServiceManagedEgressIpAddresses` null，因為流量會透過 VPC 路由，而非 AWS 受管基礎設施。

## 步驟 3：使用 SFTP 連接器傳送和擷取檔案
<a name="use-connector-tutorial"></a>

為了簡化，我們假設您的 Amazon S3 儲存貯體中已有檔案。

**注意**  
本教學課程針對來源和目的地儲存位置使用 Amazon S3 儲存貯體。如果您的 SFTP 伺服器不使用 Amazon S3 儲存體，則無論您在下列命令`sftp-server-storage-east`中看到何處，都可以將路徑取代為可從 SFTP 伺服器存取的檔案位置路徑。
+ 我們將名為 的檔案`SEND-to-SERVER.txt`從 Amazon S3 儲存傳送至 SFTP 伺服器。
+ 我們將名為 的檔案`RETRIEVE-to-S3.txt`從 SFTP 伺服器擷取到 Amazon S3 儲存。

**注意**  
在下列命令中，將 {{connector-id}} 取代為您的連接器 ID。

首先，我們會將檔案從 Amazon S3 儲存貯體傳送至遠端 SFTP 伺服器。從命令提示字元中，執行下列命令：

```
aws transfer start-file-transfer --connector-id c-{{connector-id}} --send-file-paths "/sftp-server-storage-east/SEND-to-SERVER.txt" /
   --remote-directory-path "/sftp-server-storage-east/incoming"
```

您的儲存`sftp-server-storage-east`貯體現在看起來應該像這樣。

![具有新傳輸檔案的 SFTP 伺服器儲存貯體。](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/sftp-tutorial-bucket-2.png)


如果您未如預期看到檔案，請檢查您的 CloudWatch 日誌。

**檢查您的 CloudWatch 日誌**

1. 在 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)：// 開啟 Amazon CloudWatch 主控台

1. 從左側導覽功能表中選取**日誌群組**。

1. 在搜尋列中輸入您的連接器 ID 以尋找您的日誌。

1. 選取從搜尋傳回的日誌串流。

1. 展開最新的日誌項目。

如果成功，日誌項目如下所示：

```
{
    "operation": "SEND",
    "timestamp": "2023-12-18T15:26:57.346283Z",
    "connector-id": "{{connector-id}}",
    "transfer-id": "{{transfer-id}}",
    "file-transfer-id": "{{transfer-id}}/{{file-transfer-id}}",
    "url": "sftp://{{server-id}}.server.transfer.us-east-1.amazonaws.com",
    "file-path": "/sftp-server-storage-east/SEND-to-SERVER.txt",
    "status-code": "COMPLETED",
    "start-time": "2023-12-18T15:26:56.915864Z",
    "end-time": "2023-12-18T15:26:57.298122Z",
    "account-id": "{{account-id}}",
    "connector-arn": "arn:aws:transfer:us-east-1:{{account-id}}:connector/{{connector-id}}",
    "remote-directory-path": "/sftp-server-storage-east/incoming"
}
```

如果檔案傳輸失敗，日誌項目會包含指定問題的錯誤訊息。錯誤的常見原因是 IAM 許可和不正確的檔案路徑發生問題。

接著，我們將檔案從 SFTP 伺服器擷取到 Amazon S3 儲存貯體。從命令提示字元中，執行下列命令：

```
aws transfer start-file-transfer --connector-id c-{{connector-id}} --retrieve-file-paths "/sftp-server-storage-east/RETRIEVE-to-S3.txt" --local-directory-path "/sftp-server-storage-east/incoming"
```

如果傳輸成功，Amazon S3 儲存貯體會包含傳輸的檔案，如下所示。

![具有新傳輸檔案的 Amazon S3 儲存貯體。](http://docs.aws.amazon.com/zh_tw/transfer/latest/userguide/images/sftp-tutorial-bucket-1.png)


如果成功，日誌項目如下所示：

```
{
    "operation": "RETRIEVE",
    "timestamp": "2023-12-18T15:36:40.017800Z",
    "connector-id": "c-{{connector-id}}",
    "transfer-id": "{{transfer-id}}",
    "file-transfer-id": "{{transfer-id}}/{{file-transfer-id}}",
    "url": "sftp://s-{{server-id}}.server.transfer.us-east-1.amazonaws.com",
    "file-path": "/sftp-server-storage-east/RETRIEVE-to-S3.txt",
    "status-code": "COMPLETED",
    "start-time": "2023-12-18T15:36:39.727626Z",
    "end-time": "2023-12-18T15:36:39.895726Z",
    "account-id": "{{account-id}}",
    "connector-arn": "arn:aws:transfer:us-east-1:{{account-id}}:connector/c-{{connector-id}}",
    "local-directory-path": "/sftp-server-storage-east/incoming"
}
```

### 故障診斷 VPC 輸出類型連接器
<a name="vpc-connector-troubleshooting"></a>

如果您遇到 VPC 輸出類型連接器的問題，請檢查下列項目：
+ **連接器狀態為待定**：VPC 連接器的 DNS 解析可能需要幾分鐘的時間。等待狀態變成 ACTIVE，再嘗試連線。
+ **連線逾時**：確認安全群組允許資源閘道子網路與目標 SFTP 伺服器之間的連接埠 22 流量。
+ **資源組態錯誤**：確保您的資源組態指向正確的 IP 地址或 DNS 名稱，且資源閘道與您的 SFTP 伺服器位於相同的 VPC 中 （適用於私有端點）。如需詳細資訊，請參閱《Amazon VPC Lattice 使用者指南》**中的[資源組態](https://docs.aws.amazon.com/vpc-lattice/latest/ug/resource-configuration.html)。
+ **公有端點問題**：對於公有端點，請確定您在資源組態中使用 DNS 名稱，而不是 IP 地址。確認您的 VPC 具有用於傳出網際網路存取的 NAT 閘道。
+ **可用區域可用性**：資源閘道需要至少 2 個可用區域中的子網路。並非所有 AZs 都支援 VPC Lattice - 請檢查您區域中支援的 AZs。

**VPC 輸出類型的成本考量：**
+ VPC Lattice 以資源提供者的身分收取 0.006/GB 的資料處理費用 （直接由 VPC Lattice 計費）
+ AWS Transfer Family 會吸收每 GB 0.01 USD 的資源消費者成本 （前 1 PB)
+ 對於透過 VPC 的公有端點，可能需要支付額外的 NAT Gateway 和資料傳輸費用
+ 除了標準 0.40 USD/GB 的資料處理費之外，沒有額外的 Transfer Family 費用

## 建立 Transfer Family 伺服器以用作遠端 SFTP 伺服器的程序
<a name="non-standard-tutorial-procedures"></a>

接下來，我們概述建立 Transfer Family 伺服器的步驟，該伺服器可做為本教學課程的遠端 SFTP 伺服器。注意下列事項：
+ 我們使用 Transfer Family 伺服器來代表遠端 SFTP 伺服器。典型的 SFTP 連接器使用者擁有自己的遠端 SFTP 伺服器。請參閱 [建立 Transfer Family SFTP 伺服器和使用者](#sftp-tutorial-server)。
+ 由於我們使用 Transfer Family 伺服器，因此我們也使用服務管理的 SFTP 使用者。此外，為了簡化起見，我們結合此使用者存取 Transfer Family 伺服器所需的許可，以及他們使用我們的連接器所需的許可。同樣地，大多數 SFTP 連接器使用案例都有與 Transfer Family 伺服器無關的個別 SFTP 使用者。請參閱 [建立 Transfer Family SFTP 伺服器和使用者](#sftp-tutorial-server)。
+ 在本教學課程中，由於我們將 Amazon S3 儲存體用於遠端 SFTP 伺服器，因此我們需要建立第二個儲存貯體 **sftp-server-storage-east**，以便將檔案從一個儲存貯體傳輸到另一個儲存貯體。

### 建立 Transfer Family SFTP 伺服器和使用者
<a name="sftp-tutorial-server"></a>

大多數使用者不需要建立 Transfer Family SFTP 伺服器和使用者，因為您已有 SFTP 伺服器與使用者，而且您可以使用此伺服器往返傳輸檔案。不過，為了簡化本教學課程，我們使用 Transfer Family 伺服器做為遠端 SFTP 伺服器。

遵循中所述的程序來[建立啟用 SFTP 的伺服器](create-server-sftp.md)建立伺服器，並[步驟 3：新增服務受管使用者](getting-started.md#getting-started-user)新增使用者。以下是我們用於教學課程的使用者詳細資訊：
+ 建立您的服務受管使用者 `sftp-testuser`。
  + 將主目錄設定為 `/sftp-server-storage-east/sftp-testuser`
  + 建立使用者時，您會存放公有金鑰。稍後，當您在 Secrets Manager 中建立秘密時，您需要提供對應的私有金鑰。
+ 角色：`sftp-connector-role`。在本教學課程中，我們為 SFTP 使用者和存取 SFTP 連接器使用相同的 IAM 角色。當您為組織建立連接器時，您可能會有個別的使用者和存取角色。
+ 伺服器主機金鑰：您需要在建立連接器時使用伺服器主機金鑰。您可以`ssh-keyscan`為您的伺服器執行 來擷取此金鑰。例如，如果您的伺服器 ID 為 `s-1111aaaa2222bbbb3`，且其端點位於 ，`us-east-1`則下列命令會擷取伺服器主機金鑰：

  ```
  ssh-keyscan s-1111aaaa2222bbbb3.server.transfer.us-east-1.amazonaws.com
  ```

  將此文字複製到某個位置，因為您需要將其貼到[步驟 2：建立和測試 SFTP 連接器](#create-connector-tutorial)程序中。

### 合併使用者和存取角色
<a name="sftp-tutorial-combined-role"></a>

在本教學課程中，我們使用單一的合併角色。我們同時將此角色用於 SFTP 使用者，以及連接器的存取。下列範例包含此角色的詳細資訊，以防您想要在教學課程中執行任務。

下列範例授予必要許可，以存取 Amazon S3 中的兩個儲存貯體，以及`aws/transfer/sftp-connector1`存放在 Secrets Manager 中的名為 的秘密。針對教學課程，此角色名為 `sftp-connector-role`。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::sftp-server-storage-east",
                "arn:aws:s3:::sftp-server-storage-east"
            ]
        },
        {
            "Sid": "HomeDirObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:GetObjectVersion",
                "s3:GetObjectACL",
                "s3:PutObjectACL"
            ],
            "Resource": [
                "arn:aws:s3:::sftp-server-storage-east/*",
                "arn:aws:s3:::sftp-server-storage-east/*"
            ]
        },
        {
            "Sid": "GetConnectorSecretValue",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:{{111122223333}}:secret:aws/transfer/sftp-connector1-{{6RandomCharacters}}"
        }
    ]
}
```

如需為 Transfer Family 建立角色的完整詳細資訊，請遵循中所述的程序[建立使用者角色](requirements-roles.md#role-create-procedure)來建立角色。