Amazon S3 バケット - Research and Engineering Studio

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

Amazon S3 バケット

Amazon S3 バケットのマウント

Research and Engineering Studio (RES) は、Linux Virtual Desktop Infrastructure (VDI) インスタンスへの Amazon S3 バケットのマウントをサポートしています。RES 管理者は、環境管理の S3 バケットタブで、S3 バケットを RES にオンボードしたり、プロジェクトにアタッチしたり、設定を編集したり、バケットを削除したりできます。

S3 バケットダッシュボードには、利用可能なオンボード S3 バケットのリストが表示されます。S3 バケットダッシュボードから、次のことができます。

  1. バケットの追加を使用して、S3 バケットを RES にオンボードします。

  2. S3 バケットを選択し、アクションメニューを使用して以下を行います。

    • バケットを編集する

    • バケットを削除する

  3. 検索フィールドを使用してバケット名で検索し、オンボードされた S3 バケットを検索します。

    S3 バケットリストでは、バケット名で検索し、オンボードされたバケットを検索できます。

Amazon S3 バケットを追加する

RES 環境に S3 バケットを追加するには:
  1. [Add bucket (バケットの追加)] を選択します。

  2. バケット名、ARN、マウントポイントなどのバケットの詳細を入力します。

    重要
    • 指定されたバケット ARN、マウントポイント、モードは、作成後に変更することはできません。

    • バケット ARN には、オンボードされた S3 バケットをそのプレフィックスに分離するプレフィックスを含めることができます。

  3. バケットをオンボードするモードを選択します。

    重要
    • 特定のモードによるデータ分離の詳細については、データ分離「」を参照してください。

  4. 詳細オプションでは、クロスアカウントアクセス用にバケットをマウントするための IAM ロール ARN を指定できます。の手順に従ってクロスアカウントバケットアクセス、クロスアカウントアクセスに必要な IAM ロールを作成します。

  5. (オプション) バケットをプロジェクトに関連付けます。プロジェクトは後で変更できます。ただし、S3 バケットをプロジェクトの既存の VDI セッションにマウントすることはできません。プロジェクトがバケットに関連付けられた後に起動されたセッションのみがバケットをマウントします。

  6. [Submit] を選択してください。

Amazon S3 バケットを編集する

  1. S3 バケットリストで S3 バケットを選択します。

  2. [Actions] (アクション) メニューで、[Edit] (編集) を選択します。

  3. 更新を入力します。

    重要
    • プロジェクトを S3 バケットに関連付けると、そのプロジェクトの既存の仮想デスクトップインフラストラクチャ (VDI) インスタンスにバケットがマウントされません。バケットは、バケットがそのプロジェクトに関連付けられた後に、プロジェクトで起動された VDI セッションにのみマウントされます。

    • S3 バケットからプロジェクトの関連付けを解除しても、S3 バケット内のデータには影響しませんが、デスクトップユーザーはそのデータにアクセスできなくなります。

  4. バケット設定の保存 を選択します。

    表示名とプロジェクトの関連付けフィールドが入力され、バケット設定を保存ボタンが強調表示された S3 バケットの編集ページ

Amazon S3 バケットを削除する

  1. S3 バケットリストで S3 バケットを選択します。

  2. Actions メニューから、Remove を選択します。

    重要
    • まず、バケットからすべてのプロジェクトの関連付けを削除する必要があります。

    • 削除オペレーションは、S3 バケットのデータには影響しません。S3 バケットと RES の関連付けのみが削除されます。

    • バケットを削除すると、そのセッションの認証情報の有効期限 (約 1 時間) に、既存の VDI セッションがそのバケットの内容にアクセスできなくなります。

データ分離

RES に S3 バケットを追加する場合、バケット内のデータを特定のプロジェクトとユーザーに分離するオプションがあります。バケットの追加ページで、読み取り専用 (R) または読み取りと書き込み (R/W) のモードを選択できます。

読み取り専用

Read Only (R) を選択した場合、バケット ARN (Amazon リソースネーム) のプレフィックスに基づいてデータ分離が適用されます。たとえば、管理者が ARN を使用して RES にバケットを追加arn:aws:s3:::bucket-name/example-data/し、このバケットをプロジェクト A とプロジェクト B に関連付けると、プロジェクト A とプロジェクト B 内から VDIs を起動するユーザーは、/example-data パスの bucket-name にあるデータのみを読み取ることができます。そのパス外のデータにはアクセスできません。バケット ARN にプレフィックスが付加されていない場合、バケット全体がそれに関連付けられたすべてのプロジェクトで利用可能になります。

読み取りと書き込み

