Amazon ECS で Amazon EFS ボリュームを使用する場合のベストプラクティス - Amazon Elastic Container Service

Amazon ECS で Amazon EFS ボリュームを使用する場合のベストプラクティス

Amazon ECS で Amazon EFS を使用する場合は、以下のベストプラクティス推奨事項に留意すること。

Amazon EFS ボリュームのセキュリティとアクセスコントロール

Amazon EFS には、Amazon EFS ファイルシステムに保存されているデータのセキュリティを確保し、それを必要とするアプリケーションからのみアクセスを許可するためのアクセス制御機能があります。保管中と転送中両方の暗号化を有効にすることで、データのセキュリティを確保します。詳細については、Amazon Elastic File System ユーザーガイド の「Amazon EFS でのデータの暗号化」を参照してください。

データの暗号化に加えて、Amazon EFS を使用してファイルシステムへのアクセスを制限することもできます。EFS にアクセス制御を実装するには 3 つの方法があります。

  • セキュリティグループ — Amazon EFS マウントターゲットでは、ネットワークトラフィックを許可または拒否するのに使用するセキュリティグループを設定できます。Amazon EFS にアタッチされるセキュリティグループを設定することにより、Amazon ECS インスタンス、もしくは awsvpc ネットワークモードを使用している場合は Amazon ECS タスクにアタッチされているセキュリティグループからの NFS トラフィック (ポート 2049) を許可できます。

  • IAM — IAM を使用して Amazon EFS ファイルシステムへのアクセスを制限できます。Amazon ECS タスクを設定すると、EFS ファイルシステムをマウントするためにファイルシステムにアクセスする IAM ロールが必要になります。詳細については、「Amazon Elastic File System User Guide」の「Using IAM to control file system data access」を参照してください。

    IAM ポリシーでは、Amazon EFS ファイルシステムへの接続時に TLS の使用をクライアントに要求するなど、あらかじめ定義された条件を執行することもできます。詳細については、「Amazon Elastic File System ユーザーガイド」の「クライアント向け Amazon EFS 条件キー」を参照してください。

  • Amazon EFS アクセスポイント — Amazon EFS アクセスポイントとは、アプリケーション固有の Amazon EFS ファイルシステムへのエントリポイントです。アクセスポイントを使用すると、そのアクセスポイントを介したすべてのファイルシステム要求に対してユーザーアイデンティティ (ユーザーの POSIX グループなど) を適用することができます。また、アクセスポイントでは、ファイルシステムに対して別のルートディレクトリを適用することも可能です。これは、クライアントは指定したディレクトリまたはそのサブディレクトリ内のデータにしかアクセスできないためです。

IAM ポリシー

IAM ポリシーを使用すると、Amazon EFS ファイルシステムへのアクセスを制御できます。

ファイルシステムポリシーを使用してファイルシステムにアクセスするクライアントに対して、以下のアクションを指定できます。

アクション 説明

elasticfilesystem:ClientMount

ファイルシステムへの読み取り専用アクセス許可を付与します。

elasticfilesystem:ClientWrite

ファイルシステムへの書き込みアクセス許可を付与します。

elasticfilesystem:ClientRootAccess

ファイルシステムへのアクセス時にルートユーザーの使用を許可します。

ポリシーで各アクションを指定する必要があります。ポリシーは次の方法で定義できます。

  • クライアントベース – ポリシーをタスクロールにアタッチします

    タスク定義の作成時に [IAM 認可] オプションを設定します。

  • リソースベース – Amazon EFS ファイルシステムにポリシーをアタッチします

    リソースベースのポリシーが存在しない場合、ファイルシステム作成時にデフォルトですべてのプリンシパル (*) にアクセス許可が付与されます。

[IAM 認可] オプションを設定すると、タスクロールに関連付けられたポリシーと Amazon EFS リソースベースのポリシーがマージされます。[IAM 認可] オプションは、このポリシーを持つタスクアイデンティティ (タスクロール) を Amazon EFS に渡します。この結果、Amazon EFS リソースベースのポリシーに、ポリシーで指定された IAM ユーザーまたはロールのコンテキストを入れることができます。このオプションを設定しない場合、Amazon EFS リソースレベルのポリシーは IAM ユーザーを「匿名」として識別します。

