OSS を使用する前に、次の基本概念を理解することを推奨します。

バケット

バケットは、OSS に格納されているオブジェクトのコンテナです。 すべてのオブジェクトは、バケットに格納されます。 Alibaba Cloud OSS のデータモデル構造は、階層型モデルではなくフラットモデルです。

  • すべてのオブジェクト (ファイル) は、対応するバケットに直接関連付けられています。 したがって、OSS には、ファイルシステムのようなディレクトリとサブフォルダの階層構造がありません。
  • ユーザーは複数のバケットを所有できます。
  • バケット名は OSS 全体を通して一意でなければなりません。また、バケットの作成後にバケット名を変更することはできません。
  • バケットには、無制限の数のオブジェクトを格納できます。

バケットの命名規則は次のとおりです。

  • バケット名は、小文字、数字、ハイフン ( - ) のみを使用できます。
  • プロジェクト名の先頭と末尾は、小文字または数字にする必要があります。
  • バケット名は 3 バイト以上 63 バイト以下にする必要があります。

オブジェクト

オブジェクトはファイルとも呼ばれ、 OSS に格納されている基本的なエンティティです。 オブジェクトは、メタデータ、データ、キーで構成されます。 キーは、 バケット内の一意のオブジェクト名です。 メタデータによって、最終変更時刻やオブジェクトサイズといったオブジェクトの属性が定義されます。。 オブジェクトのカスタムメタデータを指定することもできます。

オブジェクトのライフサイクルは、アップロードで始まり、削除で終わります。 ライフサイクルの間、オブジェクトの内容を変更することはできません。 オブジェクトを変更する場合は、既存のオブジェクトと同じ名前の新しいオブジェクトをアップロードして置き換える必要があります。 したがって、ファイルシステムとは異なり、OSS ではユーザーがオブジェクトを直接変更することはできません。

OSS には、追加アップロード機能があります。これにより、オブジェクトの最後にデータを続けて追加できます。

オブジェクトの命名規則は次のとおりです。

  • オブジェクト名には UTF-8 エンコードを使用する必要があります。
  • オブジェクト名は 1 バイト以上 1023 バイト以下にします。
  • オブジェクト名の先頭にバックスラッシュ (\) とフォワードスラッシュ (/) は使用できません。
    オブジェクト名では、大文字と小文字が区別されます。 特に明記しない限り、OSS ドキュメントに記載されているオブジェクトおよびファイルは、まとめてオブジェクトと呼ばれます。

リージョン

リージョンは、 OSS データセンターの物理的な場所を表します。 作成したバケットを保存する OSS のリージョンを選択できます。 レイテンシとコストを最小限に抑えることが可能なリージョン、あるいは特定の規制要件を満たすリージョンを選択できます。 一般的に、ユーザーに近いリージョンほど、 アクセス速度は速くなります。 詳細は、「OSS リージョンと エンドポイント (OSS regions and endpoints)」をご参照ください。

リージョンは、オブジェクトレベルではなくバケットレベルで設定します。 したがって、バケットに含まれるすべてのオブジェクトは同じリージョンに格納されます。 バケットの作成時にリージョンを指定します。 作成後に変更することはできません。

エンドポイント

エンドポイントは、 OSS へのアクセスに使用されるドメイン名です。 OSS は HTTP RESTful API を介して 外部サービスを提供します。 リージョンごとにエンドポイントが異なります。 同じリージョンでも、 イントラネットを経由したアクセスかインターネットを経由したアクセスかによって、 使用するエンドポイントは異なります。 たとえば、杭州リージョンの場合、インターネットエンドポイントは oss-cn-hangzhou.aliyuncs.com、イントラネットエンドポイントは oss-cn-hangzhou-internal.aliyuncs.com です。 詳細は、 「OSS リージョンと エンドポイント (OSS regions and endpoints)」 をご参照ください。

AccessKey

