【发布时间】: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