Creazione di un processo di operazioni in batch S3 - Amazon Simple Storage Service

Creazione di un processo di operazioni in batch S3

Con le operazioni in batch S3 è possibile eseguire operazioni in batch su vasta scala su una lista di oggetti Amazon S3 specifici. In questa sezione vengono descritte le informazioni necessarie per creare un processo S3 Batch Operations e i risultati di una richiesta Create Job. Vengono inoltre fornite istruzioni per la creazione di un processo di operazioni in batch tramite la AWS Management Console, AWS Command Line Interface (AWS CLI) e AWS SDK for Java.

Quando crei un processo S3 Batch Operations, puoi richiedere un report di completamento per tutte le attività o solo per le attività fallite. Se almeno un'attività è stata invocata correttamente, le operazioni in batch S3 generano un report per i processi che sono stati completati, che non sono andati a buon fine o che sono stati annullati. Per ulteriori informazioni, consulta Esempi: report di completamento delle operazioni in batch S3.

Il video seguente fornisce una breve dimostrazione di come creare un processo di operazioni in batch utilizzando la AWS Management Console.

Elementi della richiesta di un processo di operazioni in batch

Per creare un processo di operazioni in batch S3, è necessario fornire le seguenti informazioni:

Operazione

Specifica l'operazione che vuoi far eseguire alle operazioni in batch S3 sugli oggetti nel manifest. Ogni tipo di operazione accetta parametri specifici di tale operazione. In questo modo è possibile eseguire le stesse attività come se fosse stata eseguita l'operazione su ogni singolo oggetto.

Manifest

Il manifest è un elenco degli oggetti sui quali le operazioni in batch S3 eseguono le operazioni che hai specificato. Puoi utilizzare un rapporto Inventario Amazon S3 in formato CSV come manifest oppure il tuo elenco CSV di oggetti personalizzato.

Se gli oggetti nel manifesto sono in un bucket con versione, è necessario specificare gli ID versione per gli oggetti. Per ulteriori informazioni, consulta Specifica di un manifest.

Priorità

Utilizza le priorità del processo per indicarne la priorità rispetto agli altri processi in esecuzione sul tuo account. Numeri maggiori indicano una priorità più alta.

Le priorità del lavoro hanno un significato solo rispetto alle priorità stabilite per altri lavori nello stesso account e nella stessa regione. Pertanto puoi scegliere qualsiasi sistema di numerazione utile. Ad esempio, è possibile assegnare a tutti i processi Initiate Restore Object una priorità 1, a tutti i processi PUT Object Copy una priorità 2 e a tutti i processi Put Object ACL una priorità 3.

Le operazioni in batch S3 assegnano la priorità ai processi in base al numero di priorità ma non è garantito un ordine rigoroso. Pertanto, le priorità dei processi non vanno utilizzate per assicurarsi che un processo inizi o termini prima di un altro. Per essere sicuro che l'ordine venga rigidamente rispettato, attendi che un processo sia terminato prima di iniziare quello successivo.

RoleArn

Specifica un ruolo AWS Identity and Access Management (IAM) per eseguire il processo. Il ruolo IAM utilizzato deve avere le autorizzazioni necessarie per eseguire l'operazione specificata nel processo. Ad esempio, per eseguire un processo PUT Object Copy, il ruolo IAM deve avere le autorizzazioni s3:GetObject per il bucket di origine e s3:PutObject per il bucket di destinazione. Il ruolo ha anche bisogno delle autorizzazioni per leggere il manifest e compilare il report di completamento del processo.

Per ulteriori informazioni sui ruoli IAM, consulta Ruoli IAM nella Guida per l'utente di IAM.

Per ulteriori informazioni sulle autorizzazioni di Amazon S3, consulta la sezione Operazioni di Amazon S3.

Report

Specifica se desideri che le operazioni in batch S3 generino un report di completamento. Se richiedi un report di completamento del lavoro, devi inserire i parametri per il report in questo elemento. Le informazioni necessarie includono:

  • Il bucket in cui desideri archiviare il report

  • Il formato del report

  • Se desideri che il report includa i dettagli di tutte le attività o solo di quelle fallite

  • Una stringa di prefisso (facoltativa)

Tag (opzionale)