セキュリティを最大化するため、Amazon EFS ファイルシステムに 3 つのアクセス制御すべてを実装することを検討してください。たとえば、Amazon EFS マウントポイントにアタッチされるセキュリティグループを設定することで、コンテナインスタンスまたは Amazon ECS タスクに関連付けられたセキュリティグループからの進入 NFS トラフィックのみを許可することができます。さらに、Amazon EFS の設定により、許可されたセキュリティグループからの接続であっても、ファイルシステムにアクセスするための IAM ロールを要求することができます。最後に、Amazon EFS アクセスポイントの使用により、POSIX ユーザー権限を執行してアプリケーション向けルートディレクトリを指定することができます。

以下のタスク定義スニペットは、アクセスポイントを使用して Amazon EFS ファイルシステムをマウントする方法を示します。

"volumes": [ { "efsVolumeConfiguration": { "fileSystemId": "fs-1234", "authorizationConfig": { "accessPointId": "fsap-1234", "iam": "ENABLED" }, "transitEncryption": "ENABLED", "rootDirectory": "" }, "name": "my-filesystem" } ]

Amazon EFS ボリュームパフォーマンス

Amazon EFS には、汎用と Max I/O の 2 つのパフォーマンスモードがあり、汎用モードは、コンテンツ管理システムや CI/CD ツールなどのレイテンシーの影響を受けやすいアプリケーションに適しています。これとは対照的に、Max I/O ファイルシステムは、データ分析、メディア処理、機械学習などのワークロードに適しています。これらのワークロードは、数百または数千のコンテナからの並列演算を実行する必要があり、可能な限り高い総スループットと IOPS を必要とします。詳細については、「Amazon Elastic File System ユーザーガイド」の「Amazon EFS パフォーマンスモード」を参照してください。

レイテンシーの影響を受けやすいワークロードには、Max I/O パフォーマンスモードによる高い I/O レベルと、汎用パフォーマンスモードによる低レイテンシーの両方が必要です。このタイプのワークロードでは、複数の[General Purpose(汎用)]パフォーマンスモードファイルシステムを作成することをお勧めします。この場合、ワークロードとアプリケーションでサポート可能な限り、すべてのファイルシステム全体にアプリケーションのワークロードを分散することをお勧めします。

Amazon EFS ボリュームスループット

すべての Amazon EFS ファイルシステムには、プロビジョニングされたスループットを使用したファイルシステムのプロビジョニングされたスループットの量、またはバーストスループットを使用したファイルシステムの EFS 標準または One Zone ストレージクラスに保存されたデータの量のいずれかにより決定される、関連するメータリングスループットがあります。詳細については、「Amazon Elastic File System ユーザーガイド」の「メータリングスループットについて理解する」を参照してください。

Amazon EFS ファイルシステムのデフォルトのスループットモードはバーストモードです。バーストモードでは、ファイルシステムが利用できるスループットは、ファイルシステムの拡大に応じてスケールインまたはスケールアウトされます。ファイルベースのワークロードは通常スパイクが発生する、つまり、特定の時間のみ高レベルのスループットを必要とし、残りの時間は低レベルのスループットになることが多いため、Amazon EFS は一定期間高いスループットレベルにバーストできるように設計されています。さらに、多くのワークロードは読み取り負荷が高いため、読み取り操作は他の NFS 操作 (書き込みなど) と 1:3 の比率でメータリングされます。

Amazon EFS ファイルシステムは、すべての Amazon EFS 標準ストレージまたは Amazon EFS One Zone ストレージについて 1 TB ごとに 50 MB/秒という安定したベースラインパフォーマンスを提供します。サイズに関係なく、すべてのファイルシステムは 100 MB/秒までバーストできます。1 TB を超える EFS 標準ストレージまたは EFS One Zone ストレージを持つファイルシステムでは、1 TB ごとに 100 MB/秒までバーストできます。読み取り操作は 1:3 の比率でメータリングされるため、読み取りスループットは 1 TiB ごとに最大 300 MiB/秒を駆動できます。ファイルシステムにデータを追加すると、そのファイルシステムで使用できる最大スループットは、Amazon EFS 標準ストレージクラスのストレージに比例して自動的にスケーリングされます。保存されているデータ量で達成できる以上に高いスループットが必要な場合は、ワークロードが必要とする量に合わせてプロビジョンドスループットを設定できます。

