Amazon web services 如何在ecs_任务定义中向ansible注册AWS ECR映像?
我想基于在Amazon web services 如何在ecs_任务定义中向ansible注册AWS ECR映像?,amazon-web-services,ansible,amazon-ecs,Amazon Web Services,Ansible,Amazon Ecs,我想基于在aws ecr服务中注册的imgae,使用ansible创建一个ecs\u任务定义,如下所示: - name: Create task definition ecs_taskdefinition: family: my_family containers: - name: my_name essential: true image: "XXXXXXXX.dkr.ecr.us-central-1.amazonaws.com/image_
aws ecr
服务中注册的imgae,使用ansible
创建一个ecs\u任务定义,如下所示:
- name: Create task definition
ecs_taskdefinition:
family: my_family
containers:
- name: my_name
essential: true
image: "XXXXXXXX.dkr.ecr.us-central-1.amazonaws.com/image_name"
portMappings:
- containerPort: 80
hostPort: 80
cpu: 512
memory: 1024
state: present
但是,它返回以下错误:
调用时发生错误(ClientException)
RegisterTaskDefinition操作:Fargate要求任务定义
具有执行角色ARN以支持ECR映像
尝试为ECR的远门创建IAM角色,如中所述
您可以使用taskrolern
参数为任务指定IAM角色。为任务指定IAM角色时,其容器可以使用最新版本的AWS CLI或SDK向与该角色关联的IAM策略中指定的AWS服务发出API请求。有关更多信息,请参阅《Amazon弹性容器服务开发人员指南》中的
尝试为ECR的远门创建IAM角色,如中所述
您可以使用taskrolern
参数为任务指定IAM角色。为任务指定IAM角色时,其容器可以使用最新版本的AWS CLI或SDK向与该角色关联的IAM策略中指定的AWS服务发出API请求。有关更多信息,请参阅《Amazon弹性容器服务开发人员指南》中的
我找到了解决方案,以便添加任务角色和执行角色:
- name: Create task definition
ecs_taskdefinition:
family: my_family
execution_role_arn: arn:aws:iam::XXXXXXXX:role/ecsTaskExecutionRole
task_role_arn: arn:aws:iam::XXXXXXXX:role/ecsTaskExecutionRole
containers:
- name: my_name
essential: true
image: "XXXXXXXX.dkr.ecr.us-central-1.amazonaws.com/image_name"
portMappings:
- containerPort: 80
hostPort: 80
cpu: 512
memory: 1024
state: present
您必须提前创建的角色如下所述:
我找到了解决方案,以便添加任务角色和执行角色:
- name: Create task definition
ecs_taskdefinition:
family: my_family
execution_role_arn: arn:aws:iam::XXXXXXXX:role/ecsTaskExecutionRole
task_role_arn: arn:aws:iam::XXXXXXXX:role/ecsTaskExecutionRole
containers:
- name: my_name
essential: true
image: "XXXXXXXX.dkr.ecr.us-central-1.amazonaws.com/image_name"
portMappings:
- containerPort: 80
hostPort: 80
cpu: 512
memory: 1024
state: present
您必须提前创建的角色如下所述:
如何将其包含在ansible脚本中?我也很感兴趣。如何将其包含在ansible脚本中?我也很感兴趣。你找到解决方案了吗?@Kyu96由solution BelowId发布你找到解决方案了吗?@Kyu96由solution belowI发布试图复制此方案。首先创建一个ECS集群。如图所示创建任务定义,然后创建一个使用任务定义和集群(理论上)运行docker映像的服务。Ansible脚本完成时没有错误,但容器未运行。在服务事件中,我看到:service testservice无法放置任务,因为没有容器实例满足其所有要求。原因:在群集中未找到容器实例代码>。知道哪里出了问题吗?@Kyu96:完成任务后,你需要使用ecs_服务运行服务。我用了launch_类型:“FARGATE”你介意分享你的Ansible脚本吗?我正在尝试做同样的事情,但我一直遇到问题:@Kyu96我看到的唯一区别是我使用的是taskDefinitionArn,而不是字符串。因此,将register:my_task_definition添加到任务中,并使用:task_definition:“{{my_task_definition.taskdefinition.taskDefinitionArn}”我不确定我是否做得对。尝试注册时:由于未提供网络配置而失败:我真的必须事先手动创建所有安全组等吗/我试着复制这个。首先创建一个ECS集群。如图所示创建任务定义,然后创建一个使用任务定义和集群(理论上)运行docker映像的服务。Ansible脚本完成时没有错误,但容器未运行。在服务事件中,我看到:service testservice无法放置任务,因为没有容器实例满足其所有要求。原因:在群集中未找到容器实例代码>。知道哪里出了问题吗?@Kyu96:完成任务后,你需要使用ecs_服务运行服务。我用了launch_类型:“FARGATE”你介意分享你的Ansible脚本吗?我正在尝试做同样的事情,但我一直遇到问题:@Kyu96我看到的唯一区别是我使用的是taskDefinitionArn,而不是字符串。因此,将register:my_task_definition添加到任务中,并使用:task_definition:“{{my_task_definition.taskdefinition.taskDefinitionArn}”我不确定我是否做得对。尝试注册时:由于未提供网络配置而失败:我真的必须事先手动创建所有安全组等吗/