API REST Storage S3

ListObjects

Cette opération renvoie tout ou partie des objets d'un bucket, jusqu'à 1 000.

Exemple de requête :

GET /{fully_qualified_bucket_name} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
    x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
    x-amz-request-id: B34E94CACB2CEF6D
    Date: Mon, 17 Oct 2022 22:47:09 GMT
    <ListBucketResult>
        <Name>{fully_qualified_bucket_name}</Name>
        <Prefix></Prefix>
        <Marker></Marker>
        <Contents>
                <Key>example-object.jpg</Key>
                <LastModified>2022-10-17T01:56:20.000Z</LastModified>
                <ETag>"bf1d937a4d46a19f3basdfeg5cc8b902"</ETag>
                <Size>32347</Size>
                <Owner>
                <ID>canonical-user-id</ID>
                <DisplayName>example-display-name</DisplayName>
                </Owner>
                <StorageClass>STANDARD</StorageClass>
        </Contents>
  </ListBucketResult>

ListObjectsV2

Cette opération renvoie tout ou partie des objets d'un bucket, jusqu'à 1 000.

Exemple de requête :

GET /{fully_qualified_bucket_name}?list-type=2 HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
    x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
    x-amz-request-id: B34E94CACB2CEF6D
    Date: Mon, 17 Oct 2022 22:47:09 GMT
    <ListBucketResult>
        <Name>{fully_qualified_bucket_name}</Name>
        <Prefix></Prefix>
        <Marker></Marker>
        <Contents>
                <Key>example-object.jpg</Key>
                <LastModified>2022-10-17T01:56:20.000Z</LastModified>
                <ETag>"bf1d937a4d46a19f3basdfeg5cc8b902"</ETag>
                <Size>32347</Size>
                <Owner>
                <ID>canonical-user-id</ID>
                <DisplayName>example-display-name</DisplayName>
                </Owner>
                <StorageClass>STANDARD</StorageClass>
        </Contents>
  </ListBucketResult>

GetObject (versionId facultatif)

Cette opération récupère un objet d'un bucket avec un ID de version facultatif fourni.

Exemple de requête :

GET /{fully_qualified_bucket_name}/{object_name}?versionId={object_version_id} HTTP/1.1
Host: host
Content-MD5: request header
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
Content-Length: 13432
[13432 bytes of object data]

GetObjectAcl (versionId facultatif)

Cette opération renvoie une réponse positive, ainsi que l'ID, le nom à afficher et l'autorisation du propriétaire de l'objet, ce qui indique que le propriétaire dispose d'un accès complet à l'objet. Vous devez fournir les identifiants d'accès au compte pour cette opération.

Exemple de requête :

GET /{fully_qualified_bucket_name}/{object_name}?acl&versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
Content-Length: 157
<AccessControlPolicy>
    <Owner>
        <ID>canonical-user-id</ID>
        <DisplayName>example-display-name</DisplayName>
    </Owner>
    <AccessControlList>
        <Grant>
            <Grantee>
        <ID>canonical-user-id</ID>
                <DisplayName>example-display-name</DisplayName>
                <Type>CanonicalUser</Type>
            </Grantee>
            <Permission>FULL_CONTROL</Permission>
        </Grant>
</AccessControlList>
</AccessControlPolicy>

GetObjectRetention (versionId facultatif)

Cette opération récupère le mode de conservation de l'objet spécifié et la date d'expiration de la conservation du verrouillage d'objet. Le bucket doit disposer d'une configuration de verrouillage d'objets.

Exemple de requête :

GET /{fully_qualified_bucket_name}/{object_name}?retention&versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
X-amz-expected-bucket-owner: ExpectedBucketOwner (optional)

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
<Retention>
    <Mode>COMPLIANCE</Mode>
    <Timestamp>2022-10-17T01:56:20.000Z</Timestamp>
</Retention>

GetObjectLegalHold (versionId facultatif)

Cette opération permet d'obtenir l'état de préservation à titre conservatoire le plus récent d'un objet. Le bucket doit disposer d'une configuration de verrouillage d'objets.

Exemple de requête :

GET /{fully_qualified_bucket_name}/{object_name}?legal-hold&versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
X-amz-expected-bucket-owner: ExpectedBucketOwner (optional)

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
<LegalHold>
    <Status>ON</Status>
</LegalHold>

