

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# チュートリアル: 選択的マルチバケットアクセスを使用した AWS Transfer Family ウェブアプリの設定
<a name="webapp-s3-tutorial"></a>

このチュートリアルでは、単一のユーザーに対して特定の Amazon S3 バケットアクセス許可を持つ Transfer Family ウェブアプリを設定する方法について説明します。セキュリティを維持しながら、ユーザーが 1 つのバケットからダウンロードして別のバケットにアップロードできるようにするソリューションをセットアップする方法について説明します。これは、基本的なチュートリアルで説明されている概念に基づく高度なチュートリアルです。 AWS Transfer Family ウェブアプリを初めて使用する場合は、 から始めることを検討してください[チュートリアル: 基本的な Transfer Family ウェブアプリのセットアップ](web-app-tutorial.md)。

## 前提条件
<a name="webapp-s3-tutorial-prereqs"></a>

このチュートリアルを開始する前に、以下が必要です。
+  AWS Transfer Family ウェブアプリと同じリージョンで設定された IAM Identity Center。では、 AWS すべてのリージョンについて、 AWS アカウントごとに IAM Identity Center のインスタンスを 1 つだけ許可します。
+ IAM Identity Center で少なくとも 1 人のユーザーが設定されています。
+ 2 つの S3 バケット。1 つはダウンロード用、もう 1 つはアップロード用です。

**注記**  
このチュートリアルでは、基本的なウェブアプリケーションチュートリアルと多くの前提条件を共有します。IAM Identity Center のセットアップとユーザーの作成の詳細については、「」を参照してください[チュートリアル: 基本的な Transfer Family ウェブアプリのセットアップ](web-app-tutorial.md)。

## ステップ 1: Transfer Family ウェブアプリケーションを作成する
<a name="webapp-s3-tutorial-create-webapp"></a>

**Transfer Family ウェブアプリを作成するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/transfer/](https://console.aws.amazon.com/transfer/) で AWS Transfer Family コンソールを開きます。

1. 左側のナビゲーションペインで、**ウェブアプリ**を選択します。

1. **ウェブアプリの作成** を選択します。

   認証アクセスの場合、サービスは前提条件として設定した AWS IAM アイデンティティセンター インスタンスを自動的に検出することに注意してください。

1. アクセス**許可タイプ**ペインで、**新しいサービスロールを作成して使用します**。サービスによって ID ベアラーロールが作成されます。ID ベアラーロールには、認証されたユーザーの ID がセッションに含まれます。

1. **ウェブアプリユニット**ペインで、デフォルト値の 1 を受け入れるか、必要に応じてより高い値に調整します。

1. ウェブアプリの整理に役立つタグを追加します。チュートリアルでは、キー**の名前**と 値の**チュートリアルウェブアプリ**を入力します。
**ヒント**  
ウェブアプリケーション名は、作成後に**ウェブアプリケーション**リストページから直接編集できます。

1. **次へ** を選択して、ウェブ**アプリの設計**ページを開きます。この画面では、次の情報を入力します。

   オプションで、ウェブアプリのタイトルを指定できます。ロゴとファビコンのイメージファイルをアップロードすることもできます。
   + ページタイトルについては、ユーザーがウェブアプリに接続するときに表示されるブラウザタブのタイトルをカスタマイズします。ページタイトルに何も入力しない場合、デフォルトで **Transfer Web App** になります。
   + ロゴの場合は、イメージファイルをアップロードします。ロゴイメージの最大ファイルサイズは 50 KB です。
   + ファビコンの場合は、イメージファイルをアップロードします。ファビコンの最大ファイルサイズは 20 KB です。

1. **Next** を選択し、Create **web app **を選択します。

## ステップ 2: S3 アクセス用の IAM ロールを設定する
<a name="webapp-s3-tutorial-iam-roles"></a>

2 つの IAM ロールを作成する必要があります。1 つは最初のバケットへのダウンロード専用アクセス権を持ち、もう 1 つは 2 番目のバケットへのアップロード専用アクセス権を持ちます。

### 両方のロールの信頼ポリシー
<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 Access Grants を設定する
<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 Access Grants インスタンスの作成**をクリックします。

1. **IAM アイデンティティセンターインスタンスを追加** オプションを選択し、アイデンティティセンターインスタンス ARN を入力します。

1. **Next** をクリックし、**Cancel **をクリックして、追加のステップに進むことなく S3 Access Grants インスタンスの作成を完了します。

このステップでは、S3 Access Grants インスタンスを作成します。次に、ロケーションを登録し、アクセス許可を作成します。

## ステップ 4: S3 バケットの場所を登録する
<a name="webapp-s3-tutorial-register-locations"></a>

両方の S3 バケットをロケーションとして S3 Access Grants に登録します。

1. S3 Access Grants コンソールで、**ロケーション**に移動し、**ロケーションの登録**をクリックします。

1. **Location スコープ**で、ダウンロードする特定の 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 つずつ、2 つの権限を作成します。

1. S3 Access Grants コンソールで、 **Grants **に移動し、Create **grant **をクリックします。

1. **Location** で、**Browse location** をクリックし、ダウンロードバケットの場所 (amzn-s3-demo-bucket1) を選択します。

1. **Subprefix** (オプション) で、 `*`を入力してバケット全体へのアクセスを許可するか、 のようなパスを指定`folder1/folder2/*`して特定のプレフィックスへのアクセスを制限します。

   を使用すると`*`、許可範囲が に設定され`s3://bucket-name/*`、バケット全体へのアクセスが許可されます。特定のプレフィックスのみへのアクセスを許可するには、 のようなパスを入力します。これにより`folder1/folder2/*`、グラントスコープが に設定されます`s3://bucket-name/folder1/folder2/*`。

1. アクセス**許可とアクセスで**、ダウンロードバケットの**読み取り**を選択します。

1. **被付与者タイプ**で、**IAM アイデンティティセンターからディレクトリアイデンティティ**を選択します。

1. **IAM プリンシパルタイプ**で、**ユーザー**を選択し、IAM アイデンティティセンターユーザーのユーザー ID を入力します。

1. 権限作成プロセスを完了します。

1. アップロードバケット (amzn-s3-demo-bucket2) の許可を作成するプロセスを繰り返しますが、アクセス許可の**読み取り/書き込み**を選択します。

## ステップ 6: S3 バケットの CORS ポリシーを設定する
<a name="webapp-s3-tutorial-cors"></a>

WebApp を介した AWS Transfer Family アクセスを許可するように、両方の S3 バケットの CORS ポリシーを設定します。

1. S3 コンソールを開き、ダウンロードバケット (amzn-s3-demo-bucket1) に移動します。

1. **[アクセス許可]** タブを選択します。

1. **Cross-Origin Resource Sharing (CORS)** セクションまでスクロールし、**Edit** をクリックします。

1. *WebAppEndpoint* を実際の WebApp エンドポイント URL に置き換えて、次の CORS 設定を追加します。

   ウェブアプリエンドポイント URL は、 AWS Transfer Family コンソールの 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 ウェブアプリ URL を開きます。この URL は、 AWS Transfer Family コンソールの WebApps の **Access endpoint** フィールドにあります。

1. アクセス許可で設定した IAM Identity Center ユーザー認証情報を使用してログインします。

1. ログインすると、両方の S3 の場所がホームページに表示されます。

1. ダウンロードバケット (amzn-s3-demo-bucket1) に移動し、ファイルをダウンロードできてもアップロードできないことを確認します。

1. アップロードバケット (amzn-s3-demo-bucket2) に移動し、ファイルをアップロードできることを確認します。

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

1 人のユーザーに対して選択的 S3 バケットアクセスを持つ AWS Transfer Family WebApp を正常に設定しました。この設定により、ユーザーは IAM ロールと S3 Access Grants を通じてセキュリティを維持しながら、あるバケットからダウンロードして別のバケットにアップロードできます。

このアプローチは、ユーザーごとに S3 Access Grants で追加の許可を作成することで複数のユーザーに拡張でき、バケットアクセス許可をきめ細かく制御できます。基本的なウェブアプリの設定については、「」を参照してください[チュートリアル: 基本的な Transfer Family ウェブアプリのセットアップ](web-app-tutorial.md)。