我有一个EC2实例,我正在创建一个非常简单的用户数据脚本:
#!/bin/bash
aws s3 cp s3://<bucket-name>/myconf.conf /etc/httpd/conf.d/myconf.conf
该实例具有关联的IAM角色,允许访问存储桶,如果我手动ssh到正在运行的实例,我可以执行命令将文件从S3复制到本地文件系统。
但是,如果我删除该文件,请停止该实例,添加用户数据并再次启动该实例 - 然后当我重新登录时,该文件尚未从S3复制下来。
有什么想法吗?
由于
答案 0 :(得分:1)
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html:
重要强>
用户数据脚本和cloud-init指令仅在启动实例的第一个引导周期内运行。
答案 1 :(得分:1)
作为Amazon EC2实例附带的元数据的一部分,用户数据可用于安装包或脚本。默认情况下,用户数据在第一次启动时执行一次。
解决强>
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash /bin/echo "Hello World." >> /tmp/sdksdfjsdlf --//
选择Actions,Instance State,然后选择Start。
在cloud-init阶段完成后,您所包含的用户数据命令应该已在实例上执行。