Utilizzo di punti di accesso multiregionali con operazioni supportate API - Amazon Simple Storage Service

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 di punti di accesso multiregionali con operazioni supportate API

Amazon S3 offre un insieme di operazioni che permettono di gestire i punti di accesso multi-regione. Amazon S3 elabora alcune di queste operazioni in modo sincrono e alcune in modo asincrono. Quando richiami un'operazione asincrona, per prima cosa Amazon S3 autorizza in modo sincrono l'operazione richiesta. Se l'autorizzazione ha esito positivo, Amazon S3 restituisce un token che puoi utilizzare per monitorare lo stato di avanzamento e i risultati dell'operazione richiesta.

Nota

Le richieste effettuate tramite la console Amazon S3 sono sempre sincrone. La console attende il completamento della richiesta prima di consentire l'invio di un'altra richiesta.

Puoi visualizzare lo stato e i risultati correnti delle operazioni asincrone utilizzando la console oppure puoi utilizzare DescribeMultiRegionAccessPointOperation in, o. AWS CLI AWS SDKs REST API Amazon S3 fornisce un token di tracciamento nella risposta a un'operazione asincrona. Includi quel token di tracciamento come argomento per DescribeMultiRegionAccessPointOperation. Quando includi il token di monitoraggio, Amazon S3 restituisce lo stato corrente e i risultati dell'operazione specificata, inclusi eventuali errori o informazioni pertinenti sulla risorsa. Amazon S3 esegue le operazioni DescribeMultiRegionAccessPointOperation in modo sincrono.

Tutte le richieste del piano di controllo (control-plane) per creare o mantenere punti di accesso multi-regione devono essere instradate alla regione US West (Oregon). Per richieste sul piano dati del punto di accesso multi-regione, non è necessario specificare le regioni. Per il piano di controllo (control-plane) di failover del punto di accesso multi-regione, la richiesta deve essere instradata a una delle cinque regioni supportate. Per ulteriori informazioni sulle regioni supportate da punti di accesso multiregionali, vedere. Restrizioni e limitazioni dei punti di accesso multi-regione

Inoltre, è necessario concedere l's3:ListAllMyBucketsautorizzazione all'utente, al ruolo o a un'altra AWS Identity and Access Management (IAM) entità che effettua una richiesta di gestione di un punto di accesso multiregionale.

Negli esempi seguenti viene illustrato come utilizzare i punti di accesso multi-regione con operazioni compatibili in Amazon S3.

Compatibilità dei punti di accesso multiregionali con e Servizi AWSAWS SDKs

Per utilizzare un punto di accesso multiregionale con applicazioni che richiedono un nome bucket Amazon S3, utilizza l'Amazon Resource Name ARN () del punto di accesso multiregionale quando effettui richieste utilizzando un. AWS SDK Per verificare quali AWS SDKs sono compatibili con i punti di accesso multiregionali, consulta Compatibilità con. AWS SDKs

Compatibilità dei punti di accesso multi-regione con le operazioni S3

Puoi utilizzare le seguenti API operazioni sul piano dati di Amazon S3 per eseguire azioni sugli oggetti nei bucket associati al tuo punto di accesso multiregionale. Le seguenti operazioni S3 possono accettare punti di accesso multiregionali: ARNs

Nota

I punti di accesso multiregionali supportano le operazioni di copia utilizzando punti di accesso multiregione solo come destinazione quando si utilizza il punto di accesso multiregionale. ARN

Puoi utilizzare le seguenti operazioni del piano di controllo (control-plane) Amazon S3 per creare e gestire i punti di accesso multi-regione:

Visualizzare la configurazione di instradamento del punto di accesso multi-regione

AWS CLI

Il seguente comando di esempio recupera la configurazione di instradamento del punto di accesso multi-regione in modo da poter visualizzare gli stati di instradamento correnti per i bucket. Per utilizzare questo comando di esempio, sostituisci user input placeholders con le tue informazioni.

aws s3control get-multi-region-access-point-routes --region eu-west-1 --account-id 111122223333 --mrap arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap
SDK for Java

