で使用するストレージを設定する AWS Transfer Family - AWS Transfer Family

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

で使用するストレージを設定する AWS Transfer Family

このトピックでは、 で使用できるストレージオプションについて説明します AWS Transfer Family。Transfer Family サーバーのストレージEFSとして Amazon S3 または Amazon を使用できます。

Amazon S3 バケットを設定する

AWS Transfer Family はユーザーの転送リクエストを処理するために Amazon S3 バケットにアクセスするため、ファイル転送プロトコル対応サーバーの設定の一環として Amazon S3 バケットを提供する必要があります。既存のバケットを使用するか、新しいバケットを作成することができます。

注記

同じ AWS リージョンにあるサーバーと Amazon S3 バケットを使用する必要はありませんが、ベストプラクティスとしてそうすることをお勧めします。

ユーザーを設定するときは、各ユーザーにIAMロールを割り当てます。このロールによって、Amazon S3 バケットへのユーザーのアクセスレベルが決まります。

新しいバケットの作成方法については、Amazon Simple Storage Service ユーザーガイドの「S3 バケットを作成する方法」を参照してください。

注記

Amazon S3 Object オブジェクトロックを使用して、オブジェクトが固定期間または無期限に上書きされることを防止できます。これは、他のサービスの場合と同じように Transfer Family と連携します。オブジェクトが存在して保護されている場合、そのファイルへの書き込みや削除は許可されません。Amazon S3 オブジェクトロックの詳細については、Amazon Simple Storage Service ユーザーガイドの「Amazon S3 オブジェクトロックの使用」を参照してください。

Amazon S3 アクセスポイント

AWS Transfer Family は Amazon S3 アクセスポイント をサポートしています。これは、共有データセットへのきめ細かなアクセスを簡単に管理できる Amazon S3 の機能です。S3 Access Point のエイリアスは、S3 バケット名であればどこでも使用できます。Amazon S3 バケット内の共有データにアクセスするためのさまざまな権限を持つユーザーのために、Amazon S3 に何百ものアクセス ポイントを作成できます。

例えば、アクセスポイントを使用して、同じ共有データセットへのアクセスを3つの異なるチームに許可できます。1つのチームはS3からデータを読み取ることができ、2つ目のチームはS3にデータを書き込むことができ、3つ目のチームはS3からデータを読み取り、書き込み、削除することができます。上記で言及されているような細かいアクセス制御を実装するには、異なるチームに非対称なアクセスを与えるポリシーを含むS3アクセスポイントを作成できます。Transfer Family サーバーで S3 アクセス ポイントを使用すると、何百ものユースケースにまたがる複雑な S3 バケット ポリシーを作成しなくても、きめ細かいアクセス制御を実現できます。Transfer Family サーバーで S3 アクセスポイントを使用する方法の詳細については、 AWS Transfer Family および Amazon S3 のブログ記事でデータアクセスコントロールを強化するを参照してください。

注記

AWS Transfer Family は現在、Amazon S3 マルチリージョンアクセスポイントをサポートしていません。

Amazon S3 HeadObject の動作

注記

Transfer Family サーバーを作成または更新すると、Amazon S3 ディレクトリのパフォーマンスを最適化できるため、HeadObject呼び出しがなくなります。

Amazon S3 では、バケットとオブジェクトが主要なリソースであり、オブジェクトはバケットに格納されます。Amazon S3 は階層ファイル システムを模倣できますが、一般的なファイル システムとは異なる動作をする場合があります。たとえば、ディレクトリは Amazon S3 のファーストクラスの概念ではなく、オブジェクトキーに基づいています。オブジェクトのキーをスラッシュ文字 (/) で分割し、最後の要素をファイル名として扱い、同じプレフィックスを持つファイル名を同じパスの下にグループ化することで、ディレクトリパスを AWS Transfer Family 渡します。mkdir または Amazon S3 コンソールを使用して空のディレクトリを作成すると、フォルダーのパスを表すゼロバイトのオブジェクトが作成されます。これらのオブジェクトのキーは末尾のスラッシュで終わります。これらのゼロバイトのオブジェクトについては、Amazon S3 ユーザーガイドの「フォルダーを使用した Amazon S3 コンソールでのオブジェクトの整理」で説明されています。

ls コマンドを実行し、一部の結果が Amazon S3 のゼロバイトオブジェクト (これらのオブジェクトにはスラッシュ文字で終わるキーがあります) である場合、Transfer Family はこれらのオブジェクトごとにHeadObjectリクエストを発行します (詳細については、「Amazon Simple Storage Service APIリファレンスHeadObject」の「」を参照してください)。これにより、Transfer Family で Amazon S3 をストレージとして使用する場合、次の問題が発生する可能性があります。

ファイルの書き込みとリストのみの権限を付与します。

