View a markdown version of this page

GetObject (SOAP API) - Amazon Simple Storage Service

GetObject (SOAP API)

注記

SOAP API for Amazon S3 は新規顧客には利用できず、2025 年 8 月 31 日にサポート終了 (EOL) となります。REST API か AWS SDK を使用することをお勧めします。

GetObject オペレーションは、オブジェクトの現在のバージョンを返します。削除マーカーが設定されているオブジェクトを現在のバージョンとして GetObject を実行しようとすると、S3 は 404 エラーを返します。SOAP API を使用して、指定されたバージョンのオブジェクトを取得することはできません。そのためには、REST API を使用します。詳細については、「バージョニング」を参照してください。その他のオプションについては、GetObjectExtended (SOAP API) オペレーションを使用します。

注記

値「soap」を持つオブジェクトキー名は、仮想ホスト形式のリクエストについてサポートされていません。「soap」が使用されるオブジェクトキー名値の場合、パス形式の URL を代わりに使用する必要があります。

この例では、「quotes」バケットから「Nelson」オブジェクトを取得します。

Sample Request

<GetObject xmlns="https://doc.s3.amazonaws.com/2006-03-01"> <Bucket>quotes</Bucket> <Key>Nelson</Key> <GetMetadata>true</GetMetadata> <GetData>true</GetData> <InlineData>true</InlineData> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2006-03-01T12:00:00.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature> </GetObject>

Sample Response

<GetObjectResponse xmlns="https://s3.amazonaws.com/doc/2006-03-01"> <GetObjectResponse> <Status> <Code>200</Code> <Description>OK</Description> </Status> <Metadata> <Name>Content-Type</Name> <Value>text/plain</Value> </Metadata> <Metadata> <Name>family</Name> <Value>Muntz</Value> </Metadata> <Data>aGEtaGE=</Data> <LastModified>2006-01-01T12:00:00.000Z</LastModified> <ETag>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</ETag> </GetObjectResponse> </GetObjectResponse>

要素

  • Bucket: オブジェクトを取得するバケット。

  • Key: オブジェクトを識別するキー。

  • GetMetadata: これが true の場合、メタデータはオブジェクトとともに返されます。

  • GetData: これが true の場合、オブジェクトデータが返されます。

  • InlineData: これが true の場合、レスポンスの SOAP 本文の一部として、Base64 でエンコードされたデータが返されます。false の場合、データは SOAP アタッチメントとして返されます。InlineData オプションは、大きなオブジェクトでの使用には適していません。このオペレーションは、1 MB 以下のデータを操作する場合に限定されています。InlineData フラグが設定された GetObject リクエストは、結果のデータパラメータが 1MB を超えてエンコードされた場合、InlineDataTooLargeError ステータスコードで失敗します。大きなオブジェクトをダウンロードするには、InlineData フラグを設定せずに GetObject を呼び出すか、代わりに REST API を使用することを検討してください。

返される要素

  • Metadata: オブジェクトに保存されている名前と値のペアのメタデータ。

  • Data: リクエストで InlineData が true の場合、これには Base64 エンコードされたオブジェクトデータが含まれます。

  • LastModified: オブジェクトが Amazon S3 に保存された時刻。

  • ETag: オブジェクトのエンティティタグ。これは、条件付きの GET を行うために使用できるオブジェクトのハッシュ値です。ETag は、オブジェクトのコンテンツに加えた変更のみを反映し、メタデータに加えた変更は反映しません。

アクセスコントロール

オブジェクトへの READ アクセス権が付与されている場合にのみ、オブジェクトを読み取ることができます。

SOAP チャンクダウンロードと再開可能なダウンロード

GET の柔軟性を提供するために、Amazon S3 はチャンクダウンロードと再開可能なダウンロードをサポートしています。

以下から選択します。

  • 大きなオブジェクトをダウンロードする場合は、それらを小さなチャンクに分割できます。詳細については、レンジ GETを参照してください。

  • GET オペレーションが失敗した場合、ファイル全体ではなく残りの部分をダウンロードするようにアプリケーションを設計できます。詳細については、REST GET エラー回復を参照してください。

レンジ GET

一部のクライアントでは、大きなダウンロードを小さなダウンロードに分割する場合があります。GET を小さな単位に分割するには、Range を使用します。

GET を小さな単位に分割する前に、そのサイズを決定する必要があります。例えば、次のリクエストは bigfile オブジェクトのサイズを取得します。

<ListBucket xmlns="https://doc.s3.amazonaws.com/2006-03-01"> <Bucket>bigbucket</Bucket> <Prefix>bigfile</Prefix> <MaxKeys>1</MaxKeys> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2006-03-01T12:00:00.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature> </ListBucket>

