😎 好的,这是关于 AWS ECS 如何使用 Task Definition 定义容器运行配置的 HTML 文本:
Task Definition 是 AWS ECS(Elastic Container Service)的核心概念之一,它本质上是一个 JSON 格式的蓝图,用于描述如何在 ECS 集群中运行容器。你可以把它想象成一个菜谱,告诉 ECS 你需要哪些食材(镜像)、如何烹饪(运行命令)、以及在哪里上菜(端口映射)等等。
nginx:latest。awslogs,以便将日志发送到 CloudWatch Logs。awsvpc (推荐, 每个任务有自己的 ENI), bridge, host, 和 none。
EC2 和 FARGATE。
requiresCompatibilities 包含 FARGATE,则需要指定 Task 的 CPU 单元数量。
requiresCompatibilities 包含 FARGATE,则需要指定 Task 的内存限制(MiB)。
你可以使用以下几种方式创建 Task Definition:
aws ecs register-task-definition --family my-task-definition --container-definitions file://container-definitions.json
Resources:
MyTaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
Family: my-task-definition
ContainerDefinitions:
- Name: my-container
Image: nginx:latest
Memory: 512
PortMappings:
- ContainerPort: 80
HostPort: 8080
{
"family": "my-web-app",
"taskRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
"executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
"networkMode": "awsvpc",
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "256",
"memory": "512",
"containerDefinitions": [
{
"name": "web-container",
"image": "nginx:latest",
"portMappings": [
{
"containerPort": 80,
"hostPort": 80
}
],
"environment": [
{
"name": "MY_ENV_VAR",
"value": "my_value"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/my-web-app",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "web"
}
}
}
]
}
希望这些信息能够帮助你理解 AWS ECS Task Definition 的使用方法! 🎉