ちょっと話題の記事

【祝!】FargateでもECSにごっつ簡単に環境変数に機密情報を渡せるようになりました!

Fargateでも非常に簡単に環境変数に対して機密情報を渡すことが可能になりました。どんどん活用していきましょう。
2018.12.25

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

先日、ECSに超嬉しいアップデートがあり、ハマコー感激していたわけですが、悲しいことに発表時はFargateには対応しておりませんでした。

ECSでごっつ簡単に機密情報を環境変数に展開できるようになりました! | DevelopersIO

(´・ω・`)ショボーンとした日々を過ごしていた矢先、いきなりFargateに対応したというニュースが飛び込んできました!!

AWS Fargate Platform Version 1.3 Adds Secrets Support

なんなんですかね、このAWSの身軽さ。びっくりしますわ。最高やん。

(祭) ∧ ∧
 Y  ( ゚Д゚)
 Φ[_ソ__y_l〉     Fargateイキナリアップデート ワッショイ
    |_|_|
    し'´J

更新内容「Fargate Platform Version-1.3.0」

今回のアップデートは、正確にはFargateのプラットフォームバージョン1.3.0のリリースによる機能追加対応となります。

AWS Fargate Platform Versions - Amazon Elastic Container Service

アップデート内容は2つ。

  1. パラメータストアからの機密情報の取得をサポート
  2. タスクリフレッシュのためのリタイアメント機能の導入

アップデート1.「パラメータストアからの機密情報の取得をサポート」

これは、冒頭お話した通り。Fargateへの機密情報の受け渡しが、環境変数へのパラメータストアのキーを指定するだけでできるようになっています。

設定方法は、EC2モードのECSと全く同じです。下記記事を参考にしてみてください。一点注意点としては、ECSのサービスを作成するとき、Fargateのプラットフォームバージョンがlatestもしくは1.3.0以上になっていることを確認してください。

ECSでごっつ簡単に機密情報を環境変数に展開できるようになりました! | DevelopersIO

上記記事では、コンテナ起動後、EC2よりdoceker execでshログインして環境変数を確認していますが、Fargateだとその方法はとれないので、PHPコンテナを用意してみました。

環境変数確認用のphpファイルを用意します。

phpinfo.php

<?php
  phpinfo();
?>

Dockerfileを以下で準備します。

Dockerfile

FROM php:7-apache

COPY phpinfo.php /var/www/html

後は全て上記記事と同じ手順でFargateでコンテナを起動し、設定したパブリックIP/phpinfo.phpにアクセスすると、無事、環境変数HAMADA_SECRETS機密情報が格納されていることが確認できました。ワッショイ!!

アップデート2.「タスクリフレッシュのためのリタイアメント機能の導入」

詳細はこちら。

Fargate Task Recycling - Amazon Elastic Container Service

AWSでFargateタスクに対してセキュリティ、もしくはインフラ上の問題を検知した場合、AWSがそのタスクに対して必要なパッチを適用します。基本これらのパッチはタスクの停止は必要ありませんが、場合によってはタスクのリサイクルが必要になる場合もあります。

今回リリースされたFargateのプラットフォームバージョン1.3.0以降については、ローリングアップデートによりタスクの自動入替えが発生します。これは2019年2月以降に開始されます。

このプロセスに備えて、タスクの停止および起動が自動的に実行されるか予め確認することが推奨されています。

これらタスクリタイアメントプロセスの詳細は、下記ページに記載されています。

Task Retirement - Amazon Elastic Container Service

タスクのリタイアメントが必要になった場合は、事前にメール通知があり、また、AWS Personal Health Dashboardにもリタイアメントのスケジュールについて案内されます。ここらへんの運用は、EC2やRDSなどのパッチスケジューリングとほぼ同様かと思います。

タスクのアップデートは、ローリングアップデートで指定期日に実施されますが、ECSサービスの手動更新でも適用可能です。

aws ecs update-service --service serviceArn --force-new-deployment --cluster cluster_name --region region

Fargateの地固めと今後の進化に期待

機密情報の受け渡しのFargateサポート、こんなに早く来るとは想像していませんでした。早くて2019年2月ぐらいだと思っていたんですがね。おかげで、Fargateをご利用予定の複数のお客様に、この機能を即座に案内できること、嬉しく思っています。

また、Fargfateのタスクリタイアメントがサポートされたことも、地味ですが面白い更新ですね。従来は、明示的なタスクの停止が必要なパッチの適用の概念はなかったはずです。EC2やRDSには遥か昔からあるパッチ適用の運用ですが、それがFargateに導入されるあたり、今後もFargateはAWSの重要なプラットフォームとして進化していくのでしょう!

先日のこちらの記事(【今後が胸熱】ECRにタグ付けができるようになりました!)でもお知らせしたとおり、現在、AWSのコンテナ関連機能はロードマップが公開されており、EKSにもECSにも超重要なアップデートが目白押しの状態となっています。

Issues · aws/containers-roadmap

来年も目が離せませんな!

それでは、今日はこのへんで。濱田(@hamako9999)でした。