Read and Write (R/W) を選択した場合でも、上記のように、バケット ARN のプレフィックスに基づいてデータ分離が適用されます。このモードには、管理者が S3 バケットに変数ベースのプレフィックスを提供できるようにする追加オプションがあります。Read and Write (R/W) を選択すると、カスタムプレフィックスセクションが利用可能になり、以下のオプションを含むドロップダウンメニューが表示されます。

  • カスタムプレフィックスなし

  • /%p

  • /%p/%u

カスタムデータ分離なし

カスタムプレフィックスNo custom prefixを選択すると、バケットはカスタムデータ分離なしで追加されます。これにより、バケットに関連付けられたすべてのプロジェクトに読み取りおよび書き込みアクセスが許可されます。たとえば、管理者がarn:aws:s3:::bucket-nameNo custom prefix選択した ARN を使用して RES にバケットを追加し、このバケットをプロジェクト A とプロジェクト B に関連付けると、プロジェクト A とプロジェクト B 内から VDIs を起動するユーザーは、バケットへの無制限の読み取りおよび書き込みアクセスを持つことになります。

プロジェクトレベルごとのデータ分離

カスタムプレフィックス/%pを選択すると、バケット内のデータはそれに関連付けられた特定のプロジェクトごとに分離されます。%p 変数はプロジェクトコードを表します。例えば、管理者がarn:aws:s3:::bucket-name/%p選択した と /bucketマウントポイントを使用して RES にバケットを追加し、このバケットをプロジェクト A とプロジェクト B に関連付けると、プロジェクト A のユーザー A は /bucket にファイルを書き込むことができます。プロジェクト A のユーザー B は、ユーザー A が /bucket で書き込んだファイルを表示することもできます。ただし、ユーザー B がプロジェクト B で VDI を起動し、/bucket を検索すると、データがプロジェクトによって分離されるため、ユーザー A が作成したファイルが表示されません。ユーザー A が書き込んだファイルは、プレフィックスの S3 バケットにあります/ProjectAが、ユーザー B はプロジェクト B から VDIs を使用する/ProjectB場合にのみアクセスできます。

プロジェクトごと、ユーザーごとのデータ分離

カスタムプレフィックス/%p/%uを選択すると、バケット内のデータは、そのプロジェクトに関連付けられた特定のプロジェクトとユーザーに分離されます。%p 変数はプロジェクトコードを表し、ユーザー名%uを表します。例えば、管理者は/%p/%u、選択した と /bucket のマウントポイントarn:aws:s3:::bucket-nameを持つ ARN を使用して RES にバケットを追加します。このバケットはプロジェクト A とプロジェクト B に関連付けられています。プロジェクト A のユーザー A は /bucket にファイルを書き込むことができます。%p 分離のみを使用する以前のシナリオとは異なり、この場合、ユーザー B には、/bucket のプロジェクト A でユーザー A が書き込んだファイルが表示されません。これは、データがプロジェクトとユーザーの両方によって分離されるためです。ユーザー A が書き込んだファイルは プレフィックスの S3 バケットにあります/ProjectA/UserAが、ユーザー B はプロジェクト A で VDIs を使用する/ProjectA/UserB場合にのみ にアクセスできます。

クロスアカウントバケットアクセス

RES は、これらのバケットに適切なアクセス許可がある場合、他の AWS アカウントからバケットをマウントできます。次のシナリオでは、アカウント A の RES 環境がアカウント B に S3 バケットをマウントしたいと考えています。

