翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: Amazon にアプリケーションをデプロイする ECS
このチュートリアルでは、ワークフロー、Amazon 、および他のECSいくつかのサービスを使用して、サーバーレスアプリケーションを Amazon Elastic Container Service (Amazon ECS) にデプロイする方法について説明します AWS 。デプロイされたアプリケーションは、Apache ウェブサーバーの Docker イメージ上に構築されたシンプルな Hello World ウェブサイトです。このチュートリアルでは、クラスターの設定など、必要な準備作業を順を追って説明し、アプリケーションを構築およびデプロイするワークフローを作成する方法について説明します。
ヒント
このチュートリアルを進める代わりに、完全な Amazon ECSセットアップを実行するブループリントを使用できます。Node.js を API AWS Fargateで、または Java をブループリントAPI AWS Fargateで使用する必要があります。詳細については、「ブループリントを使用したプロジェクトの作成」を参照してください。
トピック
前提条件
開始する前に:
-
接続された AWS アカウントを持つ CodeCatalyst スペースが必要です。詳細については、「スペースの作成」を参照してください。
-
スペースには、次の名前の空のプロジェクトが必要です。
codecatalyst-ecs-project
このプロジェクトを作成するには、最初から開始 オプションを使用します。
詳細については、「Amazon での空のプロジェクトの作成 CodeCatalyst」を参照してください。
-
プロジェクトには、次の CodeCatalyst 環境が必要です。
codecatalyst-ecs-environment
この環境を次のように設定します。
-
非本番環境の など、任意のタイプを選択します。
-
アカウントをその AWS アカウントに接続します。
-
デフォルトIAMロール で、任意のロールを選択します。後で別のロールを指定します。
詳細については、「AWS アカウント と へのデプロイ VPCs」を参照してください。
-
ステップ 1: AWS ユーザーと を設定する AWS CloudShell
このチュートリアルの最初のステップは、 でユーザーを作成し AWS IAM Identity Center、このユーザーとしてインスタンスを起動 AWS CloudShell することです。このチュートリアルの間、 CloudShell は開発用コンピュータであり、 は AWS リソースとサービスを設定する場所です。チュートリアルを完了したら、このユーザーを削除します。
注記
このチュートリアルでは、ルートユーザーを使用しないでください。別のユーザーを作成する必要があります。作成しないと、後で AWS Command Line Interface (CLI) でアクションを実行するときに問題が発生する可能性があります。
IAM Identity Center ユーザーと の詳細については CloudShell、「 AWS IAM Identity Center ユーザーガイド」とAWS CloudShell 「 ユーザーガイド」を参照してください。
IAM Identity Center ユーザーを作成するには
にサインイン AWS Management Console し、 で AWS IAM Identity Center コンソールを開きますhttps://console.aws.amazon.com/singlesignon/
。 注記
スペース AWS アカウント に接続されている CodeCatalyst を使用してサインインしていることを確認してください。どのアカウントが接続されているかを確認するには、スペースに移動し、AWSアカウントタブを選択します。詳細については、「スペースの作成」を参照してください。
-
ナビゲーションペインで [Users] (ユーザー)、[Add user] (ユーザーの追加) の順に選択します。
-
ユーザー名 で、次のように入力します。
CodeCatalystECSUser
-
パスワード で、このユーザーと共有できるワンタイムパスワードの生成 を選択します。
-
E メールアドレス と E メールアドレスの確認 で、IAMIdentity Center にまだ存在しない E メールアドレスを入力します。
-
名 と姓 で、次のように入力します。
CodeCatalystECSUser
-
表示名 で、自動的に生成された名前を保持します。
CodeCatalystECSUser CodeCatalystECSUser
-
[次へ] をクリックします。
-
ユーザーをグループに追加ページで、次へ を選択します。
-
ユーザーの確認と追加ページで情報を確認し、ユーザーの追加を選択します。
ワンタイムパスワードダイアログボックスが表示されます。
-
アクセス AWS ポータルやワンタイムパスワードなどのサインイン情報をコピーして貼り付けURLます。
-
[閉じる] を選びます。
アクセス権限セットを作成するには
このアクセス許可セットは後で に割り当てCodeCatalystECSUser
ます。
-
ナビゲーションペインで [アクセス許可セット] を選択し、[アクセス許可セットの作成] を選択します。
-
事前定義されたアクセス許可セットを選択し、 を選択しますAdministratorAccess。このポリシーは、すべての に完全なアクセス許可を提供します AWS のサービス。
-
[次へ] をクリックします。
-
「アクセス許可セット名」に、次のように入力します。
CodeCatalystECSPermissionSet
-
[次へ] をクリックします。
-
[確認と作成] ページで情報を確認し、[グループの作成] を選択します。
アクセス許可セットを に割り当てるには CodeCatalystECSUser
-
ナビゲーションペインで を選択しAWS アカウント、現在サインイン AWS アカウント している の横にあるチェックボックスをオンにします。
-
[ユーザーまたはグループの割り当て] を選択します。
-
[ユーザー] タブを選択します。
-
[
CodeCatalystECSUser
] のチェックボックスをオンにします。 -
[次へ] をクリックします。
-
[
CodeCatalystECSPermissionSet
] のチェックボックスをオンにします。 -
[次へ] をクリックします。
-
情報を確認し、[送信] を選択します。
これで、
CodeCatalystECSUser
とCodeCatalystECSPermissionSet
を に割り当て AWS アカウント、それらをバインドしました。
としてサインアウトして再度サインインするには CodeCatalystECSUser
-
サインアウトする前に、 AWS アクセスポータルURLと、 のユーザー名とワンタイムパスワードがあることを確認してください
CodeCatalystECSUser
。以前にこの情報をテキストエディタにコピーしておく必要があります。注記
この情報がない場合は、IAMIdentity Center
CodeCatalystECSUser
の詳細ページに移動し、パスワードのリセット 、ワンタイムパスワードの生成 [...]、パスワードのリセットをもう一度選択して、画面に情報を表示します。 -
からサインアウトします AWS。
-
AWS アクセスポータルをブラウザのアドレスバーURLに貼り付けます。
-
のユーザー名とワンタイムパスワードでサインインします
CodeCatalystECSUser
。 -
新しいパスワード でパスワードを入力し、新しいパスワード の設定 を選択します。
画面に AWS アカウント ボックスが表示されます。
-
を選択しAWS アカウント、
CodeCatalystECSUser
ユーザーとアクセス許可セット AWS アカウント を割り当てた の名前を選択します。 -
CodeCatalystECSPermissionSet
の横にある [管理コンソール] を選択します。AWS Management Console が表示されます。これで、適切なアクセス許可
CodeCatalystECSUser
で としてサインインします。
AWS CloudShell インスタンスを起動するには
-
として
CodeCatalystECSUser
、上部のナビゲーションバーで AWS アイコン () を選択します 。のメインページ AWS Management Console が表示されます。
-
上部のナビゲーションバーで、 AWS CloudShell アイコン () を選択します 。
CloudShell が開きます。 CloudShell 環境が作成されるまで待ちます。
注記
CloudShell アイコンが表示されない場合は、 でサポートされているリージョン CloudShellにいることを確認してください。このチュートリアルは、米国西部 (オレゴン) リージョンにいることを前提としています。
AWS CLI がインストールされていることを確認するには
-
CloudShell ターミナルで、次のように入力します。
aws --version
-
バージョンが表示されていることを確認します。
AWS CLI は現在のユーザー 用にすでに設定されているため
CodeCatalystECSUser
、通常どおり、 AWS CLI キーと認証情報を設定する必要はありません。
ステップ 2: プレースホルダーアプリケーションを Amazon にデプロイする ECS
このセクションでは、プレースホルダーアプリケーションを Amazon に手動でデプロイしますECS。このプレースホルダーアプリケーションは、ワークフローによってデプロイされた Hello World アプリケーションに置き換えられます。プレースホルダーアプリケーションは Apache Web Server です。
Amazon の詳細についてはECS、「Amazon Elastic Container Service デベロッパーガイド」を参照してください。
プレースホルダーアプリケーションをデプロイするには、以下の一連の手順を実行します。
タスク実行ロールを作成するには
このロールは、ユーザーに代わって API を呼び出すアクセス AWS Fargate 許可を Amazon ECS に付与します。
-
信頼ポリシーを作成します。
-
で AWS CloudShell、次のコマンドを入力します。
cat > codecatalyst-ecs-trust-policy.json
CloudShell ターミナルに点滅するプロンプトが表示されます。
-
プロンプトに次のコードを入力します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
最後の中括弧 () の後にカーソルを置きます
}
。 -
Enter
とCtrl+d
を押してファイルを保存し、猫を終了します。
-
-
タスク実行ロールを作成します。
aws iam create-role \ --role-name codecatalyst-ecs-task-execution-role \ --assume-role-policy-document file://codecatalyst-ecs-trust-policy.json
-
AWS 管理
AmazonECSTaskExecutionRolePolicy
ポリシーをロールにアタッチします。aws iam attach-role-policy \ --role-name codecatalyst-ecs-task-execution-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
-
ロールの詳細を表示します。
aws iam get-role \ --role-name codecatalyst-ecs-task-execution-role
-
ロールの値
"Arn":
、例えば を書き留めますarn:aws:iam::111122223333:role/codecatalyst-ecs-task-execution-role
。この Amazon リソースネーム (ARN) は後で必要になります。
Amazon ECSクラスターを作成するには
このクラスターには Apache プレースホルダーアプリケーションと、後で Hello World アプリケーションが含まれます。
-
として
CodeCatalystECSUser
、 で空のクラスター AWS CloudShellを作成します。aws ecs create-cluster --cluster-name codecatalyst-ecs-cluster
-
(オプション) クラスターが正常に作成されたことを確認します。
aws ecs list-clusters
codecatalyst-ecs-cluster
クラスターARNの がリストに表示され、正常に作成されたことを示します。
タスク定義ファイルを作成するには
タスク定義ファイルは、 からプルされた Apache 2.4 ウェブサーバーのhttpd:2.4
) を実行することを示します DockerHub。
-
として
CodeCatalystECSUser
、 でタスク定義ファイル AWS CloudShellを作成します。cat > taskdef.json
-
プロンプトに次のコードを貼り付けます。
{ "executionRoleArn": "
arn:aws:iam::111122223333:role/codecatalyst-ecs-task-execution-role
", "containerDefinitions": [ { "name": "codecatalyst-ecs-container", "image": "httpd:2.4", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "256", "family": "codecatalyst-ecs-task-def", "memory": "512", "networkMode": "awsvpc" }上記のコードで、
arn:aws:iam::111122223333:role/codecatalyst-ecs-task-execution-role
でメモしたタスク実行ロールARNの を使用しますタスク実行ロールを作成するには。
-
最後の中括弧 () の後にカーソルを置きます
}
。 -
Enter
とCtrl+d
を押してファイルを保存し、猫を終了します。
タスク定義ファイルを Amazon に登録するには ECS
-
として
CodeCatalystECSUser
、 にタスク定義 AWS CloudShellを登録します。aws ecs register-task-definition \ --cli-input-json file://taskdef.json
-
(オプション) タスク定義が登録されていることを確認します。
aws ecs list-task-definitions
codecatalyst-ecs-task-def
タスク定義がリストに表示されます。
Amazon ECSサービスを作成するには
Amazon ECSサービスは、Apache プレースホルダーアプリケーションのタスク (および関連する Docker コンテナ) を実行し、後で Hello World アプリケーションを実行します。
-
として
CodeCatalystECSUser
、まだ Amazon Elastic Container Service コンソールに切り替えていない場合は、切り替えます。 -
前に作成したクラスター を選択します
codecatalyst-ecs-cluster
。 -
サービス タブで、 の作成 を選択します。
-
「作成」ページで、次の操作を行います。
-
次にリストされているものを除き、すべてのデフォルト設定を保持します。
-
起動タイプ で、 を選択しますFARGATE。
-
タスク定義 で、ファミリードロップダウンリストで以下を選択します。
codecatalyst-ecs-task-def
-
サービス名 には、次のように入力します。
codecatalyst-ecs-service
-
必要なタスク には、次のように入力します。
3
このチュートリアルでは、各タスクが単一の Docker コンテナを起動します。
-
ネットワークセクションを展開します。
-
にはVPC、任意の を選択しますVPC。
-
サブネット で、任意のサブネットを選択します。
注記
サブネットは 1 つだけ指定します。このチュートリアルに必要なのはこれだけです。
注記
VPC および サブネットがない場合は、作成します。「Amazon VPCユーザーガイド」の「 の作成」および「 でのサブネットVPCの作成」を参照してください。 VPC
-
セキュリティグループ で、新しいセキュリティグループの作成 を選択し、次の操作を行います。
-
セキュリティグループ名 には、次のように入力します。
codecatalyst-ecs-security-group
-
セキュリティグループの説明 には、次のように入力します。
CodeCatalyst ECS security group
-
[ルールを追加] を選択します。タイプ で を選択しHTTP、ソース で Anywhere を選択します。
-
-
下部で、 の作成 を選択します。
-
サービスが作成されるまで待ちます。このプロセスには数分かかることがあります。
-
-
タスクタブを選択し、更新ボタンを選択します。3 つのタスクすべてで、Last Status 列が Running に設定されていることを確認します。
(オプション) Apache プレースホルダーアプリケーションが実行されていることを確認するには
-
タスク タブで、3 つのタスクのいずれかを選択します。
-
パブリック IP フィールドで、オープンアドレス を選択します。
It Works!
ページが表示されます。これは、Amazon ECSサービスが Apache イメージで Docker コンテナを起動したタスクを正常に開始したことを示します。チュートリアルのこの時点で、Amazon ECSクラスター、サービス、タスク定義、および Apache プレースホルダーアプリケーションを手動でデプロイしました。これらの項目がすべて揃うと、Apache プレースホルダーアプリケーションをチュートリアルの Hello World アプリケーションに置き換えるワークフローを作成する準備が整いました。
ステップ 3: Amazon ECRイメージリポジトリを作成する
このセクションでは、Amazon Elastic Container Registry (Amazon ) にプライベートイメージリポジトリを作成しますECR。このリポジトリには、以前にデプロイした Apache プレースホルダーイメージを置き換えるチュートリアルの Docker イメージが保存されます。
Amazon の詳細についてはECR、「Amazon Elastic Container Registry ユーザーガイド」を参照してください。
Amazon でイメージリポジトリを作成するには ECR
-
として
CodeCatalystECSUser
、 で AWS CloudShell Amazon に空のリポジトリを作成しますECR。aws ecr create-repository --repository-name codecatalyst-ecs-image-repo
-
Amazon ECRリポジトリの詳細を表示します。
aws ecr describe-repositories \ --repository-names codecatalyst-ecs-image-repo
-
“repositoryUri”:
値に注意してください。例えば、 です111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo
。これは、後でリポジトリをワークフローに追加するときに必要になります。
ステップ 4: AWS ロールを作成する
このセクションでは、 CodeCatalyst ワークフローが機能するために必要なロールを作成します AWS IAM。これらのロールは次のとおりです。
-
ビルドロール – AWS アカウントにアクセスして Amazon と ECR Amazon に書き込むための CodeCatalyst ビルドアクション (ワークフロー内) アクセス許可を付与しますEC2。
-
ロールのデプロイ – AWS アカウント、Amazon CodeCatalyst 、および他のいくつかのサービスにアクセスするためのアクションへのデプロイ ECS (ワークフロー内) アクセス許可を付与します。 ECS AWS
IAM ロールの詳細については、「 ユーザーガイド」の「 IAMロールAWS Identity and Access Management 」を参照してください。
注記
時間を節約するために、前述の 2 つのロールではなく、CodeCatalystWorkflowDevelopmentRole-
ロールと呼ばれる 1 つのロールを作成できます。詳細については、「アカウントとスペースのCodeCatalystWorkflowDevelopmentRole-spaceNameロールの作成」を参照してください。spaceName
CodeCatalystWorkflowDevelopmentRole-
ロールには、セキュリティリスクをもたらす可能性のある非常に広範なアクセス許可があることを理解します。このロールは、セキュリティが懸念されないチュートリアルやシナリオでのみ使用することをお勧めします。このチュートリアルでは、前述の 2 つのロールを作成することを前提としています。spaceName
ビルドロールとデプロイロールを作成するには、 AWS Management Console または を使用できます AWS CLI。
ステップ 5: に AWS ロールを追加する CodeCatalyst
このステップでは、ビルドロール (codecatalyst-ecs-build-role
) とデプロイロール (codecatalyst-ecs-deploy-role
) をスペース内の CodeCatalyst アカウント接続に追加します。
ビルドロールとデプロイロールをアカウント接続に追加するには
-
で CodeCatalyst、スペースに移動します。
-
[AWS アカウント] を選択します。アカウント接続のリストが表示されます。
-
ビルドロールとデプロイロールを作成したアカウントを表す AWS アカウント接続を選択します。
-
AWS 管理コンソール からロールの管理 を選択します。
「Amazon CodeCatalyst スペースへのIAMロールの追加」ページが表示されます。ページにアクセスするには、サインインが必要な場合があります。
-
で作成した既存のロールを追加 IAMを選択します。
ドロップダウンリストが表示されます。このリストには、
codecatalyst-runner.amazonaws.com
およびcodecatalyst.amazonaws.com
サービスプリンシパルを含む信頼ポリシーを持つすべてのIAMロールが表示されます。 -
ドロップダウンリストで、 を選択し
codecatalyst-ecs-build-role
、ロールの追加 を選択します。注記
が表示された場合は
The security token included in the request is invalid
、適切なアクセス許可がないためである可能性があります。この問題を解決するには、 からサインアウト AWS して、スペースの作成時に使用した AWS アカウントで再度サインインします CodeCatalyst。 -
IAM 「ロールの追加」を選択し、「」で作成した既存のロールの追加IAM「」を選択し、ドロップダウンリストから「」を選択します
codecatalyst-ecs-deploy-role
。[Add role] を選択します。これで、ビルドロールとデプロイロールをスペースに追加しました。
-
Amazon CodeCatalyst 表示名 の値をコピーします。この値は、後でワークフローを作成するときに必要になります。
ステップ 6: ソースリポジトリを作成する
このステップでは、 でソースリポジトリを作成します CodeCatalyst。このリポジトリには、タスク定義ファイルなど、チュートリアルのソースファイルが保存されます。
ソースリポジトリの詳細については、「」を参照してくださいソースリポジトリの作成。
ソースリポジトリを作成するには
https://codecatalyst.aws/
で CodeCatalyst コンソールを開きます。 -
プロジェクト に移動します
codecatalyst-ecs-project
。 -
ナビゲーションペインで [コード] を選択してから、[ソースリポジトリ] を選択します。
-
[リポジトリの追加] を選択し、[リポジトリの作成] を選択します。
-
リポジトリ名 で、次のように入力します。
codecatalyst-ecs-source-repository
-
[作成] を選択します。
ステップ 7: ソースファイルを追加する
このセクションでは、Hello World ソースファイルを CodeCatalyst リポジトリ に追加しますcodecatalyst-ecs-source-repository
。それらは以下で構成されます。
-
index.html
ファイル - ブラウザに Hello World メッセージを表示します。 -
Dockerfile – Docker イメージに使用するベースイメージと、それに適用する Docker コマンドについて説明します。
-
taskdef.json
ファイル — クラスターでタスクを起動するときに使用する Docker イメージを定義します。
フォルダ構造は次のとおりです。
. |— public-html | |— index.html |— Dockerfile |— taskdef.json
注記
次の手順は、コンソールを使用してファイルを追加する方法を示しています CodeCatalyst が、必要に応じて Git を使用できます。詳細については、「ソースリポジトリのクローン作成」を参照してください。
index.html
index.html
ファイルには、ブラウザに Hello World メッセージが表示されます。
index.html ファイルを追加するには
-
CodeCatalyst コンソールで、ソースリポジトリ に移動します
codecatalyst-ecs-source-repository
。 -
ファイル で、ファイルの作成 を選択します。
-
ファイル名 には、次のように入力します。
public-html/index.html
重要
同じ名前のフォルダを作成するには、必ず
public-html/
プレフィックスを含めてください。index.html
はこのフォルダにあることが想定されます。 -
テキストボックスに、次のコードを入力します。
<html> <head> <title>Hello World</title> <style> body { background-color: black; text-align: center; color: white; font-family: Arial, Helvetica, sans-serif; } </style> </head> <body> <h1>Hello World</h1> </body> </html>
-
コミット を選択し、もう一度コミット を選択します。
index.html
は、public-html
フォルダのリポジトリに追加されます。
Dockerfile
Dockerfile は、使用するベース Docker イメージと、それに適用する Docker コマンドを記述します。Dockerfile の詳細については、「Dockerfile リファレンス
ここで指定された Dockerfile は、Apache 2.4 ベースイメージ (httpd
) を使用することを示します。また、ウェブページを提供する Apache サーバーのフォルダindex.html
に というソースファイルをコピーする手順も含まれています。Dockerfile の EXPOSE
命令は、コンテナがポート 80 でリッスンしていることを Docker に伝えます。
Dockerfile を追加するには
-
ソースリポジトリで、ファイルの作成 を選択します。
-
ファイル名 には、次のように入力します。
Dockerfile
ファイル拡張子を含めないでください。
重要
Dockerfile はリポジトリのルートフォルダに存在する必要があります。ワークフローの
Docker build
コマンドは、ワークフローが存在することを想定しています。 -
テキストボックスに、次のコードを入力します。
FROM httpd:2.4 COPY ./public-html/index.html /usr/local/apache2/htdocs/index.html EXPOSE 80
-
コミット を選択し、もう一度コミット を選択します。
Dockerfile がリポジトリに追加されます。
taskdef.json
このステップで追加するファイルは、 で既に指定したtaskdef.json
ファイルと同じですがステップ 2: プレースホルダーアプリケーションを Amazon にデプロイする ECS、次の違いがあります。
image:
フィールド (httpd:2.4
) でハードコードされた Docker イメージ名を指定する代わりに、ここでのタスク定義では、いくつかの変数を使用してイメージ $REPOSITORY_URI
と を示します$IMAGE_TAG
。これらの変数は、後のステップでワークフローを実行するときに、ワークフローのビルドアクションによって生成された実際の値に置き換えられます。
タスク定義パラメータの詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「タスク定義パラメータ」を参照してください。
taskdef.json ファイルを追加するには
-
ソースリポジトリで、ファイルの作成 を選択します。
-
ファイル名 には、次のように入力します。
taskdef.json
-
テキストボックスに、次のコードを入力します。
{ "executionRoleArn": "
arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role
", "containerDefinitions": [ { "name": "codecatalyst-ecs-container", # The $REPOSITORY_URI and $IMAGE_TAG variables will be replaced # by the workflow at build time (see the build action in the # workflow) "image": $REPOSITORY_URI:$IMAGE_TAG, "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "codecatalyst-ecs-task-def" }上記のコードで、
arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role
でメモしたタスク実行ロールARNの を使用しますタスク実行ロールを作成するには。
-
コミット を選択し、もう一度コミット を選択します。
taskdef.json
ファイルがリポジトリに追加されます。
ステップ 8: ワークフローを作成して実行する
このステップでは、ソースファイルを取得し、Docker イメージにビルドして、そのイメージを Amazon ECSクラスターにデプロイするワークフローを作成します。このデプロイは、既存の Apache プレースホルダーアプリケーションを置き換えます。
ワークフローは、順番に実行される次の構成要素で構成されます。
-
トリガー — このトリガーは、変更をソースリポジトリにプッシュすると、ワークフローの実行を自動的に開始します。トリガーについての詳細は、「トリガーを使用してワークフローを自動的に開始する」を参照してください。
-
ビルドアクション (
BuildBackend
) – トリガー時に、 アクションは Dockerfile を使用して Docker イメージをビルドし、そのイメージを Amazon にプッシュしますECR。ビルドアクションは、 を正しいimage
フィールド値taskdef.json
で更新し、このファイルの出力アーティファクトを作成します。このアーティファクトは、デプロイアクションの入力として使用され、次は です。ビルドアクションの詳細については、「」を参照してくださいワークフローを使用した構築。
-
デプロイアクション (
DeployToECS
) – ビルドアクションが完了すると、デプロイアクションはビルドアクション (TaskDefArtifact
) によって生成された出力アーティファクトを検索し、そのtaskdef.json
内部を見つけて、Amazon ECSサービスに登録します。次に、このサービスはtaskdef.json
ファイルの指示に従って、Amazon ECSクラスター内で 3 つの Amazon ECSタスク、および関連付けられた Hello World Docker コンテナを実行します。
ワークフローを作成するには
-
CodeCatalyst コンソールのナビゲーションペインで CI/CD を選択し、ワークフロー を選択します。
-
ワークフローの作成 を選択します。
-
ソースリポジトリ で、 を選択します
codecatalyst-ecs-source-repository
。 -
ブランチ で、 を選択します
main
。 -
[作成] を選択します。
YAML サンプルコードを削除します。
-
次のYAMLコードを追加します。
注記
次のYAMLコードでは、必要に応じて
Connections:
セクションを省略できます。これらのセクションを省略する場合は、環境のデフォルトロールフィールドで指定されたIAMロールに、 で説明されている両方のロールのアクセス許可と信頼ポリシーが含まれていることを確認する必要がありますステップ 5: に AWS ロールを追加する CodeCatalyst。デフォルトのIAMロールで環境を設定する方法の詳細については、「」を参照してください環境を作成する。Name: codecatalyst-ecs-workflow SchemaVersion: 1.0 Triggers: - Type: PUSH Branches: - main Actions: BuildBackend: Identifier: aws/build@v1 Environment: Name:
codecatalyst-ecs-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-ecs-build-role
Inputs: Sources: - WorkflowSource Variables: - Name: REPOSITORY_URI Value:111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo
- Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: Steps: #pre_build: - Run: echo Logging in to Amazon ECR... - Run: aws --version - Run: aws ecr get-login-password --regionus-west-2
| docker login --username AWS --password-stdin111122223333.dkr.ecr.us-west-2.amazonaws.com
#build: - Run: echo Build started on `date` - Run: echo Building the Docker image... - Run: docker build -t $REPOSITORY_URI:latest . - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG #post_build: - Run: echo Build completed on `date` - Run: echo Pushing the Docker images... - Run: docker push $REPOSITORY_URI:latest - Run: docker push $REPOSITORY_URI:$IMAGE_TAG # Replace the variables in taskdef.json - Run: find taskdef.json -type f | xargs sed -i "s|\$REPOSITORY_URI|$REPOSITORY_URI|g" - Run: find taskdef.json -type f | xargs sed -i "s|\$IMAGE_TAG|$IMAGE_TAG|g" - Run: cat taskdef.json # The output artifact will be a zip file that contains a task definition file. Outputs: Artifacts: - Name: TaskDefArtifact Files: - taskdef.json DeployToECS: DependsOn: - BuildBackend Identifier: aws/ecs-deploy@v1 Environment: Name:codecatalyst-ecs-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-ecs-deploy-role
Inputs: Sources: [] Artifacts: - TaskDefArtifact Configuration: region:us-west-2
cluster: codecatalyst-ecs-cluster service: codecatalyst-ecs-service task-definition: taskdef.json上記のコードで、以下を置き換えます。
-
の両方のインスタンス
codecatalyst-ecs-environment
で作成した環境の名前。 前提条件 -
の両方のインスタンス
codecatalyst-account-connection
アカウント接続の表示名を入力します。表示名は数字にすることができます。詳細については、「ステップ 5: に AWS ロールを追加する CodeCatalyst」を参照してください。 -
codecatalyst-ecs-build-role
で作成したビルドロールの名前。 ステップ 4: AWS ロールを作成する -
111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo
(Value:
プロパティの) を、 で作成した Amazon ECRリポジトリURIの とともに使用しますステップ 3: Amazon ECRイメージリポジトリを作成する。 -
111122223333.dkr.ecr.us-west-2.amazonaws.com
(Run: aws ecr
コマンドで) イメージサフィックス () なしで Amazon ECRリポジトリURIの を使用します/codecatalyst-ecs-image-repo
。 -
codecatalyst-ecs-deploy-role
に、 で作成したデプロイロールの名前を入力しますステップ 4: AWS ロールを作成する。 -
の両方のインスタンス
us-west-2
AWS リージョンコードを入力します。リージョンコードのリストについては、「」の「リージョンエンドポイント」を参照してくださいAWS 全般のリファレンス。
注記
ビルドロールとデプロイロールを作成しない場合は、
codecatalyst-ecs-build-role
また、codecatalyst-ecs-deploy-role
CodeCatalystWorkflowDevelopmentRole-
はロールの名前で指定します。このロールの詳細については、「ステップ 4: AWS ロールを作成する」を参照してください。spaceName
ヒント
前のワークフローコードに示されている
find
およびsed
コマンドを使用してリポジトリとイメージ名を更新する代わりに、この目的のために Amazon ECSタスク定義アクションをレンダリングできます。詳細については、「Amazon ECSタスク定義の変更」を参照してください。 -
-
(オプション) 検証 を選択して、コミットする前にYAMLコードが有効であることを確認します。
-
[Commit] (コミット) を選択します。
-
コミットワークフローダイアログボックスに、次のように入力します。
-
コミットメッセージ で、テキストを削除して次のように入力します。
Add first workflow
-
リポジトリ で、 を選択します
codecatalyst-ecs-source-repository
。 -
ブランチ名 で、main を選択します。
-
[Commit] (コミット) を選択します。
これでワークフローが作成されました。ワークフローの実行は、ワークフローの上部で定義されたトリガーが原因で自動的に開始されます。具体的には、
workflow.yaml
ファイルをソースリポジトリにコミット (およびプッシュ) すると、トリガーによってワークフロー実行が開始されます。 -
ワークフロー実行の進行状況を表示するには
-
CodeCatalyst コンソールのナビゲーションペインで CI/CD を選択し、ワークフロー を選択します。
-
先ほど作成したワークフロー を選択します
codecatalyst-ecs-workflow
。 -
ビルドの進行状況BuildBackendを表示するには、 を選択します。
-
DeployToECS を選択して、デプロイの進行状況を確認します。
実行の詳細の表示の詳細については、「」を参照してくださいワークフローの実行ステータスと詳細の表示。
デプロイを確認するには
-
で Amazon ECS Classic コンソールを開きますhttps://console.aws.amazon.com/ecs/
。 -
クラスター を選択します
codecatalyst-ecs-cluster
。 -
[タスク] タブを選択します。
-
3 つのタスクのいずれかを選択します。
-
パブリック IP フィールドで、オープンアドレス を選択します。
ブラウザに「Hello World」ページが表示され、Amazon ECSサービスがアプリケーションを正常にデプロイしたことを示します。
ステップ 9: ソースファイルを変更する
このセクションでは、ソースリポジトリの index.html
ファイルを変更します。この変更により、ワークフローは新しい Docker イメージを構築し、コミット ID でタグ付けして Amazon にプッシュしECR、Amazon にデプロイしますECS。
index.html を変更するには
-
CodeCatalyst コンソールのナビゲーションペインで、コード を選択し、ソースリポジトリ を選択し、リポジトリ を選択します
codecatalyst-ecs-source-repository
。 -
[
public-html
] を選択し、[index.html
] を選択します。の内容
index.html
が表示されます。 -
[編集] を選択します。
-
14 行目で、
Hello World
テキストを に変更しますTutorial complete!
。 -
コミット を選択し、もう一度コミット を選択します。
コミットにより、新しいワークフロー実行が開始されます。
-
(オプション) ソースリポジトリのメインページに移動し、コミットの表示 を選択し、
index.html
変更のコミット ID を書き留めます。 -
デプロイの進行状況を確認します。
-
ナビゲーションペインで CI/CD を選択し、ワークフロー を選択します。
-
を選択して最新の実行
codecatalyst-ecs-workflow
を表示します。 -
を選択しBuildBackend、ワークフロー実行の進行状況DeployToECSを確認します。
-
-
次のように、アプリケーションが更新されていることを確認します。
-
で Amazon ECS Classic コンソールを開きますhttps://console.aws.amazon.com/ecs/
。 -
クラスター を選択します
codecatalyst-ecs-cluster
。 -
[タスク] タブを選択します。
-
3 つのタスクのいずれかを選択します。
-
パブリック IP フィールドで、オープンアドレス を選択します。
Tutorial complete!
ページが表示されます。
-
-
(オプション) で AWS Amazon ECRコンソールに切り替え、新しい Docker イメージにステップ 6 のコミット ID がタグ付けされていることを確認します。
クリーンアップ
このチュートリアルで使用するファイルとサービスをクリーンアップして、料金が発生しないようにします。
で AWS Management Console、次の順序でクリーンアップします。
-
Amazon ではECS、次の操作を行います。
-
を削除します
codecatalyst-ecs-service
。 -
を削除します
codecatalyst-ecs-cluster
。 -
codecatalyst-ecs-task-definition
の登録を解除します。
-
-
Amazon でECR、 を削除します
codecatalyst-ecs-image-repo
。 -
Amazon でEC2、 を削除します
codecatalyst-ecs-security-group
。 -
IAM Identity Center で、以下を削除します。
-
CodeCatalystECSUser
-
CodeCatalystECSPermissionSet
-
CodeCatalyst コンソールで、次のようにクリーンアップします。
-
を削除します
codecatalyst-ecs-workflow
。 -
を削除します
codecatalyst-ecs-environment
。 -
を削除します
codecatalyst-ecs-source-repository
。 -
を削除します
codecatalyst-ecs-project
。
このチュートリアルでは、 CodeCatalyst ワークフローと Amazon へのデプロイアクションを使用してアプリケーションを Amazon ECSサービスにデプロイする方法を学習しました。 ECS