如何将使用自动缩放组和 ECS IAM 创建的 EC2 实例添加到 OpsWorks 堆栈?

How to add an EC2 instance created with autoscaling group and ECS IAM to OpsWorks stack?

我有一个 AWS ECS 集群,为了方便用户访问,我使用 OpsWorks 来获得它的 ssh 功能。为了即使实例因任何原因终止而始终保持堆栈正常运行,我依赖于使用特定 Launch ConfigurationEC2 Auto Scaling Group 并在 [= 上设置以下内容18=] 字段:

#!/bin/bash
# This works just fine!
echo ECS_CLUSTER=my-cluster-name >> /etc/ecs/ecs.config
# Given AWS CLI is not installed by default
yum install -y awscli
# This is copied and pasted from the OpsWorks' Register Instance Wizard
aws opsworks register --infrastructure-class ec2 --region us-east-1 --stack-id aaa-bbb-ccc-ddd --local

为了调试,我已经 set -x 到位并在注册工作之前给出了所有命令这里是关于特定命令输出的相关日志:

+ aws opsworks register --use-instance-profile --infrastructure-class ec2 --region us-east-1 --stack-id aaa-bbb-ccc-ddd --override-hostname abcdefgh --local
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 7800k  100 7800k    0     0  12.3M      0 --:--:-- --:--:-- --:--:-- 12.3M
opsworks-init: Initializing AWS OpsWorks environment
opsworks-init: Checking if OS is supported
opsworks-init: Running on supported OS
opsworks-init: Setup motd
opsworks-init: Executing: ln -sf --backup /etc/motd.opsworks-static /etc/motd
opsworks-init: Using assets bucket from environment: 'opsworks-instance-assets-us-east-1.s3.amazonaws.com'.
opsworks-init: Installing Ruby for the agent
opsworks-init: Executing: /tmp/opsworks-agent-installer.ggXxYyMmBBH/opsworks-agent-installer/opsworks-agent/bin/installer_wrapper.sh -r -R opsworks-instance-assets-us-east-1.s3.amazonaws.com

我在这里的印象是最后一条命令无声地失败了,因为我希望注册之后会更加冗长。

在确保所有 IAM 角色和安全组都已修改且一切看起来清晰且启动日志中没有显示明确错误后,实例将根本不会注册。我已经尝试按照此 Auto Scaling AWS OpsWorks instances 指南进行操作,但即使从那里提取了下面的代码(并且在尝试了许多变体之后)它也不会注册:

#!/bin/bash
sed -i'' -e 's/.*requiretty.*//' /etc/sudoers
pip install --upgrade awscli
/usr/bin/aws opsworks register --use-instance-profile --infrastructure-class ec2 --region us-east-1 --stack-id aaa-bbb-ccc-ddd --override-hostname $(tr -cd 'a-z' < /dev/urandom |head -c8) --local

为了将新实例注册到 OpsWorks 堆栈,我可能遗漏了什么线索?

非常感谢!

我遇到了类似的问题,更新了opsworks agent的版本:

Stack-> Stack Settings-> Edit-> OpsWorks Agent version-> Use latest version

经过这个小改动后,一切正常