ヤマムギ

growing hard days.

*

AWS Protonの管理者ガイドとユーザーガイドのチュートリアル

   

AWS Proton管理者ガイドのAWS Management Console の開始方法を見ながら試してみました。
途中からAWS ProtonユーザーガイドのAWS Management Console の開始方法も参照する必要がありました。

ちなみに私は、初めて触るサービスはマネジメントコンソールで触ると概要を理解しやすい派です。

環境テンプレートを作成する

Protonのテンプレートメニューには、環境テンプレートとサービステンプレートがあります。

まず、環境テンプレートを作成します。

デフォルトのサンプルテンプレートバンドルソースで、Fargateを選択しました。
VPC、ECSクラスターなども含むようです。
Lambdaを選択したらDynamoDBテーブル、S3バケットが含まれるようです。

テンプレート名、表示名、タグで任意の設定をして、[環境テンプレートを作成]ボタンを押下しました。

作成されたテンプレートのバージョン1.0を選択して、[公開]ボタンを押下しました。

ステータスがPublishedになりました。

サービステンプレートを作成する

次にサービステンプレートを選択して、[サービステンプレートを作成]ボタンを押下しました。

デフォルトのサンプルテンプレートバンドルで、Fargateを選択しました。

テンプレート名、表示名、タグに任意の名前を設定して、互換性のある環境テンプレートに先に作成しておいた、My Fargate Environmentを選択しました。

パイプラインオプションにはチェックが入っている状態でした。
[サービステンプレートを作成]ボタンを押下しました。

作成されたテンプレートのバージョン1.0を選択して、[公開]ボタンを押下しました。

ステータスがPublishedになりました。

ここまでの手順で環境テンプレートとサービステンプレートが作成されて、発行された状態になりました。

環境を作成する

環境メニューで、[環境を作成する]ボタンを押下しました。

作成して発行した環境テンプレートを選択して、[設定]ボタンを押下しました。

AWSマネージド型プロビジョニング、このAWSアカウントを選択して、環境名を任意に入力しました。

環境ロールは、新しいサービスロールを作成しました。

カスタム設定では、VPCとサブネットのCIDRが入力できます。
デフォルトのままにしました。

以上の設定で環境を作成しました。

環境のデプロイがIn progressになっています。
CloudFormationを見に行くと、VPCとECSを含むスタックが作成中になっていました。

少しすると、スタックが作成完了し、環境のステータスはSucceededになりました。

リポジトリ接続を作成する

Githubリポジトリのaws-samples/aws-proton-sample-fargate-serviceをフォークしました。

デベロッパー用ツール(Codeサービスのコンソール)の[設定]-[接続]で[接続を作成]ボタンを押下しました。

Githubを選択して[Githubに接続する]ボタンを押下しました。

GithubにリダイレクトされるのでGithubにサインインして接続を作成しました。

Githubアプリは[新しいアプリをインストールする]ボタンを押下してインストールしました。
最後に[接続]ボタンを押下しました。

Protonアカウント設定

アカウント設定で、CI/CDパイプラインリポジトリにリポジトリ接続で作成した接続で、
任意のリポジトリを指定しました。

CI/CDパイプラインロールは新たに作成しました。

このアカウント設定のCI/CDパイプラインの設定をしておかないと、サービス作成時に、
「Validation exception
Operation cannot be run until pipeline roles have been configured.」
というエラーとなります。

サービスを作成してアプリケーションをデプロイする

このあたりからはドキュメントもユーザーガイドに変わりますので、開発者が操作する想定で進めてみます。

メニューから[サービス]を選択して、[サービスを選択]ボタンを押下しました。

先に作成済み、発行済みのサービステンプレートを選択して[設定]ボタンを押下しました。

任意のサービス名を入力して、サービスリポジトリのCodeStar接続で、先ほど作成したGithubへの接続を選択して、フォークしておいたサンプルリポジトリ、ブランチはmainを選択しました。
[次へ]を押下しました。

カスタム設定では、サービスインスタンスの名前とenvironmentに作成済みの環境を指定しました。
他はパイプライン入力セクションもすべてデフォルトのままにしました。

サービスが作成されてデプロイ中になりました。

ProtonからCloudFormationスタックが作成されて、必要なCodeサービスのリソースが順次作成されていました。

CodePipelineが実行されて、指定したGithubリポジトリをソースにして、CodeBuildが実行されてCodeDeployによってデプロイされていました。

デプロイが完了すると、サービスインスタンスの出力にServiceEndpoint URLが表示されてブラウザからアクセスするとProtonのアイコンが表示されました。

index.htmlを更新する

Githubでフォークしたmainブランチのindex.htmlを変更して保存してみました。

Protonのサービスのパイプラインの実行ステータスがIn progressになりました。
CodePipelineが再実行されています。

テキストを追加しただけなのでわかり辛いですが、デプロイされて反映されていました。

開発者はAWSのネットワーク環境やECSなどのリソース構成を気にすることなく、管理者によって予め用意された環境とサービステンプレートを使用して、コンテナサービスやサーバーレスアーキテクチャのサービスをCI/CDパイプラインでデプロイすることができるサービスがProtonなんですね。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS ,

ad

ad

  関連記事

Backlogの実績工数をAmazon QuickSightで可視化してわかったこと

今年に入ってから、Backlogで個人タスクを登録しだして、予定工数、実績工数を …

RedmineをELB(ALB)でAutoScalingグループへ負荷分散

高可用なRedmineを作るためのELBの設定です。 高可用なRedmine R …

AWS Savings Plansを検討しました

今、個人でAWSアカウントを7つ使っています。 Savings Plansが使え …

AWS BackupでRDSスナップショットをクロスリージョンコピー

クロスリージョンでコピーしたい対象と理由 このブログはブログのアーキテクチャをコ …

Cloud9 Python3でpipも3にする

このブログは、2019/10/20に書いた、 Cloud9のAMIがCloud9 …

ALBのヘルスチェックでPHPとMySQL接続をチェック

当ブログで504エラーが発生して、オートスケーリングにより自動でインスタンスが置 …

CodeGuru ProfilerでLambda関数(Python 3.9)のパフォーマンスを確認した

CodeGuru ProfilerでPython 3.9のLambda関数の推奨 …

Amzon Linux のApacheでRedmineとWordPressをバーチャルホストで共存する

EC2とRDSを節約しようと思いまして、Redmineを動かしてるとこに検証用W …

Amazon CloudWatch クロスリージョンクロスアカウントダッシュボードを作成

本ブログのCloudFrontとWAFのアカウントと、EC2、RDS、S3などオ …

CloudWatch Internet Monitor(プレビュー)を試しました

Amazon CloudWatch Internet Monitor プレビュー …