Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Utilizzo CopyObject con un AWS SDK o una CLI - AWS Esempi di codice SDK

Sono disponibili altri esempi AWS SDK nel repository AWS Doc SDK Examples. GitHub

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Sono disponibili altri esempi AWS SDK nel repository AWS Doc SDK Examples. GitHub

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo CopyObject con un AWS SDK o una CLI

Gli esempi di codice seguenti mostrano come utilizzare CopyObject.

Gli esempi di operazioni sono estratti di codice da programmi più grandi e devono essere eseguiti nel contesto. È possibile visualizzare questa operazione nel contesto nei seguenti esempi di codice:

.NET
AWS SDK for .NET
Nota

C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

using System; using System.Threading.Tasks; using Amazon.S3; using Amazon.S3.Model; public class CopyObject { public static async Task Main() { // Specify the AWS Region where your buckets are located if it is // different from the AWS Region of the default user. IAmazonS3 s3Client = new AmazonS3Client(); // Remember to change these values to refer to your Amazon S3 objects. string sourceBucketName = "amzn-s3-demo-bucket1"; string destinationBucketName = "amzn-s3-demo-bucket2"; string sourceObjectKey = "testfile.txt"; string destinationObjectKey = "testfilecopy.txt"; Console.WriteLine($"Copying {sourceObjectKey} from {sourceBucketName} to "); Console.WriteLine($"{destinationBucketName} as {destinationObjectKey}"); var response = await CopyingObjectAsync( s3Client, sourceObjectKey, destinationObjectKey, sourceBucketName, destinationBucketName); if (response.HttpStatusCode == System.Net.HttpStatusCode.OK) { Console.WriteLine("\nCopy complete."); } } /// <summary> /// This method calls the AWS SDK for .NET to copy an /// object from one Amazon S3 bucket to another. /// </summary> /// <param name="client">The Amazon S3 client object.</param> /// <param name="sourceKey">The name of the object to be copied.</param> /// <param name="destinationKey">The name under which to save the copy.</param> /// <param name="sourceBucketName">The name of the Amazon S3 bucket /// where the file is located now.</param> /// <param name="destinationBucketName">The name of the Amazon S3 /// bucket where the copy should be saved.</param> /// <returns>Returns a CopyObjectResponse object with the results from /// the async call.</returns> public static async Task<CopyObjectResponse> CopyingObjectAsync( IAmazonS3 client, string sourceKey, string destinationKey, string sourceBucketName, string destinationBucketName) { var response = new CopyObjectResponse(); try { var request = new CopyObjectRequest { SourceBucket = sourceBucketName, SourceKey = sourceKey, DestinationBucket = destinationBucketName, DestinationKey = destinationKey, }; response = await client.CopyObjectAsync(request); } catch (AmazonS3Exception ex) { Console.WriteLine($"Error copying object: '{ex.Message}'"); } return response; } }

Copia un oggetto utilizzando una richiesta condizionale.

/// <summary> /// Copies an object from one Amazon S3 bucket to another with a conditional request. /// </summary> /// <param name="sourceKey">The key of the source object to copy.</param> /// <param name="destKey">The key of the destination object.</param> /// <param name="sourceBucket">The source bucket of the object.</param> /// <param name="destBucket">The destination bucket of the object.</param> /// <param name="conditionType">The type of condition to apply, e.g. 'CopySourceIfMatch', 'CopySourceIfNoneMatch', 'CopySourceIfModifiedSince', 'CopySourceIfUnmodifiedSince'.</param> /// <param name="conditionDateValue">The value to use for the condition for dates.</param> /// <param name="etagConditionalValue">The value to use for the condition for etags.</param> /// <returns>True if the conditional copy is successful, False otherwise.</returns> public async Task<bool> CopyObjectConditional(string sourceKey, string destKey, string sourceBucket, string destBucket, S3ConditionType conditionType, DateTime? conditionDateValue = null, string? etagConditionalValue = null) { try { var copyObjectRequest = new CopyObjectRequest { DestinationBucket = destBucket, DestinationKey = destKey, SourceBucket = sourceBucket, SourceKey = sourceKey }; switch (conditionType) { case S3ConditionType.IfMatch: copyObjectRequest.ETagToMatch = etagConditionalValue; break; case S3ConditionType.IfNoneMatch: copyObjectRequest.ETagToNotMatch = etagConditionalValue; break; case S3ConditionType.IfModifiedSince: copyObjectRequest.ModifiedSinceDateUtc = conditionDateValue.GetValueOrDefault(); break; case S3ConditionType.IfUnmodifiedSince: copyObjectRequest.UnmodifiedSinceDateUtc = conditionDateValue.GetValueOrDefault(); break; default: throw new ArgumentOutOfRangeException(nameof(conditionType), conditionType, null); } await _amazonS3.CopyObjectAsync(copyObjectRequest); _logger.LogInformation($"Conditional copy successful for key {destKey} in bucket {destBucket}."); return true; } catch (AmazonS3Exception e) { if (e.ErrorCode == "PreconditionFailed") { _logger.LogError("Conditional copy failed: Precondition failed"); } else if (e.ErrorCode == "304") { _logger.LogError("Conditional copy failed: Object not modified"); } else { _logger.LogError($"Unexpected error: {e.ErrorCode}"); throw; } return false; } }
Bash
AWS CLI con lo script Bash
Nota

C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

############################################################################### # function errecho # # This function outputs everything sent to it to STDERR (standard error output). ############################################################################### function errecho() { printf "%s\n" "$*" 1>&2 } ############################################################################### # function copy_item_in_bucket # # This function creates a copy of the specified file in the same bucket. # # Parameters: # $1 - The name of the bucket to copy the file from and to. # $2 - The key of the source file to copy. # $3 - The key of the destination file. # # Returns: # 0 - If successful. # 1 - If it fails. ############################################################################### function copy_item_in_bucket() { local bucket_name=$1 local source_key=$2 local destination_key=$3 local response response=$(aws s3api copy-object \ --bucket "$bucket_name" \ --copy-source "$bucket_name/$source_key" \ --key "$destination_key") # shellcheck disable=SC2181 if [[ $? -ne 0 ]]; then errecho "ERROR: AWS reports s3api copy-object operation failed.\n$response" return 1 fi }
C++
SDK per C++
Nota

C'è altro su GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

bool AwsDoc::S3::copyObject(const Aws::String &objectKey, const Aws::String &fromBucket, const Aws::String &toBucket, const Aws::S3::S3ClientConfiguration &clientConfig) { Aws::S3::S3Client client(clientConfig); Aws::S3::Model::CopyObjectRequest request; request.WithCopySource(fromBucket + "/" + objectKey) .WithKey(objectKey) .WithBucket(toBucket); Aws::S3::Model::CopyObjectOutcome outcome = client.CopyObject(request); if (!outcome.IsSuccess()) { const Aws::S3::S3Error &err = outcome.GetError(); std::cerr << "Error: copyObject: " << err.GetExceptionName() << ": " << err.GetMessage() << std::endl; } else { std::cout << "Successfully copied " << objectKey << " from " << fromBucket << " to " << toBucket << "." << std::endl; } return outcome.IsSuccess(); }
  • Per i dettagli sull'API, consulta la CopyObjectsezione AWS SDK for C++ API Reference.

CLI
AWS CLI

Il comando seguente copia un oggetto da bucket-1 abucket-2:

aws s3api copy-object --copy-source bucket-1/test.txt --key test.txt --bucket bucket-2

Output:

{ "CopyObjectResult": { "LastModified": "2015-11-10T01:07:25.000Z", "ETag": "\"589c8b79c230a6ecd5a7e1d040a9a030\"" }, "VersionId": "YdnYvTCVDqRRFA.NFJjy36p0hxifMlkA" }
  • Per i dettagli sull'API, vedere CopyObjectin AWS CLI Command Reference.

Go
SDK per Go V2
Nota

C'è altro su GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

import ( "bytes" "context" "errors" "fmt" "io" "log" "os" "time" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/feature/s3/manager" "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/aws/smithy-go" ) // BucketBasics encapsulates the Amazon Simple Storage Service (Amazon S3) actions // used in the examples. // It contains S3Client, an Amazon S3 service client that is used to perform bucket // and object actions. type BucketBasics struct { S3Client *s3.Client } // CopyToBucket copies an object in a bucket to another bucket. func (basics BucketBasics) CopyToBucket(ctx context.Context, sourceBucket string, destinationBucket string, objectKey string) error { _, err := basics.S3Client.CopyObject(ctx, &s3.CopyObjectInput{ Bucket: aws.String(destinationBucket), CopySource: aws.String(fmt.Sprintf("%v/%v", sourceBucket, objectKey)), Key: aws.String(objectKey), }) if err != nil { var notActive *types.ObjectNotInActiveTierError if errors.As(err, &notActive) { log.Printf("Couldn't copy object %s from %s because the object isn't in the active tier.\n", objectKey, sourceBucket) err = notActive } } else { err = s3.NewObjectExistsWaiter(basics.S3Client).Wait( ctx, &s3.HeadObjectInput{Bucket: aws.String(destinationBucket), Key: aws.String(objectKey)}, time.Minute) if err != nil { log.Printf("Failed attempt to wait for object %s to exist.\n", objectKey) } } return err }
  • Per i dettagli sull'API, consulta la CopyObjectsezione AWS SDK per Go API Reference.

Java
SDK per Java 2.x
Nota

C'è di più su GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

Copia un oggetto usando un'interfaccia S3Client.

/** * Asynchronously copies an object from one S3 bucket to another. * * @param fromBucket the name of the source S3 bucket * @param objectKey the key (name) of the object to be copied * @param toBucket the name of the destination S3 bucket * @return a {@link CompletableFuture} that completes with the copy result as a {@link String} * @throws RuntimeException if the URL could not be encoded or an S3 exception occurred during the copy */ public CompletableFuture<String> copyBucketObjectAsync(String fromBucket, String objectKey, String toBucket) { CopyObjectRequest copyReq = CopyObjectRequest.builder() .sourceBucket(fromBucket) .sourceKey(objectKey) .destinationBucket(toBucket) .destinationKey(objectKey) .build(); CompletableFuture<CopyObjectResponse> response = getAsyncClient().copyObject(copyReq); response.whenComplete((copyRes, ex) -> { if (copyRes != null) { logger.info("The " + objectKey + " was copied to " + toBucket); } else { throw new RuntimeException("An S3 exception occurred during copy", ex); } }); return response.thenApply(CopyObjectResponse::copyObjectResult) .thenApply(Object::toString); }

Usa un S3 TransferManager per copiare un oggetto da un bucket all'altro. Visualizza il file completo ed esegui il test.

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.services.s3.model.CopyObjectRequest; import software.amazon.awssdk.transfer.s3.S3TransferManager; import software.amazon.awssdk.transfer.s3.model.CompletedCopy; import software.amazon.awssdk.transfer.s3.model.Copy; import software.amazon.awssdk.transfer.s3.model.CopyRequest; import java.util.UUID; public String copyObject(S3TransferManager transferManager, String bucketName, String key, String destinationBucket, String destinationKey) { CopyObjectRequest copyObjectRequest = CopyObjectRequest.builder() .sourceBucket(bucketName) .sourceKey(key) .destinationBucket(destinationBucket) .destinationKey(destinationKey) .build(); CopyRequest copyRequest = CopyRequest.builder() .copyObjectRequest(copyObjectRequest) .build(); Copy copy = transferManager.copy(copyRequest); CompletedCopy completedCopy = copy.completionFuture().join(); return completedCopy.response().copyObjectResult().eTag(); }
  • Per i dettagli sull'API, consulta la sezione AWS SDK for Java 2.x API CopyObjectReference.

JavaScript
SDK per JavaScript (v3)
Nota

C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

Copia l'oggetto.

import { S3Client, CopyObjectCommand, ObjectNotInActiveTierError, waitUntilObjectExists, } from "@aws-sdk/client-s3"; /** * Copy an S3 object from one bucket to another. * * @param {{ * sourceBucket: string, * sourceKey: string, * destinationBucket: string, * destinationKey: string }} config */ export const main = async ({ sourceBucket, sourceKey, destinationBucket, destinationKey, }) => { const client = new S3Client({}); try { await client.send( new CopyObjectCommand({ CopySource: `${sourceBucket}/${sourceKey}`, Bucket: destinationBucket, Key: destinationKey, }), ); await waitUntilObjectExists( { client }, { Bucket: destinationBucket, Key: destinationKey }, ); console.log( `Successfully copied ${sourceBucket}/${sourceKey} to ${destinationBucket}/${destinationKey}`, ); } catch (caught) { if (caught instanceof ObjectNotInActiveTierError) { console.error( `Could not copy ${sourceKey} from ${sourceBucket}. Object is not in the active tier.`, ); } else { throw caught; } } };

Copia l'oggetto a condizione ETag che non corrisponda a quello fornito.

import { CopyObjectCommand, NoSuchKey, S3Client, S3ServiceException, } from "@aws-sdk/client-s3"; // Optionally edit the default key name of the copied object in 'object_name.json' import data from "../scenarios/conditional-requests/object_name.json" assert { type: "json", }; /** * Get a single object from a specified S3 bucket. * @param {{ sourceBucketName: string, sourceKeyName: string, destinationBucketName: string, eTag: string }} */ export const main = async ({ sourceBucketName, sourceKeyName, destinationBucketName, eTag, }) => { const client = new S3Client({}); const name = data.name; try { const response = await client.send( new CopyObjectCommand({ CopySource: `${sourceBucketName}/${sourceKeyName}`, Bucket: destinationBucketName, Key: `${name}${sourceKeyName}`, CopySourceIfMatch: eTag, }), ); console.log("Successfully copied object to bucket."); } catch (caught) { if (caught instanceof NoSuchKey) { console.error( `Error from S3 while copying object "${sourceKeyName}" from "${sourceBucketName}". No such key exists.`, ); } else if (caught instanceof S3ServiceException) { console.error( `Unable to copy object "${sourceKeyName}" to bucket "${sourceBucketName}": ${caught.name}: ${caught.message}`, ); } else { throw caught; } } }; // Call function if run directly import { parseArgs } from "node:util"; import { isMain, validateArgs, } from "@aws-doc-sdk-examples/lib/utils/util-node.js"; const loadArgs = () => { const options = { sourceBucketName: { type: "string", required: true, }, sourceKeyName: { type: "string", required: true, }, destinationBucketName: { type: "string", required: true, }, eTag: { type: "string", required: true, }, }; const results = parseArgs({ options }); const { errors } = validateArgs({ options }, results); return { errors, results }; }; if (isMain(import.meta.url)) { const { errors, results } = loadArgs(); if (!errors) { main(results.values); } else { console.error(errors.join("\n")); } }

Copia l'oggetto a condizione ETag che non corrisponda a quello fornito.

import { CopyObjectCommand, NoSuchKey, S3Client, S3ServiceException, } from "@aws-sdk/client-s3"; // Optionally edit the default key name of the copied object in 'object_name.json' import data from "../scenarios/conditional-requests/object_name.json" assert { type: "json", }; /** * Get a single object from a specified S3 bucket. * @param {{ sourceBucketName: string, sourceKeyName: string, destinationBucketName: string, eTag: string }} */ export const main = async ({ sourceBucketName, sourceKeyName, destinationBucketName, eTag, }) => { const client = new S3Client({}); const name = data.name; try { const response = await client.send( new CopyObjectCommand({ CopySource: `${sourceBucketName}/${sourceKeyName}`, Bucket: destinationBucketName, Key: `${name}${sourceKeyName}`, CopySourceIfNoneMatch: eTag, }), ); console.log("Successfully copied object to bucket."); } catch (caught) { if (caught instanceof NoSuchKey) { console.error( `Error from S3 while copying object "${sourceKeyName}" from "${sourceBucketName}". No such key exists.`, ); } else if (caught instanceof S3ServiceException) { console.error( `Unable to copy object "${sourceKeyName}" to bucket "${sourceBucketName}": ${caught.name}: ${caught.message}`, ); } else { throw caught; } } }; // Call function if run directly import { parseArgs } from "node:util"; import { isMain, validateArgs, } from "@aws-doc-sdk-examples/lib/utils/util-node.js"; const loadArgs = () => { const options = { sourceBucketName: { type: "string", required: true, }, sourceKeyName: { type: "string", required: true, }, destinationBucketName: { type: "string", required: true, }, eTag: { type: "string", required: true, }, }; const results = parseArgs({ options }); const { errors } = validateArgs({ options }, results); return { errors, results }; }; if (isMain(import.meta.url)) { const { errors, results } = loadArgs(); if (!errors) { main(results.values); } else { console.error(errors.join("\n")); } }

Copia l'oggetto a condizione che sia stato creato o modificato in un determinato periodo di tempo.

import { CopyObjectCommand, NoSuchKey, S3Client, S3ServiceException, } from "@aws-sdk/client-s3"; // Optionally edit the default key name of the copied object in 'object_name.json' import data from "../scenarios/conditional-requests/object_name.json" assert { type: "json", }; /** * Get a single object from a specified S3 bucket. * @param {{ sourceBucketName: string, sourceKeyName: string, destinationBucketName: string }} */ export const main = async ({ sourceBucketName, sourceKeyName, destinationBucketName, }) => { const date = new Date(); date.setDate(date.getDate() - 1); const name = data.name; const client = new S3Client({}); const copySource = `${sourceBucketName}/${sourceKeyName}`; const copiedKey = name + sourceKeyName; try { const response = await client.send( new CopyObjectCommand({ CopySource: copySource, Bucket: destinationBucketName, Key: copiedKey, CopySourceIfModifiedSince: date, }), ); console.log("Successfully copied object to bucket."); } catch (caught) { if (caught instanceof NoSuchKey) { console.error( `Error from S3 while copying object "${sourceKeyName}" from "${sourceBucketName}". No such key exists.`, ); } else if (caught instanceof S3ServiceException) { console.error( `Error from S3 while copying object from ${sourceBucketName}. ${caught.name}: ${caught.message}`, ); } else { throw caught; } } }; // Call function if run directly import { parseArgs } from "node:util"; import { isMain, validateArgs, } from "@aws-doc-sdk-examples/lib/utils/util-node.js"; const loadArgs = () => { const options = { sourceBucketName: { type: "string", required: true, }, sourceKeyName: { type: "string", required: true, }, destinationBucketName: { type: "string", required: true, }, }; const results = parseArgs({ options }); const { errors } = validateArgs({ options }, results); return { errors, results }; }; if (isMain(import.meta.url)) { const { errors, results } = loadArgs(); if (!errors) { main(results.values); } else { console.error(errors.join("\n")); } }

Copia l'oggetto a condizione che non sia stato creato o modificato in un determinato periodo di tempo.

import { CopyObjectCommand, NoSuchKey, S3Client, S3ServiceException, } from "@aws-sdk/client-s3"; // Optionally edit the default key name of the copied object in 'object_name.json' import data from "../scenarios/conditional-requests/object_name.json" assert { type: "json", }; /** * Get a single object from a specified S3 bucket. * @param {{ sourceBucketName: string, sourceKeyName: string, destinationBucketName: string }} */ export const main = async ({ sourceBucketName, sourceKeyName, destinationBucketName, }) => { const date = new Date(); date.setDate(date.getDate() - 1); const client = new S3Client({}); const name = data.name; const copiedKey = name + sourceKeyName; const copySource = `${sourceBucketName}/${sourceKeyName}`; try { const response = await client.send( new CopyObjectCommand({ CopySource: copySource, Bucket: destinationBucketName, Key: copiedKey, CopySourceIfUnmodifiedSince: date, }), ); console.log("Successfully copied object to bucket."); } catch (caught) { if (caught instanceof NoSuchKey) { console.error( `Error from S3 while copying object "${sourceKeyName}" from "${sourceBucketName}". No such key exists.`, ); } else if (caught instanceof S3ServiceException) { console.error( `Error from S3 while copying object from ${sourceBucketName}. ${caught.name}: ${caught.message}`, ); } else { throw caught; } } }; // Call function if run directly import { parseArgs } from "node:util"; import { isMain, validateArgs, } from "@aws-doc-sdk-examples/lib/utils/util-node.js"; const loadArgs = () => { const options = { sourceBucketName: { type: "string", required: true, }, sourceKeyName: { type: "string", required: true, }, destinationBucketName: { type: "string", required: true, }, }; const results = parseArgs({ options }); const { errors } = validateArgs({ options }, results); return { errors, results }; }; if (isMain(import.meta.url)) { const { errors, results } = loadArgs(); if (!errors) { main(results.values); } else { console.error(errors.join("\n")); } }
Kotlin
SDK per Kotlin
Nota

C'è di più su GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

suspend fun copyBucketObject( fromBucket: String, objectKey: String, toBucket: String, ) { var encodedUrl = "" try { encodedUrl = URLEncoder.encode("$fromBucket/$objectKey", StandardCharsets.UTF_8.toString()) } catch (e: UnsupportedEncodingException) { println("URL could not be encoded: " + e.message) } val request = CopyObjectRequest { copySource = encodedUrl bucket = toBucket key = objectKey } S3Client { region = "us-east-1" }.use { s3 -> s3.copyObject(request) } }
  • Per i dettagli sull'API, CopyObjectconsulta AWS SDK for Kotlin API reference.

PHP
SDK per PHP
Nota

C'è di più su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

Copia semplice di un oggetto.

$s3client = new Aws\S3\S3Client(['region' => 'us-west-2']); try { $folder = "copied-folder"; $this->s3client->copyObject([ 'Bucket' => $this->bucketName, 'CopySource' => "$this->bucketName/$fileName", 'Key' => "$folder/$fileName-copy", ]); echo "Copied $fileName to $folder/$fileName-copy.\n"; } catch (Exception $exception) { echo "Failed to copy $fileName with error: " . $exception->getMessage(); exit("Please fix error with object copying before continuing."); }
  • Per i dettagli sull'API, consulta la CopyObjectsezione AWS SDK for PHP API Reference.

PowerShell
Strumenti per PowerShell

Esempio 1: Questo comando copia l'oggetto "sample.txt" dal bucket «test-files» allo stesso bucket ma con una nuova chiave "sample-copy.txt».

Copy-S3Object -BucketName amzn-s3-demo-bucket -Key sample.txt -DestinationKey sample-copy.txt

Esempio 2: Questo comando copia l'oggetto "sample.txt" dal bucket «test-files» al bucket «backup-files» con una chiave "sample-copy.txt».

Copy-S3Object -BucketName amzn-s3-demo-source-bucket -Key sample.txt -DestinationKey sample-copy.txt -DestinationBucket amzn-s3-demo-destination-bucket

Esempio 3: Questo comando scarica l'oggetto "sample.txt" dal bucket «test-files» in un file locale con nome "local-sample.txt».

Copy-S3Object -BucketName amzn-s3-demo-bucket -Key sample.txt -LocalFile local-sample.txt

Esempio 4: scarica il singolo oggetto nel file specificato. Il file scaricato si trova in c:\downloads\data\archive.zip

Copy-S3Object -BucketName amzn-s3-demo-bucket -Key data/archive.zip -LocalFolder c:\downloads

Esempio 5: scarica tutti gli oggetti che corrispondono al prefisso chiave specificato nella cartella locale. La gerarchia delle chiavi relativa verrà conservata come sottocartelle nella posizione generale di download.

Copy-S3Object -BucketName amzn-s3-demo-bucket -KeyPrefix data -LocalFolder c:\downloads
  • Per i dettagli sull'API, vedere CopyObjectin AWS Tools for PowerShell Cmdlet Reference.

Python
SDK per Python (Boto3)
Nota

C'è altro su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

class ObjectWrapper: """Encapsulates S3 object actions.""" def __init__(self, s3_object): """ :param s3_object: A Boto3 Object resource. This is a high-level resource in Boto3 that wraps object actions in a class-like structure. """ self.object = s3_object self.key = self.object.key def copy(self, dest_object): """ Copies the object to another bucket. :param dest_object: The destination object initialized with a bucket and key. This is a Boto3 Object resource. """ try: dest_object.copy_from( CopySource={"Bucket": self.object.bucket_name, "Key": self.object.key} ) dest_object.wait_until_exists() logger.info( "Copied object from %s:%s to %s:%s.", self.object.bucket_name, self.object.key, dest_object.bucket_name, dest_object.key, ) except ClientError: logger.exception( "Couldn't copy object from %s/%s to %s/%s.", self.object.bucket_name, self.object.key, dest_object.bucket_name, dest_object.key, ) raise

Copia un oggetto utilizzando una richiesta condizionale.

class S3ConditionalRequests: """Encapsulates S3 conditional request operations.""" def __init__(self, s3_client): self.s3 = s3_client @classmethod def from_client(cls): """ Instantiates this class from a Boto3 client. """ s3_client = boto3.client("s3") return cls(s3_client) def copy_object_conditional( self, source_key: str, dest_key: str, source_bucket: str, dest_bucket: str, condition_type: str, condition_value: str, ): """ Copies an object from one Amazon S3 bucket to another with a conditional request. :param source_key: The key of the source object to copy. :param dest_key: The key of the destination object. :param source_bucket: The source bucket of the object. :param dest_bucket: The destination bucket of the object. :param condition_type: The type of condition to apply, e.g. 'CopySourceIfMatch', 'CopySourceIfNoneMatch', 'CopySourceIfModifiedSince', 'CopySourceIfUnmodifiedSince'. :param condition_value: The value to use for the condition. """ try: self.s3.copy_object( Bucket=dest_bucket, Key=dest_key, CopySource={"Bucket": source_bucket, "Key": source_key}, **{condition_type: condition_value}, ) print( f"\tConditional copy successful for key {dest_key} in bucket {dest_bucket}." ) except ClientError as e: error_code = e.response["Error"]["Code"] if error_code == "PreconditionFailed": print("\tConditional copy failed: Precondition failed") elif error_code == "304": # Not modified error code. print("\tConditional copy failed: Object not modified") else: logger.error(f"Unexpected error: {error_code}") raise
  • Per i dettagli sull'API, consulta CopyObject AWSSDK for Python (Boto3) API Reference.

Ruby
SDK per Ruby
Nota

C'è di più su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

Copia un oggetto.

require 'aws-sdk-s3' # Wraps Amazon S3 object actions. class ObjectCopyWrapper attr_reader :source_object # @param source_object [Aws::S3::Object] An existing Amazon S3 object. This is used as the source object for # copy actions. def initialize(source_object) @source_object = source_object end # Copy the source object to the specified target bucket and rename it with the target key. # # @param target_bucket [Aws::S3::Bucket] An existing Amazon S3 bucket where the object is copied. # @param target_object_key [String] The key to give the copy of the object. # @return [Aws::S3::Object, nil] The copied object when successful; otherwise, nil. def copy_object(target_bucket, target_object_key) @source_object.copy_to(bucket: target_bucket.name, key: target_object_key) target_bucket.object(target_object_key) rescue Aws::Errors::ServiceError => e puts "Couldn't copy #{@source_object.key} to #{target_object_key}. Here's why: #{e.message}" end end # Example usage: def run_demo source_bucket_name = "amzn-s3-demo-bucket1" source_key = "my-source-file.txt" target_bucket_name = "amzn-s3-demo-bucket2" target_key = "my-target-file.txt" source_bucket = Aws::S3::Bucket.new(source_bucket_name) wrapper = ObjectCopyWrapper.new(source_bucket.object(source_key)) target_bucket = Aws::S3::Bucket.new(target_bucket_name) target_object = wrapper.copy_object(target_bucket, target_key) return unless target_object puts "Copied #{source_key} from #{source_bucket_name} to #{target_object.bucket_name}:#{target_object.key}." end run_demo if $PROGRAM_NAME == __FILE__

Copia un oggetto e aggiungi la crittografia lato server all'oggetto di destinazione.

require 'aws-sdk-s3' # Wraps Amazon S3 object actions. class ObjectCopyEncryptWrapper attr_reader :source_object # @param source_object [Aws::S3::Object] An existing Amazon S3 object. This is used as the source object for # copy actions. def initialize(source_object) @source_object = source_object end # Copy the source object to the specified target bucket, rename it with the target key, and encrypt it. # # @param target_bucket [Aws::S3::Bucket] An existing Amazon S3 bucket where the object is copied. # @param target_object_key [String] The key to give the copy of the object. # @return [Aws::S3::Object, nil] The copied object when successful; otherwise, nil. def copy_object(target_bucket, target_object_key, encryption) @source_object.copy_to(bucket: target_bucket.name, key: target_object_key, server_side_encryption: encryption) target_bucket.object(target_object_key) rescue Aws::Errors::ServiceError => e puts "Couldn't copy #{@source_object.key} to #{target_object_key}. Here's why: #{e.message}" end end # Example usage: def run_demo source_bucket_name = "amzn-s3-demo-bucket1" source_key = "my-source-file.txt" target_bucket_name = "amzn-s3-demo-bucket2" target_key = "my-target-file.txt" target_encryption = "AES256" source_bucket = Aws::S3::Bucket.new(source_bucket_name) wrapper = ObjectCopyEncryptWrapper.new(source_bucket.object(source_key)) target_bucket = Aws::S3::Bucket.new(target_bucket_name) target_object = wrapper.copy_object(target_bucket, target_key, target_encryption) return unless target_object puts "Copied #{source_key} from #{source_bucket_name} to #{target_object.bucket_name}:#{target_object.key} and "\ "encrypted the target with #{target_object.server_side_encryption} encryption." end run_demo if $PROGRAM_NAME == __FILE__
  • Per i dettagli sull'API, consulta la CopyObjectsezione AWS SDK for Ruby API Reference.

Rust
SDK per Rust
Nota

C'è di più su GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

/// Copy an object from one bucket to another. pub async fn copy_object( client: &aws_sdk_s3::Client, source_bucket: &str, destination_bucket: &str, source_object: &str, destination_object: &str, ) -> Result<(), S3ExampleError> { let source_key = format!("{source_bucket}/{source_object}"); let response = client .copy_object() .copy_source(&source_key) .bucket(destination_bucket) .key(destination_object) .send() .await?; println!( "Copied from {source_key} to {destination_bucket}/{destination_object} with etag {}", response .copy_object_result .unwrap_or_else(|| aws_sdk_s3::types::CopyObjectResult::builder().build()) .e_tag() .unwrap_or("missing") ); Ok(()) }
  • Per i dettagli sulle API, consulta la CopyObjectguida di riferimento all'API AWS SDK for Rust.

SAP ABAP
SDK per SAP ABAP
Nota

C'è di più su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

TRY. lo_s3->copyobject( iv_bucket = iv_dest_bucket iv_key = iv_dest_object iv_copysource = |{ iv_src_bucket }/{ iv_src_object }| ). MESSAGE 'Object copied to another bucket.' TYPE 'I'. CATCH /aws1/cx_s3_nosuchbucket. MESSAGE 'Bucket does not exist.' TYPE 'E'. CATCH /aws1/cx_s3_nosuchkey. MESSAGE 'Object key does not exist.' TYPE 'E'. ENDTRY.
  • Per i dettagli sulle API, CopyObjectconsulta AWS SDK for SAP ABAP API reference.

Swift
SDK per Swift
Nota

C'è di più su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

import AWSS3 public func copyFile(from sourceBucket: String, name: String, to destBucket: String) async throws { let srcUrl = ("\(sourceBucket)/\(name)").addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) let input = CopyObjectInput( bucket: destBucket, copySource: srcUrl, key: name ) do { _ = try await client.copyObject(input: input) } catch { print("ERROR: ", dump(error, name: "Copying an object.")) throw error } }
  • Per i dettagli sull'API, consulta la CopyObjectguida di riferimento all'API AWS SDK for Swift.

AWS SDK for .NET
Nota

C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

using System; using System.Threading.Tasks; using Amazon.S3; using Amazon.S3.Model; public class CopyObject { public static async Task Main() { // Specify the AWS Region where your buckets are located if it is // different from the AWS Region of the default user. IAmazonS3 s3Client = new AmazonS3Client(); // Remember to change these values to refer to your Amazon S3 objects. string sourceBucketName = "amzn-s3-demo-bucket1"; string destinationBucketName = "amzn-s3-demo-bucket2"; string sourceObjectKey = "testfile.txt"; string destinationObjectKey = "testfilecopy.txt"; Console.WriteLine($"Copying {sourceObjectKey} from {sourceBucketName} to "); Console.WriteLine($"{destinationBucketName} as {destinationObjectKey}"); var response = await CopyingObjectAsync( s3Client, sourceObjectKey, destinationObjectKey, sourceBucketName, destinationBucketName); if (response.HttpStatusCode == System.Net.HttpStatusCode.OK) { Console.WriteLine("\nCopy complete."); } } /// <summary> /// This method calls the AWS SDK for .NET to copy an /// object from one Amazon S3 bucket to another. /// </summary> /// <param name="client">The Amazon S3 client object.</param> /// <param name="sourceKey">The name of the object to be copied.</param> /// <param name="destinationKey">The name under which to save the copy.</param> /// <param name="sourceBucketName">The name of the Amazon S3 bucket /// where the file is located now.</param> /// <param name="destinationBucketName">The name of the Amazon S3 /// bucket where the copy should be saved.</param> /// <returns>Returns a CopyObjectResponse object with the results from /// the async call.</returns> public static async Task<CopyObjectResponse> CopyingObjectAsync( IAmazonS3 client, string sourceKey, string destinationKey, string sourceBucketName, string destinationBucketName) { var response = new CopyObjectResponse(); try { var request = new CopyObjectRequest { SourceBucket = sourceBucketName, SourceKey = sourceKey, DestinationBucket = destinationBucketName, DestinationKey = destinationKey, }; response = await client.CopyObjectAsync(request); } catch (AmazonS3Exception ex) { Console.WriteLine($"Error copying object: '{ex.Message}'"); } return response; } }

Copia un oggetto utilizzando una richiesta condizionale.

/// <summary> /// Copies an object from one Amazon S3 bucket to another with a conditional request. /// </summary> /// <param name="sourceKey">The key of the source object to copy.</param> /// <param name="destKey">The key of the destination object.</param> /// <param name="sourceBucket">The source bucket of the object.</param> /// <param name="destBucket">The destination bucket of the object.</param> /// <param name="conditionType">The type of condition to apply, e.g. 'CopySourceIfMatch', 'CopySourceIfNoneMatch', 'CopySourceIfModifiedSince', 'CopySourceIfUnmodifiedSince'.</param> /// <param name="conditionDateValue">The value to use for the condition for dates.</param> /// <param name="etagConditionalValue">The value to use for the condition for etags.</param> /// <returns>True if the conditional copy is successful, False otherwise.</returns> public async Task<bool> CopyObjectConditional(string sourceKey, string destKey, string sourceBucket, string destBucket, S3ConditionType conditionType, DateTime? conditionDateValue = null, string? etagConditionalValue = null) { try { var copyObjectRequest = new CopyObjectRequest { DestinationBucket = destBucket, DestinationKey = destKey, SourceBucket = sourceBucket, SourceKey = sourceKey }; switch (conditionType) { case S3ConditionType.IfMatch: copyObjectRequest.ETagToMatch = etagConditionalValue; break; case S3ConditionType.IfNoneMatch: copyObjectRequest.ETagToNotMatch = etagConditionalValue; break; case S3ConditionType.IfModifiedSince: copyObjectRequest.ModifiedSinceDateUtc = conditionDateValue.GetValueOrDefault(); break; case S3ConditionType.IfUnmodifiedSince: copyObjectRequest.UnmodifiedSinceDateUtc = conditionDateValue.GetValueOrDefault(); break; default: throw new ArgumentOutOfRangeException(nameof(conditionType), conditionType, null); } await _amazonS3.CopyObjectAsync(copyObjectRequest); _logger.LogInformation($"Conditional copy successful for key {destKey} in bucket {destBucket}."); return true; } catch (AmazonS3Exception e) { if (e.ErrorCode == "PreconditionFailed") { _logger.LogError("Conditional copy failed: Precondition failed"); } else if (e.ErrorCode == "304") { _logger.LogError("Conditional copy failed: Object not modified"); } else { _logger.LogError($"Unexpected error: {e.ErrorCode}"); throw; } return false; } }
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.