41
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

エニプラAdvent Calendar 2023

Day 10

AWS CLIを用いてS3データを同期する。

Last updated at Posted at 2023-12-09

はじめに

AWS S3にはクロスリージョンレプリケーション(以降はCRRと表記します。)という機能があります。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/replication.html

CRRでは要件を満たせない場合のS3データ同期方法として、
AWS CLIを用いてS3データを同期する方法となります。

要件・環境イメージ

・S3バケットとS3バケットをCRRを用いずに同期したい。
・同期元のデータが削除されている場合は同期先のデータを消す。
・AWS CLIを使用できるEC2は存在する。(aws-cli/2.9.19)

sync-image.png

1. 同期コマンド

基本的な使い方としては以下のようになります。

aws s3 sync <同期元S3バケット> <同期先S3バケット>

上記のコマンドを実行することによりS3間でデータが同期されます。
2回目を実行した場合は差分のみ同期されます。

しかしこのコマンドのままでは同期元で削除されたファイルがある場合は同期先で削除されず残ってしまいます。

同期先にはあるが、同期元にはないファイルを削除したい場合は以下の[--delete]オプションを加えたコマンドを実行します。

aws s3 sync <同期元S3バケット> <同期先S3バケット> --delete

その他のオプションについては以下のURLを参考。
https://docs.aws.amazon.com/ja_jp/cli/latest/reference/s3/index.html
https://docs.aws.amazon.com/ja_jp/cli/latest/reference/s3/sync.html

2. S3データを同期するために必要な権限

S3を同期するのには以下の権限が必要となります。

同期元S3バケット
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": "s3://source-bucket"
        }
    ]
}
同期先S3バケット
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:ListBucket",
                "s3:DeleteObject"
            ],
            "Resource": "s3://destination-bucket"
        }
    ]
}

3. 動作確認

$ aws s3 sync s3://source-bucket s3://destination-bucket --delete
copy: s3://source-bucket/cp/01.txt to s3://destination-bucket/test/01.txt
copy: s3://source-bucket/cp/02.txt to s3://destination-bucket/test/02.txt
copy: s3://source-bucket/cp/03.txt to s3://destination-bucket/test/03.txt
delete: s3://destination-bucket/delete/delete.txt

参考

41
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?