ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。 Object Storage Service (OSS) は、RESTful APIリクエストで仮想ホストスタイルのURLのみをサポートします。
Format
GetService (ListBuckets) およびDescribeRegionsリクエストを除く、OSSドメイン名を介したOSSへのすべてのリクエストには、ドメイン名にバケット情報が含まれています。
バケットへのアクセスに使用されるドメイン名は、BucketName.Endpoint
形式です。ここで、BucketNameはバケットの名前、Endpointはバケットが配置されているリージョンのエンドポイントです。
OSSエンドポイントには、内部エンドポイント、パブリックエンドポイント、アクセラレーションエンドポイントが含まれます。
OSSはRESTful API操作を使用してサービスを提供します。 アクセスするリージョンによって使用するエンドポイントは異なります。 詳細は、「リージョンとエンドポイント」をご参照ください。
追加の設定なしで、内部エンドポイントとパブリックエンドポイントを使用できます。
アクセラレーションエンドポイントを使用する前に、転送アクセラレーション機能を有効にする必要があります。 詳細については、「転送アクセラレーションの有効化」をご参照ください。
パブリックエンドポイントをカスタムドメイン名に置き換えて、OSSリソースにアクセスすることもできます。 詳細については、「カスタムドメイン名のマップ」または「アクセラレーションエンドポイントのマップ」をご参照ください。
たとえば、次のエンドポイントを使用して、中国 (杭州) リージョンにあるバケットにアクセスします。
リクエストスタイル
セキュリティ上の理由から、RESTful APIリクエストを開始するときは、パススタイルのURLではなく、仮想ホストスタイルのURLのみを使用できます。 仮想ホストスタイルのURLには、バケット名が含まれます。
仮想ホストスタイルURLの形式:
https://BucketName.Endpoint/objectName
仮想ホストスタイルURLの例:
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/demo.png
リクエストヘッダー形式
次のコードは、OSSに送信されるRESTful APIリクエストのリクエストヘッダー形式を示しています。
GET / HTTP/1.1
Host: BucketName.Endpoint
Date: GMT Date
Authorization: SignatureValue
ヘッダー | タイプ | 説明 |
日付 | String | HTTP/1.1プロトコルで指定されたGMT時間。 例: 日曜日、9月2021日23:00:00 GMT。 このヘッダーはデフォルトでは空です。 |
ホスト | String | アクセスドメイン名。 形式: このヘッダーはデフォルトでは空です。 |
権限付与 | String | リクエストの有効性を検証するために使用される認証情報。 このヘッダーはデフォルトでは空です。 シナリオ: 非匿名リクエスト。 |
リクエストの例
仮想ホストスタイルURLのサンプルリクエスト
サンプルOSSリソース:
バケット名: examplebucket
リージョン: oss-cn-hangzhou
オブジェクト名: demo.png
サンプルURL:
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/demo.png
サンプルリクエスト:
GET /demo.png HTTP/1.1
Host: examplebucket.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
カスタムドメイン名のサンプルリクエスト
サンプルカスタムドメイン名:
www.example.com
サンプルOSSリソース:
バケット名: examplebucket
オブジェクト名: demo.png
サンプルURL:
https://www.example.com/demo.png
サンプルリクエスト:
GET /demo.png HTTP/1.1
Host: example.com
Date: GMT Date
Authorization: SignatureValue
署名方法
次のいずれかの方法を使用して、署名を計算し、RESTful APIリクエストに署名を追加できます。
リクエストヘッダーに署名を追加する: ほとんどの場合、この方法を使用することを推奨します。 詳細については、「承認ヘッダーに署名を含める」をご参照ください。
URLに署名を追加する: 署名付きURLを使用してデータを共有する場合、署名付きURLの有効期間内にインターネット経由ですべてのユーザーがデータを取得できます。 これは、セキュリティリスクを引き起こす。 サードパーティのユーザーに署名情報を含むURLを提供してアクセスを許可する場合は、この方法を使用できます。 詳細については、「URLへの署名の追加」をご参照ください。
2つの署名方法の違いを次の表に示します。
項目 | リクエストヘッダーへの署名の追加 | URLへの署名の追加 |
Expiresパラメーターの設定 | 継続しない | 可 |
一般的なリクエストメソッド | GET、POST、PUT、およびDELETE | GETとPUT |
時間形式 | Dateリクエストヘッダーは、GMT形式でリクエスト時間を指定するために使用されます。 重要 リクエストのDateヘッダーで指定された時間と、リクエストが受信されたサーバーの時間との差が15分を超える場合、OSSはリクエストを拒否し、HTTPステータスコード403を返します。 | Expiresパラメーターは、署名付きURLがUnixタイムスタンプ形式で期限切れになる時間を指定するために使用されます。 重要 OSSがURLリクエストを受信した時刻が、署名に含まれているExpiresパラメーターの値よりも遅い場合、リクエストタイムアウトエラーが返されます。 |
URLエンコード署名 | 継続しない | 可 |
API 操作
OSSが提供するAPI操作の詳細については、「関数別の操作のリスト」をご参照ください。