-1

aws cli を使用して、ファイルを s3 から ec2 インスタンスの ebs に移動しようとしています。私が抱えている問題は、aws cli に「移動」コマンドがないことです。あれば、私の人生はずっと楽になります。

論理的な観点からは、s3 バケット (s3://bucket_name/AWSLogs/...) からデータをコピーし、コピーしたばかりのファイルを削除するスクリプトを作成する必要があります。データを期限切れにするようにライフサイクルを設定できることはわかっていますが、データを s3 から ebs にコピーするスクリプトが実行されない場合に備えて、データを失いたくありません。

AWS CLI は再帰的なコピーと削除をサポートしていますが、ファイル名変数を指定して「aws s3 cp」コマンドを実行し、同じファイル名で「aws s3 rm」を実行する何らかのタイプの FOR コマンドが必要です。私はあちこち検索しましたが、このために存在するツール/スクリプトを知りません。IANAP. どんな助けでも。ありがとう。

4

1 に答える 1

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

テストせずに頭の中でスクリプトを書いただけなので注意してください。そのため、エラーが含まれている可能性があります…</p>

于 2014-05-17T19:03:53.100 に答える