Amazon S3 は以下のレスポンスを返します。

<ListBucketResult xmlns="https://s3.amazonaws.com/doc/2006-03-01"> <Name>quotes</Name> <Prefix>N</Prefix> <MaxKeys>1</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>bigfile</Key> <LastModified>2006-01-01T12:00:00.000Z</LastModified> <ETag>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</ETag> <Size>2023276</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>bcaf1ffd86f41161ca5fb16fd081034f</ID> <DisplayName>bigfile</DisplayName> </Owner> </Contents> </ListBucketResult>

以下は、bigfile オブジェクトから最初の 1 メガバイトをダウンロードするリクエストです。

<GetObject xmlns="https://doc.s3.amazonaws.com/2006-03-01"> <Bucket>bigbucket</Bucket> <Key>bigfile</Key> <GetMetadata>true</GetMetadata> <GetData>true</GetData> <InlineData>true</InlineData> <ByteRangeStart>0</ByteRangeStart> <ByteRangeEnd>1048576</ByteRangeEnd> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2006-03-01T12:00:00.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature> </GetObject>

Amazon S3 は、ファイルの最初の 1 メガバイトとファイルの Etag を返します。

<GetObjectResponse xmlns="http://s3.amazonaws.com/doc/2006-03-01"> <GetObjectResponse> <Status> <Code>200</Code> <Description>OK</Description> </Status> <Metadata> <Name>Content-Type</Name> <Value>text/plain</Value> </Metadata> <Metadata> <Name>family</Name> <Value>Muntz</Value> </Metadata> <Data>--first megabyte of bigfile--</Data> <LastModified>2006-01-01T12:00:00.000Z</LastModified> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> </GetObjectResponse> </GetObjectResponse>

前の部分がダウンロードされてからファイルが変更されないようにするには、IfMatch 要素を指定します。IfMatch 要素は必須ではありませんが、変更される可能性が高いコンテンツには推奨されます。

以下は、IfMatch リクエストヘッダーを使用してファイルの残りの部分を取得するリクエストです。

<GetObject xmlns="https://doc.s3.amazonaws.com/2006-03-01"> <Bucket>bigbucket</Bucket> <Key>bigfile</Key> <GetMetadata>true</GetMetadata> <GetData>true</GetData> <InlineData>true</InlineData> <ByteRangeStart>10485761</ByteRangeStart> <ByteRangeEnd>2023276</ByteRangeEnd> <IfMatch>"828ef3fdfa96f00ad9f27c383fc9ac7f"</IfMatch> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2006-03-01T12:00:00.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature> </GetObject>

Amazon S3 は、次のレスポンスとファイルの残りの部分を返します。

<GetObjectResponse xmlns="http://s3.amazonaws.com/doc/2006-03-01"> <GetObjectResponse> <Status> <Code>200</Code> <Description>OK</Description> </Status> <Metadata> <Name>Content-Type</Name> <Value>text/plain</Value> </Metadata> <Metadata> <Name>family</Name> <Value>>Muntz</Value> </Metadata> <Data>--remainder of bigfile--</Data> <LastModified>2006-01-01T12:00:00.000Z</LastModified> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> </GetObjectResponse> </GetObjectResponse>

バージョニングされた GetObject

次のリクエストは、バケット内のオブジェクトの指定されたバージョンを返します。

<GetObject xmlns="https://doc.s3.amazonaws.com/2006-03-01"> <Bucket>quotes</Bucket> <Key>Nelson</Key> <GetMetadata>true</GetMetadata> <GetData>true</GetData> <InlineData>true</InlineData> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2006-03-01T12:00:00.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature> </GetObject>

レスポンス例

<GetObjectResponse xmlns="https://s3.amazonaws.com/doc/2006-03-01"> <GetObjectResponse> <Status> <Code>200</Code> <Description>OK</Description> </Status> <Metadata> <Name>Content-Type</Name> <Value>text/plain</Value> </Metadata> <Metadata> <Name>family</Name> <Value>Muntz</Value> </Metadata> <Data>aGEtaGE=</Data> <LastModified>2006-01-01T12:00:00.000Z</LastModified> <ETag>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</ETag> </GetObjectResponse> </GetObjectResponse>

REST GET エラー回復

オブジェクトの GET が失敗した場合、ダウンロードする範囲を指定してファイルの残りの部分を取得できます。そのためには、ListBucket を使用してオブジェクトのサイズを取得し、ファイルの残りの部分でレンジ GET を実行する必要があります。詳細については、「GetObjectExtended (SOAP API)」を参照してください。

関連リソース

オブジェクトに対するオペレーション (SOAP API)