Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在ecs_任务定义中向ansible注册AWS ECR映像?_Amazon Web Services_Ansible_Amazon Ecs - Fatal编程技术网

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}”我不确定我是否做得对。尝试注册时:由于未提供网络配置而失败:我真的必须事先手动创建所有安全组等吗/