Il codice seguente SDK per Java recupera la configurazione del percorso del punto di accesso multiregionale in modo da poter visualizzare gli stati di routing correnti per i bucket. Per utilizzare questa sintassi di esempio, sostituisci user input placeholders con le tue informazioni.

S3ControlClient s3ControlClient = S3ControlClient.builder() .region(Region.US_EAST_1) .credentialsProvider(credentialsProvider) .build(); GetMultiRegionAccessPointRoutesRequest request = GetMultiRegionAccessPointRoutesRequest.builder() .accountId("111122223333") .mrap("arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap") .build(); GetMultiRegionAccessPointRoutesResponse response = s3ControlClient.getMultiRegionAccessPointRoutes(request);
SDK for JavaScript

Il JavaScript codice seguente recupera SDK la configurazione del percorso del punto di accesso multiregionale in modo da poter visualizzare gli stati di routing correnti per i bucket. Per utilizzare questa sintassi di esempio, sostituisci user input placeholders con le tue informazioni.

const REGION = 'us-east-1' const s3ControlClient = new S3ControlClient({ region: REGION }) export const run = async () => { try { const data = await s3ControlClient.send( new GetMultiRegionAccessPointRoutesCommand({ AccountId: '111122223333', Mrap: 'arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap', }) ) console.log('Success', data) return data } catch (err) { console.log('Error', err) } } run()
SDK for Python

Il codice seguente SDK per Python recupera la configurazione del percorso del punto di accesso multiregionale in modo da poter vedere gli stati di routing correnti per i bucket. Per utilizzare questa sintassi di esempio, sostituisci user input placeholders con le tue informazioni.

s3.get_multi_region_access_point_routes( AccountId=111122223333, Mrap=arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap)['Routes']

Aggiornare la policy di bucket Amazon S3 sottostante

Per garantire un accesso adeguato, devi anche aggiornare la policy di bucket Amazon S3 sottostante. Nei seguenti esempi il controllo dell'accesso viene delegato alla policy del punto di accesso multi-regione. Dopo aver delegato il controllo dell'accesso alla policy del punto di accesso multi-regione, la policy del bucket non viene più utilizzata per il controllo dell'accesso quando le richieste vengono effettuate tramite il punto di accesso multi-regione.

Di seguito è riportato un esempio di policy di bucket che delega il controllo degli accessi alla policy del punto di accesso multi-regione. Per utilizzare questa policy di bucket, sostituisci user input placeholders con le tue informazioni. Per applicare questa politica tramite il AWS CLI put-bucket-policy comando, come illustrato nell'esempio successivo, salvate la politica in un file, ad esempio. policy.json

{ "Version": "2012-10-17", "Statement": { "Principal": { "AWS": "*" }, "Effect": "Allow", "Action": ["s3:*"], "Resource": ["arn:aws:s3:::111122223333/*", "arn:aws:s3:::amzn-s3-demo-bucket"], "Condition": { "StringEquals": { "s3:DataAccessPointAccount": "444455556666" } } } }

Il seguente comando di esempio put-bucket-policy associa la policy del bucket S3 aggiornata al bucket S3:

aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file:///tmp/policy.json

Aggiornare la configurazione di instradamento di un punto di accesso multi-regione

Il seguente comando di esempio aggiorna la configurazione di instradamento del punto di accesso multi-regione. I comandi di instradamento del punto di accesso multi-regione possono essere eseguiti nelle seguenti cinque regioni:

  • ap-southeast-2

  • ap-northeast-1

  • us-east-1

  • us-west-2

  • eu-west-1

In una configurazione di instradamento dei punti di accesso multi-regione, è possibile impostare i bucket su uno stato di instradamento attivo o passivo. A differenza dei bucket passivi, i bucket attivi ricevono traffico. È possibile impostare lo stato di instradamento di un bucket impostando il valore TrafficDialPercentage del bucket su 100 per attivo o su 0 per passivo.

AWS CLI

Il seguente comando di esempio aggiorna la configurazione di instradamento per i punti di accesso multi-regione. In questo esempio, amzn-s3-demo-bucket1 è impostato sullo stato attivo e amzn-s3-demo-bucket2 su passivo. Per utilizzare questo comando di esempio, sostituisci user input placeholders con le tue informazioni.

