AWS クラウド

【S3】CLIでオブジェクトをローカルディレクトリにコピーする方法

2024年3月26日

超お久しぶりです。yassanです。
今回は、AWS CLIを使ってオブジェクトをローカルディレクトリにコピーする方法を紹介します。

「そんなことわざわざ言われなくてもChatGPTに聞けばわかるわ!」という声が聞こえてきそうなとこですが、まったくもってその通りでだと思います。
じゃあなんで記事にするのかというと、今回は僕のブログのリハビリ的な意味で記事作成にあたっています。

お付き合いいただけますと幸いです!

CLIコマンド

いきなり結論ですが、下記のコマンドでコピーできます。

$ aws s3 cp s3://bucket_name/path ./local_dir/path --resursive

--recursiveオプションをつけることで、バケットのパス内のすべてのオブジェクトを再帰的に取り出すことができます。
単純にオブジェクトをコピーするという意味合いでは、これだけの話です。

このやり方でもいいのですが、僕は下のやり方の方が良いと思っています。
(もちろんケースバイケースですが、ちょっとだけ作業する場合を想定してます)

$ aws s3 sync s3://bucket_name/path ./local_dir/path

見てお分かりの通りですが、cpではなくsyncを利用しています。
syncの場合、ソースと宛先の間でファイルを同期する動きをします。

初回の実行では、先に挙げたcpと同じ挙動をしますので、結果差はないように感じると思います。
それでもsyncをお勧めする理由は、再コピーをするときに楽だからです。

例えば、S3に出力されたWebサーバのアクセスログを調査するケースを想定します。
CLIでローカルディレクトリにファイルを持ってきて、あの手この手でログを調査しますよね。
このとき、gzを解凍したり、bashの中間ファイルを作成したり、色々と作業経過でファイルを変更すると思います。

色々触った結果、一回元の状態(=ローカルディレクトリに持ってきたときの状態)に戻したいなと思ったとき、
syncで同期していた場合は、--deleteオプションを付けてもう一度syncをするだけで元の状態にすぐ戻せます。

ちなみに、syncの動機は双方向ではないため、ソースが変更されることはありません。
(ただし、オプションの順番を間違えると事故ってしまうのでご注意ください)

とはいえ、cpを使っていたとしても、別の作業ディレクトリを作れば良いだけの話なのですが、、
小ネタとして楽しんでいただけたら幸いです。

まとめ

今回は、AWS CLIを使ってオブジェクトをローカルディレクトリにコピーする方法を紹介しました。
小さな違いではありましたが、cpとsyncの2通りのやり方がありますので、場合に応じて使ってください。
個人的にはとりあえずはsyncを使っとけばいいのかなと思います。

AWS学習におすすめの書籍

AWSについて、しっかりと基礎から学びたい、実践的なスキルを身につけたいと考えている方向けに、おすすめの書籍を紹介します。
これらの書籍は、実際にAWSエンジニアとして働く僕が参考にしている書籍です。

AWSエンジニア入門講座――学習ロードマップで体系的に学ぶ

AWSを使いこなすための前提となるITインフラの知識が足りない初学者にとって、どこからどのように学べばよいのかがわかりづらくなっています。そこで本書では、AWS学習サイト運営YouTuberである監修者自身が実サービスの導入で習得しながら体系化した「学習ロードマップ」に沿って、AWSのサービスとIT技術をやさしく解説していきます。

著者が作成した学習ロードマップに沿って、AWSやインフラストラクチャを体系的に学ぶことができます。
付属のロードマップの完成度が高く、学習に迷ったときや復習にも使えます。
これからAWSエンジニアを目指す方や、インフラストラクチャを基礎から学びたい方におすすめです。

Amazon Web Services 業務システム設計・移行ガイド

オンプレミス上に構築された業務システムをAWS上に移行するための「サービスの選定」「ネットワーク設計・構築」「サーバとデータの移し方」「運用・監視体制の構築」など。これまで多くの企業にAWSを導入し、コンサルティングフェーズから実際の設計・開発、運用フェーズまでの全行程に携わってきた著者陣のノウハウを凝縮して、一般的な企業にAWSを導入する際のベストプラクティスをお届けします。

実務を想定した様々なユースケースとそれに対するベストプラクティスを、設計構築から運用まで幅広くカバーして紹介しています。
タイトルからは移行に焦点を当てたように見えますが、僕としては移行に限らずエンタープライズとしてAWSを利用する上で知っておくべきことが記されていると思います。
より実践的な知識やノウハウを身に着けたい方、初学者から一皮むけたい方におすすめです。

-AWS, クラウド
-,