2013-04-21 2 views
1

하나의 AWS EC2 인스턴스가 있습니다. 이 EC2 인스턴스에서 나는 슬레이브 EC2 인스턴스를 만들고있다.사용자 데이터로 Ec2로 S3cmd 명령 전달

그리고 슬레이브 인스턴스를 생성하는 동안 사용자 데이터를 새 슬레이브 인스턴스로 전달합니다. 해당 사용자 데이터에는 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

우분투를 사용 하시겠습니까? 그런 다음 쉴 로모 Swidler의 질문 Python s3cmd only runs from login shell, not during startup sequence might apply exactly :

s3cmd 파이썬 스크립트 (이 하나 http://s3tools.org/s3cmd) 대화 형 로그인 세션을 통해 실행할 때,하지만, 부팅 과정에서 스크립트를 통해 실행되지 않을 경우에만 작동하는 것 같다. 하나는 항상 User-Data Scripts 내에서 코드를 실행하여 입은 환경의 차이에주의해야

Mitch Garnaat suggests

:

스크립트가 실행 중일 때뿐만 반대에 로그인 할 때 그것은 아마 당신의 환경에서 일부 차이에 관련이 시작 시퀀스의 일부로. cron 작업과 비슷한 문제가 발생했습니다.

이 실제로 문제, Shlomo Swidler summarizes '근본 원인'과 더 아래이 스레드의 솔루션으로 밝혀졌다 :

미치, 당신의 의견은 나를 시작 순서에 대해 다른 무엇을 실현 도움 : 작동중인 사용자는 root입니다. 로그인 할 때 나는 "우분투"사용자 입니다.

s3cmd는 /home/ubuntu/.s3cfg에서만 /root/.s3cfg에 존재하지 않는 현재 사용자의 ~/.s3cfg를 찾습니다.

s3cmd는 구성 파일의 위치를 ​​ --config /home/ubuntu/.s3cfg와 함께 지정할 수있게합니다.

+0

thanx. 그것은 s3config 문제였습니다. 그것은 Virgenia 지역을 위해 해결했지만 다른 지역에서는 작동하지 않습니다. 다른 지역의 파일은 S3에 업로드되지 않지만 다운로드됩니다. 무엇이 문제일까요? – Pravin