aws s3control submit-multi-region-access-point-routes --region ap-southeast-2 --account-id 111122223333 --mrap arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap --route-updates Bucket=amzn-s3-demo-bucket1,TrafficDialPercentage=100 Bucket=amzn-s3-demo-bucket2,TrafficDialPercentage=0
SDK for Java

Quanto segue SDK per il codice Java aggiorna la configurazione del routing del punto di accesso multiregionale. Per utilizzare questa sintassi di esempio, sostituisci user input placeholders con le tue informazioni.

S3ControlClient s3ControlClient = S3ControlClient.builder() .region(Region.ap-southeast-2) .credentialsProvider(credentialsProvider) .build(); SubmitMultiRegionAccessPointRoutesRequest request = SubmitMultiRegionAccessPointRoutesRequest.builder() .accountId("111122223333") .mrap("arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap") .routeUpdates( MultiRegionAccessPointRoute.builder() .region("eu-west-1") .trafficDialPercentage(100) .build(), MultiRegionAccessPointRoute.builder() .region("ca-central-1") .bucket("111122223333") .trafficDialPercentage(0) .build() ) .build(); SubmitMultiRegionAccessPointRoutesResponse response = s3ControlClient.submitMultiRegionAccessPointRoutes(request);
SDK for JavaScript

Quanto segue SDK per il JavaScript codice aggiorna la configurazione del percorso del punto di accesso multiregionale. Per utilizzare questa sintassi di esempio, sostituisci user input placeholders con le tue informazioni.

const REGION = 'ap-southeast-2' const s3ControlClient = new S3ControlClient({ region: REGION }) export const run = async () => { try { const data = await s3ControlClient.send( new SubmitMultiRegionAccessPointRoutesCommand({ AccountId: '111122223333', Mrap: 'arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap', RouteUpdates: [ { Region: 'eu-west-1', TrafficDialPercentage: 100, }, { Region: 'ca-central-1', Bucket: 'amzn-s3-demo-bucket1', TrafficDialPercentage: 0, }, ], }) ) console.log('Success', data) return data } catch (err) { console.log('Error', err) } } run()
SDK for Python

Quanto segue SDK per il codice Python aggiorna la configurazione del percorso del punto di accesso multiregionale. Per utilizzare questa sintassi di esempio, sostituisci user input placeholders con le tue informazioni.

s3.submit_multi_region_access_point_routes( AccountId=111122223333, Mrap=arn:aws:s3::111122223333:accesspoint/abcdef0123456.mrap, RouteUpdates= [{ 'Bucket': DOC-EXAMPLE-BUCKET, 'Region': ap-southeast-2, 'TrafficDialPercentage': 10 }])

Aggiunta di un oggetto a un bucket nel punto di accesso multi-regione

Per aggiungere un oggetto al bucket associato al punto di accesso multi-regione, puoi utilizzare l'operazione PutObject. Per mantenere sincronizzati tutti i bucket nel punto di accesso multi-regione, abilita Replica tra regioni.

Nota

Per utilizzare questa operazione, devi disporre dell'autorizzazione s3:PutObject per il punto di accesso multi-regione. Per ulteriori informazioni sui requisiti di autorizzazione del punto di accesso multi-regione, consultare Autorizzazioni.

AWS CLI

Il seguente esempio di caricamento delle richieste del piano dati example.txt al punto di accesso multiregionale specificato. Per utilizzare questo esempio, sostituire il segnaposti di input dall'utente con le tue informazioni.

aws s3api put-object --bucket arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap --key example.txt --body example.txt
SDK for Java
S3Client s3Client = S3Client.builder() .build(); PutObjectRequest objectRequest = PutObjectRequest.builder() .bucket("arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap") .key("example.txt") .build(); s3Client.putObject(objectRequest, RequestBody.fromString("Hello S3!"));
SDK for JavaScript
const client = new S3Client({}); async function putObjectExample() { const command = new PutObjectCommand({ Bucket: "arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap", Key: "example.txt", Body: "Hello S3!", }); try { const response = await client.send(command); console.log(response); } catch (err) { console.error(err); } }
SDK for Python
import boto3 client = boto3.client('s3') client.put_object( Bucket='arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap', Key='example.txt', Body='Hello S3!' )

