【问题标题】:How to run my own shell script inside user data in ec2 instance如何在 ec2 实例的用户数据中运行我自己的 shell 脚本
【发布时间】:2021-06-09 05:34:39
【问题描述】:

我有一个 shell 脚本,它从 s3 存储桶中复制文件,然后运行 ​​python 脚本,然后删除复制的文件。 这个文件panorama.sh 位于我的ec2 实例的/home/ubuntu 目录中。 我已将我的 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/sh
sh ./panorama.sh

但是这似乎不起作用,因为当我在 /var/log/cloud-init-output.log 中检查我的云监视日志时,我最终得到了这个

sh: 0: 无法打开 ./panorama.sh Cloud-init v. 20.4.1-0ubuntu1~18.04.1 在 2021 年 3 月 11 日星期四 08:31:38 +0000 运行“modules:final”。上升 17.05 秒。 2021-03-11 08:31:38,684 - cc_scripts_user.py [警告]:无法运行模块脚本-用户(/var/lib/cloud/instance/scripts 中的脚本) 2021-03-11 08:31:38,684 - util.py [警告]:运行模块脚本用户(

我尝试将 ls 放入用户数据中以查看当前目录中的文件。它似乎在同一个工作目录(/home/ubuntu)中。那么为什么它找不到我的shell脚本并执行它呢?

【问题讨论】:

    标签: python amazon-web-services shell amazon-s3 amazon-ec2


    【解决方案1】:

    用户数据不在/home/ubuntu 中执行,而是在根/ 中执行。所以你得先改成/home/ubuntu

    #!/bin/sh
    cd /home/ubuntu
    sh ./panorama.sh
    

    【讨论】:

    • 谢谢,这似乎有效。但是,我在 shell 脚本中的一个命令涉及将文件从 s3 存储桶复制到实例。此命令似乎没有执行并在日志中引发以下错误“致命错误:无法找到凭据”我该怎么办?
    • @akshayacharya 没问题。如果答案有帮助,我们将不胜感激。我建议为这个新问题提出新问题,并提供相关细节。但似乎您缺少具有 s3 权限的实例角色。
    猜你喜欢
    • 1970-01-01
    • 2019-03-13
    • 2014-02-04
    • 2016-10-14
    • 2022-01-23
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多