【问题标题】:ec2 user data script is only partialy excecutedec2 用户数据脚本仅部分执行
【发布时间】:2019-03-24 12:39:27
【问题描述】:

我正在使用带有 ubuntu 18 ami 的 ec2 实例, 用户数据脚本如下:

#!/bin/bash
sudo apt-get update -y
sudo apt-get install python-pip -y
sudo apt-get install awscli -y
mkdir /home/ubuntu/dir
aws s3 sync s3://art-meta-data ./art-meta-data

它只是部分执行的脚本,它安装了 pip,执行了 apt-get 更新,安装了 awscli,但不同步存储桶,也不创建目录。

我没有收到任何错误(也许我的位置不对?)当我尝试创建目录并通过 ssh 同步 bucker 时,它运行良好,这意味着 s3 权限和 os 权限很好.

这可能是什么问题?我还应该检查什么?

编辑: 我找到了this - 解释了每次停止和启动实例时如何让脚本运行,但没有解释为什么添加的元编码会改变任何东西。谁能指出我为什么这个脚本与常规 bash 脚本的工作方式不同的一些参考?

【问题讨论】:

  • 你认为./art-meta-data会去哪里?我猜它会在root 用户或/root 的主目录中。它是在那里创建的吗?
  • 作为用户数据输入的脚本以 root 用户身份执行。创建的任何文件都将归 root 所有。
  • “当我尝试创建目录并通过 ssh 同步 bucker 时,它可以完美运行” - 这是什么意思?您是在实例上还是在本地机器上运行脚本?另一个需要注意的重点是,如果没有要同步的内容,您将不会收到任何输出。
  • @thebeancounter,检查 /var/log/cloud-init-output.log 中的 cloud-init 输出日志文件,并在输出中查找错误消息。
  • 我将检查同步并更正为完整路径,我无法解释 mkdir 问题,这是完整路径,不会创建任何目录。知道那里可能出了什么问题吗?

标签: amazon-web-services ubuntu amazon-s3 amazon-ec2 user-data


【解决方案1】:

最好在同步命令上描述完整路径,以免创建在错误的地方。

#!/bin/bash
sudo apt-get update -y
sudo apt-get install python-pip -y
sudo apt-get install awscli -y
mkdir /home/ubuntu/dir
aws s3 sync s3://art-meta-data /home/ubuntu/dir/art-meta-data

【讨论】:

  • 这并不能解决问题,也不能解释为什么 mkdir 不起作用(它使用完整路径)
【解决方案2】:

您可以检查 EC2 系统日志以查看失败命令的输出。这确实是您在用户数据脚本中调试问题的唯一方法。

仔细检查您的实例配置文件可以访问存储桶,并且您使用正确的 arn 来引用存储桶

【讨论】:

  • 我用ssh检查过,bucket权限没问题,我可以手动同步没有任何问题。也许用户数据在卷挂载之前正在运行?
  • 您没有提到任何有关挂载 EBS 卷的内容,但是无论您的 EC2 系统日志怎么说?
猜你喜欢
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 2011-12-18
  • 1970-01-01
  • 2016-12-24
相关资源
最近更新 更多