サービスディスカバリを使用してECSサービスの作成
ECSデベロッパーガイドのチュートリアル:サービスディスカバリを使用して、サービスの作成をやりました。
CLIはCloudShellで実行しました。
目次
AWS Cloud Mapでサービスディスカバリリソースを作成
VPC IDは既存のVPCを指定します。
1 2 3 4 5 |
aws servicediscovery create-private-dns-namespace \ --name tutorial \ --vpc vpc-05fb7f02967a7393b |
1 2 3 4 |
{ "OperationId": "pzentgiswi2ry4slbwpb7ie7ykabe33u-k31ly8oj" } |
OperationIdが返されました。
Cloud Mapのコンソールを確認すると名前空間が作成されていました。
指定したVPCに関連づくRoute 53プライベートホストゾーンも作成されました。
1 2 3 4 |
aws servicediscovery get-operation \ --operation-id pzentgiswi2ry4slbwpb7ie7ykabe33u-k31ly8oj |
create-private-dns-namespaceのレスポンスのOperationIdを使用して確認もできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "Operation": { "Id": "pzentgiswi2ry4slbwpb7ie7ykabe33u-k31ly8oj", "Type": "CREATE_NAMESPACE", "Status": "SUCCESS", "CreateDate": "2023-02-09T13:03:58.318000+00:00", "UpdateDate": "2023-02-09T13:04:34.807000+00:00", "Targets": { "NAMESPACE": "ns-zsymn5wwxw47lclg" } } } |
作成成功が確認できました。
1 2 3 4 5 6 |
aws servicediscovery create-service \ --name myapplication \ --dns-config "NamespaceId="ns-zsymn5wwxw47lclg",DnsRecords=[{Type="A",TTL="300"}]" \ --health-check-custom-config FailureThreshold=1 |
サービスができました。
ECSリソースの作成
1 2 3 4 |
aws ecs create-cluster \ --cluster-name tutorial |
ECSクラスターができました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
cat << EOF > fargate-task.json { "family": "tutorial-task-def", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "sample-app", "image": "httpd:2.4", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ], "essential": true, "entryPoint": [ "sh", "-c" ], "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ] } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "256", "memory": "512" } EOF |
fargate-task.jsonを作成しました。
1 2 3 4 |
aws ecs register-task-definition \ --cli-input-json file://fargate-task.json |
タスク定義ができました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
cat << EOF > ecs-service-discovery.json { "cluster": "tutorial", "serviceName": "ecs-service-discovery", "taskDefinition": "tutorial-task-def", "serviceRegistries": [ { "registryArn": "arn:aws:servicediscovery:us-east-1:123456789012:service/srv-qstoxt4wraf3t3te" } ], "launchType": "FARGATE", "platformVersion": "LATEST", "networkConfiguration": { "awsvpcConfiguration": { "assignPublicIp": "ENABLED", "securityGroups": [ "sg-04c2b5486a8145be2" ], "subnets": [ "subnet-08e43bf7abbe76fc9" ] } }, "desiredCount": 1 } EOF |
ecs-service-discovery.jsonを作成しました。
1 2 3 4 |
aws ecs create-service \ --cli-input-json file://ecs-service-discovery.json |
サービスが作成できました。
パブリックサブネットで実行しましたので、ブラウザからアクセスを確認しました。
Cloud Mapで確認すると、サービスインスタンスの情報が見えました。
Route 53プライベートホストゾーンにAレコードが作成されていました。
値はコンテナのプライベートIPアドレスが設定されていました。
Cloud Mapのサービスで設定されているとおり複数値回答なので、コンテナを増やした際にもプライベートホストゾーンでルーティングできます。
1 2 3 |
$ dig +short myapplication.tutorial 10.0.5.127 |
VPC内のEC2からdigでDNSクエリできました。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
試そうとしてたらSavings Plans買っちゃいました
Savings Plansの購入画面を確認していました。 画面遷移も確認しようと …
-
Amazon SNSサブスクリプションフィルターで優先度別のSQSキューにサブスクライブする
EC2のコンシューマーアプリケーションは優先度の高いキューのメッセージを先に処理 …
-
Route 53で不要なドメインを削除
勢いで作ったけど結局使うのをやめたドメインがあります。 要らないので削除しました …
-
Amazon CloudWatch Syntheticsでハートビートモニタリングを実行
このブログに対してハートビートモニタリングのCanaryを実行してみました。 C …
-
S3イベントのAWS Lambdaのテスト設定
S3イベントのLambda関数でよく使うのはこんなテスト設定です。 なので覚書で …
-
Active Directory認証でAWSマネジメントコンソールにSSO
こちらの2つのサイトを参考にすすめました。 Active Directory資産 …
-
AWS Secrets Manager交代ユーザーローテーション
AWS Secrets Managerの交代ユーザーローテーションを確認してみま …
-
AWS CDK とにかくサンプルでやってみる
Cloud9でAWS CDK環境で作った環境でサンプルプロジェクトからのデプロイ …
-
AWS X-Ray SDK for PythonをOrganizations組織内にLambda Layersで共有しました
ローカルでパッケージ作成 インストールコマンドはこちらAWS X-Ray SDK …
-
AWSセルフマネージドAD環境にEC2 Windowsサーバーをドメイン参加する
AWSクイックスタートのActive Directory Domain Serv …