場合によっては、Amazon S3 オブジェクトへの書き込みアクセスのみを提供することもできます。例えば、バケット内のオブジェクトを書き込み (またはアップロード) および一覧表示するが、オブジェクトの読み取り (ダウンロード) は許可しない場合があります。ファイル転送クライアントを使用して lsおよび mkdir コマンドを実行するには、Amazon S3 ListObjectsPutObject アクセス許可が必要です。ただし、Transfer Family がファイルの書き込みまたは一覧表示のいずれかをHeadObject呼び出す必要がある場合、この呼び出しには アクセス拒否 というエラーが発生すると、この呼び出しには アクセスGetObject許可が必要なため、呼び出しは失敗します。

注記

Transfer Family サーバーを作成または更新すると、Amazon S3 ディレクトリのパフォーマンスを最適化できるため、HeadObject呼び出しがなくなります。

この場合、スラッシュ AWS Identity and Access Management (IAM) で終わるオブジェクトにのみGetObjectアクセス許可を追加する () ポリシー条件を追加することで、アクセス許可を付与できます/。この条件は、ファイルへのGetObject呼び出し (読み取れないように) を防止しますが、ユーザーがフォルダを一覧表示してトラバースできるようにします。次のポリシー例では、Amazon S3 バケットへの書き込みおよびリストアクセスのみを提供します。このポリシーを使用するには、 をバケットの名前DOC-EXAMPLE-BUCKETに置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListing", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" }, { "Sid": "AllowReadWrite", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] }, { "Sid": "DenyIfNotFolder", "Effect": "Deny", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "NotResource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/" ] } ] }
注記

このポリシーでは、ユーザーがファイルを追加することはできません。つまり、このポリシーが割り当てられているユーザーは、ファイルを開いてコンテンツを追加したり、ファイルを変更したりすることはできません。さらに、HeadObject ファイルをアップロードする前に呼び出しが必要なユースケースでは、このポリシーは機能しません。

大量のゼロバイトオブジェクトが遅延の問題を引き起こします。

Amazon S3 バケットにこれらのゼロバイト オブジェクトが多数含まれている場合、Transfer Family HeadObject は大量の呼び出しを発行し、処理が遅延する可能性があります。

この問題に対する考えられる解決策の 1 つは、ゼロバイトのオブジェクトをすべて削除することです。次の点に注意してください。

  • 空のディレクトリは存在しなくなります。ディレクトリは、その名前がオブジェクトのキーに含まれている場合にのみ存在します。

  • 誰かが mkdir を呼び出して、物事を何度も壊すことを防ぐことはできません。ディレクトリの作成を防止するポリシーを作成することで、これを軽減できます。

  • 一部のシナリオでは、これらの 0 バイトのオブジェクトが使用されます。例えば、[/inboxes/customer1000] のような構造があり、受信トレイ ディレクトリは毎日クリーンアップされます。

考えられるもう 1 つの解決策は、ポリシー条件を通じて表示されるオブジェクトの数を制限して、呼び出しの数を減らすことです。HeadObjectこれを実行可能な解決策とするためには、すべてのサブディレクトリの限られたセットしか表示できない可能性があることを受け入れる必要があります。

Amazon EFS ファイルシステムを設定する

AWS Transfer Family は Amazon Elastic File System (Amazon EFS) にアクセスして、ユーザーの転送リクエストを処理します。そのため、EFSファイル転送プロトコル対応サーバーのセットアップの一環として Amazon ファイルシステムを提供する必要があります。既存のファイルシステムを使用するか、または新しいファイルシステムを作成できます。

次の点に注意してください。

  • Transfer Family サーバーと Amazon EFS ファイルシステムを使用する場合、サーバーとファイルシステムは同じ にある必要があります AWS リージョン。

  • サーバーとファイルシステムは同じアカウントになくてもかまいません。サーバーとファイルシステムが同じアカウントに属していない場合、ファイルシステムポリシーでユーザーロールに明示的なアクセス許可を付与する必要があります。

    複数のアカウントを設定する方法については、AWS Organizations 「 ユーザーガイド」の「組織内の AWS アカウントの管理」を参照してください。

  • ユーザーを設定するときは、各ユーザーにIAMロールを割り当てます。このロールは、Amazon EFS ファイルシステムへのアクセスレベルを決定します。

  • Amazon EFS ファイルシステムのマウントの詳細については、「Amazon EFS ファイルシステムのマウント」を参照してください。

AWS Transfer Family と Amazon のEFS連携方法の詳細については、「Amazon Amazon Elastic File System ユーザーガイド」の「 を使用して Amazon EFS ファイルシステムのファイル AWS Transfer Family にアクセスする」を参照してください。

Amazon EFS ファイルの所有権

Amazon EFSは、ポータブルオペレーティングシステムインターフェイス (POSIX) ファイルアクセス許可モデルを使用して、ファイルの所有権を表します。

