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

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

こんにちは、@Manabu です。

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

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

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

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

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

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

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

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

s3 syncコマンドとは?

syncコマンドは、ローカルディレクトリとS3バケット(またはS3バケット同士)のファイルを効率的に同期するためのAWS CLIコマンドです

このコマンドを使用すると、新しく追加されたファイルや更新されたファイルを自動的にコピーできます。

実行する場合は、実行環境に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のアクセス権限を付与しましょう。

基本構文

syncコマンドは、ローカル環境からS3バケットへの同期・S3バケットからローカル環境への同期・S3バケット間での同期のパターンがあります。

ローカルからS3バケットへの同期

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

aws s3 sync <LocalPath> <S3Uri>
// 例
aws s3 sync . s3://mybucket

S3バケットからローカルへの同期

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

aws s3 sync <S3Uri> <LocalPath>
// 例
aws s3 sync s3://mybucket .

S3バケット間での同期

以下のようなコマンドで、S3バケット間の同期を実行します。

aws s3 sync <S3Uri> <S3Uri>
// 例
aws s3 sync s3://mybucket s3://mybycket2

便利なオプション

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

–quiet オプション

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

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

aws s3 sync . s3://mybucket --quiet

–exclude と –include オプション

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

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

aws s3 sync . s3://mybucket --exclude "*.jpg"

–delete オプション

ソースに存在しないファイルをデスティネーションから削除します。

このオプションを使用することで、同期先をソースと完全に一致させることができます。

aws s3 sync .s3://mybucket --delete

 

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

sync — AWS CLI 2.17.32 Command Reference

まとめ

今回は、ローカルやS3のフォルダの同期のできるs3 syncコマンドについて紹介しました。

ファイル操作については、s3 cpコマンドを使用するようなので、別の機会にまとめたいと思います。