È possibile etichettare e controllare l'accesso ai processi di operazioni in batch Amazon S3 aggiungendo tag. I tag possono essere utilizzati per identificare chi è responsabile di un processo di operazioni in batch. È possibile creare lavori con tag ad essi associati e aggiungere tag ai lavori dopo averli creati. Ad esempio, è possibile concedere a un utente IAM l'autorizzazione per richiamare CreateJob, purché il processo venga creato con il tag "Department=Finance".

Per ulteriori informazioni, consulta Controllo dei lavori di accesso ed etichettatura mediante tag.

Descrizione (facoltativa)

Per tenere traccia e monitorare il processo, è anche possibile fornire una descrizione di un massimo di 256 caratteri. Amazon S3 include questa descrizione ogni volta che restituisce informazioni su un processo o visualizza i dettagli del processo nella console Amazon S3. Puoi quindi ordinare e filtrare i processi con facilità in base alle descrizioni che hai assegnato loro. Le descrizioni non devono necessariamente essere univoche, quindi puoi utilizzarle come categorie (ad esempio, "Registro settimanale dei processi Copy") per aiutarti a tenere traccia dei gruppi di processi simili.

Specifica di un manifest

Un manifesto è un oggetto Amazon S3 che elenca le chiavi degli oggetti su cui Amazon S3 deve agire. Per creare un manifest per un processo, immettere la chiave dell'oggetto manifest, l'ETag e l'ID facoltativo della versione. I contenuti del manifest devono essere codificati in formato URL. I manifesti che utilizzano la crittografia lato server con chiavi fornite dal cliente (SSE-C) non sono supportati. I manifesti che utilizzano la crittografia lato server con chiavi AWS KMS AWS Key Management Service (SSE-KMS) sono supportati solo quando si utilizzano report di inventario in formato CSV. Il manifest deve contenere il nome del bucket, la chiave dell'oggetto e, facoltativamente, la versione dell'oggetto per ciascun oggetto. Gli altri campi nel manifest non vengono utilizzati dalle operazioni in batch S3.

Puoi creare un manifest in una richiesta di creazione di un processo utilizzando uno dei due formati elencati di seguito.

  • Report di S3 Inventory — Deve essere un report di Amazon S3 Inventory in formato CSV. Devi specificare il file manifest.json associato al rapporto di inventario. Per ulteriori informazioni sui report di inventario, consulta Inventario Amazon S3. Se il report di inventario include gli ID versione, S3 Batch Operations agisce sulle versioni degli oggetti specifiche.

    Nota

    Le operazioni in batch S3 supportano report di inventario CSV con crittografia AWS KMS.

  • File CSV: ogni riga nel file deve includere il nome del bucket, la chiave dell'oggetto e, facoltativamente, la versione dell'oggetto. Le chiavi degli oggetti devono essere codificate in formato URL, come mostrato nei seguenti esempi. Il manifest deve includere gli ID versione di tutti gli oggetti oppure ometterli per tutti gli oggetti. Per ulteriori informazioni sul formato CSV del manifest, consulta JobManifestSpec nella Documentazione di riferimento delle API di Amazon Simple Storage Service.

    Nota

    Le operazioni in batch S3 non supportano file manifest CSV con crittografia AWS KMS.

    Di seguito è riportato un manifest di esempio in formato CSV senza ID versione.

    Examplebucket,objectkey1 Examplebucket,objectkey2 Examplebucket,objectkey3 Examplebucket,photos/jpgs/objectkey4 Examplebucket,photos/jpgs/newjersey/objectkey5 Examplebucket,object%20key%20with%20spaces

    Di seguito è riportato un manifest di esempio in formato CSV con ID versione.

    Examplebucket,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p Examplebucket,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF Examplebucket,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI Examplebucket,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4 Examplebucket,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs Examplebucket,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w
Importante

Quando si utilizza un manifesto fornito dall'utente e un bucket con versione, è necessario specificare gli ID versione per gli oggetti. Quando crei un processo, S3 Batch Operations analizza l'intero manifest prima di eseguire il processo. Tuttavia, non esegue una "snapshot" dello stato del bucket.

