GET Object

オブジェクトを取得します。
オブジェクトに対しREAD権限を持たなければ、オブジェクトを取得することはできません。
匿名ユーザにREAD権限が付与されていれば、Authorizationヘッダーを利用せずにオブジェクトを取得することができます。

 

リクエスト情報

シンタックス
GET /{bucket name}/{object key} HTTP/1.1
Host: s3api.iot.iij.jp
Date: {date}
Authorization: {authorization string}
Range: bytes={byte range}

 

リクエストパラメータ

この操作では、以下のリクエストパラメータが使用可能です。
これらのリクエストパラメータを設定することで、ユーザは GET Object のレスポンスヘッダを上書きできます。 パラメータを設定しない場合は、PUT Object 時にリクエストヘッダーで指定した値が返されます。
GET Object に失敗した場合、エラーレスポンスのレスポンスヘッダは上書きされません。

表. GET Object リクエストパラメータ一覧
パラメータ名説明必須
response-content-type

レスポンスヘッダの Content-Type を指定します。

  • 型:String
  • デフォルト値:なし
×
response-content-language

レスポンスヘッダの Content-Language を指定します。

  • 型:String
  •  デフォルト値:なし
×
response-expires

レスポンスヘッダの Expires を指定します。

  • 型:String
  • デフォルト値:なし
×
response-cache-control

レスポンスヘッダの Cache-Control を指定します。

  • 型:String
  • デフォルト値:なし
×
response-content-disposition

レスポンスヘッダの Content-Disposition を指定します。

  • 型:String
  • デフォルト値:なし
×
response-content-encoding

レスポンスヘッダの Content-Encoding を指定します。

  • 型:String
  • デフォルト値:なし
×

 

リクエストヘッダー

この操作では基本リクエストヘッダーに加え、以下のヘッダーを使用します。

表. GET Object リクエストヘッダー一覧

HTTPヘッダー説明必須
Range

ダウンロードするオブジェクトの範囲を指定します。

bytes=開始位置-終了位置 の形式で記述します。開始位置を省略した場合、開始位置は 0 となり、終了位置を省略した場合はファイルの終了位置(オブジェクトのサイズ)となります。また、先頭の bytes= を省略することもできます。

  • 型:String
  • デフォルト値:なし

値の指定パターンは、以下の3通りです。

  • start-end
    startバイトからendバイトまでのデータを返します。
  • start-
    startバイト以降のデータを返します。
  • -end
    ファイルの後端から end バイトまでのデータを返します。

範囲をカンマ区切りで複数指定された場合、最初に記載されている範囲のみを解釈します。 (e.x., bytes=0-999, bytes=1000-, -1999)

×
If-Modified-Since

指定された時間以降にオブジェクトが更新されていればオブジェクトを返し、その他の場合には304 Not Modifiedを返します。

  • 型:String
  • デフォルト値:なし
  • 制約:なし
×
If-Unmodified-Since

指定された時間以降にオブジェクトが更新されていなければ、オブジェクトを返し、その他の場合には412 Precondition Failedを返します。

  • 型:String
  • デフォルト値:なし
×
If-Match

指定された値がオブジェクトのETagと 一致する 場合にオブジェクトを返します。一致しない場合には412 Precondition Failedを返します。

  • 型:String
  • デフォルト値:なし
×
If-None-Match

指定された値がオブジェクトのETagと 一致しない 場合にオブジェクトを返します。一致する場合には304 Not Modifiedを返します。

  • 型:String
  • デフォルト値:なし
×

 

サーバサイド暗号化 で暗号化されたオブジェクトを取得する場合、以下のヘッダを指定します。

表. GET Object リクエストヘッダー(サーバサイド暗号化)一覧
名前説明必須
x-iijgio-server-side-encryption-customer-algorithmオブジェクトの復号に用いるアルゴリズムを指定します。値は”AES256”である必要があります。
x-iijgio-server-side-encryption-customer-keyオブジェクトの復号に用いる暗号化キーを指定します。Base64でエンコードした値をセットします。暗号化キーの長さはBase64エンコード前で256ビットである必要があります。 暗号化キーは対象オブジェクトの暗号化後に速やかに破棄されます。
x-iijgio-server-side-encryption-customer-key-MD5暗号化キーをMD5(128bit)でダイジェストし、Base64エンコードした値をセットします。暗号化キーが正しく送られて来たかサービス側で検証するために利用します。

リクエストエレメント

この操作ではリクエストエレメントは使用しません。

 

レスポンス情報

レスポンスヘッダー

この操作では基本レスポンスヘッダーに加え、以下のヘッダーを返します。

表. GET Object レスポンスヘッダー一覧