AccessKey は、AccessKeyID と AccessKeySecret で構成されます。 この 2 つが 1 組で、アクセス ID が検証されます。 OSS では、 AccessKeyId と AccessKeySecret の対称暗号方式を使用して、 リクエスト送信者の身元が確認されます。 AccessKeyID は、ユーザーを識別するために使用されます。 AccessKeySecret は、ユーザーが署名を暗号化し、その署名を OSS で検証するために使用されます。 AccessKeySecret の機密性を保つ必要があります。 OSS では、AccessKey は次の 3 つの方法で生成されます。

  • バケット所有者が AccessKeys を申請します。
  • バケットの所有者が、 RAM を使用して第三者による AccessKeys の申請を許可します。
  • バケット所有者が、STS を使用して第三者による AccessKey の申請を許可します。

AccessKeys の詳細については、「アクセス制御 (Access control)」をご参照ください。

強力な一貫性

OSS では、オブジェクト操作はアトミックです。つまり中間状態がなく、操作は成功と失敗のどちらかです。 破損したデータや 部分的なデータが、OSS に書き込まれることはありません。

OSS でのオブジェクト操作は、非常に一貫性があります。 たとえば、ユーザーが アップロード (PUT) 成功のレスポンスを受信すると、そのオブジェクトはすぐに読み取り可能となり、 データはすでに 3 重に書き込まれています。 したがって、OSS は 書き込み後の読み取りに対して、強力な一貫性を提供します。 削除操作についても同じことが言えます。 ユーザーが オブジェクトを一旦削除すると、そのオブジェクトは直ちに削除されます。

OSS とファイルシステムの比較

比較項目 OSS ファイルシステム
データモデル OSS は、キー値のペア形式を使用した分散オブジェクトストレージサービスです。 ファイルシステムは、ファイルが格納されたディレクの階層ツリー構造です。
データ検索 オブジェクトは、一意のオブジェクト名 (キー) に基づいて取得されます。

"test1/test.jpg" といった オブジェクト名を使用できますが、これはオブジェクト ”test.jpg” が、"test1" という名前のディレクトリに保存されていることを示す訳ではありません。 OSS の場合、 "test1/test.jpg" と "a.jpg" には本質的な違いはありません。 異なる名前の オブジェクトへのアクセス中、同量のリソースが 消費されます。

ファイルはディレクトリ内のロケーションに基づいて取得されます。
利点 OSS は大規模な同時アクセスをサポートしています。つまり、過剰なリソースを使用せずに、大量の非構造化データ (画像、ビデオ、ドキュメントなど) を保存および取得できます。 データのコピーや置き換えが不要なため、ディレクトリの名前変更、移動、削除などのフォルダ操作は非常に簡単です。
注意点 格納されているオブジェクトを直接変更することはできません。

オブジェクトを変更する場合は、既存のオブジェクトと同じ名前の新しいオブジェクトをアップロードして置き換える必要があります。

システムのパフォーマンスは、単一デバイスの容量に依存します。 ファイルシステム内に作成されるファイルやディレクトリが多いほど、より多くのリソースが消費され、ユーザープロセスが長くなります。

そのため、OSS をファイルシステムにマッピングすることは推奨できません。 OSS を使用する際は、 画像、ビデオ、ドキュメントなど、大量の非構造化データを保存するための膨大なデータ処理能力といった利点を最大限に活用することを推奨します。

OSS の概念とファイルシステムの概念の対応表は次のとおりです。

OSS ファイルシステム
オブジェクト ファイル
バケット ホームディレクトリ
リージョン 該当なし
エンドポイント 該当なし
AccessKey 該当なし
該当なし マルチレベルディレクトリ
GetService ホームディレクトリリストの取得
GetBucket ファイルリストの取得
PutObject ファイルへの書き込み
AppendObject 既存のファイルへのデータの追加
GetObject ファイルの読み込み
DeleteObject オブジェクトの削除
該当なし ファイル内容の変更
CopyObject (同じターゲットとソース) ファイル属性の変更
CopyObject ファイルのコピー
該当なし ファイル名の変更