

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

# 在 VPC 中建立 Transfer Family Web 應用程式
<a name="create-webapp-in-vpc"></a>

本節說明在 VPC 中建立 Transfer Family Web 應用程式的程序。您可以在虛擬私有雲端 (VPC) 中託管 Web 應用程式的端點，以用於在 Amazon S3 儲存貯體之間傳輸資料，而無需透過公有網際網路。若要指派可以使用 Web 應用程式的使用者和群組，請參閱 [將使用者或群組指派或新增至 Transfer Family Web 應用程式](webapp-add-users.md)。

**注意**  
若要在使用 Transfer Family Web 應用程式 VPC 端點時確保私有end-to-end資料流程，您必須實作三個額外的元件。首先，設定 Amazon S3 Control API 操作的 PrivateLink 端點，這是 Amazon S3 Access Grants API 呼叫的必要項目。其次，使用 PrivateLink Amazon S3 Gateway 端點 （適用於 VPC 內的流量） 或 Amazon S3 Interface 端點 （適用於透過 VPN 或 Direct Connect 來自內部部署網路的流量） 來設定 Amazon S3 資料存取的端點。第三，更新儲存貯體政策以僅允許來自這些 VPC 端點的流量，以鎖定您的 Amazon S3 儲存貯體存取。此組合可確保所有資料傳輸都保留在您的私有網路基礎設施中，且絕不會周遊公有網際網路。

## 建立 Transfer Family Web 應用程式
<a name="webapp-vpce-create"></a>

