S3コマンドチートシート

S3コマンドチートシート

S3コマンドのチートシートです。

rm

aws s3 rm ファイル名でファイルを削除することができます。

aws s3 rm s3://mybucket/var/db/000000001.json

cp

ローカルのファイルをS3にコピーします。

aws s3 cp hoge.json s3://バケット名/var/hoge.json

異なるバケットに再帰的にコピーします。

aws s3 cp s3://バケットA/var/ s3://バケットB/var --recursive

`–dryrun`

コピーされるファイルを確認したい場合などには、--dryrunオプションをつけて確認をします。

aws s3 cp s3://バケットA/var/ s3://バケットB/var --recursive --dryrun

画像アップロード

s3コマンドで画像アップロードする際はコンテンツタイプを指定しておいた方が無難です。コンテンツタイプが画像と異なる場合、ブラウザからアクセスすると画像が表示されずにダウンロードされてしまいます。

コンテンツタイプを指定するに--content-type "image/jpeg"などを指定します。

aws s3 hoge.jpg s3://バケット名/hoge.jpg --content-type "image/jpeg"

S3ファイルを標準出力(Linux)

cpコマンドでコピー先に、シェルのハイフンを指定すれば、S3に配置しているファイル内容を標準出力することができます。

aws s3 cp s3://バケット名/hoge.json -

さらにjqに渡して整形することができます。

aws s3 cp s3://バケット名/hoge.json - | jq

S3にあるtar.gzを標準出力(Linux)

aws s3 cp s3://バケット名/a.tar.gz - | tar tzvf -

これで展開しないまま、標準出力することができます。

S3にあるlambdaのパッケージを標準出力する

CloudFormationでpackageするとS3に32桁のUUIDの圧縮ファイルが作成されます。この中身を標準出力したい場合は以下のコマンドで可能です。

aws s3 cp s3://バケット名/xxxxxxxxxxyyyyyyyyyyzzzzzzzzzz12 - | bsdtar -tvf -

bsdtarがインストールされていない場合は以下でインストールします。(Ubuntu)

sudo apt install libarchive-tools

S3からダウンロード

S3バケットに配置してあるファイルをダウンロードするにもcpコマンドを使います。

カレントディレクトリにダウンロードする例です。

aws s3 cp s3://バケット名/hoge/a.tgz .

これでカレントディレクトリ直下にダウンロードすることができます。

S3から一括ダウンロード

S3バケットに配置してあるファイルを一括ダウンロードするにもcpコマンドを使います。

この場合は--recursiveオプションを使用して一括ダウンロードします。--dryrunも使用してから実行することをお勧めします。

aws s3 cp s3://バケット名/hoge/ . --recursive --dryrun
aws s3 cp s3://バケット名/hoge/ . --recursive

アクセスコントロールリスト(ACL)のパブリックアクセスに読み込み権限を付与

アクセスコントロールリスト(ACL)のパブリックアクセスに読み込み権限を付与します。

付与すると、webブラウザからs3に配置されたファイルを読み込むことができるようになります。

付与する前のマネジメントコンソール画面です。

アクセスコントロールリスト(ACL)のパブリックアクセスに読み込み権限を付与

コマンド実行します。

$ aws s3api put-object-acl --acl public-read \
 --bucket バケット名 --key オブジェクトキー

マネジメントコンソールを確認すると、赤文字で「読み込み」権限が付与されています。

アクセスコントロールリスト(ACL)のパブリックアクセスに読み込み権限を付与

コメント

タイトルとURLをコピーしました