ステップ 1: RES がデプロイされているアカウントに IAM ロールを作成します (これはアカウント A と呼ばれます)
  1. S3 バケット (アカウント A) へのアクセスを必要とする RES アカウントの AWS マネジメントコンソールにサインインします。

  2. IAM コンソールを開きます。

    1. IAM ダッシュボードに移動します。

    2. ナビゲーションペインで [ポリシー] を選択します。

  3. ポリシーを作成する:

    1. [Create policy] (ポリシーを作成) を選択します。

    2. [JSON] タブを選択します。

    3. 次の JSON ポリシーを貼り付けます (<BUCKET-NAME> をアカウント B にある S3 バケットの名前に置き換えます)。

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:DeleteObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::<BUCKET-NAME>", "arn:aws:s3:::<BUCKET-NAME>/*" ] } ] }
    4. [次へ] を選択してください。

  4. ポリシーを確認して作成します。

    1. ポリシーの名前 (S3AccessPolicy」など) を指定します。

    2. ポリシーの目的を説明するオプションの説明を追加します。

    3. ポリシーを確認し、ポリシーの作成を選択します。

  5. IAM コンソールを開きます。

    1. IAM ダッシュボードに移動します。

    2. ナビゲーションペインで、[ロール] を選択します。

  6. ロールを作成する:

    1. [Create role] (ロールの作成) を選択します。

    2. 信頼されたエンティティのタイプとしてカスタム信頼ポリシーを選択します。

    3. 次の JSON ポリシーを貼り付けます (<ACCOUNT_ID> をアカウント A の実際のアカウント ID、<ENVIRONMENT_NAME> を RES デプロイの環境名、<REGION> を AWS リージョン RES デプロイ先に置き換えます)。

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<ACCOUNT_ID>:role/<ENVIRONMENT_NAME>-custom-credential-broker-lambda-role-<REGION>" }, "Action": "sts:AssumeRole" } ] }
    4. 「次へ」を選択します。

  7. アクセス許可ポリシーをアタッチする:

    1. 前に作成したポリシーを検索して選択します。

    2. 「次へ」を選択します。

  8. ロールのタグ付け、確認、作成:

    1. ロール名 (S3AccessRole」など) を入力します。

    2. ステップ 3 で、タグの追加を選択し、次のキーと値を入力します。

      • キー: res:Resource

      • 値: s3-bucket-iam-role

    3. ロールを確認し、ロールの作成を選択します。

  9. RES で IAM ロールを使用します。

    1. 作成した IAM ロール ARN をコピーします。

    2. RES コンソールにログインします。

    3. 左側のナビゲーションペインで、S3 バケットを選択します。

    4. バケットの追加を選択し、フォームにクロスアカウントの S3 バケット ARN を入力します。

    5. 詳細設定 - オプションのドロップダウンを選択します。

    6. IAM ロール ARN フィールドにロール ARN を入力します。

    7. バケットの追加 を選択します。

ステップ 2: アカウント B でバケットポリシーを変更する
  1. アカウント B の AWS マネジメントコンソールにサインインします。

  2. S3 コンソールを開きます。

    1. S3 ダッシュボードに移動します。

    2. アクセスを許可するバケットを選択します。

  3. バケットポリシーを編集します。

    1. アクセス許可タブを選択し、バケットポリシーを選択します。

    2. 次のポリシーを追加して、アカウント A の IAM ロールにバケットへのアクセスを許可します (<AccountA_ID> をアカウント A の実際のアカウント ID に置き換え、<BUCKET-NAME> を S3 バケットの名前に置き換えます)。

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/S3AccessRole" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:DeleteObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::<BUCKET-NAME>", "arn:aws:s3:::<BUCKET-NAME>/*" ] } ] }
    3. [保存] を選択します。

プライベート VPC でのデータ流出の防止

ユーザーが安全な S3 バケットからアカウント内の独自の S3 バケットにデータを流出しないようにするには、VPC エンドポイントをアタッチしてプライベート VPC を保護します。次の手順は、アカウント内の S3 バケットへのアクセスをサポートする S3 サービスの VPC エンドポイントと、クロスアカウントバケットを持つ追加のアカウントを作成する方法を示しています。

  1. Amazon VPC コンソールを開きます。

    1. AWS マネジメントコンソールにサインインします。

    2. https://console.aws.amazon.com/vpc/ で Amazon VPC コンソールを開きます。

  2. S3 の VPC エンドポイントを作成する:

    1. 左側のナビゲーションペインで、エンドポイントを選択します。

    2. [エンドポイントの作成] を選択します。

    3. [Service category] (サービスカテゴリ) で、[AWS services] (AWS のサービス) が選択されていることを確認します。

    4. サービス名フィールドに「」と入力するか com.amazonaws.<region>.s3 (<region> を自分の AWS リージョンに置き換えます)、「S3」を検索します。

    5. リストから S3 サービスを選択します。

  3. エンドポイント設定の構成:

    1. VPC の場合は、エンドポイントを作成する VPC を選択します。

    2. サブネット では、デプロイ中に VDI サブネットに使用されるプライベートサブネットの両方を選択します。

    3. DNS 名を有効にする で、 オプションがオンになっていることを確認します。これにより、プライベート DNS ホスト名をエンドポイントネットワークインターフェイスに解決できます。

  4. アクセスを制限するように ポリシーを設定します。

    1. Policy でCustom を選択します。

    2. ポリシーエディタで、アカウントまたは特定のアカウント内のリソースへのアクセスを制限するポリシーを入力します。ポリシーの例を次に示します (mybucket を S3 バケット名に置き換え、111122223333444455556666 をアクセスする適切な AWS アカウント IDsに置き換えます)。

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::mybucket", "arn:aws:s3:::mybucket/*" ], "Condition": { "StringEquals": { "aws:PrincipalAccount": [ "111122223333", // Your Account ID "444455556666" // Another Account ID ] } } } ] }
  5. エンドポイントを作成します。

    1. 設定を確認します。

    2. エンドポイントの作成を選択します。

  6. エンドポイントを確認します。

    1. エンドポイントが作成されたら、VPC コンソールのエンドポイントセクションに移動します。

    2. 新しく作成したエンドポイントを選択します。

    3. 状態使用可能であることを確認します。

これらのステップに従って、アカウントまたは指定されたアカウント ID 内のリソースに制限された S3 アクセスを許可する VPC エンドポイントを作成します。

トラブルシューティング

バケットが VDI へのマウントに失敗したかどうかを確認する方法

バケットが VDI へのマウントに失敗した場合、エラーをチェックできる場所がいくつかあります。以下のステップに従います。

  1. VDI ログを確認します。

    1. AWS マネジメントコンソールにログインします。

    2. EC2 コンソールを開き、インスタンスに移動します。

    3. 起動した VDI インスタンスを選択します。

    4. Session Manager を介して VDI に接続します。

    5. 以下の コマンドを実行します。

      sudo su cd ~/bootstrap/logs

      ここでは、ブートストラップログを確認できます。障害の詳細は configure.log.{time} ファイルにあります。

      さらに、詳細については/etc/messageログを確認してください。

  2. カスタム認証情報ブローカーの Lambda CloudWatch Logs を確認する:

    1. AWS マネジメントコンソールにログインします。

    2. CloudWatch コンソールを開き、ロググループに移動します。

    3. ロググループ を検索します/aws/lambda/<stack-name>-vdc-custom-credential-broker-lambda

    4. 最初に使用可能なロググループを調べ、ログ内のエラーを見つけます。これらのログには、S3 バケットをマウントするための一時的なカスタム認証情報を提供する潜在的な問題に関する詳細が含まれます。

  3. カスタム認証情報ブローカー API Gateway CloudWatch Logs を確認します。

    1. AWS マネジメントコンソールにログインします。

    2. CloudWatch コンソールを開き、ロググループに移動します。

    3. ロググループ を検索します<stack-name>-vdc-custom-credential-broker-lambdavdccustomcredentialbrokerapigatewayaccesslogs<nonce>

    4. 最初に使用可能なロググループを調べ、ログ内のエラーを見つけます。これらのログには、S3 バケットのマウントに必要なカスタム認証情報の API Gateway へのリクエストとレスポンスに関する詳細が含まれます。

オンボーディング後にバケットの IAM ロール設定を編集する方法

  1. AWS DynamoDB コンソールにサインインします。

  2. テーブルを選択します。

    1. 左側のナビゲーションペインで、テーブルを選択します。

    2. を検索して選択します<stack-name>.cluster-settings

  3. テーブルをスキャンします。

    1. Explore table items を選択します。

    2. スキャンが選択されていることを確認します。

  4. フィルターを追加する:

    1. フィルターを選択してフィルターエントリセクションを開きます。

    2. キーと一致するようにフィルターを設定します。

      • 属性: キーを入力します。

      • 条件: Begins with を選択します。

      • : shared-storage.<filesystem_id>.s3_bucket.iam_role_arn <filesystem_id> を変更する必要があるファイルシステムの値に置き換えます。

  5. スキャンを実行します。

    Run を選択して、フィルターを使用してスキャンを実行します。

  6. 値を確認します。

    エントリが存在する場合は、適切な IAM ロール ARN で値が正しく設定されていることを確認します。

    エントリが存在しない場合:

    1. 項目の作成を選択します。

    2. 項目の詳細を入力します。

      • key 属性には、 と入力しますshared-storage.<filesystem_id>.s3_bucket.iam_role_arn

      • 正しい IAM ロール ARN を追加します。

    3. 保存を選択して項目を追加します。

  7. VDI インスタンスを再起動します。

    インスタンスを再起動して、誤った IAM ロール ARN の影響を受ける VDIs が再度マウントされるようにします。

CloudTrail の有効化

CloudTrail コンソールを使用してアカウントで CloudTrail を有効にするには、「CloudTrail AWS CloudTrail ユーザーガイド」のCloudTrail コンソールを使用した証跡の作成」に記載されている手順に従ってください。CloudTrail は、S3 バケットにアクセスした IAM ロールを記録することで、S3 バケットへのアクセスを記録します。これは、プロジェクトまたはユーザーにリンクされたインスタンス ID にリンクできます。