S3にディレクトリなどないと何度言ry
aws s3 コマンドの cp
や sync
はなぜか空のディレクトリを作成しない。
新規のバケットでディレクトリ構成を初期化するのに困る。
S3に空のディレクトリを作成するシェルスクリプト
s3mkdirp.sh
# !/bin/bash
set -e
S3API="/usr/bin/aws s3api"
# export AWS_ACCESS_KEY_ID=
# export AWS_SECRET_ACCESS_KEY=
# export AWS_DEFAULT_REGION=ap-northeast-1
if [ $# -lt 2 ]
then
echo "Usage: ${0} bucket dir [dir ...]"
exit 1
fi
BUCKET=$1
shift
S3WK=/tmp/s3/$BUCKET
mkdir -p $S3WK
cd $S3WK
mkdir -p $@
for d in $(find * -type d)
do
echo ${d}
$S3API put-object --bucket $BUCKET --key ${d}/
done
cd - > /dev/null
rm -rf $S3WK
使い方は、最初の引数でバケット名を指定し、以降の引数でディレクトリ名を指定する。
$ ./s3mkdirp my.bucket.name aaa bbb/ccc/{ddd,eee}
バケット名に s3://
など付けない
ディレクトリ名にルートの /
など付けない。ていうか付けないで、おねがい。
途中階層も含め、すべてのディレクトリに対するオブジェクトが作成される