*All the sample outputs of commands are put in this markdown for the Blog post - **Implementing Custom Service Discovery for ECS-Anywhere Tasks** --- ### Step 1 - Provision the ECS cluster, VPCs/Subnets, EC2 Launch Template and ALB ###### Additional verification **1.** ``` {"IamRole":"ECSA-Demo-Cluster-ECSARole","RegistrationLimit":50,"ExpirationDate":"2023-05-21T17:04:27.259Z"} e1db3452-d0c7-48b0-8f54-2d4317e21f0e itUspF************** (Partially masked as it is a sensitive data) ``` **2.** ``` i-0a0f5db07af93d469 ECSA-OnPrem-Proxy 10.0.31.5 18.167.51.161 i-0b6b830d009f1f611 ECSA-OnPrem-Proxy 10.0.33.186 18.162.143.140 i-0cb4428205c6fb63f ECSA-OnPrem-Proxy 10.0.32.46 43.198.17.79 i-02bcd1dbfe0c7591a ECSA-OnPrem-VM 10.0.1.168 None i-0599e04b00e7e9c97 ECSA-OnPrem-VM 10.0.3.224 None i-0e81940c6efba2493 ECSA-OnPrem-VM 10.0.2.73 None ``` **3.** ``` # AWS Account ID are masked as ************ { "containerInstanceArns": [ "arn:aws:ecs:ap-east-1:************:container-instance/ECSA-Demo-Cluster/901230153cb94b09854f2d47e6169ffc", "arn:aws:ecs:ap-east-1:************:container-instance/ECSA-Demo-Cluster/df65caa34dfe41059ae6cc3acce2327c", "arn:aws:ecs:ap-east-1:************:container-instance/ECSA-Demo-Cluster/aa270abfbbe54b91bb476c097b89a252" ] } ``` **4.** --- ### Step 2 - Provision the ECS Task Definitions and Services ###### Additional verification **1.** ``` # AWS Account ID are masked as ************ { "serviceArn": "arn:aws:ecs:ap-east-1:************:service/ECSA-Demo-Cluster/Service-DemoApp1", "deployments": { "id": "ecs-svc/2474979950726421586", "status": "PRIMARY", "taskDefinition": "arn:aws:ecs:ap-east-1:************:task-definition/DemoApp1:1", "desiredCount": 1, "pendingCount": 0, "runningCount": 1, "failedTasks": 0, "createdAt": "2023-05-23T00:52:52.802000+08:00", "updatedAt": "2023-05-23T01:44:01.662000+08:00", "launchType": "EXTERNAL", "rolloutState": "COMPLETED", "rolloutStateReason": "ECS deployment ecs-svc/2474979950726421586 completed." } } { "serviceArn": "arn:aws:ecs:ap-east-1:************:service/ECSA-Demo-Cluster/Service-DemoApp2", "deployments": { "id": "ecs-svc/7567762855939340968", "status": "PRIMARY", "taskDefinition": "arn:aws:ecs:ap-east-1:************:task-definition/DemoApp2:1", "desiredCount": 3, "pendingCount": 0, "runningCount": 3, "failedTasks": 0, "createdAt": "2023-05-23T00:52:54.560000+08:00", "updatedAt": "2023-05-23T01:44:08.727000+08:00", "launchType": "EXTERNAL", "rolloutState": "COMPLETED", "rolloutStateReason": "ECS deployment ecs-svc/7567762855939340968 completed." } } ``` **2.** ``` # AWS Account ID are masked as ************ ECS Tasks: ------------------------ [ { "taskArn": "arn:aws:ecs:ap-east-1:************:task/ECSA-Demo-Cluster/a3578bfe19c34de5aae679caab599fdc", "service": "Service-DemoApp1", "containerInstanceId": "aa270abfbbe54b91bb476c097b89a252", "desiredStatus": "RUNNING", "lastStatus": "RUNNING", "hostPort": [ 32770 ] }, { "taskArn": "arn:aws:ecs:ap-east-1:************:task/ECSA-Demo-Cluster/80804e57b28442e28aa248410a98773b", "service": "Service-DemoApp2", "containerInstanceId": "aa270abfbbe54b91bb476c097b89a252", "desiredStatus": "RUNNING", "lastStatus": "RUNNING", "hostPort": [ 32768, 32769 ] }, { "taskArn": "arn:aws:ecs:ap-east-1:************:task/ECSA-Demo-Cluster/af7551e83a584d72a147cbb54ae72003", "service": "Service-DemoApp2", "containerInstanceId": "df65caa34dfe41059ae6cc3acce2327c", "desiredStatus": "RUNNING", "lastStatus": "RUNNING", "hostPort": [ 32768, 32769 ] }, { "taskArn": "arn:aws:ecs:ap-east-1:************:task/ECSA-Demo-Cluster/bba1e6a2e2db41a59d0e00e824a5428c", "service": "Service-DemoApp2", "containerInstanceId": "901230153cb94b09854f2d47e6169ffc", "desiredStatus": "RUNNING", "lastStatus": "RUNNING", "hostPort": [ 32770, 32769 ] } ] ECS Container Instances: ------------------------ [ { "containerInstanceId": "901230153cb94b09854f2d47e6169ffc", "instanceId": "mi-02211c0a333f857a8", "status": "ACTIVE", "agentConnected": true, "runningTasksCount": "1", "pendingTasksCount": 0, "hostIpAddress": "10.0.3.224" }, { "containerInstanceId": "df65caa34dfe41059ae6cc3acce2327c", "instanceId": "mi-05725ecc826497835", "status": "ACTIVE", "agentConnected": true, "runningTasksCount": "1", "pendingTasksCount": 0, "hostIpAddress": "10.0.1.168" }, { "containerInstanceId": "aa270abfbbe54b91bb476c097b89a252", "instanceId": "mi-0837d7897b4886ff0", "status": "ACTIVE", "agentConnected": true, "runningTasksCount": "2", "pendingTasksCount": 0, "hostIpAddress": "10.0.2.73" } ] ``` --- ### Step 3 - Provision the EventBridge, SQS and Lambda Function ``` # AWS Account ID are masked as ************ Setting Target Group Tags ------------------------ DONE Listing Current Target Group Tags ------------------------ arn:aws:ecs:ap-east-1:************:service/ECSA-Demo-Cluster/Service-DemoApp1 { "tags": [ { "key": "ecs-a.lbName", "value": "arn:aws:elasticloadbalancing:ap-east-1:************:targetgroup/ECSA-Demo-Cluster-TargetGroup-0/fdfacc0652446c11" } ] } arn:aws:ecs:ap-east-1:************:service/ECSA-Demo-Cluster/Service-DemoApp2 { "tags": [ { "key": "ecs-a.lbName", "value": "arn:aws:elasticloadbalancing:ap-east-1:************:targetgroup/ECSA-Demo-Cluster-TargetGroup-1/e6162b3123cbaa66 arn:aws:elasticloadbalancing:ap-east-1:************:targetgroup/ECSA-Demo-Cluster-TargetGroup-2/ae7a33533a90d745" } ] } ``` ###### Verification and post-configuration ``` # AWS Account ID are masked as ************ Target Group Health ------------------------ arn:aws:elasticloadbalancing:ap-east-1:************:targetgroup/ECSA-Demo-Cluster-TargetGroup-0/fdfacc0652446c11 arn:aws:elasticloadbalancing:ap-east-1:************:targetgroup/ECSA-Demo-Cluster-TargetGroup-1/e6162b3123cbaa66 arn:aws:elasticloadbalancing:ap-east-1:************:targetgroup/ECSA-Demo-Cluster-TargetGroup-2/ae7a33533a90d745 URL ------------------------ http://ECSA-SvcDisc-ALB-OnPremLB-678673162.ap-east-1.elb.amazonaws.com:8080 http://ECSA-SvcDisc-ALB-OnPremLB-678673162.ap-east-1.elb.amazonaws.com:8081 http://ECSA-SvcDisc-ALB-OnPremLB-678673162.ap-east-1.elb.amazonaws.com:8082 ``` --- ### Update ECS Service Desired Count and Observe the Registered Targets in ALB Target Groups ``` # AWS Account ID are masked as ************ { "serviceArn": "arn:aws:ecs:ap-east-1:************:service/ECSA-Demo-Cluster/Service-DemoApp1", "deployments": { "id": "ecs-svc/2474979950726421586", "status": "PRIMARY", "taskDefinition": "arn:aws:ecs:ap-east-1:************:task-definition/DemoApp1:21", "desiredCount": 2, "pendingCount": 0, "runningCount": 2, "failedTasks": 0, "createdAt": "2023-05-23T00:52:52.802000+08:00", "updatedAt": "2023-05-23T01:44:01.662000+08:00", "launchType": "EXTERNAL", "rolloutState": "COMPLETED", "rolloutStateReason": "ECS deployment ecs-svc/2474979950726421586 completed." } } { "serviceArn": "arn:aws:ecs:ap-east-1:************:service/ECSA-Demo-Cluster/Service-DemoApp2", "deployments": { "id": "ecs-svc/7567762855939340968", "status": "PRIMARY", "taskDefinition": "arn:aws:ecs:ap-east-1:************:task-definition/DemoApp2:18", "desiredCount": 6, "pendingCount": 0, "runningCount": 6, "failedTasks": 0, "createdAt": "2023-05-23T00:52:54.560000+08:00", "updatedAt": "2023-05-23T01:43:44.789000+08:00", "launchType": "EXTERNAL", "rolloutState": "COMPLETED", "rolloutStateReason": "ECS deployment ecs-svc/7567762855939340968 completed." } } ``` ###### Verification and post-configuration ``` # AWS Account ID are masked as ************ Target Group Health ------------------------ arn:aws:elasticloadbalancing:ap-east-1:************:targetgroup/ECSA-Demo-Cluster-TargetGroup-0/fdfacc0652446c11 { "target": "10.0.3.224:32768", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.2.73:32770", "targetHealth": { "state": "healthy", "reason": null } } arn:aws:elasticloadbalancing:ap-east-1:************:targetgroup/ECSA-Demo-Cluster-TargetGroup-1/e6162b3123cbaa66 { "target": "10.0.3.224:32772", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.1.168:32770", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.2.73:32771", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.2.73:32768", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.1.168:32768", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.3.224:32770", "targetHealth": { "state": "healthy", "reason": null } } arn:aws:elasticloadbalancing:ap-east-1:************:targetgroup/ECSA-Demo-Cluster-TargetGroup-2/ae7a33533a90d745 { "target": "10.0.3.224:32771", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.3.224:32769", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.1.168:32771", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.1.168:32769", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.2.73:32772", "targetHealth": { "state": "healthy", "reason": null } } { "target": "10.0.2.73:32769", "targetHealth": { "state": "healthy", "reason": null } } URL ------------------------ http://ECSA-SvcDisc-ALB-OnPremLB-678673162.ap-east-1.elb.amazonaws.com:8080 http://ECSA-SvcDisc-ALB-OnPremLB-678673162.ap-east-1.elb.amazonaws.com:8081 http://ECSA-SvcDisc-ALB-OnPremLB-678673162.ap-east-1.elb.amazonaws.com:8082 ``` ``` Node.js backend: Hello! from Service-DemoApp1|container0|10.0.2.73:32770 arn:aws:ecs:ap-east-1:************:container/ECSA-Demo-Cluster/a3578bfe19c34de5aae679caab599fdc/8cd31569-491c-4d70-b13c-1d1842766c31 commit c3e96da ``` ``` Node.js backend: Hello! from Service-DemoApp1|container0|10.0.3.224:32768 arn:aws:ecs:ap-east-1:************:container/ECSA-Demo-Cluster/f049c03808114a3f8fddd35d67873cb0/36013772-7b44-48f3-a2b4-81b6557a26ef commit c3e96da ``` --- ### Highlight of Required Modification for On-Premises Load Balancer --- ### Cleaning up