サービスディスカバリを使用して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
関連記事
-
-
EC2 セッションマネージャにEC2インスタンスの一覧から接続できるようになりました
EC2に接続する時に、どうしてもSSHクライアントから接続しないといけない場合を …
-
-
AWS Certificate Manager証明書とAmazon Route 53でAmazon API GatewayのAPIのカスタムドメイン名前解決する
AWS Certificate ManagerとAmazon Route 53と …
-
-
Amazon SES(Simple Email Service)でメール受信時のアクションでLambdaを実行して渡されるデータを見てみる
Amazon SESで受信したメールをS3に保存して、S3のトリガーでLambd …
-
-
CloudWatch Internet Monitor(プレビュー)を試しました
Amazon CloudWatch Internet Monitor プレビュー …
-
-
AWS Certificate Manager(ACM)メール検証をDNS検証の証明書に差し替えました
ブログの証明書 このブログの証明書の有効期限があと1週間です。 証明書はAWS …
-
-
AWS Transit GatewayのAcceleratedサイト間VPN接続確認
Transit GatewayでVPN接続を作成するときに、Global Acc …
-
-
「JAWS-UG 名古屋 2022年 “re:Invent”の復習~忘年会~」に参加しました
re:Inventのおみやげも飲み物、ピザ、お寿司もたくさん。 コラボベースさん …
-
-
Amazon LinuxにAlfresco Community Editionをインストールする
ダウンロード準備 Alfresco公式サイトで、「エンタープライズコンテンツ管理 …
-
-
CloudWatchアラームをAWS CLIでテスト
CloudWatchアラームをテストするコマンドです。 –state …
-
-
AWS Transfer Family EFS向けのSFTP対応サーバー
EFSファイルシステムは作成済です。 AWS Transfer Family S …