

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

# 教學課程：設定具有選擇性多儲存貯體存取權的 AWS Transfer Family Web 應用程式
<a name="webapp-s3-tutorial"></a>

本教學課程將引導您為單一使用者設定具有特定 Amazon S3 儲存貯體許可的 Transfer Family Web 應用程式。您將了解如何設定解決方案，允許使用者從一個儲存貯體下載並上傳至另一個儲存貯體，同時維護安全性。這是進階教學課程，以基本教學課程涵蓋的概念為基礎。如果您是初次使用 AWS Transfer Family Web 應用程式，請考慮從 開始[教學課程：設定基本 Transfer Family Web 應用程式](web-app-tutorial.md)。

## 先決條件
<a name="webapp-s3-tutorial-prereqs"></a>

在開始本教學課程之前，需要滿足以下條件：
+ 在與 AWS Transfer Family Web 應用程式相同的區域中設定的 IAM Identity Center。請注意， AWS 對於所有區域，每個 AWS 帳戶僅允許一個 IAM Identity Center 執行個體。
+ 在 IAM Identity Center 中至少設定一個使用者。
+ 兩個 S3 儲存貯體：一個用於下載，另一個用於上傳。

**注意**  
本教學課程與基本 Web 應用程式教學課程共用許多先決條件。如需設定 IAM Identity Center 和建立使用者的詳細資訊，請參閱 [教學課程：設定基本 Transfer Family Web 應用程式](web-app-tutorial.md)。

## 步驟 1：建立 Transfer Family Web 應用程式
<a name="webapp-s3-tutorial-create-webapp"></a>

**建立 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 執行個體。

1. 在**許可類型**窗格中，選取**建立並使用新的服務角色**。服務會為您建立身分承載角色。身分承載角色在其工作階段中包含已驗證使用者的身分。

1. 在 **Web 應用程式單位**窗格中，接受預設值 1，或視需要調整為較高的值。

1. 新增標籤以協助您組織 Web 應用程式。在教學課程中，輸入金鑰**的名稱**，並為值輸入**教學課程 Web 應用程式**的名稱。
**提示**  
您可以在建立 Web 應用程式清單頁面直接編輯 **Web 應用程式**名稱。

1. 選擇**下一步**以開啟**設計 Web 應用程式**頁面。在此畫面上，提供下列資訊。

   您可以選擇性地為您的 Web 應用程式提供標題。您也可以上傳標誌和 favicon 的影像檔案。
   + 針對頁面標題，自訂使用者連線至 Web 應用程式時看到的瀏覽器索引標籤標題。如果您未輸入頁面標題的任何內容，則預設為 **Transfer Web App**。
   + 對於標誌，請上傳映像檔案。標誌影像的檔案大小上限為 50 KB。
   + 針對 favicon，上傳映像檔案。Favicon 的檔案大小上限為 20 KB。

1. 選擇**下一步**，然後選擇**建立 Web 應用程式**。

## 步驟 2：設定 S3 存取的 IAM 角色
<a name="webapp-s3-tutorial-iam-roles"></a>

您需要建立兩個 IAM 角色：一個只能下載存取第一個儲存貯體，另一個只能上傳存取第二個儲存貯體。

### 兩個角色的信任政策
<a name="webapp-s3-tutorial-trust-policy"></a>

針對兩個 IAM 角色使用以下信任政策：

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessGrantsTrustPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "access-grants.s3.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:SetSourceIdentity",
                "sts:SetContext"
            ]
        }
    ]
}
```

### 下載儲存貯體的 IAM 政策
<a name="webapp-s3-tutorial-download-policy"></a>

使用下列政策建立 IAM 角色，以唯讀存取您的下載儲存貯體：

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ObjectLevelReadPermissions",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:GetObjectAcl",
                "s3:GetObjectVersionAcl",
                "s3:ListMultipartUploadParts",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        }
    ]
}
```

**重要**  
以下載儲存貯體的實際名稱取代 **amzn-s3-demo-bucket1**。

### 上傳儲存貯體的 IAM 政策
<a name="webapp-s3-tutorial-upload-policy"></a>

