継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

コンテナ・サーバーレスアプリケーションデプロイのマネージドサービス『AWS Proton』をサンプルを動かして理解する

タダです.

AWS Proton」が GA したので,使ってみたいと思いサンプルプロジェクトを使ってみてこの記事に所感などまとめていきます.

AWS Proton とは

AWS Proton」はコンテナやサーバーレスアプリケーションのためのフルマネージド型アプリケーションデプロイサービスです.特徴としてインフラを管理するチーム(プラットフォーム)と開発チームとの協調のために効きそうなサービスなのかと想像します.プラットフォームを管理するチームは Environment Template で共有リソースを作りと Service Template でインフラ,監視,CI/CD を定義するテンプレートを作ります.開発チームは Service Templateを使ってデプロイ をするような形です.

プラットフォームチームは AWS Proton を使用して、コンピューティング、ネットワーキング、コードパイプライン、セキュリティ、監視などのサービスをプロビジョン、デプロイ、監視に必要となるすべてを定義する「スタック」を作成します。デベロッパーは AWS Proton コンソールにログインし、発行済みの AWS Proton スタックを使用してインフラストラクチャのプロビジョニングを自動化し、アプリケーションコードをすばやくデプロイします。

aws.amazon.com

AWS Proton のサービスページより引用 f:id:sadayoshi_tada:20210613211228p:plain

料金

AWS Proton」を使う時は料金かかりません.

利用リージョン

記事執筆時点(2021/06/13)の利用可能なリージョンとしては,バージニア/オハイオ/オレゴン/東京/アイルランドで利用できる状況です.

AWS Proton のサンプルを動かしてみる

ドキュメントに沿ってマネジメントコンソールからサンプルを試してみます.

docs.aws.amazon.com

1. Environment Template を作る

まず,Environment Template を作ります.ECS Fargate のテンプレートが用意されているので選択し,テンプレート名とテンプレートの表示名を設定し,他はデフォルト設定で進みます.

f:id:sadayoshi_tada:20210614010414p:plain f:id:sadayoshi_tada:20210614010423p:plain

テンプレートができたらテンプレートを公開する必要があるので,公開します.公開できると Publishedになります.

f:id:sadayoshi_tada:20210614010438p:plain f:id:sadayoshi_tada:20210614010434p:plain

2. Service Template を作る

次に,Service Templateを作ります.Environment Template同様に ECS Fargate のテンプレートがあるので選んで,テンプレート名とテンプレートの表示名を設定し, 互換性のあるテンプレートして項番1で作ったEnvironment Templateの表示名を選び,他はデフォルト設定で進みます.

f:id:sadayoshi_tada:20210614010841p:plain f:id:sadayoshi_tada:20210614010846p:plain f:id:sadayoshi_tada:20210614010941p:plain

テンプレートができたらテンプレートを公開する必要があるので,公開します.公開できると Publishedになります.

f:id:sadayoshi_tada:20210614011102p:plain f:id:sadayoshi_tada:20210614011056p:plain

3. Environment を作る

Environment Templateができたので,Environmentを作っていきます.ドキュメントの記載に沿って設定していきます.

f:id:sadayoshi_tada:20210614011228p:plain f:id:sadayoshi_tada:20210614011220p:plain f:id:sadayoshi_tada:20210614011215p:plain

Environment の設定が完了すると CloudFormation が走り,VPC/Subnet/Internet Gateway/Security Group/ECS Cluster/ECS Task Execution Role が出来上がります.

f:id:sadayoshi_tada:20210614011701p:plain

4. Service を作る

次はService Templateを使ってServiceを作っていきます.ドキュメントの記載に沿って設定していきます.リポジトリへの接続部分はサンプルリポジトリを fork して設定しています.

f:id:sadayoshi_tada:20210614011829p:plain f:id:sadayoshi_tada:20210614011836p:plain f:id:sadayoshi_tada:20210614011859p:plain f:id:sadayoshi_tada:20210614011909p:plain

Serviceの設定が完了すると,ECS のサービスや ALB リソースの他に CodePipeline/CodeBuild といった CI/CD リソースが作られていきました.

f:id:sadayoshi_tada:20210614012255p:plain f:id:sadayoshi_tada:20210614012312p:plain

ALB の DNS 名にアクセスすると Nginx のページが出るところまで確認できました.

f:id:sadayoshi_tada:20210614012510p:plain

一通りの確認が終わったら,全てのリソースを削除しておきましょう.

まとめ

AWS Proton」のサンプルを触ってみることでどんなサービスなのかを理解してみることをやってみました.正直まだまだわからないところが多いのでサンプルプロジェクトを読み解いて少しずつ理解していければと思うのとマルチアカウントのサポートも入っているため理解して業務でも組み込める場所があったら検討していきたいです.

今回のリリースの一環として、このサービスに追加される 2 つの新機能をお知らせします。1 つ目として、AWS Proton は、マルチアカウントインフラストラクチャをサポートするようになりました。この新機能により、プラットフォームオペレーターは AWS Proton を使用して、複数の AWS アカウント間でアーキテクチャを安全に設定および管理できます。2 つ目の機能リリースは、AWS Proton API の IAM 条件コンテキストキーのサポートです。この追加の管理レイヤーにより、オペレーターは、テンプレートの特性に基づいてサービスを作成できるデベロッパーを指定できます。

aws.amazon.com