ファイルシステムのスループットは、ファイルシステムに接続されたすべての Amazon EC2 インスタンス間で共有されます。たとえば、100 MB/秒のスループットまでバーストできる 1 TB のファイルシステムでは、1 つの Amazon EC2 インスタンスから 10 MB/秒を駆動できます。詳細については、Amazon Elastic File System ユーザーガイドの「Amazon EFS のパフォーマンス」を参照してください。

Amazon EFS ボリュームのコストの最適化

Amazon EFS はストレージのスケーリングを簡素化します。Amazon EFS ファイルシステムは、データを追加すると自動的に拡張されます。特に Amazon EFS のバーストスループットモードでは、Amazon EFS のスループットは、標準ストレージクラスのファイルシステムのサイズが大きくなるにつれて拡大します。EFS ファイルシステムのプロビジョンドスループットに追加費用を支払わずにスループットを向上させるには、Amazon EFS ファイルシステムを複数のアプリケーション間で共有することができます。Amazon EFS アクセスポイントを使用して、共有 Amazon EFS ファイルシステムにストレージ分離を実装できます。そうすることで、アプリケーション間で同じファイルシステムを共有していても、ユーザーが許可しない限りデータにアクセスできなくなります。

データが大きくなると、Amazon EFS ではアクセス頻度の低いファイルを自動的に下位のストレージクラスに移動できます。Amazon EFS 標準の低頻度アクセス (IA) ストレージクラスは、毎日アクセスされないファイルのストレージコストを削減します。これにより、Amazon EFS が提供する高可用性、高耐久性、伸縮性、および POSIX ファイルシステムへのアクセス性が損なわれることはありません。詳細については、「Amazon Elastic File System ユーザーガイド」の「Amazon EFS ストレージクラス」を参照してください。

Amazon EFS ライフサイクルポリシーを使用してアクセス頻度の低いファイルを Amazon EFS IA ストレージに移動することで、自動的にコストを節約することを検討してください。詳細については、「Amazon Elastic File System User Guide」(Amazon Elastic File System ユーザーガイド) の「Amazon EFS のライフサイクル管理」を参照してください。

Amazon EFS ファイルシステムを作成する場合、Amazon EFS でデータを複数のアベイラビリティーゾーン (標準) に複製するか、あるいは単一のアベイラビリティーゾーン内でデータを冗長的に保存するかを選択できます。Amazon EFS One Zone ストレージクラスは、Amazon EFS 標準ストレージクラスと比較してストレージコストを大幅に削減できます。マルチ AZ の耐障害性を必要としないワークロードには Amazon EFS One Zone ストレージクラスの使用を検討してください。アクセス頻度の低いファイルを Amazon EFS One Zone の低頻度アクセスストレージに移動することで、Amazon EFS One Zone ストレージのコストをさらに削減できます。詳細については、「Amazon EFS 低頻度アクセス」を参照してください。

Amazon EFS ボリュームデータ保護

Amazon EFS は、標準ストレージクラスを使用するファイルシステムについては、複数のアベイラビリティーゾーン間でデータを冗長的に保存します。Amazon EFS One Zone ストレージクラスを選択した場合、単一のアベイラビリティーゾーン内でデータを冗長的に保存します。さらに、Amazon EFS は、1 年間に 99.999999999% (9 が 11 桁) の耐久性を保証するよう設計されています。

どの環境でもそうですが、データのバックアップを取り、誤って削除されないように保護することがベストプラクティスです。Amazon EFS データのベストプラクティスには、正常に機能し定期的にテストされている AWS Backup 型バックアップの使用が含まれます。Amazon EFS One Zone ストレージクラスを使用するファイルシステムは、意図的に無効にしない限り、ファイルシステムの作成時にデフォルトでファイルを自動的にバックアップするように設定されています。詳細については、「Amazon Elastic File System ユーザーガイド」の「EFS ファイルシステムのバックアップ」を参照してください。