使用下列政策建立另一個 IAM 角色，以寫入存取您的上傳儲存貯體：

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ObjectLevelWritePermissions",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:AbortMultipartUpload",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket2/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        }
    ]
}
```

**重要**  
使用上傳儲存貯體的實際名稱取代 **amzn-s3-demo-bucket2**。

## 步驟 3：設定 S3 存取授權
<a name="webapp-s3-tutorial-access-grants"></a>

1. 在 開啟 S3 主控台[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在導覽窗格中，選擇**存取授權**。

1. 按一下**建立 S3 存取授權執行個體**。

1. 選取**新增 IAM Identity Center 執行個體**選項，然後輸入身分中心執行個體 ARN。

1. 按一下**下一步**，然後按一下**取消**以完成建立 S3 Access Grants 執行個體，而不繼續進行其他步驟。

此步驟會建立 S3 Access Grants 執行個體。您現在將註冊位置並建立存取授權。

## 步驟 4：註冊 S3 儲存貯體位置
<a name="webapp-s3-tutorial-register-locations"></a>

使用 S3 Access Grants 將兩個 S3 儲存貯體註冊為位置：

1. 在 S3 Access Grants 主控台中，導覽至**位置**並按一下**註冊位置**。

1. 在**位置範圍**下，選擇特定 S3 儲存貯體進行下載 (amzn-s3-demo-bucket1)。

1. 當系統提示您選擇 IAM 角色時，請選取您先前建立的下載 IAM 角色。

1. 完成註冊程序。

1. 重複此程序以註冊上傳儲存貯體 (amzn-s3-demo-bucket2)，並在出現提示時選取上傳 IAM 角色。

## 步驟 5：建立存取授權
<a name="webapp-s3-tutorial-create-grants"></a>

建立兩個授與，每個註冊的位置各一個：

1. 在 S3 存取授權主控台中，導覽至**授權**，然後按一下**建立授權**。

1. 在**位置**中，按一下**瀏覽位置**，然後選取下載儲存貯體位置 (amzn-s3-demo-bucket1)。

1. 在**子字首** （選用） 中，輸入 `*` 以允許存取整個儲存貯體，或指定類似 的路徑`folder1/folder2/*`來限制對特定字首的存取。

   使用 會將授予範圍`*`設定為 `s3://bucket-name/*`，允許存取整個儲存貯體。若要僅允許存取特定字首，請輸入類似 的路徑`folder1/folder2/*`，這會將授予範圍設定為 `s3://bucket-name/folder1/folder2/*`。

1. 在**許可和存取**下，選取下載儲存貯體的**讀取**。

1. 在**承授者類型**中，**從 IAM Identity Center 選擇目錄身分**。

1. 針對 **IAM 主體類型**，選取**使用者**，然後輸入 IAM Identity Center 使用者的使用者 ID。

1. 完成授予建立程序。

1. 重複此程序為上傳儲存貯體 (amzn-s3-demo-bucket2) 建立授予，但為許可選取**讀寫**。

## 步驟 6：設定 S3 儲存貯體的 CORS 政策
<a name="webapp-s3-tutorial-cors"></a>

設定兩個 S3 儲存貯體的 CORS 政策，以允許透過 AWS Transfer Family WebApp 存取：

1. 開啟 S3 主控台並導覽至您的下載儲存貯體 (amzn-s3-demo-bucket1)。

1. 選取**許可**索引標籤。

1. 向下捲動至**跨來源資源共用 (CORS)** 區段，然後按一下**編輯**。

1. 新增下列 CORS 組態，將 *WebAppEndpoint* 取代為您實際的 WebApp 端點 URL：

   您可以在 WebApps 下的 AWS Transfer Family 主控台中找到您的 Web 應用程式端點 URL。 WebApps 它看起來與 **https://webapp-\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1\$1.transfer-webapp.us-west-2.on.aws** 類似。

   ```
   [
     {
       "AllowedHeaders": [
         "*"
       ],
       "AllowedMethods": [
         "GET",
         "PUT",
         "POST",
         "DELETE",
         "HEAD"
       ],
       "AllowedOrigins": [
         "https://WebAppEndpoint"
       ],
       "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
     }
   ]
   ```

1. 按一下 **Save changes** (儲存變更)。

1. 重複上傳儲存貯體 (amzn-s3-demo-bucket2) 的程序。

## 步驟 7：測試組態
<a name="webapp-s3-tutorial-testing"></a>

1. 開啟您的 AWS Transfer Family Web 應用程式 URL。您可以在 AWS Transfer Family 主控台的**存取端點**欄位的 WebApps 下找到此 URL。

1. 使用您使用存取授權設定的 IAM Identity Center 使用者憑證登入。

1. 登入後，您應該會在首頁上看到這兩個 S3 位置。

1. 導覽至下載儲存貯體 (amzn-s3-demo-bucket1)，並確認您可以下載檔案，但無法上傳。

1. 導覽至上傳儲存貯體 (amzn-s3-demo-bucket2)，並確認您可以上傳檔案。

## 結論
<a name="webapp-s3-tutorial-conclusion"></a>

您已成功為單一使用者設定具有選擇性 S3 儲存貯體存取權的 AWS Transfer Family WebApp。此設定允許使用者從一個儲存貯體下載並上傳至另一個儲存貯體，同時透過 IAM 角色和 S3 Access Grants 維護安全性。

此方法可以透過為每個使用者在 S3 Access Grants 中建立額外的授權，以精細控制儲存貯體存取許可，進而擴展到多個使用者。如需基本 Web 應用程式設定的資訊，請參閱 [教學課程：設定基本 Transfer Family Web 應用程式](web-app-tutorial.md)。