paint-brush
Cómo configurar CloudFront usando la plantilla de CloudFormationpor@rahulmawari
12,597 lecturas
12,597 lecturas

Cómo configurar CloudFront usando la plantilla de CloudFormation

por rahul4m2020/08/19
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Amazon CloudFront es un servicio de red de entrega de contenido (CDN) rápido que entrega de forma segura datos, videos, aplicaciones y API a clientes de todo el mundo con baja latencia y altas velocidades de transferencia, todo dentro de un entorno amigable para los desarrolladores. CloudFormation utiliza plantillas, archivos de configuración definidos en la sintaxis YAML, que son legibles por humanos y se pueden editar fácilmente. Un OAI es como un usuario virtual a través del cual CloudFront puede acceder a los datos del depósito privado. Después de crear OAI y usarlo en CloudFront, debemos actualizar la política del depósito para que CloudFront con un OAI pueda acceder a él.

Company Mentioned

Mention Thumbnail
featured image - Cómo configurar CloudFront usando la plantilla de CloudFormation
rahul HackerNoon profile picture

Recientemente trabajé en la implementación de CloudFront para archivos de depósito s3. La mayoría de los tutoriales estaban haciendo eso usando la administración de la consola (UI), pero nosotros en Blue Sky Analytics preferimos el "código como infraestructura". Así que tuve que hacer esto usando CloudFormation. Con la ayuda de algunos enlaces y tutoriales de StackOverflow, pude escribir la plantilla de CloudFormation.

Entonces, ¿qué son exactamente CloudFront y CloudFromation?

Estas definiciones te ayudarán.

CloudFront: Amazon CloudFront es un servicio rápido de red de entrega de contenido (CDN) que entrega de forma segura datos, videos, aplicaciones y API a clientes de todo el mundo con baja latencia y altas velocidades de transferencia, todo dentro de un entorno amigable para los desarrolladores.
CloudFromation: en AWS, el servicio CloudFormation proporciona capacidades de infraestructura como código. CloudFormation utiliza plantillas , archivos de configuración definidos en sintaxis JSON o YAML, que son legibles por humanos y se pueden editar fácilmente, que puede usar para definir los recursos que desea configurar. CloudFormation lee una plantilla y genera una pila , un conjunto de recursos listos para usar en AWS.

¿Cómo va a funcionar esto?


Vamos a usar un cubo privado, también se puede usar un cubo público, pero no lo usamos para evitar el acceso directo al cubo y las fugas.

CloudFront puede acceder a datos de depósitos privados mediante OAI (Identidad de acceso de origen). Un OAI es como un usuario virtual a través del cual CloudFront puede acceder a un depósito privado. Después de crear OAI y usarlo en CloudFront, debemos actualizar la política del depósito para que CloudFront con un OAI pueda acceder a él.

Recursos que vamos a construir usando CloudFormation:

  1. Cubo S3
  2. OAI (Identidad de acceso de origen).
  3. Actualizar política de depósitos
  4. Distribución de CloudFront
 AWSTemplateFormatVersion: "2010-09-09" Resources:

Primero, necesitamos definir la versión de la plantilla de AWS y un atributo "Recursos" para comenzar a escribir plantillas de recursos. La versión de la plantilla de AWS define las capacidades de una plantilla.

Cubo S3

Plantilla de recursos Bucker

 Bucket: Type: AWS::S3::Bucket Properties: AccessControl: Private BucketName: private-bucket Tags: - Key: description Value: "Private files"

"Cubo" es el nombre de la plantilla de recursos. Podemos usarlo con cualquier nombre adecuado aquí. "Tipo" define el tipo de recurso, después de esto, podemos definir las propiedades del recurso. Cada recurso tendrá sus propias propiedades.

OAI (Identidad de acceso de origen)

plantilla de recursos OAI

 CloudFrontOriginIdentity: Type: AWS::CloudFront::CloudFrontOriginAccessIdentity Properties: CloudFrontOriginAccessIdentityConfig: Comment: 'origin identity'

Actualizar política de depósitos

Recurso de plantilla para actualizar la política del depósito.

 BucketPolicy: Type: AWS::S3::BucketPolicy Properties: Bucket: private-bucket PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: AWS: !Sub 'arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ${CloudFrontOriginIdentity}' Action: 's3:GetObject' Resource: arn:aws:s3:::private-bucket/*

Dos de los campos más importantes, aquí están el campo de AWS bajo el principio y los campos de recursos.

OAI creado recientemente se puede usar directamente usando su nombre de recurso de plantilla como este "${CloudFrontOriginIdentity}"

Distribución de CloudFront

Ahora la plantilla final de recursos de distribución de CloudFront.

Una propiedad que debe tener cuidado aquí es "Origins", que básicamente define el origen de su depósito y "DomainName" será así "${nombre del depósito}.s3.${región}.amazonaws.com".

 publicDistribution: Type: AWS::CloudFront::Distribution Properties: DistributionConfig: Origins: - DomainName: private-bucket.s3.us-east-2.amazonaws.com Id: S3-private-bucket S3OriginConfig: OriginAccessIdentity: !Sub 'origin-access-identity/cloudfront/${CloudFrontOriginIdentity}' Enabled: 'true' Comment: Some comment DefaultCacheBehavior: AllowedMethods: - GET - HEAD TargetOriginId: S3-private-bucket ForwardedValues: QueryString: 'false' Cookies: Forward: none ViewerProtocolPolicy: redirect-to-https ViewerCertificate: CloudFrontDefaultCertificate: 'true'

Después de completar la plantilla de CloudFromation, puede usar el comando sam para implementar y verificar el estado de su pila de CloudFromation.

Sam comando:

 sam deploy --template-file [sample-template] --stack-name [Stack name] --s3-bucket sam-test-bucket --capabilities CAPABILITY_IAM

Algunos enlaces para aprender más:

Gracias por leer 💓️