【问题标题】:AWS boto3. How do I launch EC2 instance into a given cluster?AWS boto3。如何将 EC2 实例启动到给定集群中?
【发布时间】:2020-12-04 10:16:53
【问题描述】:

我正在尝试创建一个 ECS 集群,然后继续在该集群中启动一个 EC2 实例。然而这并没有发生。

我的代码:

ecs_client = boto3.client(
    'ecs',
    aws_access_key_id=access_key,
    aws_secret_access_key=secret_key,
    region_name=region
)

ec2_client = boto3.client(
    'ec2',
    aws_access_key_id=access_key,
    aws_secret_access_key=secret_key,
    region_name=region
)

response = ecs_client.create_cluster(
    clusterName=cluster_name
)

response = ec2_client.run_instances(
    # Use the official ECS image
    ImageId="ami-0128839b21d19300e",
    MinCount=1,
    MaxCount=1,
    InstanceType="t2.micro",
    IamInstanceProfile={
        "Name": "ecsInstanceRole"
    },
    UserData="#!/bin/bash \n echo ECS_CLUSTER=" + cluster_name + " >> /etc/ecs/ecs.config"
)

ecsInstanceRole

根据我的阅读,UserData 应该可以实现这一点,但目前还不行。

【问题讨论】:

  • 到底是什么问题?有任何错误信息吗?实例不启动,任何超时,UserData 不执行?
  • 没有错误信息。创建集群,启动实例,将用户数据写入实例上的 ecs.config 文件,但显然没有执行,因为实例没有出现在集群中
  • 您的实例是否可以访问互联网?

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


【解决方案1】:

我尝试复制您在us-east-1 中发出的问题,但您的boto3 代码工作 正常。我在创建集群并使用您的 boto3 脚本向该集群启动实例时没有问题。默认情况下,您的代码将在默认 VPC 中启动一个实例。

因此,故障必须在所提供代码之外。可能的情况是默认 VPC 被误解、对ecsInstanceRole 角色权限的自定义更改或缺少与 ECS 服务的连接

【讨论】:

    猜你喜欢
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2017-09-24
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多