CloudinaryのデータをAmazon S3に自動バックアップする

CloudinaryのデータをAmazon S3に自動バックアップする

Clock Icon2025.01.29

画像配信・変換SaaSのCloudinaryでは、投稿された画像を自前のストレージにバックアップすることが可能です。

この記事では機能概要、実際の設定方法を紹介します。

機能概要

Cloudinaryに投稿された画像のバックアップを、自動かつ非同期で外部ストレージに保存します。

保存先は Amazon S3 もしくは Google Cloud Storage が選択できます。

設定方法

今回はS3を対象に試します。

Amazon S3バケットの設定

AWSで保存先バケットを作成します。

バケット命名のルールがあります。リージョンはどこでも構いません。

例: cloudinary-backup-classmethod-us-east-2

バケットポリシーを設定します。232482882421 はCloudinaryアカウントを指すため固定値です。

{
    "Version": "2012-10-17",
    "Id": "CloudinaryOriginPolicyId",
    "Statement": [
        {
            "Sid": "CloudinaryBackupPolicySid",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::232482882421:root"
            },
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::{YOUR_BUCKET_NAME}/*",
                "arn:aws:s3:::{YOUR_BUCKET_NAME}"
            ]
        }
    ]
}

作成したバケットに、下記オブジェクトを作成します。

.wellknown/cloudinary/{CLOUDINARY_CLOUD_NAME}

このファイルを追加することで、指定したバケットへのアクセス権があること、また Cloudinaryがバケットの中身にアクセス/変更することを許可します。

Cloudinary側の設定

アップロード&バックアップ設定ページに移動します。

デフォルトでは、バックアップが [Disabled] になっていますので [Enabled] に変更します。

Screenshot 2025-01-29 at 11.41.00

バケット名を入力します。

Screenshot 2025-01-29 at 11.41.17

これで設定を [Save] すると、今後登録されるアセットがバックアップされるようになります。設定以前のデータをバックアップしたい場合、[Request initial backup] を実行してください。

生成されたバックアップデータをみてみる

ほとんどタイムラグもなく、S3にバックアップファイルが送信されていました。

ただし、ファイルロケーションがオリジン(Cloudinary)とは多少異なるようです。

例えばCloudinaryに登録した下記の画像パスがあるとします。

/image/upload/v1738147895/2025/01/29/hpmecbf7mustk4kw8j4y.png

パス内の各プロパティ

  • v1738147895 ... UNIXタイムスタンプによる画像のバージョン
  • /2025/01/29/ ... 画像を配置するディレクトリ。私の場合は投稿日でディレクトリを分割するようにしていますが、不要な場合は消すこともできます
  • hpmecbf7mustk4kw8j4y.png Cloudinary側で生成した画像のユニークファイル名

上記ファイルがS3に保存される場合、下記のようなパスに変わります。

/res/{CLOUDINARY_CLOUD_NAME}/image/upload/2025/01/29/hpmecbf7mustk4kw8j4y/1738147895.png

このあたりはCloudinary側のpresetなどの設定によっても変わってくるため、バックアップを別サービスに移行する際は注意が必要です。

注意点

利用にあたって他にもいくつか注意事項があります。

  • S3バケットで利用非推奨の機能 ... バケットにはライフサイクルポリシー (アーカイブ/削除)、バージョン管理、オブジェクトロックを設定しないでください、とドキュメントには記載されています
  • バックアップのトリガータイミング ... アセット自体が新しいバージョンに置き換えられた時に行われます。タグやメタデータの更新などではバックアップはトリガーされません
  • 変換後の画像 ... 元のアセットのみバックアップが保持され、派生 (変換) バージョンはバックアップとして保持されません
  • バックアップの削除 ... S3側のファイルは自分で削除できますが、別途Cloudinary側でバックアップのデータベースレコードを保持しており、そちらを更新するにはサポートチームに連絡する必要があります

最後に

Cloudinary側からAmazon S3へバックアップを行う方法について紹介しました。
ClassmethodではCloudinaryの契約・導入支援を行っています。ご興味のある方はフォームよりお問い合わせください。

参考情報

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.