Recupero degli oggetti dal punto di accesso multi-regione

Per recuperare oggetti dal punto di accesso multi-regione, puoi utilizzare l'operazione GetObject.

Nota

Per utilizzare questa API operazione, è necessario disporre dell's3:GetObjectautorizzazione per il punto di accesso multiregionale. Per ulteriori informazioni sui requisiti di autorizzazione del punto di accesso multi-regione, consultare Autorizzazioni.

AWS CLI

L'esempio seguente recupera una richiesta del piano dati example.txt dal punto di accesso multiregionale specificato e lo scarica come downloaded_example.txt. Per utilizzare questo esempio, sostituire il segnaposti di input dall'utente con le tue informazioni.

aws s3api get-object --bucket arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap --key example.txt downloaded_example.txt
SDK for Java
S3Client s3 = S3Client .builder() .build(); GetObjectRequest getObjectRequest = GetObjectRequest.builder() .bucket("arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap") .key("example.txt") .build(); s3Client.getObject(getObjectRequest);
SDK for JavaScript
const client = new S3Client({}) async function getObjectExample() { const command = new GetObjectCommand({ Bucket: "arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap", Key: "example.txt" }); try { const response = await client.send(command); console.log(response); } catch (err) { console.error(err); } }
SDK for Python
import boto3 client = boto3.client('s3') client.get_object( Bucket='arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap', Key='example.txt' )

Elencare gli oggetti archiviati in un bucket sottostante il punto di accesso multi-regione

Per restituire un elenco di oggetti archiviati in un bucket sottostante il punto di accesso multi-regione, utilizza l'operazione ListObjectsV2. Nel comando di esempio seguente, tutti gli oggetti per il punto di accesso multiregionale specificato vengono elencati utilizzando il comando ARN for the Multi-Region Access Point. In questo caso, il punto di accesso multiregionale è: ARN

arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap

Nota

Per utilizzare questa API operazione, è necessario disporre dell's3:ListBucketautorizzazione per il punto di accesso multiregionale e il bucket sottostante. Per ulteriori informazioni sui requisiti di autorizzazione del punto di accesso multi-regione, consultare Autorizzazioni.

AWS CLI

Il seguente esempio di richiesta del piano dati elenca gli oggetti nel bucket che è alla base del punto di accesso multiregionale specificato da. ARN Per utilizzare questo esempio, sostituire il segnaposti di input dall'utente con le tue informazioni.

aws s3api list-objects-v2 --bucket arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap
SDK for Java
S3Client s3Client = S3Client.builder() .build(); String bucketName = "arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap"; ListObjectsV2Request listObjectsRequest = ListObjectsV2Request .builder() .bucket(bucketName) .build(); s3Client.listObjectsV2(listObjectsRequest);
SDK for JavaScript
const client = new S3Client({}); async function listObjectsExample() { const command = new ListObjectsV2Command({ Bucket: "arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap", }); try { const response = await client.send(command); console.log(response); } catch (err) { console.error(err); } }
SDK for Python
import boto3 client = boto3.client('s3') client.list_objects_v2( Bucket='arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap' )

Utilizza punti di accesso predefiniti URL con più regioni

Puoi utilizzare un preimpostato URL per generare un account URL che consenta ad altri di accedere ai tuoi bucket Amazon S3 tramite un punto di accesso multiregionale Amazon S3. Quando crei un predefinitoURL, lo associ a un'azione specifica sull'oggetto, come un upload S3 () o un download S3 (PutObject). GetObject Puoi condividere il prefirmato URL e chiunque abbia accesso ad esso può eseguire l'azione incorporata nel file URL come se fosse l'utente che firma originariamente.

I prefirmati URLs hanno una data di scadenza. Quando viene raggiunta la scadenza, non URL funzionerà più.

