下面是应用程序的ECS任务定义:
SomeappTaskDefinition:
Type: "AWS::ECS::TaskDefinition"
Properties:
ContainerDefinitions:
- Name: someapp
Image: someaccounthub/someapp
Memory: 450
Environment:
- Name: DJANGO_SETTINGS_MODULE
Value: someapp.settings.release
- Name: MYSQL_HOST
Value: { "Fn::GetAtt": ["DbInstance", "Endpoint.Address"] }
- Name: MYSQL_USER
Value: { "Ref": "DbUsername" }
- Name: MYSQL_PASSWORD
Value: { "Ref": "DbPassword" }
MountPoints:
- ContainerPath: /var/www/someapp
SourceVolume: webroot
Command:
- uwsgi
- "--socket /var/www/someapp/someapp.sock"
- "--chmod-socket=666"
- "--module someapp.wsgi"
- "--master"
- "--die-on-term"
- Name: nginx
Image: someaccounthub/someapp-nginx
Memory: 300
PortMappings:
- ContainerPort: "8000"
HostPort: "8000"
MountPoints:
- ContainerPath: /var/www/someapp
SourceVolume: webroot
Volumes:
- Name: webroot
Host:
SourcePath: /ecs/webroot它是在ECS优化的ami实例(EC2)上启动的。Docker守护进程正在ECS优化的ami实例(EC2)中运行。
不包括创建ECS服务(AWS::ECS::Service)和ECS集群(AWS::ECS::Cluster)的AWS::ECS::Service代码,因为此查询不需要此代码。
ECS服务- AWS::ECS::Service资源类型
ECS实例- AWS::EC2::Instance资源类型
1) ECS服务是否负责将新任务定义部署到ECS实例上?通过与ECS实例中运行的ECS代理对话。
2)运行在ECS实例中的ECS代理是否负责停止并启动现有运行的ECS任务(SomeappTaskDefinition)?并告知该服务取决于ECS服务。
3)运行在ECS实例中的ECS代理是否负责在ECS实例中运行对码头守护进程的请求,以从码头回购中提取码头映像someaccthub/someapp?在开始执行ECS任务时
发布于 2019-12-29 04:00:28
1)是的,您的任务定义配置了适当的ECR存储库版本。集群下的服务负责确保正确的任务在EC2实例中启动和运行。

2)是的,根据集群的定义,亚马逊/也是EC2上的一个码头容器,它将确保在您的EC2上运行健康的任务(即码头容器)。
3)不完全,代理只会确保保持码头集装箱的相关任务定义,服务是在ECR内配置的。而不是拿起任何其他的储存库。只有当您更新群集的服务时,它才会更新。
ecs代理负责拉动和运行。但是,假设您的任务定义版本为1,并且任务定义的版本1配置了一个停靠者映像(例如版本1),并且您的ECS集群配置了一个带有任务定义v1的服务。在这种情况下,代理只会确保任务定义v1的拉动和运行。如果希望由代理管理不同的码头映像,请执行以下操作。您必须相应地更新您的定义和服务。
https://stackoverflow.com/questions/59516017
复制相似问题