AWS::CloudFormation::Init yum 更新失败

AWS::CloudFormation::Init yum update fails

有一点问题,所以我的 json 文件的一部分我想运行一个命令来更新所有包,以下命令是:

        "commands" : {
          "update_yum_packages" : {
            "command" : "sudo yum update -y"
          }
        },

现在,如果我从我的 json 文件中删除它,堆栈将毫无问题地创建,但是当我添加命令时,我从 AWS::CloudFormation::WaitCondition。我已将超时设置为 1200 这里有什么明显的错误吗?

一旦我 ssh 到新实例,我就可以正常运行命令。

您可以查看 /var/log/cloud-init-output.log.

中的日志文件

你会看到它抱怨 运行没有 tty 的 sudo 命令:

cloud-init-output.log:sudo: sorry, you must have a tty to run sudo

用户数据是运行作为root,你不需要使用"sudo"。而使用sudo会失败,使cloud-init进程失败。

所以只需使用:

    "commands" : {
      "update_yum_packages" : {
        "command" : "yum update -y"
      }
    },

这个 yaml 应该做同样的事情,你不必直接调用 sudo

#cloud-config
---
package_update: true
package_upgrade: true
package_reboot_if_required: true