オブジェクト・ストレージ・オブジェクト
オブジェクト・ストレージ・バケットをコンパートメントにアップロードできるファイルまたは非構造化データであるストレージ・オブジェクトをmanageObjectする方法について学習します。
オブジェクト・ストレージ・サービスでは、オブジェクトとは、オブジェクト・ストレージ・ネームスペース内のコンパートメント 内のバケットにアップロードするファイルまたは非構造化データです。オブジェクトには、あらゆるタイプのデータ(たとえば、マルチメディア・ファイル、データ・バックアップ、静的Webコンテンツ、ログ)を指定できます。最大10 TiBのオブジェクトを格納できます。オブジェクトは単一のエンティティとして処理されます。データの編集またはオブジェクトへの追加はできませんが、オブジェクト全体の置換は可能です。
Object Storageでは、オブジェクトのバージョニングが可能であり、これにより、バケットにアップロードした特定のバージョンのオブジェクトのアクセス可能でダウンロード可能なコピーが作成されます。オブジェクト・バージョニングでは、不注意または削除によりオブジェクトを保護します。詳細は、オブジェクト・ストレージのバージョニングを参照してください。
これらのトピックでは、単一バケット内のオブジェクトを管理する方法について説明します。別のバケットへのオブジェクトのコピーの詳細は、オブジェクトのコピーを参照してください。
オブジェクトのタスク
次のオブジェクト・ストレージ・オブジェクト・タスクを実行できます:
コマンドライン・インタフェースを使用して、オブジェクトのグループに対して一度に特定のタスクを実行できます。詳細は、「バルク・オブジェクト・タスク」を参照してください。
必須IAMポリシー
Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限を持っていない、または認可されていないというメッセージが表示された場合は、持っているアクセス権のタイプと作業しているコンパートメントを管理者に確認してください。
ポリシーを初めて使用する場合は、ポリシーの開始と共通ポリシーを参照してください。
管理者の場合:
-
ポリシーオブジェクト・ストレージの管理者がバケットとオブジェクトを管理するにより、指定したグループは、バケットおよびオブジェクトを使用したすべてのことを実行できます。オブジェクトは常にバケットと同じコンパートメントに存在します。
-
オブジェクトに対してより制限的なポリシーを記述する必要がある場合は、
inspect objects
を使用すると、バケット内のすべてのオブジェクトをリストし、特定のオブジェクトに対してHEAD操作を実行できます。また、read objects
では、オブジェクト自体をダウンロードできます。 -
個別の権限を付与するより限定的なポリシーを作成するには:
-
ライフサイクル・ポリシーを使用して、ユーザーのかわりに以前のオブジェクト・バージョンを削除するには、OBJECT_VERSION_DELETEが必要です。
-
オブジェクトのストレージ層を変更するには、OBJECT_UPDATE_TIERが必要です。
-
オブジェクト・ストレージのユーザー権限の詳細は、オブジェクト・ストレージ、アーカイブ・ストレージおよびデータ転送の詳細を参照してください。
オブジェクトのIAMポリシー
バケット・レベルのアクセス制御がセキュリティ・ニーズに不十分である場合があります。かわりに、個々のオブジェクト、接頭辞ベースまたは接尾辞ベースのオブジェクト・グループでより詳細な制御を行う必要があります。たとえば、作業リクエストを取得するために特定のオブジェクトに対して認可されているグループに属している場合は、その操作に対する権限を明示的に付与するIdentity and Access Management IAMポリシーが必要です。
オブジェクト・レベルのIAMポリシーにより、オブジェクト・ストレージ・バケット内の特定のオブジェクトおよびオブジェクトのサブセットに対する権限を付与できます。IAMポリシー変数target.object.name
では、テナンシ、コンパートメントおよびバケットで実行できる操作と同様に、認可および権限をオブジェクトに適用できます。例:
ALLOW GROUP object-authZ-op-group-ost-object TO manage objects IN TENANCY where any {target.object.name = 'ost-object-*', request.operation = 'GetObject'}
オブジェクトレベルのIAMポリシーは、1つのバケットに多数の異なるデータセットがあり、複数のチームまたはワークロードによってアクセスされるビッグ・データおよびデータレイクのユースケースに特に役立ちます。
オブジェクト・レベルのIAMポリシーを作成するには、ポリシーの作成で説明されているステップに従います。次の構文を使用して、オブジェクト・レベルIAMのポリシー・ステートメントを追加します:
ALLOW GROUP <group> TO manage objects IN TENANCY where all {target.object.name = '<object-pattern>', target.bucket.name = '<bucket_name>'}
認可は、リクエストがサーバー上のオブジェクトに対して到着すると、オブジェクト・レベルのIAMポリシーについて評価されます。
コンソールの使用時に、コンパートメント内のバケットをリストし、バケット内のオブジェクトをリストして特定のオブジェクトまたはオブジェクト・パターンをリストする権限が必要です。リストされているオブジェクトにアクセスするには、READ権限が必要です。
オブジェクト名またはパスがすでに認識されていて、CLIまたはAPIを使用してアクセスされている場合、これらのコンパートメントまたはバケットのアクセス権限は必要ありません。
適用するオブジェクト・ポリシーが有効になるまでに数分かかる場合があります。この遅延は、オブジェクト・ストレージ・リソースへのアクセスを制御する、作成または更新するすべてのポリシーに適用されます。
既存のポリシーを更新して、オブジェクト・レベルのIAM権限を含めることもできます。ポリシーのステートメントの更新を参照してください。オブジェクト・レベルのIAMポリシーは、既存のすべてのポリシー構成と互換性があります。
例1: バケット内のフォルダのグループへのフル・アクセスの許可:
ALLOW group test-group TO manage objects IN TENANCY where all {target.bucket.name = 'test-bucket', target.object.name = 'prod/*'}
例2: バケット内のフォルダのグループへの読取り専用アクセスの許可:
ALLOW group test-group TO manage objects IN TENANCY where all {target.bucket.name = 'test-bucket', target.object.name = 'prod/*', any{request.permission='OBJECT_INSPECT', request.permission='OBJECT_READ'}}
例3: 1回(上書きなし)の書込みを許可し、フォルダのグループに対する読取りまたは削除アクセス権を許可しない:
ALLOW group test-group TO manage objects IN TENANCY where all {target.bucket.name = 'test-bucket', target.object.name = 'prod/*', any{request.permission='OBJECT_CREATE'}}
例4: バケット内のフォルダのグループに対する読取りおよび書込みアクセスの許可(リストまたは上書きなし):
ALLOW group test-group TO manage objects IN TENANCY where all {target.bucket.name = 'test-bucket', target.object.name = 'prod/*', any{request.permission='OBJECT_CREATE', request.permission='OBJECT_READ'}}
例5: バケット内のオブジェクト・パターンに対する特定のユーザーに対するすべてのアクセスの許可:
ALLOW any-user TO manage objects IN TENANCY where all {target.bucket.name = 'test-bucket', target.object.name = '*.pdf', request.user.id='ocid1.user.oc1..exampleuniqueID'}
事前認証済リクエスト
事前認証済リクエストによって、ユーザーは独自の資格証明を持たずにバケットまたはオブジェクトにアクセスできるようになります。たとえば、ユーザーがAPIキーを所有せずにバケットにバックアップをアップロードするリクエストを作成できます。詳細は、オブジェクト・ストレージの事前認証済リクエストを参照してください。
オブジェクト名
他のリソースとは異なり、オブジェクトにはOracle Cloud識別子(OCIDs)がありません。かわりに、ユーザーはオブジェクトをアップロードする際にオブジェクト名を定義します。
オブジェクトに名前を付ける際は、次のガイドラインに従います:
-
1から1024文字で指定します。
-
有効な文字は、文字(大文字と小文字)、数字、およびライン・フィード、キャリッジ・リターン以外の文字です。
重要
バケット名およびオブジェクト名は大/小文字が区別されます。オブジェクト・ストレージでは、q3-field-assets.xslxとQ3-Field-Assets.XSLXを別々のオブジェクトとして処理します。
-
UTF-8エンコーディングが1024バイトを超えないUnicode文字のみを使用します。クライアントはURLエンコーディング文字を処理します。
-
機密情報の入力は避けてください。
-
バケット内で名前を一意にします。オブジェクトに名前を付けるときに、バケットに存在するオブジェクトの名前を使用しないでください。既存のオブジェクトを、新規オブジェクトまたは変更したオブジェクトのコンテンツで上書きする場合は除きます。
オブジェクト名には、1つ以上のスラッシュ(/)文字を含めることができます。オブジェクト名にスラッシュを使用した階層の作成の詳細は、接頭辞および階層を使用したオブジェクト・ネーミングを参照してください。
接頭辞および階層を使用したオブジェクト・ネーミング
オブジェクト・ストレージ・ネームスペース内で、バケットおよびオブジェクトはフラットな構造に存在します。ただし、1つ以上のスラッシュ(/)を含む接頭辞文字列をオブジェクト名に追加することで、ディレクトリ構造をシミュレートできます。このようにすると、一度に1つのディレクトリをリストできます。これは、大規模なオブジェクトのセットをナビゲートする場合に役立ちます。
例:
marathon/finish_line.jpg
marathon/participants/p_21.jpg
オブジェクト名に接頭辞を追加した場合、次ができます:
-
CLIまたはAPIを使用して、階層の指定レベルですべてのオブジェクトの一括ダウンロードおよび一括削除を実行します。
-
コンソールを使用して、仮想フォルダ内のオブジェクトの階層ビューを表示します。前述の例では、
marathon
はfinish_line.jpg
という名前のオブジェクトを含むフォルダとして表示され、participants
はp_21.jpg
という名前のオブジェクトを含むmarathon
のサブフォルダになります。階層の任意のレベルにオブジェクトを一括アップロードしたり、バケットまたはフォルダ内のすべてのオブジェクトを一括削除したりできます。
階層の指定レベルでの一括操作は、前のレベルのオブジェクトに影響しません。
オブジェクトに名前を付ける際には、デリミタなしで接頭辞文字列を使用することもできます。デリミタを使用して、コンソールの検索操作や、CLまたはAPIの特定の一括操作をオブジェクト名の接頭辞部分で照合することはできません。たとえば、次のオブジェクト名の文字列gloves_27_
は、一括操作の実行時に照合目的のための接頭辞として機能します:
gloves_27_dark_green.jpg
gloves_27_light_blue.jpg
コンソール、CLIまたはAPIを使用して一括アップロードを実行する場合、アップロードするファイルの名前に接頭辞文字列を追加できます。
特定の管理インタフェースの階層および接頭辞文字列の詳細は、オブジェクト・ストレージ・バケットの個々のタスクを参照してください。
オプションのレスポンス・ヘッダーとメタデータ
オブジェクトをアップロードする場合、オプションのレスポンス・ヘッダーとユーザー定義メタデータを指定できます。レスポンス・ヘッダーは、オブジェクトがダウンロードされるときに、オブジェクト・ストレージからオブジェクト・ストレージ・クライアントに送信されるHTTPヘッダーです。ユーザー定義メタデータは、オブジェクトとともに格納される名前と値のペアです。コンソール、REST APIまたはCLIを使用してこれらのオプション属性を指定できます。
指定したレスポンス・ヘッダーまたはメタデータでは検証が実行されません。
次のレスポンス・ヘッダーの値を指定できます:
-
Content-Disposition
オブジェクトの表示専用情報を定義します。このヘッダーに値を指定しても、オブジェクト・ストレージの動作には影響しません。オブジェクトを読み込むプログラムでは、指定された値に基づいて実行する内容が決定されます。たとえば、次のヘッダーを使用して、ユーザーがブラウザでカスタム・ファイル名を持つオブジェクトをダウンロードできます:
attachment; filename="fname.ext"
詳細は、https://tools.ietf.org/html/rfc2616#section-19.5.1を参照してください。
-
Cache-Control
オブジェクトのキャッシュ動作を定義します。このヘッダーに値を指定しても、オブジェクト・ストレージの動作には影響しません。オブジェクトを読み込むプログラムでは、指定された値に基づいて実行する内容が決定されます。たとえば、次のヘッダーを使用して、キャッシュ制限が必要なオブジェクトを識別できます:
no-cache, no-store
詳細は、https://tools.ietf.org/html/rfc2616#section-14.9を参照してください。
ユーザー定義メタデータを名前と値のペアの形式で指定します。ユーザー定義メタデータ名は格納され、opc-meta-という必須の接頭辞を使用してオブジェクト・ストレージ・クライアントに返されます。
オブジェクト・ライフサイクル管理
オブジェクト・ライフサイクル管理では、コミットされていないマルチパート・アップロードの削除、別のストレージ層へのオブジェクトの移動、および特定のバケット内でサポートされているリソースをユーザーにかわって削除する処理を自動的に管理できます。これらの自動アクションは、ユーザーが定義および管理するルールに基づきます。この機能の詳細は、オブジェクト・ストレージのオブジェクト・ライフサイクル管理を参照してください。
マルチパートのアップロードおよびダウンロード
Oracle Cloud Infrastructure Object Storageサービスは、オブジェクトのマルチパートのアップロードおよびダウンロードをサポートしています。
-
APIおよびCLIのマルチパート・アップロード機能の詳細は、オブジェクト・ストレージのマルチパート・アップロードを参照してください。
-
マルチパート・ダウンロードのCLI情報については、マルチパート・ダウンロードを使用したオブジェクトのダウンロードを参照してください。
-
マルチパート・ダウンロードに関連するAPIドキュメントについては、GetObject APIコールとそのrangeパラメータを参照してください。
リソースのモニタリング
メトリック、アラームおよび通知を使用して、Oracle Cloud Infrastructureリソースのヘルス、容量およびパフォーマンスをモニターできます。詳細は、モニタリングおよび通知を参照してください。
オブジェクトのモニタリングの詳細は、オブジェクト・ストレージ・メトリックを参照してください。
イベント・サービスを使用したオブジェクトの自動化の作成
イベント・タイプ、ルールおよびアクションを使用して、Oracle Cloud Infrastructureリソースの状態変更に基づいて自動化を作成できます。詳細は、イベントの概要を参照してください。