Prima di utilizzare S3 Multi-Region Access Point con presignedURLs, verifica la AWS SDKcompatibilità con l'algoritmo SigV4A. Verifica che la tua SDK versione supporti SigV4A come implementazione di firma utilizzata per firmare le richieste globali. Regione AWS Per ulteriori informazioni sull'utilizzo di presigned URLs con Amazon S3, consulta Condivisione di oggetti utilizzando presigned. URLs

Gli esempi seguenti mostrano come utilizzare punti di accesso multiregionali con presigned. URLs Per utilizzare questi esempi, sostituire il segnaposti di input dall'utente con le tue informazioni.

AWS CLI
aws s3 presign arn:aws:s3::123456789012:accesspoint/MultiRegionAccessPoint_alias/example-file.txt
SDK for Python
import logging import boto3 from botocore.exceptions import ClientError s3_client = boto3.client('s3',aws_access_key_id='xxx',aws_secret_access_key='xxx') s3_client.generate_presigned_url(HttpMethod='PUT',ClientMethod="put_object", Params={'Bucket':'arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap','Key':'example-file'})
SDK for Java
S3Presigner s3Presigner = S3Presigner.builder() .credentialsProvider(StsAssumeRoleCredentialsProvider.builder() .refreshRequest(assumeRole) .stsClient(stsClient) .build()) .build(); GetObjectRequest getObjectRequest = GetObjectRequest.builder() .bucket("arn:aws:s3::123456789012:accesspoint/abcdef0123456.mrap") .key("example-file") .build(); GetObjectPresignRequest preSignedReq = GetObjectPresignRequest.builder() .getObjectRequest(getObjectRequest) .signatureDuration(Duration.ofMinutes(10)) .build(); PresignedGetObjectRequest presignedGetObjectRequest = s3Presigner.presignGetObject(preSignedReq);
Nota

Per utilizzare SigV4A con credenziali di sicurezza temporanee, ad esempio quando si utilizzano i IAM ruoli, assicuratevi di richiedere le credenziali temporanee a un endpoint regionale in (), anziché a un endpoint globale. AWS Security Token Service AWS STS Se utilizzi l'endpoint globale for AWS STS (sts.amazonaws.com), AWS STS genererà credenziali temporanee da un endpoint globale, che non è supportato da Sig4A. Di conseguenza, verrà restituito un errore. Per risolvere questo problema, utilizza uno degli endpoint regionali elencati per. AWS STS

Utilizzare un bucket configurato con l'opzione di pagamento a carico del richiedente con i punti di accesso multi-regione

Se un bucket S3 associato ai punti di accesso multi-regione è configurato per utilizzare l'opzione Pagamento a carico del richiedente, il richiedente pagherà la richiesta di creazione del bucket, il download e gli eventuali costi relativi ai punti di accesso multi-regione. Per ulteriori informazioni, consulta i Prezzi di Amazon S3.

Di seguito è riportato un esempio di richiesta di piano dati a un punto di accesso multi-regione connesso a un bucket con pagamento a carico del richiedente.

AWS CLI

Per scaricare oggetti da un punto di accesso multi-regione collegato a un bucket con pagamento a carico del richiedente, devi specificare --request-payer requester come parte della richiesta get-object. Inoltre, devi specificare il nome del file nel bucket e la posizione in cui archiviare il file scaricato.

aws s3api get-object --bucket MultiRegionAccessPoint_ARN --request-payer requester --key example-file-in-bucket.txt example-location-of-downloaded-file.txt
SDK for Java

Per scaricare oggetti da un punto di accesso multi-regione collegato a un bucket con pagamento a carico del richiedente, devi specificare RequestPayer.REQUESTER come parte della richiesta GetObject. È inoltre necessario specificare il nome del file nel bucket e la posizione in cui deve essere archiviato.

GetObjectResponse getObjectResponse = s3Client.getObject(GetObjectRequest.builder() .key("example-file.txt") .bucket("arn:aws:s3:: 123456789012:accesspoint/abcdef0123456.mrap") .requestPayer(RequestPayer.REQUESTER) .build() ).response();