Transferir desde S3 a través de CloudFront

Las transferencias desde Amazon S3 pueden usar una distribución de Amazon CloudFront como ruta de salida.

Las transferencias de datos a través de CloudFront pueden beneficiarse de costes de salida de AWS más bajos en comparación con las transferencias directas desde S3. Para obtener más información, consulta los precios de CloudFront y los cargos de salida de S3.

Si usas CloudFront como ruta de salida, tus objetos de S3 no se expondrán al público. Consulta ¿El uso de CloudFront expone mis objetos al público?

Información general

Para transferir datos de S3 a través de CloudFront, debes seguir estos pasos:

Configurar permisos de gestión de identidades y accesos

Sigue las instrucciones de Permisos de transferencia sin agente para conceder los permisos necesarios Google Cloud .

Configurar el acceso a tu bucket de S3

Sigue las instrucciones que se indican en el artículo Configurar el acceso a una fuente: Amazon S3 para configurar el acceso a tus datos en Amazon S3.

Crear una distribución de CloudFront para un segmento de S3

  1. En tu cuenta de AWS, ve a CloudFront.
  2. Haga clic en Crear una distribución de CloudFront.
  3. En Dominio de origen, selecciona tu contenedor de S3.
  4. El campo Ruta de origen debe estar vacío.
  5. Acepta el Nombre de origen autocompletado o especifica tu propio valor.
  6. En la sección Acceso al origen, selecciona Público. Esto no hace que tu cubo sea público, sino que indica a CloudFront que no se debe configurar ningún mecanismo de acceso.
  7. En la sección Clave de caché y solicitudes de origen:
    1. En Política de caché, selecciona CachingDisabled. De esta forma, CloudFront no almacena en caché las solicitudes ni las sirve a los usuarios no autenticados.
    2. En Política de solicitud de origen, selecciona AllViewerExceptHostHeader. Esto permite que CloudFront reenvíe los encabezados de autenticación a S3 para que el servicio de transferencia de Storage pueda acceder a tu bucket con tus credenciales seguras.
  8. En la sección Cortafuegos de aplicaciones web (WAF), selecciona No habilitar.
  9. Si quieres, elige una clase de precio. Storage Transfer Service selecciona los grupos de trabajadores en función de la región del segmento de origen, por lo que los precios de CloudFront se aplican en esa región. Para obtener los precios más bajos, asegúrese de que su contenedor de origen esté en EE. UU. o en Europa, o bien seleccione Usar solo Norteamérica y Europa como Clase de precio en CloudFront.
  10. Haga clic en Create CloudFront distribution (Crear distribución de CloudFront).

    Una vez creada correctamente, se muestra la página de detalles de la distribución de CloudFront.

  11. Anota el nombre de dominio de distribución. Por ejemplo: https://dy1h2n3l4ob56.cloudfront.net. Si en la página de detalles no se incluye el protocolo https:// delante del nombre de dominio de distribución, tendrás que añadirlo tú mismo al crear el trabajo de transferencia.

Crear una tarea de transferencia

La transferencia a través de una distribución de CloudFront se admite en la Google Cloud consola y en la API REST.

No incluyas información sensible, como información personal identificable (IPI) o datos de seguridad, en el nombre del trabajo de transferencia. Los nombres de recursos pueden propagarse a los nombres de otros recursos de Google Cloud y pueden exponerse a sistemas internos de Google fuera de tu proyecto.

Google Cloud consola

Para crear una transferencia con la consola Google Cloud , sigue las instrucciones para crear una transferencia.

Cuando se te pida que introduzcas el dominio de CloudFront, escribe el nombre de dominio de la distribución que has anotado en la sección anterior. También puedes encontrar este valor en la sección CloudFront de la consola de Amazon Web Services. Tiene el formato https://dy1h2n3l4ob56.cloudfront.net.

API REST

Para crear una transferencia con la API REST, sigue el ejemplo de la página Crear transferencias.

Especifica el nombre de dominio de distribución como valor del campo transferSpec.awsS3DataSource.cloudfrontDomain:

"transferSpec": {
  "awsS3DataSource": {
    "bucketName": "AWS_SOURCE_NAME",
    "cloudfrontDomain": "https://dy1h2n3l4ob56.cloudfront.net",
    "awsAccessKey": {
      "accessKeyId": "AWS_ACCESS_KEY_ID",
      "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
    }
  },
  ...
}

Preguntas frecuentes

¿Al usar CloudFront, mis objetos se exponen al público?

No. Si has seguido los pasos de configuración de esta página, tus objetos no se expondrán al público.

  • CloudFront no tiene acceso directo a tus objetos de S3.
  • Los usuarios reciben un error permission denied si intentan acceder a tus objetos directamente o a través de CloudFront (si tu segmento es privado).
  • El Servicio de transferencia de Storage firma las solicitudes a CloudFront con las credenciales que ha proporcionado en la tarea de transferencia, lo que nos permite descargar sus objetos de forma segura como si los descargáramos directamente de S3. Esto funciona gracias al ajuste de reenvío de encabezados AllViewerExceptHostHeader.