2014-05-17 11 views
-1

나는 ec2 인스턴스에서 s3에서 ebs로 파일을 이동하기 위해 aws cli를 얻으려고합니다. 내가 가지고있는 문제는 aws cli에 "이동"명령이 없다는 것입니다. 내 인생이 훨씬 쉬울 것입니다.'s3에서 AWS ELB 로그를 다운로드하여 제거하십시오.

논리 관점에서 볼 때, s3 버킷 (s3 : // bucket_name/AWSLogs/...)에서 데이터를 삭제 한 다음 방금 복사 한 파일을 제거합니다. 수명주기를 설정하여 데이터를 만료시킬 수 있음을 알고 있지만, s3에서 ebs 로의 데이터가 실행되지 않고 데이터를 잃고 싶지 않습니다.

AWS CLI는 재귀 복사본을 지원하고 제거하지만 "FOR"명령을 실행할 필요가 있습니다. aws s3 cp "명령에 파일 이름 변수를 넣은 다음 같은 파일 이름으로"aws s3 rm "을 실행하십시오. 나는 모든 것을 조사했고 어떤 도구/스크립트를 모르는지 e 이것을위한 xists. IANAP, 그래서 그것을 정확하게 파이썬 boto 스크립트로 옮기는 방법을 모르겠다. 나는 bash 쉘 스크립트로 쉽게 할 수 있기를 바랬다. 도움이 필요해. 감사.

답변

0

이 작업에는 s3cmd을 사용하는 것이 좋습니다. s3cmd는 boto를 기반으로하며 S3와의 디렉토리 동기화를 지원합니다. 이 경우 신뢰할 수있는 동기화와 s3cmd를 실행하는 시스템의 로컬 경로가 제공됩니다. 예를 들어

:

$ mkdir /home/user/logs/ 
$ s3cmd sync s3://org.example.mybucket/ /home/user/logs/ 

그 후 유일한 결함 s3cmd sync는 로컬 파일 시스템에 동기화 한 후 원본 파일을 삭제 매개 변수가없는 것입니다.

이 들어 당신은 여전히 ​​로컬 디스크에 동기화 우리는이 스크립트가 트릭을 할해야 하위 디렉토리가 동기화 된 양동이가없는 가정하면

$ s3cmd del s3://org.example.mybucket/log.txt 

그래서 예를 들어 호출되는 파일을 반복하는 스크립트를 필요

#!/bin/bash 
BUCKET='org.example.mybucket' 
TARGET='/home/user/logs/' 

# Ensure the directory is created 
mkdir -p ${TARGET} 

# Sync files from bucket 
s3cmd sync s3://${BUCKET}/ ${TARGET} 

# Iterate files and delete from bucket 
for filename in ${TARGET}*; do 
    s3cmd del s3://${BUCKET}/$(basename ${filename}) 
done 

방금 ​​테스트하지 않고 머리에서 스크립트를 작성 했으므로주의하십시오. 따라서 오류가있을 수 있습니다 ...

관련 문제