Poiché i manifest possono contenere miliardi di oggetti, l'esecuzione dei processi potrebbe richiedere molto tempo. Se sovrascrivi un oggetto con una nuova versione durante l'esecuzione di un processo e non hai specificato un ID versione per l'oggetto, Amazon S3 esegue l'operazione sulla versione più recente dell'oggetto, non sulla versione esistente al momento della creazione del processo. L'unico modo per evitare questo comportamento è specificare gli ID versione per gli oggetti elencati nel manifest.

Nota

Amazon S3 offre la possibilità di creare un manifesto per il processo Batch Replication. Batch Replication è un'operazione on demand che replica gli oggetti esistenti. Per ulteriori informazioni su Batch Replication, consulta la sezione Replica di oggetti esistenti con S3 Batch Replication.

Creazione di un processo

Puoi creare processi di operazioni in batch S3 utilizzando laAWS Management Console, AWS CLI, gli SDK Amazon o l’API REST.

Per ulteriori informazioni sulla creazione di una richiesta di processo, consulta la sezione Elementi della richiesta di un processo di operazioni in batch.

Prerequisito

Prima di creare un processo di operazioni in batch, verifica di aver configurato le autorizzazioni pertinenti. Per ulteriori informazioni, consulta Concessione delle autorizzazioni per le operazioni in batch Amazon S3.

Per creare un processo batch
  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Scegliere Batch Operations (Operazioni batch) nel riquadro di navigazione della console Amazon S3.

  3. Selezionare Create job (Crea processo).

  4. Scegliere la Region (Regione) in cui creare il processo.

  5. In Formato manifest scegliere il tipo di oggetto manifest da usare.

    • Se si sceglie S3 inventory report (Report di inventario S3), immettere il percorso dell'oggetto manifest.json generato da Amazon S3 come parte del report dell'inventario in formato CSV e, facoltativamente, l'ID versione dell'oggetto manifest se si desidera utilizzare una versione diversa da quella più recente.

    • Se si sceglie CSV, immettere il percorso di un oggetto manifest in formato CSV. L'oggetto manifest deve avere il formato descritto nella console. Facoltativamente, è possibile includere l'ID versione dell'oggetto manifest se si desidera utilizzare una versione diversa da quella più recente.

  6. Seleziona Next (Successivo).

  7. In Operation (Operazione) scegliere l'operazione che si desidera eseguire su tutti gli oggetti elencati nel manifest. Inserire le informazioni per l'operazione selezionata, quindi scegliere Next (Avanti).

  8. Inserire le informazioni per Configure additional options (Configura opzioni aggiuntive), quindi scegliere Next (Avanti).

  9. Per Review (Revisione), verificare le impostazioni. Se è necessario apportare modifiche, scegliere Previous (Precedente). In caso contrario, scegliere Create Job (Crea processo).

Nell'esempio seguente viene creato un processo S3PutObjectTagging di operazioni in batch S3 tramite la AWS CLI.

