Puoi configurare l'accesso a un bucket Amazon S3 utilizzando uno dei due metodi seguenti:
Aree geografiche supportate
Storage Transfer Service è in grado di trasferire dati dalle seguenti regioni Amazon S3:af-south-1
, ap-east-1
, ap-northeast-1
,
ap-northeast-2
, ap-northeast-3
, ap-south-1
,
ap-south-2
, ap-southeast-1
, ap-southeast-2
,
ap-southeast-3
, ca-central-1
, eu-central-1
,
eu-central-2
, eu-north-1
, eu-south-1
, ap-northeast-1
, ap-northeast-1
/2, 2}
Autorizzazioni obbligatorie
Per utilizzare Storage Transfer Service per spostare dati da un bucket Amazon S3, il tuo account utente o il ruolo di identità federato deve disporre delle autorizzazioni appropriate per il bucket:
Autorizzazione | Descrizione | Utilizzo |
---|---|---|
s3:ListBucket |
Consente a Storage Transfer Service di elencare gli oggetti nel bucket. | Sempre obbligatorio. |
s3:GetBucketLocation |
Consente a Storage Transfer Service di ottenere la posizione del bucket. | Sempre obbligatorio. |
s3:GetObject |
Consente a Storage Transfer Service di leggere gli oggetti nel bucket. | Obbligatorio se stai trasferendo la versione attuale di tutti gli oggetti. Se il file manifest specifica una versione dell'oggetto, utilizza invece s3:GetObjectVersion . |
s3:GetObjectVersion |
Consente a Storage Transfer Service di leggere versioni specifiche degli oggetti nel bucket. | Obbligatorio se il file manifest specifica una versione dell'oggetto. In caso contrario, utilizza s3:GetObject . |
s3:DeleteObject |
Consente a Storage Transfer Service di eliminare gli oggetti nel bucket. | Obbligatorio se imposti deleteObjectsFromSourceAfterTransfer su true . |
Autenticazione tramite credenziali di accesso
Per utilizzare un ID chiave di accesso e una chiave segreta per l'autenticazione in AWS:
Creare un utente AWS Identity and Access Management (AWS IAM) con un nome facile da riconoscere, ad esempio
transfer-user
.Come tipo di accesso AWS, seleziona Access key - programmatico accesso.
Concedi all'utente uno dei seguenti ruoli:
- AmazonS3ReadOnlyAccess per fornire accesso di sola lettura all'origine. Una volta completato, questa opzione consente i trasferimenti, ma non supporta l'eliminazione degli oggetti all'origine.
- AmazonS3FullAccess se il trasferimento è configurato per eliminare gli oggetti all'origine.
Un ruolo personalizzato con le autorizzazioni appropriate nella tabella Autorizzazioni richieste sopra. Il codice JSON per le autorizzazioni minime ha l'aspetto seguente:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::AWS_BUCKET_NAME/*", "arn:aws:s3:::AWS_BUCKET_NAME" ] } ] }
Prendi nota dell'ID della chiave di accesso e della chiave di accesso segreta quando la creazione dell'utente è riuscita.
Il trasferimento dell'ID della chiave di accesso e della chiave di accesso segreta a Storage Transfer Service dipende dall'interfaccia che utilizzi per avviare il trasferimento.
console Cloud
Inserisci i valori direttamente nel modulo di creazione del job di trasferimento.
Per iniziare, consulta Creare trasferimenti.
Interfaccia a riga di comando gcloud
Crea un file JSON con il seguente formato:
{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
Passa la posizione del file al comando gcloud transfer jobs create
utilizzando il flag source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/KEYFILE.JSON
API REST
L'oggetto transferSpec
deve contenere le informazioni chiave nell'oggetto awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Librerie client
Guarda gli esempi nella pagina Creare trasferimenti.
Autenticazione tramite identità federata
Per utilizzare l'identità federata per l'autenticazione in AWS:
Creare un nuovo ruolo IAM in AWS.
Seleziona Criterio di attendibilità personalizzato come tipo di entità attendibile.
Copia e incolla il seguente criterio di attendibilità:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "SUBJECT_ID" } } } ] }
Sostituisci SUBJECT_ID con
subjectID
dell'account di servizio gestito da Google creato automaticamente quando inizi a utilizzare Storage Transfer Service. Per recuperare ilsubjectID
:Vai alla pagina di riferimento di
googleServiceAccounts.get
.Si apre un riquadro interattivo, intitolato Prova questo metodo.
Nel riquadro, in Parametri di richiesta, inserisci il tuo ID progetto. Il progetto specificato qui deve essere quello utilizzato per gestire Storage Transfer Service.
Fai clic su Execute (Esegui).
subjectId
è incluso nella risposta.
Concedi al ruolo uno dei seguenti criteri di autorizzazione:
- AmazonS3ReadOnlyAccess fornisce accesso di sola lettura all'origine. Una volta completato, questa opzione consente i trasferimenti, ma non supporta l'eliminazione degli oggetti all'origine.
- AmazonS3FullAccess se il trasferimento è configurato per eliminare gli oggetti all'origine.
Un ruolo personalizzato con le autorizzazioni appropriate nella tabella Autorizzazioni richieste sopra. Il codice JSON per le autorizzazioni minime ha l'aspetto seguente:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::AWS_BUCKET_NAME/*", "arn:aws:s3:::AWS_BUCKET_NAME" ] } ] }
Assegna un nome al ruolo e crealo.
Una volta creato, visualizza i dettagli del ruolo per recuperare Amazon Resource Name (ARN). Tieni presente questo valore; ha il formato
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Il modo in cui passi l'ARN a Storage Transfer Service dipende dall'interfaccia che utilizzi per avviare il trasferimento.
console Cloud
Inserisci l'ARN direttamente nel modulo per la creazione del job di trasferimento.
Per iniziare, consulta Creare trasferimenti.
Interfaccia a riga di comando gcloud
Crea un file JSON con il seguente formato:
{
"roleArn": "ARN"
}
Passa la posizione del file al comando gcloud transfer jobs create
utilizzando il flag source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/ARNFILE.JSON
API REST
L'oggetto transferSpec
deve contenere le informazioni ARN dell'oggetto awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"roleArn": "ARN"
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Librerie client
Guarda gli esempi nella pagina Creare trasferimenti.
Limitazioni IP
Se il tuo progetto AWS utilizza limitazioni IP per l'accesso allo spazio di archiviazione, devi aggiungere gli intervalli IP utilizzati dai worker di Storage Transfer Service all'elenco di IP consentiti.
Poiché questi intervalli IP possono cambiare, pubblichiamo i valori attuali come file JSON a un indirizzo permanente:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Quando viene aggiunto un nuovo intervallo al file, attenderemo almeno sette giorni prima di utilizzarlo per le richieste da Storage Transfer Service.
Ti consigliamo di estrarre i dati da questo documento almeno una volta a settimana per mantenere aggiornata la configurazione di sicurezza. Per uno script Python di esempio che recupera gli intervalli IP da un file JSON, consulta questo articolo della documentazione di Virtual Private Cloud.
Per aggiungere questi intervalli come IP consentiti, utilizza il campo Condition
in un criterio del bucket, come descritto nella documentazione di AWS S3: Gestione dell'accesso in base a indirizzi IP specifici.