GetObjectTagging (versionId facultatif)

Cette opération utilise la sous-ressource de taggage pour renvoyer tous les tags d'un objet. Si le paramètre versionId n'est pas spécifié, l'opération renvoie tous les tags de la version la plus récente de l'objet dans un bucket avec gestion des versions. Si la version actuelle de l'objet est un repère de suppression, l'état MethodNotAllowed est renvoyé avec l'en-tête de réponse x-amz-deletemarker défini sur true.

Exemple de requête :

GET /{fully_qualified_bucket_name}/{object_name}?tagging&versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
X-amz-expected-bucket-owner: ExpectedBucketOwner (optional)

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
Date: Mon, 17 Oct 2022 22:47:09 GMT
<Tagging>
  <TagSet>
        <Tag>
        <Key>tag1</Key>
        <Value>val1</Value>
      </Tag>
      <Tag>
        <Key>tag2</Key>
        <Value>val2</Value>
      </Tag>
  </TagSet>
</Tagging>

PutObject

Cette opération ajoute un objet à un bucket. Vous devez disposer des autorisations d'écriture appropriées sur un bucket pour y ajouter un objet.

Chiffrement version 2

Pour un bucket EV2 (Encryption Version 2), la requête utilisera une clé AEAD par défaut pour le chiffrement si aucune clé personnalisée n'est spécifiée.

Pour utiliser une clé AEAD personnalisée pour le chiffrement, vous devez définir deux en-têtes :

  • x-amz-server-side-encryption: SSE-KMS : indique que cette requête tente d'utiliser une clé AEAD personnalisée.
  • x-amz-server-side-encryption-aws-kms-key-id: {custom_key_namespace}/{custom_key_name} : spécifie la clé à utiliser. L'espace de noms de la clé doit se trouver dans le même projet que le bucket.

Exemple de requête :

PUT /{fully_qualified_bucket_name}/{object_name} HTTP/1.1
Host: host
Content-MD5: request header
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-Length: 5233
Content-type: text/plain
[5233 bytes of object data]

Exemple de réponse (réussite) :

HTTP/1.1 100 Continue

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
Date: Mon, 17 Oct 2022 22:47:09 GMT
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

PutObjectTagging

Cette opération utilise la sous-ressource de taggage pour ajouter un ensemble de tags à un objet existant.

Exemple de requête :

PUT /{fully_qualified_bucket_name}/{object_name}?tagging HTTP/1.1
Host: host
Content-MD5: +b9TrAB9F8ne7rJpPkqavQ==
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-Length: {length}
Content-type: text/plain
<Tagging>
    <TagSet>
        <Tag>
            <key>my-tag-key</key>
            <value>my-tag-value</value>
        </Tag>
    </TagSet>
</Tagging>

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
Date: Mon, 17 Oct 2022 22:47:09 GMT

DeleteObjects (versionId facultatif)

Cette opération vous permet de supprimer plusieurs objets d'un même bucket en une seule requête. La requête peut contenir une liste de 1 000 clés maximum que vous souhaitez supprimer.

Exemple de requête :

DELETE /{fully_qualified_bucket_name}/{object_name}?versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain
<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
   <Object>
      <Key>object_one.jpg</Key>
      <VersionId>1234568892</VersionId>
   </Object>
   <Object>
      <Key>object_two.jpg</Key>
   </Object>
</Delete>

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: 5h4FxSNCUS7wP5z92eGCWDshNpMnRuXvETa4HH3LvvH6VAIr0jU7tH9kM7X+njXx
x-amz-request-id: A437B3B641629AEE
Date: Fri, 02 Oct 2023 01:53:42 GMT
Content-Type: application/xml
Content-Length: 251
<?xml version="1.0" encoding="UTF-8"?>
<DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Deleted>
        <Key>object_one.jpg</Key>
    </Deleted>
    <Error>
        <Key>object_two.jpg</Key>
        <Code>AccessDenied</Code>
        <Message>Access Denied</Message>
    </Error>
</DeleteResult>

DeleteObject (versionId facultatif)

Supprime un objet d'un bucket. Le comportement dépend de l'état de la gestion des versions du bucket : - Si la gestion des versions du bucket n'est pas activée, l'opération supprime définitivement l'objet. - Si la gestion des versions est activée pour le bucket, l'opération insère un repère de suppression, qui devient la version actuelle de l'objet. Pour supprimer définitivement un objet d'un bucket avec gestion des versions, vous devez inclure le versionId de l'objet dans la requête.

