Demonstrates how to copy an S3 file from one bucket to another. The file can also be renamed if desired. (The file already exists in S3 in one bucket, and is copied without downloading/uploading to another S3 bucket.) This example copies from /chilkat.qa/starfish.jpg to /chilkat.ocean/starfishCopy.jpg
curl -X PUT https://chilkat.ocean.s3.us-west-2.amazonaws.com/starfishCopy.jpg \
-H "x-amz-copy-source: /chilkat.qa/starfish.jpg"
<?php
// The version number (9_5_0) should match version of the Chilkat extension used, omitting the micro-version number.
// For example, if using Chilkat v9.5.0.48, then include as shown here:
include("chilkat_9_5_0.php");
$rest = new CkRest();
$authAws = new CkAuthAws();
$authAws->put_AccessKey('AWS_ACCESS_KEY');
$authAws->put_SecretKey('AWS_SECRET_KEY');
$authAws->put_Region('us-west-2');
$authAws->put_ServiceName('s3');
$rest->SetAuthAws($authAws);
// URL: https://chilkat.ocean.s3.us-west-2.amazonaws.com/starfishCopy.jpg
$bTls = true;
$port = 443;
$bAutoReconnect = true;
$success = $rest->Connect('chilkat.ocean.s3.us-west-2.amazonaws.com',$port,$bTls,$bAutoReconnect);
if ($success != true) {
print 'ConnectFailReason: ' . $rest->get_ConnectFailReason() . "\n";
print $rest->lastErrorText() . "\n";
exit;
}
$rest->AddHeader('x-amz-copy-source','/chilkat.qa/starfish.jpg');
$sbResponseBody = new CkStringBuilder();
$success = $rest->FullRequestNoBodySb('PUT','/starfishCopy.jpg',$sbResponseBody);
if ($success != true) {
print $rest->lastErrorText() . "\n";
exit;
}
$respStatusCode = $rest->get_ResponseStatusCode();
if ($respStatusCode >= 400) {
print 'Response Status Code = ' . $respStatusCode . "\n";
print 'Response Header:' . "\n";
print $rest->responseHeader() . "\n";
print 'Response Body:' . "\n";
print $sbResponseBody->getAsString() . "\n";
exit;
}
$xmlResponse = new CkXml();
$xmlResponse->LoadSb($sbResponseBody,true);
// See the Online Tool for Generating XML Parse Code
$CopyObjectResult_xmlns = $xmlResponse->getAttrValue('xmlns');
$LastModified = $xmlResponse->getChildContent('LastModified');
$ETag = $xmlResponse->getChildContent('ETag');
?>
<?xml version="1.0" encoding="UTF-8"?>
<CopyObjectResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<LastModified>2018-12-18T15:53:32.000Z</LastModified>
<ETag>"2e9c59dbf2662367dc97dfdda85da048"</ETag>
</CopyObjectResult>