1. はじめに
こんにちは!株式会社Definerのライターチームです!
今回は、Amazon ECSでマイクロサービスを作成する方法について気になりますよね。
実際の画面や、資源を見ながら詳しく解説していきましょう。
2. 目的・ユースケース
この記事では、Amazon ECSでマイクロサービスを構築したいときに、参考になる情報やプラクティスをまとめています。
3. コンテナイメージのセットアップ
まずはセットアップを行なっていきます。
①ECRレポジトリの作成
以下コマンドで、ECRレポジトリを作成しました。
②ECRへのコンテナイメージのPush
コンテナイメージは、暫定的に既存のnginxイメージを使います。
ECRのログイン、コンテナイメージへのタグ付け、ECRへのPushを以下コマンドで行いました。
## ECR作成コマンド
aws ecr create-repository \
--repository-name test-repository \
--image-scanning-configuration scanOnPush=true \
--region ap-northeast-1
## nginxイメージの取得
docker run nginx
## nginxイメージの確認
docker images
## ECRへのログイン
aws ecr get-login-password | docker login --username AWS --password-stdin https://${AWSアカウント番号}.dkr.ecr.ap-northeast-1.amazonaws.com/
## イメージのタグ付け
docker tag nginx:latest ${AWSアカウント番号}.dkr.ecr.ap-northeast-1.amazonaws.com/test-repository
## イメージのECRへのPush
docker push ${AWSアカウント番号}.dkr.ecr.ap-northeast-1.amazonaws.com/test-repository
4. ECSの作成
続いて、ECSを作成していきます。
①まずは、タスク定義を作成します。
Jsonファイルにインプットを記載し、CLIでタスク定義を作成します。
作成が成功すると、Json形式の戻り値が得られます。
②続いて、ECSサービスを作成します。
こちらも作成が成功すると、Json形式の戻り値が得られます。
③コンテナの起動確認
ECSのコンソールに移動し、「default」クラスター→「タスク」→「タスク詳細」→「パブリックIP」をクリックすると、nginxのページが表示されました!
##タスク定義のインプットとなるJsonファイルを作成
touch input.json
## input.jsonに記載
vim input.json
## タスク定義の登録
aws ecs register-task-definition --cli-input-json file://input.json
## タスク定義の登録確認
aws ecs list-task-definition-families --family-prefix test-nginx
## ECSサービスの起動
aws ecs create-service \
--cluster default \
--service-name test-nginx \
--task-definition test-nginx:1 \
--network-configuration "awsvpcConfiguration={subnets=[${サブネットID}],securityGroups=[${セキュリティグループID}],assignPublicIp=ENABLED}" \
--launch-type FARGATE \
--desired-count 1
input.jsonの内容
{
"family": "test-nginx",
"containerDefinitions": [
{
"name": "test-nginx",
"image": "${AWSアカウント番号}.dkr.ecr.ap-northeast-1.amazonaws.com/test-repository:latest",
"cpu": 512,
"memory": 1024,
"links": [],
"portMappings": [
{
"containerPort": 80,
"hostPort": 80,
"protocol": "tcp"
}
],
"essential": true,
"entryPoint": [],
"command": [],
"environment": [
{
"name": "ENV",
"value": "dev"
}
],
"environmentFiles": [],
"mountPoints": [],
"volumesFrom": [],
"dnsServers": [],
"dnsSearchDomains": [],
"extraHosts": [],
"dockerSecurityOptions": [],
"dockerLabels": {},
"ulimits": [],
"systemControls": []
}
],
"taskRoleArn": "${ECSタスク用IAMロール}",
"executionRoleArn": "${ECSタスク実行用IAMロール}",
"networkMode": "awsvpc",
"requiresCompatibilities": [
"EC2",
"FARGATE"
],
"cpu": "512",
"memory": "1024"
}
5. 引用・参考記事
6. 独自ソリューション「PrismScaler」について
PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。
エンジニアの大変な作業を肩代わり
・自動構築
・自動監視
・構成可視化
クラウド基盤に関わる作業を以上のように効率化します。
SRE/DevOpsエンジニアが行う大変な作業を肩代わりします。
高品質な汎用クラウド基盤の実現
・クラウド基盤構築/クラウド移行
・クラウドの保守運用・コスト最適化
など幅広い利用シーンを想定しています。IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。
興味を持たれた方には、無料で資料を提供しております。
お気軽にご相談ください。
7. お問合せ
株式会社Definerでは、
・ITの上流から下流まで一気通貫のワンストップソリューションをご提供。
・AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミット。
・少ないエンジニアで事業が成長する仕組みづくりの実現。
・エンジニアが喜ぶ、採用しやすい環境づくりの実現。
・高速なアジャイル開発環境の実現。
・自社プロダクトとしてPrismScalerを展開。
上記事業内容を進行しております。
※「開発者ブログ」では、エンジニアの入門編として有益な情報を無料公開しています。
ご相談やお問い合わせは「株式会社Definer」へ。
8. Definerに関して。
・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。