RESTful APIによって、Cloud Object Storage(COS)に対しHTTP匿名リクエストまたはHTTP署名リクエストを送信することができます。匿名リクエストは一般的に、静的ウェブサイトのホスティングなどの、パブリックアクセスを必要とするケースに用いられます。そのほかの大多数のケースでは署名リクエストが必要となります。
署名リクエストは匿名リクエストより、署名値を1つ多く持っています。署名はキー(SecretId/SecretKey)およびリクエスト情報を暗号化して生成した文字列をベースとしたものです。SDKは署名を自動計算しますので、お客様はユーザー情報の初期化の際にキーを設定しさえすれば、署名の計算について気にする必要はありません。RESTful APIを通じて送信するリクエストには、署名アルゴリズムに基づいて計算した署名を追加する必要があります。
パーマネントキーはCAMコンソールのAPIキー管理ページで取得できます。パーマネントキーにはSecretIdとSecretKeyが含まれ、アカウントの永続的なIDを表します。有効期限はありません。
APIリクエストを使用する場合、プライベートバケットの場合は必ず署名リクエストを使用しなければなりません。パーマネントキーで署名を生成し、Authorizationヘッダーに追加することで、署名リクエストを作成できます。リクエストをCOSに送信すると、COSは署名とリクエストが一致しているかを検証します。
説明:署名生成のアルゴリズムは複雑なため、SDKを直接使用してリクエストを送信することで、このプロセスを省略することをお勧めします。
GET /<ObjectKey> HTTP/1.1
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
Date: GMT Date
Authorization: q-sign-algorithm=sha1&q-ak=SecretId&q-sign-time=KeyTime&q-key-time=KeyTime&q-header-list=HeaderList&q-url-param-list=UrlParamList&q-signature=Signature
例えば、Java SDKのコードは次のようになります。その他の言語のdemoについては、SDKの概要のクイックスタートドキュメントをご参照ください。
// 1 ユーザーID情報(secretId、secretKey)を初期化します。
// SECRETIDおよびSECRETKEYについてはCAMコンソールhttps://console.cloud.tencent.com/cam/capiで確認および管理を行ってください
String secretId = "SECRETID";
String secretKey = "SECRETKEY";
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 bucketのリージョンを設定します。COSリージョンの略称についてはhttps://cloud.tencent.com/document/product/436/6224をご参照ください
// clientConfigにはregion、https(デフォルトではhttp)、タイムアウト、プロキシなどを設定するsetメソッドが含まれます。使用にあたってはソースコードまたはよくあるご質問のJava SDKのパートを参照できます。
Region region = new Region("COS_REGION");
ClientConfig clientConfig = new ClientConfig(region);
// ここではhttpsプロトコルの設定と使用を推奨します
// バージョン5.6.54からは、デフォルトでhttpsを使用します
clientConfig.setHttpProtocol(HttpProtocol.https);
// 3 cosクライアントを生成します。
COSClient cosClient = new COSClient(cred, clientConfig);
この記事はお役に立ちましたか?