**先決條件**
+ AWS IAM Identity Center 使用設定的身分提供者進行設定。請參閱 [為 Transfer Family Web 應用程式設定您的身分提供者](webapp-identity-center.md)。
+ 已設定 VPC 和網路元件。請參閱[建立 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html#create-vpc-and-other-resources)。
+ 為 Amazon S3 控制操作設定的 API 端點。請參閱[存取 Amazon S3 介面端點](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#s3-creating-vpc)。
+ Amazon S3 （閘道或界面） 設定的 VPC 端點。請參閱 [Amazon S3 的 VPC 端點類型](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-s3)。如果您使用的是介面端點，則必須啟用私有 DNS。如需範例，請參閱[使用 介紹 Amazon S3 的私有 DNS 支援 AWS PrivateLink](https://aws.amazon.com/blogs/storage/introducing-private-dns-support-for-amazon-s3-with-aws-privatelink/)。

**注意**  
AWS IAM Identity Center 不支援 VPC 端點；所有身分驗證請求都會傳輸公有網際網路。此外，Transfer Family Web 應用程式需要網際網路存取才能載入靜態內容 （例如 JavaScript、CSS 和 HTML 檔案）。公有網際網路存取的需求與資料存取不同。您的 VPC 端點可確保透過 VPC 基礎設施路由連線。

**建立 Transfer Family Web 應用程式**

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

1. 在左側導覽窗格中，選擇 **Web 應用程式**。

1. 選擇**建立 Web 應用程式**。對於身分驗證存取，窗格會填入如下。
   + 如果您已在 中建立組織或帳戶執行個體 AWS IAM Identity Center，則會看到此訊息：**您的 AWS Transfer Family 應用程式已連線至 IAM Identity Center 的帳戶執行個體**。
   + 如果您已經有帳戶執行個體，而且是組織執行個體的成員，您可以選擇要連線的執行個體。
   + 如果您還沒有帳戶執行個體，或是組織執行個體的成員，您會收到建立帳戶執行個體的選項。

1. 在**端點組態**區段中，選擇使用者存取 Web 應用程式的方式：
   + **可公開存取**：您可以透過 HTTPS 透過公有存取您的 Web 應用程式端點。此選項不需要任何 VPC 組態，因此設定簡單且適合廣泛公開使用的應用程式。
   + **VPC 託管**：您的 Web 應用程式端點託管在虛擬私有雲端 (VPC) 中 AWS Direct Connect，透過 VPC 網路或 VPN 連接提供私有網路存取。此選項透過網路隔離提供增強的安全性，建議用於內部應用程式。

     設定 VPC 託管端點時，您需要指定：
     + **VPC**：選取現有的 VPC 或建立新的 VPC。**建立 VPC** 按鈕可供使用。
     + **可用區域**：選擇部署端點的可用區域。
     + **子網路**：選取每個所選可用區域內的子網路。
     + **安全群組**：選取或建立安全群組，以根據來源 IP 地址控制存取。如果未指定，則會使用 VPC 的預設安全群組。透過 VPC 主控台管理安全群組。設定 VPC 安全群組，以允許 TCP 連接埠 443 透過 HTTPS 從網路傳入流量。這是 IAM Identity Center 身分驗證和 Web 應用程式靜態內容載入的必要項目。
**注意**  
無法為 VPC 端點自訂存取端點。若要新增自訂 URL，請使用公有端點。

## 建立後步驟
<a name="webapp-vpce-post-creation"></a>
+ 請務必為從 Web 應用程式端點存取的所有儲存貯體設定跨來源資源共用 (CORS) 政策。請參閱 [跨來源資源共用 (CORS) 政策](#webapp-vpce-cors)。
+ 更新您的儲存貯體政策，僅允許透過 VPC 端點源自 VPC 的流量。請參閱 [限制特定 VPC 端點的存取](#webapp-vpce-bucket-policy)。
+ 指派或新增使用者或群組至 Transfer Family Web 應用程式。請參閱 [將使用者或群組指派或新增至 Transfer Family Web 應用程式](webapp-add-users.md)。

## 跨來源資源共用 (CORS) 政策
<a name="webapp-vpce-cors"></a>

您必須為 Web 應用程式使用的所有儲存貯體設定跨來源資源共用 (CORS)。如需 CORS 的詳細資訊，請參閱「[為您的儲存貯體設定跨來源資源共用 (CORS)](access-grant-cors.md)」。

**重要**  
使用下列範例政策之前，請將允許原始伺服器取代為您的存取端點。否則，最終使用者在嘗試存取 Web 應用程式上的位置時會收到錯誤。

**範例政策：**

```
[
  {
    "AllowedHeaders": [
      "*"
    ],
    "AllowedMethods": [
      "GET",
      "PUT",
      "POST",
      "DELETE",
      "HEAD"
    ],
    "AllowedOrigins": [
      "https://vpce-1234567-example.vpce-mq.transfer-webapp.us-east-1.on.aws"
    ],
    "ExposeHeaders": [
      "last-modified",
      "content-length",
      "etag",
      "x-amz-version-id",
      "content-type",
      "x-amz-request-id",
      "x-amz-id-2",
      "date",
      "x-amz-cf-id",
      "x-amz-storage-class",
      "access-control-expose-headers"
    ],
    "MaxAgeSeconds": 3000
  }
]
```

## 限制特定 VPC 端點的存取
<a name="webapp-vpce-bucket-policy"></a>

下列 Amazon S3 儲存貯體政策範例限制只能從 ID 為 `vpce-1a2b3c4d` 的 VPC 端點存取特定儲存貯體 `amzn-s3-demo-bucket`。如果未使用指定的端點，政策會拒絕所有對儲存貯體的存取。`aws:SourceVpce` 條件會指定端點。`aws:SourceVpce` 條件不需要 VPC 端點資源的 ARN，其只需要 VPC 端點 ID。如需更新儲存貯體政策以僅允許來自 VPC 的流量的詳細資訊，請參閱[使用儲存貯體政策控制來自 VPC 端點的存取](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html)。如需在政策中使用條件的詳細資訊，請參閱[使用條件索引鍵的儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html)。作為套用此政策的先決條件，您應該建立 [Amazon S3 VPC 端點](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html)。

**重要**  
使用下列範例政策之前，請以適合您使用案例的適當值取代 VPC 端點 ID。否則，您將無法存取儲存貯體。

```
{
  "Version":"2012-10-17",
  "Id": "Policy1415115909152",
  "Statement": [
    {
      "Sid": "Access-to-specific-VPCE-only",
      "Principal": "*",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"],
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": "vpce-1a2b3c4d"
        }
      }
    }
  ]
}
```