2016-08-19 7 views
-1

bashスクリプトを期待してループしていないオブジェクトS3クリーンインストール AWSコマンドラインインターフェースがインストールされており、それが各ファイルをループされていない場合はAWSが は、スクリプト以下は 前に働い破った後

が設定されていますか?

## variables are set before this point 
files=$(/usr/local/bin/aws s3api list-objects --bucket "$bucket" --prefix "$target_zipname" --query "Contents[].{Key: Key}") 

##return sample## 
# [ { "Key": "fmpbks_2016_08_18_17_08_35.zip" }, { "Key": "fmpbks_2016_08_18_17_14_39.zip" }, { "Key": "fmpbks_2016_08_19_10_54_24.zip" }, { "Key": "fmpbks_2016_08_19_10_55_57.zip" }, { "Key": "fmpbks_2016_08_19_10_56_29.zip" }, { "Key": "fmpbks_2016_08_19_11_00_56.zip" } ] 
## 
for zip_file in $files 
do 
echo $zip_file # for testing 
delete_path="s3://$bucket/$zip_file" 
deleted=$(/usr/local/bin/aws s3 rm $delete_path) 
break 
done 

出力:

[ 
{ 
"Key": 
"fmpbks_2016_08_18_17_08_35.zip" 
}, 
{ 
"Key": 
"fmpbks_2016_08_18_17_14_39.zip" 
}, 
{ 
"Key": 
"fmpbks_2016_08_19_10_54_24.zip" 
}, 
{ 
"Key": 
"fmpbks_2016_08_19_10_55_57.zip" 
}, 
{ 
"Key": 
"fmpbks_2016_08_19_10_56_29.zip" 
}, 
{ 
"Key": 
"fmpbks_2016_08_19_11_00_56.zip" 
} 
] 

答えて

0

aws s3api list-bucketsコマンドは、デフォルトではJSONオブジェクトを返します。 forループはJSONの解釈方法を理解していません。あなたの目標は、特定のパス内のすべてのファイルを削除しにある場合、あなたが使用することができ、ちなみに

files=$(aws s3api list-objects --bucket MY-BUCKET --query 'Contents[*].Key' --output text) 

は別々の行に各ファイルを一覧表示する--output textオプションを使用

aws s3 rm s3://MY-BUCKET --exclude "*" --include "MY-PREFIX*" --recursive 
+0

解決してくれてありがとうございました。これは毎日ディレクトリを圧縮してファイルをamazonに移動するが、最大で3つのバックアップしか必要としないバックアップシステムです。あなたの答えに感謝しています。 – Franck

+0

素晴らしい!バックアップツールをお探しの場合は、[Cloudberry Backup](http://www.cloudberrylab.com/cloud-backup-windows-desktop.aspx)を使用するのが好きです。これは現在、フリーウェアとしても利用可能です。 –

関連する問題