【问题标题】:aws ec2 - aws command not found when running user dataaws ec2 - 运行用户数据时未找到 aws 命令
【发布时间】:2018-11-11 03:07:21
【问题描述】:

我的目标是启动一个实例,以便在启动时触发启动脚本以下载存储在 AWS S3 中的一些配置文件。因此,在启动脚本中,我设置了 S3 存储桶详细信息,然后触发 config.sh,其中 aws s3 sync 进行实际下载。但是,aws 命令不起作用 - 找不到执行。

用户数据

我在启动 EC2 实例时有以下用户数据:

#!/bin/bash
# Set command from https://stackoverflow.com/a/34206311/919480
set -e -x
export S3_PREFIX='bucket-name/folder-name'
/home/ubuntu/app/sh/config.sh

AWS CLI 是使用pip 安装的,如documentation 中所述。

观察

我认为,用户数据脚本是使用root 用户 ID 运行的。这就是为什么在用户数据中我有/home/ubuntu/,因为$HOME 没有解析为/home/ubuntu/。事实上,config.sh 中的第一个命令是mkdir /home/ubuntu/csv,它创建了一个所有者为root 的目录!

那么,是否可以得出结论,用户数据在root用户ID下运行?

分辨率

我应该使用REST API 下载吗?

【问题讨论】:

  • “AWS CLI 是使用 pip 安装的”是什么意思?它不在您的用户数据脚本中。它是否已安装,然后您创建了一个 AMI,然后您将该 AMI 用于这个新实例?还是在config.sh 文件中?您可以随时尝试 sudo su - 成为 root,然后粘贴您的用户数据以查看它是否运行。
  • @JohnRotenstein AWS CLI 已安装在 AMI 上。

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


【解决方案1】:

作为用户数据输入的脚本以 root 用户身份执行,所以不要在脚本中使用 sudo 命令。

见:Running Commands on Your Linux Instance at Launch

一种解决方案是在执行 AWS CLI 之前设置 PATH 环境变量以包含 AWS CLI(并添加任何其他必需的路径)。

【讨论】:

  • sudo 不在任何地方使用。将尝试PATH 选项。
  • 或者,通过完整路径引用aws,例如/usr/local/bin/aws s3 cp...
  • @JohnRotenstein for me which aws 显示 /home/ubuntu/.local/bin/aws - 可能是因为我没有做 sudo pip install。因此,我在脚本开头尝试了su ubuntu -,现在我看到了__init__.py[WARNING]: Unhandled non-multipart (text/x-not-multipart) userdata: 'b'su ubuntu -'...'
  • 此外,提供完整路径 /home/ubuntu/.local/bin/aws 也无济于事,因为 AWS CLI 驱动程序的 import 对于 root 失败。因此,选择使用su ubuntu -。
【解决方案2】:

解决方案

鉴于 AWS CLI 是在没有 sudo pip 的情况下安装的,因此 CLI 不适用于 root。因此,要使用ubuntu 用户运行,我使用了以下用户数据脚本:

#!/bin/bash
su ubuntu -c '$HOME/app/sh/config.sh default`

在config.sh 中,参数default 用于在调用CLI 之前构建完整的S3 URI。然而,尽管aws 可以通过正常登录访问,但只有使用完整路径$HOME/.local/bin/aws 才能成功调用。

【讨论】:

  • 遇到同样的问题——在用户数据环境中找不到aws s3。但我遇到过这个passage:“如果您在用户数据脚本中使用 AWS API,包括 AWS CLI,则在启动实例时必须使用实例配置文件。实例配置文件提供所需的适当 AWS 凭证由用户数据脚本发出 API 调用。”这可能有关系吗?
猜你喜欢
  • 1970-01-01
  • 2017-12-25
  • 2019-07-03
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2015-03-31
相关资源
最近更新 更多