2013-04-21 51 views
1

我有一个AWS EC2实例。从这个EC2实例中,我创建了slave EC2实例。将S3cmd命令作为用户数据传递给Ec2

在创建从属实例时,我将用户数据传递给新的从属实例。在该用户数据中,我已经编写了用于在EC2实例中创建新目录并从S3存储区下载文件的代码。

但问题是,脚本在EC2实例上创建新目录,但无法从S3存储桶下载文件。

用户数据脚本 -

#! /bin/bash 
cd /home 
mkdir pravin 
s3cmd get s3://bucket/usr.sh >> download.log 

如上图所示,在此代码mkdir pravin创建目录,但s3cmd get s3://bucket/usr.sh无法下载文件和download.log文件也被创建,但它仍然是空的。

我该如何解决这个问题? (用于此的AMI预先配置了s3cmd)

回答

3

您是偶然运行Ubuntu吗?然后什洛莫斯威德勒的问题Python s3cmd only runs from login shell, not during startup sequence might apply exactly

的s3cmd Python脚本(这一个:http://s3tools.org/s3cmd)似乎当通过交互式登录会话中运行,而不是在引导过程中通过脚本运行时只工作。

Mitch Garnaat suggests一个始终应在User-Data Scripts提防被执行代码造成的环境差异:

当您登录,而不是在脚本运行时,它可能涉及到环境中的一些差异作为启动序列的一部分。我遇到了与cron作业类似的问题。

事实证明,这是问题的确,Shlomo Swidler summarizes的“根本原因”和解决方案,在这个线程进一步下跌:

米奇,你的评论让我认识到什么是关于 启动顺序不同:操作用户是root用户。当我登录时,我是 “ubuntu”用户。

s3cmd在当前用户的〜/ .s3cfg中查找 - /root/.s3cfg中只存在于/home/ubuntu/.s3cfg中。

幸运的是,s3cmd允许您使用 --config /home/ubuntu/.s3cfg指定配置文件的位置。

+0

thanx。这是s3config的问题。它解决了Virgenia地区,但不适用于其他地区。在其他地区的文件没有上传到S3,但它被下载。可能是什么问题? – Pravin 2013-04-23 13:14:57