[アップデート]AWS Fargate プラットフォームバージョン1.4でできるようになったこと

AWS Fargate プラットフォームバージョン1.4でできるようになったことを簡潔にまとめました!
2020.04.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、コンサル部の島川です。

2020/4/8 Fargateの新しいプラットフォームバージョン 1.4がリリースされました。てんこ盛りですが、今すぐ適用させたいそんな機能ばかりです!

アップデート情報は基本的にここにまとまっていますが、こちらでも再度要点をまとめて更に適用する手順についてもご紹介いたします。

追加された新機能について

FargateはECSとEKSで利用することができますが、今回のアップデートは主にECSにおけるアップデートになります。共通する部分もありますが、基本的にECSでの利用という点に注意してください。

FargateでElastic File System(EFS)が使えるようになりました

ECS on EC2では既に使える機能でしたが、ECS on Fargateでも使えるようになりました!限られたディスク容量という課題をクリアすることができます。 タスク定義でボリュームを追加してあげればOKです。

詳しい設定方法については以下を参考にしてください。 https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html

【全世界待望】Fargateから共有ファイルストレージのEFSが使えるようになりました!

コンテナイメージ用の一時ローカルボリュームが10GB→20GBに拡張されました

20GBまで拡張されたことでかゆいところに手が届くようになったアップデートではないかと思います。一時的に処理できる容量も増えるのでアプリケーションの改善にも役立ちそうです。

一つだけ注意点があります。EKS on FargateについてはKubernetesモジュールで一部使われている仕様で19GBが上限になります。

Fargateからのいくつかの通信がVPCのみで完結するようになりました。

今まで下記の通信においてはAWSが用意するFargate ENIを経由して通信をしていました。

  • ECRへのログイン
  • AWS Secrets Managerからのシークレット取得
  • AWS Systems Manager Parameter Storeからのシークレット取得

これらの処理がタスクENIを経由するように変更することができ、VPC内部の通信で完結するようになります。

引用:https://aws.amazon.com/jp/blogs/containers/aws-fargate-launches-platform-version-1-4/

これによってVPC フローログで通信を確認できるようになります。AWS PrivateLinkの設定が必要なのでご注意ください。

CloudWatch Container Insightsでネットワークメトリクスが確認できるようになりました

シンプルにそのままFargateで制限されていたContainer Insightsでのネットワークメトリクスの表示が解禁されました!

CAP_SYS_PTRACEをサポートするようになりました

セキュリティの問題から実現が難しかったプロセスのトレース、straceが使えるようになりました。Fargateでもより複雑な監視が実現できます!適用するにはJSONを直接編集してあげる必要があります。

sysdig社のこちらの記事が参考になります。 Falco Support on AWS Fargate

タスクメタデータ経由でネットワーク情報を取得できるようになりました

ECS_CONTAINER_METADATA_URI_V4という環境変数がコンテナに挿入されるようになりました。

curl ${ECS_CONTAINER_METADATA_URI_V4}/task/stats

このコマンドを使用して、ネットワーク情報を取得することができます!監視に役立ちますね。

AZの情報も合わせて取得できるようになりました

V4以前のバージョンにも対応しています!

実行エンジンがContainerdに置き換わり、エージェントもFargate用に最適化されました。

Docker EngineからContainerdに置き換わることで最小限の機能で実行されるようになりました。より最適化された環境になりました。

これまでECSエージェントがコンテナ開始前に立ち上げていたpauseコンテナが無くなっていたりしてます。

このデータプレーンの変更に関してはUnder the hood: AWS Fargate data planeに情報がまとまっています。

またエージェントも今まではECS標準のものでしたが、Fargate用に最適化されたエージェントに置き換えられています。

Containerdに置き換わったことによりエラーメッセージが変更されています。

Docker Engine用のエラーメッセージが変更されています。

エラーメッセージについてはドキュメントを参考にしてください。 Stopped tasks error codes

ジャンボフレームをサポートしました

標準のフレームサイズである1500バイトではなくジャンボフレーム(9000~16000バイト)に対応しました。通信の大幅な改善が見込めます。

1.4への適用について

こちらを今すぐ適用するためには「latest」ではなく明示的に「1.4」を指定する必要があります。

latestへの反映はすぐには適用されず、約1か月間後に適用されるようです。このあたりのライフサイクルポリシーに関しては以下ブログを参考にしてください。 AWS Fargate platform versions primer

さいごに

怒涛のアップデートでまだ追いつけてない自分がいますが、このアップデートでさらにFargateを選択しやすくなったと感じます。ECS on EC2に比べ単純なリソースサイズのコストは高いです。高いですが、運用コスト、扱いやすさを考えるとFargateのほうがお得ではないかと感じます。

追い風が吹くFargateこれからもキャッチアップしていこうと思います!