こんにちは、株式会社アトラエのエンジニアの遠矢です。
この記事は、Atrae Advent Calendar 2020 の4日目の記事です。
AWS Protonとは
EKS, ECS, Fargateなどのコンテナアプリケーションやサーバレスアプリケーションの
インフラや管理、監視・デプロイを行うことができるフルマネージドサービスです。
詳しくは Develpers.IOさんの記事や公式ドキュメントをご覧ください。
https://dev.classmethod.jp/articles/aws-proton/
https://aws.amazon.com/jp/proton/features/
現在はプレビュー版で、下記リージョンで利用可能です。
- us-east-1: 米国東部(バージニア北部)
- us-east-2: 米国東部(オハイオ北部)
- us-west-2: 米国西部(オレゴン北部)
- ap-northeast-1: アジアパシフィック(東京)
- eu-west-1: 欧州(アイルランド)
AWS Proton自体は無料で利用できます。
作成されるリソースやCloudFormationで課金されます。
利用する際の大まかな流れ
AWS Protonはテンプレートというものを管理して、環境やサービスを構築・運用していきます。
テンプレートには下記の2種類が存在します。
- 環境テンプレート
- サービステンプレート
環境テンプレートはVPCやネットワークなどの構成を管理します。
サービステンプレートは、FargateやLambda、ロードバランサーやデプロイの設定などの構成を管理します。
これらのテンプレートを利用して、環境・サービスを構築すると裏側でCloudFormationが走り、必要なリソースが作成されていきます。
よってProtonを利用する際の大まかな流れとしては、
- 環境テンプレート/サービステンプレートを作成・更新する
- 環境/サービスを上記のテンプレートにしたがって構築・更新する
という感じになります。
こちらも詳細は公式ドキュメントを参照してください。
https://docs.aws.amazon.com/ja_jp/proton/latest/userguide/Welcome.html
実際に触ってみる
なにはともあれとりあえず触ってみました。
AWS Protonにアクセスする
下記のページがProtonのTopページです。
https://ap-northeast-1.console.aws.amazon.com/proton/home?region=ap-northeast-1#/
環境テンプレートを作成する
左側のメニューから環境テンプレートを選択してください。
環境テンプレートを作成をクリックして画像のような情報を入力してください。
環境テンプレートを公開する
作成したテンプレートはDraft状態になっています。
このままだと利用できないので、v1.0を公開します。 をクリックしてください。
サービステンプレートを作成する
左側のメニューからサービステンプレートを選択します。
サービステンプレートを作成をクリックして画像のような情報を入力します。
環境テンプレートは上記で作成したものを選択する
サービステンプレートを公開する
こちらも環境テンプレートと同様にDraftになっているので公開します。
パイプライン用のアカウントロールを追加する
CI/CDのためのIAMロールを作成します。
左側のメニューからアカウントロールを選択してください。
画像のような情報を入力して、新規にIAMロールを作成します。
環境を作成する
ここまでで準備は整いました。
あとは環境とサービスを構築するだけです。
左側のメニューから環境を選択してください。
環境を作成するをクリックして必要な情報を入力していきます。
設定が完了するとCloudFormationでスタックが作成されます。
サービスを作成する
環境の作成が完了したら、左側のメニューからサービスを選択して下さい。
サービスを作成をクリックして必要な情報を入力していきます。
設定が完了すると環境と同様にCloudFormationでスタックが作成されます。
CloudFormationが無事完了したら、実際にサービスができているか確認してみましょう。
今回はFargateのテンプレートを選択したため、下記のようにClusterやServiceが作成、実行されていました。
削除
サービスや環境を選択し、削除を行うとCloudFormationでリソースの削除が行われます。
Protonでできたリソースは軒並み削除されていきます。
感想
各種サービスのデプロイを統一のインターフェイスで行えることが一番メリットかもしれません。
また、ProtonはAWSが公式に提供するベストプラクティスの一つと言えます。
これからAWSを触るぞ!ってエンジニアはまずはProtonを触ってみて、どのようなリソースができるのか?そのリソースはどういうものなのか?
などを学んでいくきっかけにしてみてはいかがでしょうか?