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に配置されたファイルを読み込むことができるようになります。
付与する前のマネジメントコンソール画面です。
コマンド実行します。
$ aws s3api put-object-acl --acl public-read \ --bucket バケット名 --key オブジェクトキー
マネジメントコンソールを確認すると、赤文字で「読み込み」権限が付与されています。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント