レプリケーションの使用
レプリケーションは、地域の停止からの保護、障害回復における支援、およびデータ冗長性のコンプライアンス要件への対処を提供します。ユーザー・アクセスに近い地域の場所で複数のデータのコピーを保持すると、レイテンシを減らすこともできます。
このトピックでは、オブジェクト・ストレージのレプリケーションについて説明し、あるバケット内のオブジェクトを同じリージョンまたは別のリージョンの別のバケットにレプリケートする方法について詳しく説明します。
オブジェクト・ストレージのレプリケーションについて
オブジェクト・ストレージのレプリケーションの有効化は、リージョンおよびレプリケート先のバケットを識別するソース・バケットのレプリケーション・ポリシーを作成することと同様に容易です。レプリケーション・ポリシーを作成すると、宛先バケットは読取り専用になり、ソース・バケットからのレプリケーションによってのみ更新されます。ポリシー作成後にソース・バケットにアップロードされたオブジェクトは、宛先バケットに非同期でレプリケートされます。ポリシー作成後にソース・バケットから削除されたオブジェクトは、宛先バケットから自動的に削除されます。ポリシー作成前にソース・バケットにアップロードされたオブジェクトはレプリケートされません。
レプリケーションにより、宛先バケットにあるオブジェクトで、ソース・バケットのオブジェクトと同じ名前のものが上書きされます。レプリケート・オブジェクトは、ソース・バケット内のオブジェクトと同じ名前、メタデータ、ETagおよびMD5値を持ちます。作成タイムスタンプ、変更タイムスタンプおよびアーカイブ状態は異なる可能性があるため、これらの属性はソースからレプリケートされません。
必須IAMポリシー
Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限を持っていない、または認可されていないというメッセージが表示された場合は、持っているアクセス権のタイプと作業しているコンパートメントを管理者に確認してください。
ユーザー権限
レプリケーションを構成するときは、ソース・バケットと宛先バケットの両方に対して必要なアクセス権を持っている必要があります。ソース・バケットおよび宛先バケット内のオブジェクトを管理する権限も必要です。
管理者の場合:
-
指定したIAMグループで、テナンシのすべてのコンパートメント内のオブジェクト・ストレージのネームスペース、バケット、およびそれらに関連付けられたオブジェクトを管理するポリシーを作成できます。たとえば、StorageAdminsグループがテナンシのオブジェクト・ストレージ・サービス・リソースに対してすべての操作を実行できるようにする単純なユーザー・アクセス・ポリシーを次に示します:
Allow group StorageAdmins to manage object-family in tenancy
-
または、アクセスの範囲を狭くするポリシーを作成できます。たとえば、StorageAdminsグループがテナンシのObjectStoreというコンパートメント内のバケットとオブジェクトを管理できるようにポリシーを作成できます:
Allow group StorageAdmins to manage buckets in compartment ObjectStore Allow group StorageAdmins to manage objects in compartment ObjectStore
ポリシーを記述するための他の代替手段の詳細は、オブジェクト・ストレージ、アーカイブ・ストレージおよびデータ転送の詳細を参照してください。
サービス権限
オブジェクト・ストレージはリージョナル・サービスであるため、代理でレプリケーションを実行する各リージョンのオブジェクト・ストレージ・サービスを認可する必要があります。たとえば、オブジェクト・ストレージ・サービスをリージョン米国東部(アッシュバーン)で認可して、代理でオブジェクトを管理できます。オブジェクト・ストレージ・サービスを認可すると、米国東部(アッシュバーン)のバケット内のオブジェクトを別のリージョンのバケットにレプリケートできます。
Oracle Cloud Infrastructureリージョンのリージョン識別子の値を決定するには、リージョンおよび可用性ドメインを参照してください。
管理者の場合:
レプリケーションを有効にするには、代理でオブジェクトを管理するサービスを認可する必要があります:
-
たとえば、次に示すのは、オブジェクト・ストレージ・サービスが米国西部(フェニックス)リージョンのテナンシ内のリソースに対して、すべての操作を実行できるようにするサービス・アクセス・ポリシーです:
Allow service objectstorage-us-phoenix-1 to manage object-family in tenancy
-
または、アクセスの範囲を狭くするポリシーを作成できます。たとえば、オブジェクト・ストレージ・サービスが、米国西部(フェニックス)リージョン内のObjectStoreというコンパートメント内のリソースに対して、すべての操作を実行できるようにするポリシーを作成できます:
Allow service objectstorage-us-phoenix-1 to manage object-family in compartment ObjectStore
- レプリケーションに必要な個々の権限を付与する、より限定的なポリシーを作成することもできます。例:
Allow service objectstorage-us-phoenix-1 to manage object-family in compartment ObjectStore where any {request.permission='BUCKET_READ', request.permission='BUCKET_UPDATE', request.permission='OBJECT_READ', request.permission='OBJECT_INSPECT', request.permission='OBJECT_CREATE', request.permission='OBJECT_OVERWRITE', request.permission='OBJECT_RESTORE', request.permission='OBJECT_DELETE'}
範囲および制約
- レプリケーション・ポリシーの作成では、宛先バケットは自動的に作成されません。ソース・バケットにレプリケーション・ポリシーを作成する前に、宛先バケットを作成します。
- ソース・バケットまたは宛先バケットは、標準(オブジェクト・ストレージ)またはアーカイブ・ストレージ層に含めることができます。
- ソース・バケットごとに最大1つのレプリケーション・ポリシー。
- レプリケーション宛先バケットごとに最大1つのソース。
- レプリケーション・ソース・バケットごとに最大1つの宛先。
- 宛先バケットはレプリケーション・ソースになることはできません。連鎖レプリケーションはサポートされていません。
- レプリケーション・ポリシーを作成すると、宛先バケットは読取り専用になり、ソース・バケットからのレプリケーションによってのみ更新されます。ソース・バケットにアップロードされたオブジェクトは、宛先バケットに自動的にレプリケートされます。ソース・バケットから削除されたオブジェクトは、宛先バケットから自動的に削除されます。
- レプリケーションを停止してバケットを再度書込み可能にしないかぎり、レプリケーション宛先バケットは削除できません。
レプリケーションとその他のオブジェクト・ストレージ機能間の相互作用
この項では、レプリケーションとその他のオブジェクト・ストレージ機能との相互作用について理解する必要がある重要な事項について説明します。
ライフサイクル管理
レプリケーションをオブジェクトのアーカイブおよび削除を管理するライフサイクル管理ポリシーと組み合せることができます。ただし、ライフサイクル・ポリシーでは、レプリケーション宛先バケットの読取り専用プロパティを受け入れる必要があります。レプリケーション宛先バケットからオブジェクトを削除するライフサイクル・ポリシーは機能しません。実装するあらゆる組合せのレプリケーションとライフサイクル・ポリシーを注意深く確認してテストします。
次に、ポリシーの組合せによってメリットが得られる例を示します:
- 特定のファイル拡張子を持つオブジェクトを指定した日数の経過後に削除するライフサイクル・ポリシーをソース上に作成できます。削除の結果は、レプリケーション宛先にも反映されます。
- 指定した日数の経過後にオブジェクトをアーカイブするライフサイクル・ポリシーを宛先に作成できます。それらのオブジェクトに直接アクセスする必要がない場合は、ストレージ・コストの削減でメリットを得られます。
独自のキーを使用したサーバー側暗号化
レプリケーションでは、SSE-Cキーで暗号化されたオブジェクトをレプリケートすることはできません。詳細は、サーバー側暗号化のための独自キーの使用を参照してください。
レプリケーションの停止
レプリケーションの停止は、レプリケーション・ソースまたは宛先のいずれかから開始できます。
- ソースからレプリケーションを停止するには、レプリケーション・ポリシーを削除します。レプリケーション・ポリシーの削除は永続的です。削除したポリシーはリカバリできません。そのターゲット宛先に再度レプリケートする場合は、新しいポリシーを作成します。
- 宛先からレプリケーションを停止するには、宛先バケットを再度書き込み可能にします。バケットを書込み可能にすると、宛先バケットはソースからのレプリケーション・リクエストを受け入れません。ソースのレプリケーションのステータスが、アクティブからクライアント・エラー状態に変わります。この宛先をターゲットのレプリケーション宛先に再度する場合は、ソース・バケットのポリシーを削除し、新しいポリシーを作成します。
レプリケーションのトラブルシューティング
このトピックでは、レプリケーションを使用した場合に発生する可能性がある問題のトラブルシューティング解決策を提供します。
レプリケーション・ポリシーの作成に失敗する一般的な原因は次のとおりです:
- 宛先バケットでバージョニングを有効にできない。
- 宛先バケットに保持ルールを設定できない。
- IAM権限がないか、不完全である。ポリシーの作成には次が必要です:
- ソース・バケットと宛先バケットの両方にアクセスし、それらのバケット内のオブジェクトを管理できるユーザー権限。
- オブジェクト・ストレージ自体にソース・バケットと宛先バケットの両方とそれらのオブジェクトへのアクセスを認可するサービス権限。
ユーザー権限およびサービス権限を付与する既存のポリシーを確認します。詳細は、必須IAMポリシーを参照してください。
ポリシー・ステータスがアクティブからエラーに変わっている場合は、次の項目をチェックします:
- 宛先バケットでのレプリケーションを意図的または意図せずに停止した。このターゲット・バケットに再度レプリケートするには、ソース・バケットの既存のポリシーを削除し、新しいポリシーを作成します。
- ユーザー権限が引き続き有効であることを確認します。
- ソース・バケットと宛先バケットおよびそれらのオブジェクトへのオブジェクト・ストレージのアクセスを認可するポリシーが引き続き有効であることを確認します。
- 宛先バケットでストレージ制限を超えた可能性があります。無料トライアルまたはAlways Freeの顧客である場合、ストレージは制限されます。有料アカウントにアップグレードするか、レプリケーション・ポリシーを削除してください。
レプリケーション・ポリシーの停止に失敗した場合、最も可能性の高い原因はIAM権限が欠落しているか、または不完全であることです。ポリシーの作成には次が必要です:
- ソース・バケットと宛先バケットの両方にアクセスし、それらのバケット内のオブジェクトを管理できるユーザー権限。
- オブジェクト・ストレージ自体にソース・バケットと宛先バケットの両方とそれらのオブジェクトへのアクセスを認可するサービス権限。
ユーザー権限およびサービス権限を付与する既存のポリシーを確認します。詳細は、必須IAMポリシーを参照してください。