Per creare un processo S3PutObjectTagging di operazioni in batch
  1. Crea un ruolo AWS Identity and Access Management (IAM) e assegna le autorizzazioni. Questo ruolo concede ad Amazon S3 l'autorizzazione per aggiungere tag di oggetti, per i quali viene creato un processo nella fase successiva.

    1. Creare un ruolo IAM nel modo seguente.

      aws iam create-role \ --role-name S3BatchJobRole \ --assume-role-policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }'

      Registrare l'Amazon Resource Name (ARN) del ruolo. Quando si crea un processo è necessario specificare l'ARN.

    2. Creare una policy IAM con autorizzazioni e collegarla al ruolo IAM creato nella fase precedente. Per ulteriori informazioni sulle autorizzazioni, consultare Concessione delle autorizzazioni per le operazioni in batch Amazon S3.

      aws iam put-role-policy \ --role-name S3BatchJobRole \ --policy-name PutObjectTaggingBatchJobPolicy \ --policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::{{TargetResource}}/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::{{ManifestBucket}}", "arn:aws:s3:::{{ManifestBucket}}/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::{{ReportBucket}}", "arn:aws:s3:::{{ReportBucket}}/*" ] } ] }'

  2. Creare un processo S3PutObjectTagging.

    Il file manifest.csv fornisce un elenco di valori di bucket e chiave di oggetto. Il processo applica i tag specificati agli oggetti identificati nel file manifest. ETag è l'ETag dell'oggetto manifest.csv, che è possibile ottenere dalla console di Amazon S3. La richiesta specifica il parametro no-confirmation-required. Pertanto, Amazon S3 rende il processo idoneo per l'esecuzione senza che sia necessario confermarlo tramite il comando udpate-job-status.

    aws s3control create-job \ --region us-west-2 \ --account-id acct-id \ --operation '{"S3PutObjectTagging": { "TagSet": [{"Key":"keyOne", "Value":"ValueOne"}] }}' \ --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::my_manifests/manifest.csv","ETag":"60e460c9d1046e73f7dde5043ac3ae85"}}' \ --report '{"Bucket":"arn:aws:s3:::bucket-where-completion-report-goes","Prefix":"final-reports", "Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \ --priority 42 \ --role-arn IAM-role \ --client-request-token $(uuidgen) \ --description "job Description" \ --no-confirmation-required

    In risposta, Amazon S3 restituisce un ID processo, ad esemp, 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c). Nei comandi successivi è necessario specificare l'ID.

Nell'esempio seguente viene creato un processo di operazioni in batch S3 tramite la AWS SDK for Java.

package aws.example.s3control; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3control.AWSS3Control; import com.amazonaws.services.s3control.AWSS3ControlClient; import com.amazonaws.services.s3control.model.*; import java.util.UUID; import java.util.ArrayList; import static com.amazonaws.regions.Regions.US_WEST_2; public class CreateJob { public static void main(String[] args) { String accountId = "Account ID"; String iamRoleArn = "IAM Role ARN"; String reportBucketName = "arn:aws:s3:::bucket-where-completion-report-goes"; String uuid = UUID.randomUUID().toString(); ArrayList tagSet = new ArrayList<S3Tag>(); tagSet.add(new S3Tag().withKey("keyOne").withValue("ValueOne")); try { JobOperation jobOperation = new JobOperation() .withS3PutObjectTagging(new S3SetObjectTaggingOperation() .withTagSet(tagSet) ); JobManifest manifest = new JobManifest() .withSpec(new JobManifestSpec() .withFormat("S3BatchOperations_CSV_20180820") .withFields(new String[]{ "Bucket", "Key" })) .withLocation(new JobManifestLocation() .withObjectArn("arn:aws:s3:::my_manifests/manifest.csv") .withETag("60e460c9d1046e73f7dde5043ac3ae85")); JobReport jobReport = new JobReport() .withBucket(reportBucketName) .withPrefix("reports") .withFormat("Report_CSV_20180820") .withEnabled(true) .withReportScope("AllTasks"); AWSS3Control s3ControlClient = AWSS3ControlClient.builder() .withCredentials(new ProfileCredentialsProvider()) .withRegion(US_WEST_2) .build(); s3ControlClient.createJob(new CreateJobRequest() .withAccountId(accountId) .withOperation(jobOperation) .withManifest(manifest) .withReport(jobReport) .withPriority(42) .withRoleArn(iamRoleArn) .withClientRequestToken(uuid) .withDescription("job description") .withConfirmationRequired(false) ); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

È possibile utilizzare l'API REST per creare un processo di operazioni in batch. Per ulteriori informazioni, consulta l'API REST CreateJob nella Documentazione di riferimento delle API di Amazon Simple Storage Service.

Risposte di lavoro

Se la richiesta Create Job ha esito positivo, Amazon S3 restituisce un ID processo. L'ID processo è un identificatore univoco che Amazon S3 genera automaticamente per permetterti di identificare il processo di operazioni in batch e di monitorarne lo stato.

Quando crei un processo tramite la AWS CLI, gli SDK Amazon o l'API REST, puoi configurare le operazioni in batch S3 in modo che l'elaborazione del processo inizi automaticamente. Il processo viene eseguito appena è pronto e non viene accodato agli altri processi con priorità più alta.

Quando crei un processo con la AWS Management Console, controllane i dettagli e conferma che desideri eseguirlo prima che le operazioni in batch inizino a elaborarlo. Dopo aver confermato di voler eseguire il processo, il procedimento è identico a quando si crea un processo con gli altri metodi. Se un processo rimane nello stato di sospensione per più di 30 giorni, avrà un esito negativo.