初心者向け!EC2からS3 cpでs3バケットにファイルを転送する方法!

AWS
この記事は約4分で読めます。

こんにちは、@Manabu です。

EC2内にあるファイルをS3に転送したり、S3からEC2に取得したりするAWS CLIがあるということなので、調べてみました!

色々、細かいオプションがあるようなので、まとめてみます。

S3にファイルを転送する方法

S3で管理するファイルをやりとりするためには、AWS CLIを使用するという方法があります。

大きくは、ファイルのコピーとディレクトリの同期という方法で実行します。

それぞれ以下のコマンドを使用します。

  • ファイルのコピー:s3 cpコマンド
  • ディレクトリの同期:s3 syncコマンド

今回は、s3 cpコマンドを使用したディレクトリの同期について紹介します。

s3 cpコマンドとは?

syncコマンドは、ローカルファイルやS3オブジェクトを、ローカルやS3の別の場所にコピーするためのコマンドです。

単一のファイルやオブジェクトを簡単に転送でき、オプションを活用することで、柔軟な操作が可能です。

実行する場合は、実行環境にAWS CLIがインストールされており、適切なIAM権限が付与されていることを確認してください。

// aws cliのインストール確認
aws --version
aws-cli/2.15.30 Python/3.9.16 Linux/6.1.94-99.176.amzn2023.x86_64 source/x86_64.amzn.2023 prompt/off

EC2で実行するときは、IAMロールにS3のアクセス権限を付与しましょう。

基本構文

cpコマンドは、ローカルファイルをS3バケットにコピー・S3バケット内のオブジェクトをローカル環境にコピー・S3バケット間でのコピーのパターンがあります。

ローカルファイルをS3バケットにコピー

以下のようなコマンドで、ローカル環境のファイルをS3バケットへコピーします。

aws s3 cp <LocalPath> <S3Uri>
// 例
aws s3 cp ./test.txt s3://mybucket

S3バケット内のオブジェクトをローカル環境にコピー

以下のようなコマンドで、S3バケット内のオブジェクトをローカル環境にコピーします。

aws s3 cp <S3Uri> <LocalPath>
// 例
aws s3 cp s3://mybucket/test.txt .

S3バケット間でのオブジェクトをコピー

以下のようなコマンドで、S3バケット間のオブジェクトコピーを実行します。

aws s3 cp <S3Uri> <S3Uri>
// 例
aws s3 cp s3://mybucket/test.txt s3://mybycket2

便利なオプション

s3 syncコマンドで使用できる、便利なオプションをいくつか紹介します。

–quiet オプション

s3 syncコマンドを実行すると、どのファイルを転送したのかを実行ログとして表示されます。

このオプションを使用すると、ログが一切表示されないシンプルな形で実行することができます。

aws s3 cp ./test.txt s3://mybucket --quiet

–exclude と –include オプション

このオプションで特定のファイルを同期から除外したり、逆に含めたりするためのオプションです。

例えば、.jpgファイルを除外したい場合は、–exclude “*.jpg”を使用します。

aws s3 cp ./test.txt s3://mybucket --exclude "*.jpg"

–recursive オプション

指定したディレクトリやプレフィックス内の全てのファイルやオブジェクトを再帰的にコピーします。

コピーしたいものは、ファイルではなくディレクトリを指定するようにしましょう。

aws s3 cp . s3://mybucket --recursive

 

その他にも、色々オプションがあるようなので、以下のページから参考にするようにしてください・

cp — AWS CLI 2.17.32 Command Reference

まとめ

今回は、ローカルやS3のファイルを転送できる s3 cpコマンドについて紹介しました。

一つずつ転送したい場合に非常に便利なコマンドです。

ディレクトリごと転送(同期)したい場合は、以下の記事を参考にs3 syncコマンドを実行してみてください。

初心者向け!EC2からS3 snycでs3バケットにディレクトリ同期する方法!