ではPOSIX、システム内のユーザーは 3 つの異なるアクセス許可クラスに分類されます。 を使用して Amazon EFS ファイルシステムに保存されているファイルへのアクセスをユーザーに許可する場合は AWS Transfer Family、ユーザーにPOSIX「 プロファイル」を割り当てる必要があります。このプロファイルは、Amazon EFS ファイルシステム内のファイルとディレクトリへのアクセスを決定するために使用されます。

  • User (u): ファイルまたはディレクトリの所有者。通常、ファイルまたはディレクトリの作成者は所有者でもあります。

  • Group (g): 共有するファイルおよびディレクトリへの同一のアクセス権を必要とするユーザーのセット。

  • Other (o): 所有者およびグループメンバー以外でシステムへのアクセス権を持つ他のすべてのユーザー。このアクセス許可クラスは「Public」とも呼ばれます。

アクセスPOSIX許可モデルでは、すべてのファイルシステムオブジェクト (ファイル、ディレクトリ、シンボリックリンク、名前付きパイプ、ソケット) が前述の 3 つのアクセス許可セットに関連付けられます。Amazon EFS オブジェクトには、Unix スタイルのモードが関連付けられています。このモード値は、そのオブジェクトに対してアクションを実行するアクセス許可を定義します。

さらに、Unix スタイルのシステムでは、ユーザーとグループは、Amazon がファイルの所有権を表すためにEFS使用する数値識別子にマッピングされます。Amazon の場合EFS、オブジェクトは単一の所有者と単一のグループによって所有されます。Amazon EFSは、マッピングされた数値IDsを使用して、ユーザーがファイルシステムオブジェクトにアクセスしようとするとアクセス許可をチェックします。

Transfer Family の Amazon EFS ユーザーを設定する

Amazon EFS ユーザーを設定する前に、次のいずれかを実行できます。

注記

Transfer Family サーバーは、アクセスPOSIX許可を設定する Amazon EFS アクセスポイントをサポートしていません。Transfer Family ユーザーのPOSIXプロファイル (前のセクションで説明) では、POSIXアクセス許可を設定できます。これらのアクセス許可は、、、UIDGIDおよびセカンダリ に基づいて、きめ細かなアクセスのためにユーザーレベルで設定されますGIDs。

Amazon で Transfer Family ユーザーを設定する EFS

Transfer Family は、ユーザーを にUID/GID and directories you specify. If the UID/GID/directoriesまだ存在しない にマッピングします。次にEFS、Transfer でユーザーに割り当てる前に作成する必要があります。Amazon EFS ユーザーの作成の詳細については、Amazon Elastic File Systemユーザーガイド」の「ネットワークファイルシステム (NFS) レベルでのユーザー、グループ、アクセス許可の操作」を参照してください。

Transfer Family で Amazon EFS ユーザーを設定する手順
  1. PosixProfile フィールドを使用して、Transfer Family でユーザーの EFSUIDと をマッピングGIDします。

  2. ログイン時に特定のフォルダからユーザーを起動する場合は、 HomeDirectoryフィールドでEFSディレクトリを指定できます。

CloudWatch ルールと Lambda 関数を使用して、プロセスを自動化できます。とやり取りする Lambda 関数の例についてはEFS、「サーバーレスアプリケーションでの Amazon EFS AWS Lambda の の使用」を参照してください。

さらに、Transfer Family ユーザーの論理ディレクトリを構成できます。詳細については、Amazon の論理ディレクトリを設定する EFS 論理ディレクトリを使用して Transfer Family ディレクトリ構造を簡素化する トピックのセクションを参照してください。

Amazon EFSルートユーザーを作成する

組織がユーザーの設定のために SFTP/FTPS 経由でルートユーザーアクセスを有効にできる場合は、 UIDおよび 0 (ルートユーザー) GID のユーザーを作成し、そのルートユーザーを使用してフォルダを作成し、残りのユーザーの POSIX ID 所有者を割り当てます。このオプションの利点は、Amazon EFS ファイルシステムをマウントする必要がないことです。

Amazon EFSサービスマネージドユーザーの追加 で説明されている手順を実行し、ユーザー ID とグループ ID の両方に 0 (ゼロ) を入力します。

サポートされている Amazon EFS コマンド

Amazon EFS for では、次のコマンドがサポートされています AWS Transfer Family。

  • cd

  • ls/dir

  • pwd

  • put

  • get

  • rename

  • chown: root (つまり uid=0 のユーザー) のみがファイルとディレクトリの所有権とアクセス許可を変更できます。

  • chmod: ファイルとディレクトリの所有権とアクセス許可を変更できるのは root のみです。

  • chgrp: root またはファイルの所有者が、ファイルのグループを自分のセカンダリグループの 1 つに変更できる場合にのみサポートされます。

  • ln -s/symlink

  • mkdir

  • rm/delete

  • rmdir

  • chmtime