AWS ECS容器实例

时间:2015-06-17 11:05:06

标签: amazon-web-services amazon-ec2 amazon-ecs

我尝试使用Ansible EC2模块启动ECS容器实例。

我的剧本如下。

- name: Launch ECS Container Instance
  ec2:
    key_name: "{{ ec2_keyname }}"
    instance_type: t2.micro
    image: ami-ca01d8ca
    wait: yes
    group: "{{ ec2_security_group }}"
    region: ap-northeast-1
    exact_count: 1
    vpc_subnet_id: "{{ ec2_subnet_id }}"
    count_tag:
      docker-registry: 1
    instance_profile_name: ecsInstanceRole
    instance_tags:
      Name: ECS_docker-registry
      docker-registry: 1
    assign_public_ip: yes

结果,发起了两个实例;其中一个按照我的意图配置,但另一个有以下我不打算设置的标签。

  • AWS:自动缩放:组名
  • AWS:cloudformation:逻辑-ID
  • AWS:cloudformation:堆栈ID
  • AWS:cloudformation:堆栈名称

此外,我可以在ECS仪表板上找到这两个实例。

enter image description here

但它只能在群集中显示"默认",对其他群集不可见。

我真正想做的事情是;

  • 启动ECS容器实例
  • 将容器实例注册到群集

如果我能用aws-cli完成上述过程会更好,但首先我应该理解容器实例的奇怪行为并手动完成。

3 个答案:

答案 0 :(得分:4)

要在ECS群集中注册EC2容器实例,您有以下几个选项:

  1. 使用特殊的 amazon-ecs优化 AMI手动启动带有awscli或AWS控制台的自定义用户数据的EC2实例(了解有关Launching an Amazon ECS Container Instance的更多信息):

        #!/bin/bash    
        echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
    
  2. 使用AWS OpsWorks并创建自AWS OpsWorks Supports Managing Amazon ECS Container Instances以来的 ECS群集层。在这种情况下,OpsWoks将层中的任何EC2实例与特定的ECS群集一起使用。

  3. 几乎没有限制:

    1. 每个OpsWorks堆栈只能有一个ECS群集层
    2. 每个EC2实例只能分配给一个ECS群集

答案 1 :(得分:1)

您也可以手动将EC2实例添加到ECS群集:

  1. 使用以下行在/etc/ecs/ecs.config中创建一个文件:

    ECS_CLUSTER={{ name }}
    

    其中{{name}}是您想要的群集名称。

  2. 安装ecs代理程序(程序包名称为" ecs-init")并启动它。
  3. 如果群集尚未存在,该实例将创建群集。

答案 2 :(得分:0)

您可以尝试使用ec2模块的user_data字段。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

在ecs代理启动之前,您需要在ecs.config中拥有以下内容。

  

#!/斌/庆典
      echo ECS_CLUSTER = your_cluster_name>> /etc/ecs/ecs.config