diff --git a/knowledge base/cloud computing/aws/ecs.md b/knowledge base/cloud computing/aws/ecs.md index f1758db..7d700ad 100644 --- a/knowledge base/cloud computing/aws/ecs.md +++ b/knowledge base/cloud computing/aws/ecs.md @@ -259,21 +259,22 @@ One can assign a **default** capacity provider strategy to a cluster. ```json { - "clusterName": "some-cluster", - "capacityProviders": [ - "FARGATE", - "FARGATE_SPOT" - ], - "defaultCapacityProviderStrategy": [ - { - "capacityProvider": "FARGATE_SPOT", - "weight": 100, - }, - { - "capacityProvider": "FARGATE", - "weight": 0, - } - ], + "clusterName": "some-cluster", + "capacityProviders": [ + "FARGATE", + "FARGATE_SPOT" + ], + "defaultCapacityProviderStrategy": [ + { + "capacityProvider": "FARGATE_SPOT", + "weight": 100 + }, + { + "capacityProvider": "FARGATE", + "weight": 0 + } + ] +} ``` @@ -289,23 +290,23 @@ ignored. ```json { - "serviceName": "some-ecs-service", - … , - "capacityProviderStrategy": [ - { - "capacityProvider": "FARGATE", - "weight": 1, - "base": 1 - }, - { - "capacityProvider": "FARGATE_SPOT", - "weight": 2 - }, - { - "capacityProvider": "some-custom-ec2-capacity-provider", - "weight": 0 - } - ] + "serviceName": "some-ecs-service", + … , + "capacityProviderStrategy": [ + { + "capacityProvider": "FARGATE", + "weight": 1, + "base": 1 + }, + { + "capacityProvider": "FARGATE_SPOT", + "weight": 2 + }, + { + "capacityProvider": "some-custom-ec2-capacity-provider", + "weight": 0 + } + ] } ``` @@ -354,18 +355,17 @@ Provider 2 is `FARGATE_SPOT`, with weight of `3`. ```json { - … - "capacityProviderStrategy": [ - { - "capacityProvider": "FARGATE", - "weight": 1, - "base": 1 - }, - { - "capacityProvider": "FARGATE_SPOT", - "weight": 3 - } - ], + … + "capacityProviderStrategy": [ + { + "capacityProvider": "FARGATE", + "weight": 1 + }, + { + "capacityProvider": "FARGATE_SPOT", + "weight": 3 + } + ] } ``` @@ -382,42 +382,42 @@ Percentage per provider:
More advanced example -Provider 1 is `FARGATE`, with a weight of `1` and base of `2`.
+Provider 1 is `FARGATE`, with a weight of `1`.
Provider 2 is `FARGATE_SPOT`, with a weight of `19`.
-Provider 3 is `some-custom-ec2-capacity-provider`, with a weight of `0`. +Provider 3 is `some-custom-ec2-capacity-provider`, with a weight of `0` and base of `2`. ```json { - … - "capacityProviderStrategy": [ - { - "capacityProvider": "FARGATE", - "weight": 1, - "base": 2 - }, - { - "capacityProvider": "FARGATE_SPOT", - "weight": 19 - }, - { - "capacityProvider": "some-custom-ec2-capacity-provider", - "weight": 0 - } - ] + … + "capacityProviderStrategy": [ + { + "capacityProvider": "FARGATE", + "weight": 1 + }, + { + "capacityProvider": "FARGATE_SPOT", + "weight": 19 + }, + { + "capacityProvider": "some-custom-ec2-capacity-provider", + "base": 2, + "weight": 0 + } + ] } ``` -`FARGATE` will maintain tasks just for having the `base` value between the bunch.
-It will get at least 2 of them since the `base` value is `2`. +`some-custom-ec2-capacity-provider` will run tasks just for being the provider with the `base` value defined.
+Aside assigning it the 2 base tasks as per configuration, the scheduler will just ignore +`some-custom-ec2-capacity-provider` due to its weight being `0`. -`some-custom-ec2-capacity-provider` will just be ignored during scheduling due to its weight being `0`.
Sum of the remaining weights: `1 + 19 = 20`.
Percentage per provider: - `FARGATE`: `1 / 20 = 0.05`. - `FARGATE_SPOT`: `19 / 20 = 0.95`. -`FARGATE` will receive 5% of the remaining tasks, while `FARGATE_SPOT` will receive 95% of them. +`FARGATE` will receive 5% of the tasks over the base, while `FARGATE_SPOT` will receive 95% of them.
@@ -455,24 +455,24 @@ This warning is sent as a task state change event to EventBridge and as a SIGTER ```json { - "version": "0", - "id": "9bcdac79-b31f-4d3d-9410-fbd727c29fab", - "detail-type": "ECS Task State Change", - "source": "aws.ecs", - "account": "111122223333", - "resources": [ - "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6f1cebef" - ], - "detail": { - "clusterArn": "arn:aws:ecs:us-east-1:111122223333:cluster/default", - "createdAt": "2016-12-06T16:41:05.702Z", - "desiredStatus": "STOPPED", - "lastStatus": "RUNNING", - "stoppedReason": "Your Spot Task was interrupted.", - "stopCode": "SpotInterruption", - "taskArn": "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6fEXAMPLE", - ... - } + "version": "0", + "id": "9bcdac79-b31f-4d3d-9410-fbd727c29fab", + "detail-type": "ECS Task State Change", + "source": "aws.ecs", + "account": "111122223333", + "resources": [ + "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6f1cebef" + ], + "detail": { + "clusterArn": "arn:aws:ecs:us-east-1:111122223333:cluster/default", + "createdAt": "2016-12-06T16:41:05.702Z", + "desiredStatus": "STOPPED", + "lastStatus": "RUNNING", + "stoppedReason": "Your Spot Task was interrupted.", + "stopCode": "SpotInterruption", + "taskArn": "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6fEXAMPLE", + … + } } ``` @@ -634,7 +634,7 @@ Tasks **must**: "fileSystemId": "fs-1234", "rootDirectory": "/path/to/my/data", "transitEncryption": "ENABLED", - "transitEncryptionPort": integer, + "transitEncryptionPort": 9076, "authorizationConfig": { "accessPointId": "fsap-1234", "iam": "ENABLED" @@ -764,7 +764,7 @@ Requirements: "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:eu-west-1:012345678901:key/abcdef01-2345-6789-abcd-ef0123456789" - }, + } ] } ``` @@ -783,8 +783,8 @@ Requirements: ```ts new aws.ecs.Service( - 'whatever', - { enableExecuteCommand: true, …, }, + 'whatever', + { enableExecuteCommand: true, …, }, ); ``` @@ -1077,14 +1077,11 @@ Procedure:
```json - containerDefinitions: [ - { - "name": "postgres", - "protocol": "tcp", - "containerPort": 5432, - }, - … - ] + containerDefinitions: [{ + "name": "postgres", + "protocol": "tcp", + "containerPort": 5432 + }] ```
@@ -1105,7 +1102,7 @@ Procedure: "dnsName": "pgsql" }] }] - }, + } ``` @@ -1166,7 +1163,7 @@ Procedure: ```json "serviceRegistries": [{ "registryArn": "arn:aws:servicediscovery:eu-west-1:012345678901:service/srv-uuf33b226vw93biy" - }], + }] ``` @@ -1311,16 +1308,16 @@ It **must** be a custom image equipped with the required output plugins if not. } }, { - "name": "log_router", - "essential": true, - "image": "amazon/aws-for-fluent-bit:latest", - "memoryReservation": 128, - "firelensConfiguration": { - "type": "fluentbit", - "options": { - "enable-ecs-log-metadata": "true" - } - } + "name": "log_router", + "essential": true, + "image": "amazon/aws-for-fluent-bit:latest", + "memoryReservation": 128, + "firelensConfiguration": { + "type": "fluentbit", + "options": { + "enable-ecs-log-metadata": "true" + } + } } ] } @@ -1351,13 +1348,13 @@ It **must** be a custom image equipped with the required output plugins if not. "logConfiguration": { "logDriver": "awsfirelens", "options": { - "Name": "loki", - "Host": "loki.example.org", - "Port": "3100", - "LogLevel": "info", - "Labels": "{job=\"nginx\", container=\"nginx\"}", - "tls": "off", - "remove_keys": "ecs_task_arn,ecs_cluster" + "Name": "loki", + "Host": "loki.example.org", + "Port": "3100", + "LogLevel": "info", + "Labels": "{job=\"nginx\", container=\"nginx\"}", + "tls": "off", + "remove_keys": "ecs_task_arn,ecs_cluster" } } }, @@ -1413,7 +1410,7 @@ The `fluentd-address` value is specified as a secret option as it may be treated "containerPort": 24224 } ] -}], +}] ``` ## Troubleshooting