HTTPヘッダー説明
x-iijgio-meta-*

オブジェクトのPUT操作をした際にメタデータを用意していた場合、x-iijgio-meta-を接頭辞として、レスポンスヘッダーで返されます。
例、family -> x-iijgio-meta-family
メタデータは逐語的に返されます(解釈は行いません)。

  • 型:String

Content-TypeはPUT Object時に指定された値が返されます。 PUT Object時にContent-Typeを指定されなかったオブジェクトについては、”binary/octet-stream”として返されます。
Rangeヘッダーを指定したリクエストに対しては、レスポンスに以下のヘッダーに正しい値を設定して返します。

Content-Length: xxx
Accept-Ranges: yyy
Content-Range: start-end/total

 

取得対象のオブジェクトが サーバサイド暗号化 で暗号化されている場合、追加で以下のヘッダを返します。

表. GET Object レスポンスヘッダー(サーバサイド暗号化)一覧
HTTPヘッダー説明
x-iijgio-server-side-encryption-customer-algorithm

暗号化に利用したアルゴリズムを返します。

  • 型:String
x-iijgio-server-side-encryption-customer-key-MD5

暗号化に利用した暗号化キーのMD5値を返します。

  • 型:String
レスポンスエレメント

この操作はレスポンスエレメントを返しません。

エラー情報

この操作では以下のエラーを返します。

表. GET Object エラーコード一覧
コードステータス内容
InvalidAccessKeyId403 Forbidden指定のアクセスキーIDを持つユーザが存在しません。
SignatureDoesNotMatch403 Forbidden指定されたリクエストのシグネチャが一致しません。
AccessDenied403 Forbiddenオブジェクトに対するREAD権限がありません。
NoSuchKey404 Not Found指定Keyのオブジェクトが存在しません。
InvalidRange416 Request Range Not Satisfiable無効な範囲が指定されています。
InvalidArgument400 Bad Request

以下のいずれかが原因です。

  • サーバサイド暗号化用のヘッダの指定に誤りがあります
  • ヘッダで指定された暗号化キーが、暗号化時の暗号化キーと一致しません
  • httpsで通信をしていません
InvalidEncryptionAlgorithmError400 Bad Requestx-iijgio-server-side-encryption-customer-algorithに誤った値が指定されています。

 

サンプル

サンプル1:オブジェクトを取得する
リクエスト
GET /bucket/my-image.jpg HTTP/1.1
Host: s3api.iot.iij.jp
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: IIJGIO 02236Q3V0WHVSRW0EXG2:0RQf4/cRonhpaBX5sCYVf1bNRuU=
レスポンス
HTTP/1.1 200 OK
x-iijgio-id-2: eftixk72aD6Ap51TnqcoF8eFidJG9Z/2mkiDFu8yU9AS1ed4OpIszj7UDNEHGran
x-iijgio-request-id: 318BC8BC148832E5
Date: Wed, 28 Oct 2009 22:32:00 GMT
Last-Modified: Wed, 12 Oct 2009 17:50:00 GMT
ETag: "fba9dede5f27731c9771645a39863328"
Content-Length: 434234
Content-Type: text/plain
Server: s3api.iot.iij.jp

[434234 bytes of object data]

 

サンプル2:サーバサイド暗号化されたオブジェクトを取得する
リクエスト
GET /bucket/my-image.jpg HTTP/1.1
Host: s3api.iot.iij.jp
Date: Wed, 28 Oct 2009 22:32:00 GMT
Authorization: IIJGIO 02236Q3V0WHVSRW0EXG2:0RQf4/cRonhpaBX5sCYVf1bNRuU=
x-iijgio-server-side-encryption-customer-algorithm: AES256
x-iijgio-server-side-encryption-customer-key: MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=
x-iijgio-server-side-encryption-customer-key-md5: dnF5x6K/8ZZRzpfSlMMM+w==
レスポンス
HTTP/1.1 200 OK
x-iijgio-id-2: eftixk72aD6Ap51TnqcoF8eFidJG9Z/2mkiDFu8yU9AS1ed4OpIszj7UDNEHGran
x-iijgio-request-id: 318BC8BC148832E5
x-iijgio-server-side-encryption-customer-algorithm: AES256
x-iijgio-server-side-encryption-customer-key-md5: dnF5x6K/8ZZRzpfSlMMM+w==
Date: Wed, 28 Oct 2009 22:32:00 GMT
Last-Modified: Wed, 12 Oct 2009 17:50:00 GMT
ETag: "7510dc34e6d7b31a30bd83c81a570274"
Content-Length: 434234
Content-Type: text/plain
Server: s3api.iot.iij.jp

[434234 bytes of object data]