Puedes configurar el acceso a un bucket de Amazon S3 mediante uno de estos dos métodos:
Regiones admitidas
El Servicio de transferencia de almacenamiento puede transferir datos de las siguientes regiones de 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
, , us-west-2
, us-west-2
, , , us-west-2
Permisos necesarios
Para usar el Servicio de transferencia de almacenamiento a fin de mover datos de un bucket de Amazon S3, tu cuenta de usuario o función de identidad federada debe tener los permisos adecuados para el bucket:
Permiso | Descripción | Use |
---|---|---|
s3:ListBucket |
Permite que Servicio de transferencia de almacenamiento enumere objetos en el bucket. | Uso obligatorio. |
s3:GetBucketLocation |
Permite que Servicio de transferencia de almacenamiento obtenga la ubicación del bucket. | Uso obligatorio. |
s3:GetObject |
Permite que Servicio de transferencia de almacenamiento lea objetos en el bucket. | Es obligatorio si transfieres la versión actual de todos los objetos. Si el manifiesto especifica una versión de objeto, usa s3:GetObjectVersion en su lugar. |
s3:GetObjectVersion |
Permite que Servicio de transferencia de almacenamiento lea versiones específicas de objetos en el bucket. | Obligatorio si tu manifiesto especifica una versión de objeto. De lo contrario, usa s3:GetObject . |
s3:DeleteObject |
Permite que Servicio de transferencia de almacenamiento borre objetos en el bucket. | Se requiere si establece deleteObjectsFromSourceAfterTransfer en true . |
Autentica con credenciales de acceso
Para usar un ID de clave de acceso y una clave secreta a fin de autenticarte en AWS, haz lo siguiente:
Crea un usuario de administración de identidades y accesos de AWS (IAM de AWS) con un nombre que puedas reconocer fácilmente, como
transfer-user
.Para el tipo de acceso de AWS, selecciona Clave de acceso: Acceso programático.
Otorga una de las siguientes funciones al usuario:
- AmazonS3ReadOnlyAccess para proporcionar acceso de solo lectura a la fuente. Esto permite transferencias, pero no admite la eliminación de objetos en la fuente una vez que se completa la transferencia.
- AmazonS3FullAccess si la transferencia está configurada para borrar objetos en el origen.
Una función personalizada con los permisos adecuados de la tabla Permisos requeridos arriba. El JSON para los permisos mínimos es similar al siguiente ejemplo:
{ "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" ] } ] }
Anota el ID de la clave de acceso y la clave de acceso secreta cuando el usuario se cree de forma correcta.
La forma de pasar el ID de la clave de acceso y la clave de acceso secreta al Servicio de transferencia de almacenamiento depende de la interfaz que uses para iniciar la transferencia.
consola de Cloud
Ingresa los valores directamente en el formulario de creación de trabajos de transferencia.
Consulta Crea transferencias para comenzar.
CLI de gcloud
Crea un archivo JSON con el siguiente formato:
{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
Pasa la ubicación del archivo al comando gcloud transfer jobs create
con la marca source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/KEYFILE.JSON
API de REST
Tu objeto transferSpec
debe contener la información de la clave como parte del objeto awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Bibliotecas cliente
Consulta los ejemplos en la página Crea transferencias.
Autentica con identidad federada
Usa la identidad federada para autenticarte en AWS:
Crea una función de IAM nueva en AWS.
Selecciona Política de confianza personalizada como el tipo de entidad de confianza.
Copia y pega la siguiente política de confianza:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "SUBJECT_ID" } } } ] }
Reemplaza SUBJECT_ID por el
subjectID
de la cuenta de servicio administrada por Google que se crea de forma automática cuando comienzas a usar el Servicio de transferencia de almacenamiento. Para recuperar elsubjectID
, haz lo siguiente:Ve a la página de referencia de
googleServiceAccounts.get
.Se abrirá un panel interactivo con el título Prueba este método.
En el panel, en Parámetros de solicitud, ingresa el ID del proyecto. El proyecto que especifiques aquí debe ser el que usas para administrar el Servicio de transferencia de almacenamiento.
Haz clic en Ejecutar. El
subjectId
se incluye en la respuesta.
Otorga una de las siguientes políticas de permisos a la función:
- AmazonS3ReadOnlyAccess proporciona acceso de solo lectura a la fuente. Esto permite transferencias, pero no admite la eliminación de objetos en la fuente una vez que se completa la transferencia.
- AmazonS3FullAccess si la transferencia está configurada para borrar objetos en el origen.
Una función personalizada con los permisos adecuados de la tabla Permisos requeridos arriba. El JSON para los permisos mínimos es similar al siguiente ejemplo:
{ "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" ] } ] }
Asigna un nombre a la función y crea la función.
Una vez creadas, consulta los detalles de la función para recuperar el nombre del recurso de Amazon (ARN). Ten en cuenta este valor; tiene el formato
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
La forma de pasar el ARN al Servicio de transferencia de almacenamiento depende de la interfaz que uses para iniciar la transferencia.
consola de Cloud
Ingresa el ARN directamente en el formulario de creación de trabajos de transferencia.
Consulta Crea transferencias para comenzar.
CLI de gcloud
Crea un archivo JSON con el siguiente formato:
{
"roleArn": "ARN"
}
Pasa la ubicación del archivo al comando gcloud transfer jobs create
con la marca source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/ARNFILE.JSON
API de REST
Tu objeto transferSpec
debe contener la información de ARN como parte del objeto awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"roleArn": "ARN"
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Bibliotecas cliente
Consulta los ejemplos en la página Crea transferencias.
Restricciones de IP
Si tu proyecto de AWS usa restricciones de IP para acceder al almacenamiento, debes agregar los rangos de IP que usan los trabajadores del Servicio de transferencia de almacenamiento a la lista de IP permitidas.
Debido a que estos rangos de IP pueden cambiar, publicamos los valores actuales como un archivo JSON en una dirección permanente:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Cuando se agrega un nuevo rango al archivo, esperaremos al menos 7 días antes de usar ese rango para las solicitudes del Servicio de transferencia de almacenamiento.
Te recomendamos extraer los datos de este documento al menos una vez a la semana para mantener actualizada tu configuración de seguridad. Para ver una secuencia de comandos de Python de muestra que recupera rangos de IP de un archivo JSON, consulta este artículo de la documentación de la nube privada virtual.
Para agregar estos rangos como IP permitidas, usa el campo Condition
en una política de bucket, como se describe en la documentación de AWS S3: Administra el acceso según direcciones IP específicas.