Utilizzo dei punti di accesso multi-regione con operazioni supportate
Negli esempi seguenti viene illustrato come utilizzare i punti di accesso multi-regione con operazioni compatibili in Amazon S3.
Compatibilità del punto di accesso multi-regione con Servizi AWS
I nomi della risorsa Amazon (ARN) dei punti di accesso multi-regione Amazon S3 consentono a qualsiasi applicazione che richiede un nome di bucket Amazon S3 di utilizzare un punto di accesso multi-regione.
Compatibilità dei punti di accesso multi-regione con le operazioni S3
Puoi utilizzare i punti di accesso multi-regione per accedere ai bucket utilizzando il seguente sottoinsieme di operazioni API Amazon S3: Le seguenti operazioni S3 possono accettare ARN di punti di accesso multi-regione:
I punti di accesso multi-regione non supportano l'operazione API CopyObject. Dovrai invece eseguire le operazioni CopyObject
direttamente tra i bucket.
Puoi utilizzare le seguenti operazioni di Amazon S3 Control con 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 MultiRegionAccessPoint_ARN
- SDK for Java
-
Il seguente codice SDK per Java 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 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/0000000000000
.mrap")
.build();
GetMultiRegionAccessPointRoutesResponse response = s3ControlClient.getMultiRegionAccessPointRoutes(request);
- SDK for JavaScript
-
Il seguente codice SDK per JavaScript 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 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/0000000000000
.mrap',
})
)
console.log('Success', data)
return data
} catch (err) {
console.log('Error', err)
}
}
run()
- SDK for Python
-
Il seguente codice SDK per Python 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 questa sintassi di esempio, sostituisci user input
placeholders
con le tue informazioni.
s3.get_multi_region_access_point_routes(
AccountId=111122223333
,
Mrap=MultiRegionAccessPoint_ARN
)['Routes']
Aggiornare la policy di bucket Amazon S3 sottostante
Per garantire un accesso adeguato, devi anche aggiornare la policy di bucket Amazon S3 sottostante. Gli esempi riportati di seguito delegano il controllo degli accessi alla policy del punto di accesso multi-regione in modo che venga rispettata la policy del 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.
{
"Version": "2012-10-17",
"Statement": {
"Principal": { "AWS": "*" },
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::111122223333
/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET
"],
"Condition": {
"StringEquals": {
"s3:DataAccessPointAccount": "444455556666
"
}
}
}
}
Il seguente comando di esempio associa la policy di bucket S3 aggiornata al bucket S3:
aws s3api put-bucket-policy
--bucket DOC-EXAMPLE-BUCKET
--policy file:///tmp/policy-eu.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, DOC-EXAMPLE-BUCKET1
è impostato sullo stato attivo e DOC-EXAMPLE-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 MultiRegionAccessPoint_ARN
--route-updates Bucket=DOC-EXAMPLE-BUCKET1
,TrafficDialPercentage=100
Bucket=DOC-EXAMPLE-BUCKET2
,TrafficDialPercentage=0
- SDK for Java
-
Il seguente codice SDK per Java aggiorna la configurazione di instradamento del punto di accesso multi-regione. 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/0000000000000
.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
-
Il seguente codice SDK per JavaScript aggiorna la configurazione di instradamento del punto di accesso multi-regione. 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/0000000000000
.mrap',
RouteUpdates: [
{
Region: 'eu-west-1
',
TrafficDialPercentage: 100
,
},
{
Region: 'ca-central-1
',
Bucket: 'DOC-EXAMPLE-BUCKET1
',
TrafficDialPercentage: 0
,
},
],
})
)
console.log('Success', data)
return data
} catch (err) {
console.log('Error', err)
}
}
run()
- SDK for Python
-
Il seguente codice SDK per Python aggiorna la configurazione di instradamento del punto di accesso multi-regione. Per utilizzare questa sintassi di esempio, sostituisci user input
placeholders
con le tue informazioni.
s3.submit_multi_region_access_point_routes(
AccountId=111122223333
,
Mrap=MultiRegionAccessPoint_ARN
,
RouteUpdates= [{
'Bucket': DOC-EXAMPLE-BUCKET
,
'Region': ap-southeast-2
,
'TrafficDialPercentage': 10
}])
Utilizzare un URL prefirmato con i punti di accesso multi-regione
Puoi utilizzare un URL prefirmato per generare un URL che ti consenta di accedere ai bucket Amazon S3 tramite un punto di accesso multi-regione in Amazon S3. Quando crei un URL prefirmato, lo associ a un'azione di un oggetto specifico come un caricamento S3 (PutObject
) o un download S3 (GetObject
). È possibile condividere l'URL e chiunque vi abbia accesso può eseguire l'azione incorporata nell'URL come se fosse l'utente di firma originale.
Gli URL prefirmati hanno una data di scadenza. Una volta raggiunta la scadenza, l'URL non funzionerà più. Tuttavia, prima di utilizzare i punti di accesso multi-regione S3 con URL prefirmati, verifica la compatibilità dell'SDK AWS con l'algoritmo SigV4A. Verifica che la tua versione SDK supporti SigV4a come implementazione di firma utilizzata per firmare le richieste globali a livello di Regione AWS. Per ulteriori informazioni sugli URL prefirmati, consulta Condivisione di oggetti mediante URL prefirmati.
Gli esempi riportati di seguito mostrano come utilizzare i punti di accesso multi-regione Amazon S3 con URL prefirmati. Per usare questi esempi, sostituisci user input
placeholders
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/0000000000000.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/0000000000000
.mrap")
.key("example-file
")
.build();
GetObjectPresignRequest preSignedReq = GetObjectPresignRequest.builder()
.getObjectRequest(getObjectRequest)
.signatureDuration(Duration.ofMinutes(10
))
.build();
PresignedGetObjectRequest presignedGetObjectRequest = s3Presigner.presignGetObject(preSignedReq);
Per utilizzare SigV4A con credenziali di sicurezza temporanee, ad esempio quando si utilizzano ruoli AWS Identity and Access Management (IAM), assicurati di richiedere le credenziali temporanee da un endpoint regionale in AWS Security Token Service (AWS STS), anziché da un endpoint globale. Se utilizzi l'endpoint globale per 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 perAWS STS.