Exemple de requête :

DELETE /{fully_qualified_bucket_name}/{object_name}?versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

Exemple de réponse (réussite) :

HTTP/1.1 204 NoContent
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
Date: Mon, 17 Oct 2022 22:47:09 GMT

DeleteObjectTagging (versionId facultatif)

Cette opération utilise la sous-ressource de taggage pour supprimer tous les tags d'un objet.

Exemple de requête :

DELETE /{fully_qualified_bucket_name}/{object_name}?tagging&versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

Exemple de réponse (réussite) :

HTTP/1.1 204 NoContent
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
Date: Mon, 17 Oct 2022 22:47:09 GMT

HeadObject (versionId facultatif)

L'opération HEAD récupère les métadonnées d'un objet sans renvoyer l'objet lui-même. Cette opération est utile si vous ne vous intéressez qu'aux métadonnées d'un objet.

Exemple de requête :

HEAD /{fully_qualified_bucket_name}/{object_name}?versionId={VersionId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

Exemple de réponse (réussite) :

HTTP/1.1 200
x-amz-id-2: ef8yU9AS1ed4OpIszj7UDNEHGran
x-amz-request-id: 318BC8BC143432E5
x-amz-version-id: 3HL4kqtJlcpXroDTDmjVBH40Nrjfkd
Date: Wed, 28 Oct 2023 22:32:00 GMT
Last-Modified: Sun, 1 Jan 2006 12:00:00 GMT
ETag: "fba9dede5f27731c9771645a39863328"
Content-Length: 434234
Content-Type: text/plain
Connection: close

CreateMultipartUpload

Cette action lance une importation en plusieurs parties et renvoie un ID d'importation.

Une importation en plusieurs parties vous permet d'ajouter un seul objet sous la forme d'un ensemble de parties. Chaque partie est une portion contiguë des données de l'objet. Importez ces parties d'objet indépendamment et dans n'importe quel ordre.

L'ID d'importation renvoyé permet d'associer toutes les parties de l'importation en plusieurs parties spécifique. Vous spécifiez cet ID d'importation dans chacune de vos requêtes d'importation de partie ultérieures. Vous l'utilisez également dans la requête finale pour finaliser ou annuler la requête d'importation en plusieurs parties.

Chiffrement version 2

L'ID d'importation renvoyé pour un bucket EV2 (Encryption Version 2) ne sera généré qu'une seule fois. Si l'ID d'importation renvoyé par cette opération est perdu, il ne peut pas être récupéré à partir de ListMultipartUploads. Toutefois, les ID d'importation renvoyés par ListMultipartUploads peuvent être utilisés pour AbortMultipartUpload ou ListParts. Seul l'ID renvoyé par CreateMultipartUpload peut être utilisé pour UploadPart ou CompleteMultipartUpload.

Exemple de requête :

POST /{fully_qualified_bucket_name}/{object_name}?uploads HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
    <InitiateMultipartUploadResult>
        <Bucket>{fully_qualified_bucket_name}</Bucket>
        <Key>{object_name}</Key>
        <UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId>
  </InitiateMultipartUploadResult>

ListMultipartUploads (max-uploads facultatif)

Cette opération liste les importations en plusieurs parties en cours pour un bucket.

Chiffrement version 2

Les ID d'importation renvoyés par cette opération ne fonctionneront qu'avec ListParts et AbortMultipartUpload.

Exemple de requête :

GET /{fully_qualified_bucket_name}?uploads&max-uploads={max-uploads} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
<ListMultipartUploadsResult>
<Bucket>{fully_qualified_bucket_name}</Bucket>
<KeyMarker></KeyMarker>
<UploadIdMarker></UploadIdMarker>
<NextKeyMarker>my-movie.m2ts</NextKeyMarker>
    <NextUploadIdMarker>YW55IGlkZWEgd2h5IGVsdmluZydzIHVwbG9hZCBmYWlsZWQ</NextUploadIdMarker>
    <MaxUploads>3</MaxUploads>
    <IsTruncated>true</IsTruncated>
    <Upload>
            <Key>{object_name}</Key>
            <UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId>
            <Initiator>
            <ID>{canonical-user-id}</ID>
            <DisplayName>InitiatorDisplayName</DisplayName>
            </Initiator>
            <Owner>
            <ID>{canonical-owner-user-id}</ID>
            <DisplayName>OwnerDisplayName</DisplayName>
            </Owner>
            <StorageClass>STANDARD</StorageClass>
            <Initiated>2022-10-17T01:56:20.000Z</Initiated>
    </Upload>
</ListMultipartUploadsResult>

ListParts (max-parts facultatif)

Cette opération liste les parties importées pour une importation en plusieurs parties spécifique et renvoie un maximum par défaut de 1 000 parties importées. Vous devez inclure l'ID d'importation, qui est obtenu avec la requête CreateMultipartUpload.

Chiffrement version 2

L'ID d'importation renvoyé par CreateMultipartUpload ou ListMultipartUploads peut être utilisé pour cette requête.

Exemple de requête :

GET /{fully_qualified_bucket_name}/{object_name}?uploadId={uploadId}&max-parts={max-parts} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
<ListPartsResult>
        <Bucket>{fully_qualified_bucket_name}</Bucket>
        <Key>{object_name}</Key>
        <UploadId>{uploadId}</UploadId>
        <Initiator>
            <ID>{canonical-user-id}</ID>
            <DisplayName>InitiatorDisplayName</DisplayName>
          </Initiator>
        <Owner>
                <ID>{canonical-owner-id}</ID>
                <DisplayName>OwnerDisplayName</DisplayName>
        </Owner>
        <StorageClass>STANDARD</StorageClass>
        <PartNumberMarker></PartNumberMarker>
        <NextPartNumberMarker></NextPartNumberMarker>
        <MaxParts>{max-parts}</MaxParts>
        <IsTruncated>true</IsTruncated>
        <Part>
                <PartNumber>2</PartNumber>
                <LastModified>2022-10-17T01:56:20.000Z</LastModified>
                <ETag>"7778aef8t866abc1fa1e8466f296d394"</ETag>
                <Size>10485769</Size>
        </Part>
        <Part>
                <PartNumber>3</PartNumber>
                <LastModified>2022-10-17T01:56:20.000Z</LastModified>
                <ETag>"aaab18db4cc2f85cedef854fccci24x8"</ETag>
                <Size>10423760</Size>
        </Part>
</ListPartsResult>

UploadPart

Cette opération importe une partie d'un objet dans une importation en plusieurs parties.

Chiffrement version 2

Pour un bucket EV2 (Encryption Version 2), vous devez utiliser l'ID renvoyé par CreateMultipartUpload. Les ID renvoyés par ListMutlipartUploads ne fonctionneront pas pour cette requête.

Exemple de requête :

PUT /{fully_qualified_bucket_name}/{object_name}?uploadId={uploadId}&partNumber={partNumber} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-Length: 345442
Content-MD5: +b9TrAB9F8ne7rJpPkqavQ==
[part data omitted, 345442 bytes of part data]

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

AbortMultipartUpload

Cette action annule une importation en plusieurs parties et rend l'ID d'importation non valide pour l'importation de parties supplémentaires. L'espace de stockage consommé par les parties précédemment importées est libéré.

Chiffrement version 2

Pour un bucket EV2 (Encryption Version 2), vous pouvez utiliser l'ID renvoyé par CreateMultipartUpload ou ListMultipartUploads pour cette opération.

Exemple de requête :

DELETE /{fully_qualified_bucket_name}/{object_name}?uploadId={uploadId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-type: text/plain

Exemple de réponse (réussite) :

HTTP/1.1 204 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
Date: Mon, 17 Oct 2022 22:47:09 GMT

CompleteMultipartUpload

Cette opération effectue une importation d'objet en plusieurs parties en assemblant les parties précédemment importées.

Chiffrement version 2

Pour un bucket EV2 (Encryption Version 2), vous devez utiliser l'ID renvoyé par CreateMultipartUpload. Les ID renvoyés par ListMutlipartUploads ne fonctionneront PAS pour cette requête.

Pour utiliser une clé AEAD personnalisée pour le chiffrement, vous devez définir deux en-têtes :

  • x-amz-server-side-encryption: SSE-KMS : indique que cette requête tente d'utiliser une clé AEAD personnalisée.
  • x-amz-server-side-encryption-aws-kms-key-id: {custom_key_namespace}/{custom_key_name} : spécifie la clé à utiliser. L'espace de noms de la clé doit se trouver dans le même projet que le bucket.

Exemple de requête :

POST /{fully_qualified_bucket_name}/{object_name}?uploadId={uploadId} HTTP/1.1
Host: host
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string
Content-Length: 391
Content-type: text/plain
<CompleteMultipartUpload>
<Part>
    <PartNumber>1</PartNumber>
    <ETag>"a54357aff0632cce46d942af68356b38"</ETag>
</Part>
<Part>
    <PartNumber>2</PartNumber>
    <ETag>"0c78aef83f66abc1fa1e8477f296d394"</ETag>
</Part>
<Part>
      <PartNumber>3</PartNumber>
      <ETag>"acbd18db4cc2f85cedef654fccc4a4d8"</ETag>
</Part>
</CompleteMultipartUpload>

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6D
Date: Mon, 17 Oct 2022 22:47:09 GMT
<CompleteMultipartUploadResult>
<Location>http://{host}/{fully_qualified_bucket_name}/{object_name}</Location>
        <Bucket>{fully_qualified_bucket_name}</Bucket>
        <Key>{object_name}</Key>
        <ETag>"acbd18db4cc2f85cedef654fccc4a4d8"</ETag>
</CompleteMultipartUploadResult>

CopyObject

Cette opération est un type spécial de PutObject, où les données sont extraites d'un objet source déjà présent dans le store d'objets.

La clé de l'objet et du bucket source est spécifiée comme valeur de l'en-tête x-amz-copy-source, séparée par un /. Par exemple, pour copier l'objet images/my_image.jpg à partir du bucket my_bucket, la valeur à définir est my_bucket/images/my_image.jpg.

Chiffrement version 2

Pour un bucket EV2 (Encryption Version 2), cet objet source doit provenir d'un bucket Encryption V2, sinon l'opération échouera.

Pour utiliser une clé AEAD personnalisée pour le chiffrement, vous devez définir deux en-têtes :

  • x-amz-server-side-encryption: SSE-KMS : indique que cette requête tente d'utiliser une clé AEAD personnalisée.
  • x-amz-server-side-encryption-aws-kms-key-id: {custom_key_namespace}/{custom_key_name} : spécifie la clé à utiliser. L'espace de noms de la clé doit se trouver dans le même projet que le bucket.

Exemple de requête :

PUT /{fully_qualified_bucket_name}/{object_name} HTTP/1.1
Host: host
X-Amz-Copy-Source: my_bucket/images/my_image.jpg
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
x-amz-copy-source-version-id: 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
Date: Mon, 17 Oct 2022 22:47:09 GMT

<CopyObjectResult>
    <LastModified>2009-10-12T17:50:30.000Z</LastModified>
    <ETag>"9b2cf535f27731c974343645a3985328"</ETag>
</CopyObjectResult>

UploadPartCopy

Cette opération utilise un objet déjà présent dans le store d'objets comme données pour une seule partie d'une importation en plusieurs parties.

La clé de l'objet et du bucket source est spécifiée comme valeur de l'en-tête x-amz-copy-source, séparée par un /. Par exemple, pour copier l'objet images/my_image.jpg à partir du bucket my_bucket, la valeur à définir est my_bucket/images/my_image.jpg.

Chiffrement version 2

Cette opération n'est pas possible pour les buckets EV2 (Encryption Version 2).

Exemple de requête :

PUT /{fully_qualified_bucket_name}/{object_name}?uploadId={uploadId}&partNumber={partNumber} HTTP/1.1
Host: host
X-Amz-Copy-Source: my_bucket/images/my_image.jpg
X-Amz-Date: date
X-Amz-Content-SHA256: authorization string

Exemple de réponse (réussite) :

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIX
x-amz-request-id: B34E94CACB2CEF6C
x-amz-copy-source-version-id: 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
Date: Mon, 17 Oct 2022 22:47:09 GMT

<CopyPartResult>
   <ETag>string</ETag>
   <LastModified>timestamp</LastModified>
   <ChecksumCRC32>string</ChecksumCRC32>
   <ChecksumCRC32C>string</ChecksumCRC32C>
   <ChecksumSHA1>string</ChecksumSHA1>
   <ChecksumSHA256>string</ChecksumSHA256>
</CopyPartResult>