Amazon cloudformation 启动时引导EC2实例以安装awslogs

Amazon cloudformation 启动时引导EC2实例以安装awslogs,amazon-cloudformation,Amazon Cloudformation,我正在尝试将以下脚本实现到Launchtemplate中,以启动已安装并准备好AWSLOG的EC2实例: UserData: "Fn::Base64": !Sub >- #!/bin/bash -xe yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --region ${AWS::Region} --stack ${AWS::StackName

我正在尝试将以下脚本实现到Launchtemplate中,以启动已安装并准备好AWSLOG的EC2实例:

    UserData:
      "Fn::Base64": !Sub >-
          #!/bin/bash -xe
          yum install -y aws-cfn-bootstrap
          /opt/aws/bin/cfn-init -v --region ${AWS::Region} --stack ${AWS::StackName} --resource BastionHostLaunchtemplate --region ${AWS::Region}
          # Install the CloudWatch Logs agent
          yum -y install awslogs
          service awslogs start
          chkconfig awslogs on
但是,当我随后通过SSH连接到实例并进行检查时,我得到以下结果:

 [ec2-user@ip-172-16-47-249 ~]$ sudo service awslogsd status
 Redirecting to /bin/systemctl status awslogsd.service
 Unit awslogsd.service could not be found.
 [ec2-user@ip-172-16-47-249 ~]$
如何正确引导EC2实例


谢天谢地,现在,您应该使用CloudWatch代理,它已经取代了CloudWatch日志代理(
awslogs


请参阅:

这可能是由于cfn init上重复的
region
参数造成的吗?你真的在用AWS::CloudFormation::Init做任何事情吗?如果您尝试在新实例上逐个运行这些行,会发生什么情况?@tyron实际上是的,我需要AWS::CloudFormation::Init,我想将EFS存储装载到实例中,但想逐步进行设置-因此现在删除了元数据部分..您是否有一个“已测试”的脚本,我可以使用UserData安装它?谢谢你提前用安装脚本更新了答案。谢谢;我是否也应该添加以下内容:
服务awslogs启动chkconfig awslogs on
或者这是否也仅适用于旧版本;如果有,是否有新版本?我要确保的是,如果实例重新启动,服务将启动并重新启动。谢天谢地,我的代码(上面)的最后一行显然配置并启动了代理。您不应该使用过时的
awslogs
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm

yum install amazon-cloudwatch-agent.rpm

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:configuration-file-path -s