2013-04-21 48 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