6

如果我有一个使用包含要执行的脚本块的 UserData 块的 AWS CloudFormation 模板,例如:

"UserData": {
    "Fn::Base64": {
        "Fn::Join": [
            "",
            [
                "#!/bin/bash\n",
                "apt-get update\n",
                "apt-get -y upgrade\n",
            ]
        ]
    }
}

创建实例后,

  1. 我假设这个脚本块将被保存在某个地方执行?
  2. 如果是这样,我在哪里可以在 EC2 实例上找到此脚本?
  3. 堆栈创建成功后,AWS 会删除此临时脚本吗?

我在文档中找不到他们提到的内容。

谢谢

4

3 回答 3

4

实例的用户数据可供实例上的任何进程在此位置检索:

http://169.254.169.254/latest/user-data

DNS 名称“instance-data”解析为该 IP 地址,因此如果您相信 DNS 已启动,您还可以使用更容易记住的名称:

http://instance-data/latest/user-data

以下是亚马逊文档:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html

于 2013-11-01T04:41:03.693 回答
4

/var/lib/cloud/data/scripts/文件夹中

于 2014-09-05T11:05:02.670 回答
3
  1. 我假设这个脚本块将被保存在某个地方执行?

是的,Cloudfomration 存储您在“UserData”块中发送的任何用户数据。

  1. 如果是这样,我在哪里可以在 EC2 实例上找到此脚本?

你可以找到用户数据@/var/lib/cloud/instance/userdata.txt 和用户数据日志@/var/log/cloud-init-output.log

  1. 堆栈创建成功后,AWS 会删除此临时脚本吗?不,AWS 不会在创建堆栈后删除 userdata 脚本。您可以将其用于调试目的。

仅供参考:如果您使用自定义 AMI,您可以看到原始实例用户数据和当前用户数据也在/var/lib/cloud/instances/*. 看起来 AWS 从未删除用户数据历史记录。

希望这有助于基本的理解。

于 2017-03-09T12:50:51.577 回答