AWS EC2实例用户数据bash脚本无法运行

时间:2016-09-07 15:46:19

标签: amazon-web-services amazon-ec2

我有一个EC2实例,我正在创建一个非常简单的用户数据脚本:

#!/bin/bash aws s3 cp s3://<bucket-name>/myconf.conf /etc/httpd/conf.d/myconf.conf

该实例具有关联的IAM角色,允许访问存储桶,如果我手动ssh到正在运行的实例,我可以执行命令将文件从S3复制到本地文件系统。

但是,如果我删除该文件,请停止该实例,添加用户数据并再次启动该实例 - 然后当我重新登录时,该文件尚未从S3复制下来。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

重要

用户数据脚本和cloud-init指令仅在启动实例的第一个引导周期内运行。

答案 1 :(得分:1)

作为Amazon EC2实例附带的元数据的一部分,用户数据可用于安装包或脚本。默认情况下,用户数据在第一次启动时执行一次。

解决

  • 在Amazon EC2控制台中,选择实例,操作,实例 状态,然后选择停止。
  • 选择“操作”,“实例设置”,然后选择“查看/更改用户数据”。
  • 以下示例是一个shell脚本,用于编写&#34; Hello World&#34;到一个文件 在/ tmp目录中。 复制并粘贴到“用户数据”字段,然后选择“保存”。
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阶段完成后,您所包含的用户数据命令应该已在实例上执行。