Amazon web services Cloudformation堆栈未从EC2启动模板中的userdata接收信号

Amazon web services Cloudformation堆栈未从EC2启动模板中的userdata接收信号,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,在我的模板中,我正在设置一个使用 在本节中,我对该实例做了一个规定,效果很好 但是,当我执行该命令时,该命令是成功的(退出代码为0),但Cloudformation堆栈从未接收到它,并且堆栈创建/更新失败,当前批的接收1个资源信号失败。每个资源信号超时都被视为故障。 当我检查Cloudtrail时,我看到SignalResourceAPI调用已完成,用SUCCESS向正确的堆栈和资源发送信号(但是responseElements为null) 摘自我的Cloudformation模板: Resou

在我的模板中,我正在设置一个使用

在本节中,我对该实例做了一个规定,效果很好

但是,当我执行该命令时,该命令是成功的(退出代码为0),但Cloudformation堆栈从未接收到它,并且堆栈创建/更新失败,当前批的
接收1个资源信号失败。每个资源信号超时都被视为故障。

当我检查Cloudtrail时,我看到
SignalResource
API调用已完成,用
SUCCESS
向正确的堆栈和资源发送信号(但是
responseElements
null

摘自我的Cloudformation模板:

Resources:
  MyLaunchTemplate:
      Type: AWS::EC2::LaunchTemplate
      Metadata:
        'AWS::CloudFormation::Init':
          configSets:
            # lots-o-stuff to be done by cfn-init
      Properties:
        LaunchTemplateData:
          # Remove other attributes for brevity
          UserData:
            Fn::Base64:
              !Sub |
                #!/bin/bash -x
                yum update -y
                # gather ENI
                /opt/aws/bin/cfn-init -c install \
                  --stack ${AWS::StackName} \
                  --resource MyLaunchTemplate \
                  --region ${AWS::Region}
                /opt/aws/bin/cfn-signal -e $? \
                  --stack ${AWS::StackName} \
                  --resource MyAsg \
                  --region ${AWS::Region}
                echo $?
        LaunchTemplateName: my-launch-template
  MyAsg:
    Type: AWS::AutoScaling::AutoScalingGroup
      CreationPolicy:
        AutoScalingCreationPolicy:
          MinSuccessfulInstancesPercent: 100
        ResourceSignal:
          Count: 1
          Timeout: PT10M
      UpdatePolicy:
        AutoScalingReplacingUpdate:
          WillReplace: true
      Properties:
        # Remove other attributes for brevity
        LaunchTemplate:
          LaunchTemplateId: !Ref MyLaunchTemplate
          Version: !GetAtt MyLaunchTemplate.LatestVersionNumber

你知道我在这里遗漏了什么吗?

看来Amazon Linux AMI版本不是最新版本,而且实例上没有安装
cfn signal
脚本。使用包引导EC2实例

UserData
部分中添加
yum安装-y aws cfn引导

另一个可能的原因可能是属性的
Timeout
属性值太低。在
cfn信号
脚本向AWS云信息资源发送信号之前,请确保该值足够高,以便运行任务


如果仍然不起作用,请检查此问题。

亚马逊Linux AMI版本似乎不是最新版本,并且实例上未安装
cfn signal
脚本。使用包引导EC2实例

UserData
部分中添加
yum安装-y aws cfn引导

另一个可能的原因可能是属性的
Timeout
属性值太低。在
cfn信号
脚本向AWS云信息资源发送信号之前,请确保该值足够高,以便运行任务


如果它仍然不起作用,那么一定要检查这个问题。

我最近也遇到过类似的问题。由于某种原因,cfn信号似乎无法与启动模板配合使用。出于测试目的,我将启动模板更改为启动配置,cfn信号完全正常工作。AWS不支持启动模板的原因很奇怪。

我最近也遇到了类似的问题。由于某种原因,cfn信号似乎无法与启动模板配合使用。出于测试目的,我将启动模板更改为启动配置,cfn信号完全正常工作。AWS不支持启动模板的原因很奇怪。

超时时间在10分钟内就可以了(信号在实例启动后2分钟内发送,如
/var/log/cloud init output.log
所示)。我确认我使用的是最新的Amazon Linux 2 AMI,并在Cloudtrail日志中看到发送者是
“userAgent”:“CfnTools/1.4-31(Linux-4.14.146-120.181.amzn2.x86_64-x86_64-with-glibc2.2.5)python/2.7.16”
超时时间为10分钟(该信号在实例启动后2分钟内发送,如
/var/log/cloud init output.log
所示)。我确认我使用的是最新的Amazon Linux 2 AMI,并在Cloudtrail日志中看到发送者是
“userAgent”:“CfnTools/1.4-31(Linux-4.14.146-120.181.amzn2.x86_64-with-glibc2.2.2.5)python/2.7.16”