

# Introducción a CloudFront
<a name="GettingStarted"></a>

Los temas de esta sección muestran cómo comenzar a entregar su contenido con Amazon CloudFront.

El tema [Configuración de su Cuenta de AWS](setting-up-cloudfront.md) describe los requisitos previos de los siguientes tutoriales, como la creación de una Cuenta de AWS y la creación de un usuario con acceso administrativo.

El tutorial de distribución básica muestra cómo configurar el control de acceso de origen (OAC) para enviar solicitudes autenticadas a un origen de Amazon S3.

El tutorial de sitios web estáticos seguros muestra cómo crear un sitio web estático seguro para su nombre de dominio utilizando OAC con un origen de Amazon S3. El tutorial utiliza una plantilla de Amazon CloudFront (CloudFront) para la configuración y la implementación.

**Topics**
+ [

# Configuración de su Cuenta de AWS
](setting-up-cloudfront.md)
+ [

# Introducción a una distribución estándar de CloudFront
](GettingStarted.SimpleDistribution.md)
+ [

# Introducción a una distribución estándar (AWS CLI)
](get-started-cli-tutorial.md)
+ [

# Introducción a un sitio web seguro estático
](getting-started-secure-static-website-cloudformation-template.md)

# Configuración de su Cuenta de AWS
<a name="setting-up-cloudfront"></a>

En este tema se describen los pasos preliminares, como la creación de una Cuenta de AWS, para prepararle para el uso de Amazon CloudFront.

**Topics**
+ [

## Cómo crear una Cuenta de AWS
](#sign-up-for-aws)
+ [

## Creación de un usuario con acceso administrativo
](#create-an-admin)
+ [

## Elección de cómo acceder a CloudFront
](#introduction-accessing-cloudfront)

## Cómo crear una Cuenta de AWS
<a name="sign-up-for-aws"></a>

Si no dispone de una Cuenta de AWS, siga estos pasos para crear una.

**Cómo registrarse en Cuenta de AWS**

1. Abra [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup).

1. Siga las instrucciones que se le indiquen.

   Parte del procedimiento de registro consiste en recibir una llamada telefónica o mensaje de texto e indicar un código de verificación en el teclado del teléfono.

   Al registrarse en una Cuenta de AWS, se crea un *Usuario raíz de la cuenta de AWS*. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar [Tareas que requieren acceso de usuario raíz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS le enviará un correo electrónico de confirmación cuando complete el proceso de registro. Se puede ver la actividad de la cuenta y administrarla en cualquier momento entrando en [https://aws.amazon.com/](https://aws.amazon.com/) y seleccionando **Mi cuenta**.

## Creación de un usuario con acceso administrativo
<a name="create-an-admin"></a>

Después de registrarse para obtener una Cuenta de AWS, proteja su Usuario raíz de la cuenta de AWS, habilite AWS IAM Identity Center y cree un usuario administrativo para no usar el usuario raíz en las tareas cotidianas.

**Protección de Usuario raíz de la cuenta de AWS**

1.  Inicie sesión en [Consola de administración de AWS](https://console.aws.amazon.com/) como propietario de la cuenta; para ello, elija **Usuario raíz** e introduzca el correo electrónico de su Cuenta de AWS. En la siguiente página, escriba su contraseña.

   Para obtener ayuda para iniciar sesión con el usuario raíz, consulte [Iniciar sesión como usuario raíz](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) en la *Guía del usuario de AWS Sign-In*.

1. Active la autenticación multifactor (MFA) para el usuario raíz.

   Para obtener instrucciones, consulte [Habilitación de un dispositivo MFA virtual para su usuario raíz de la Cuenta de AWS (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) en la *Guía del usuario de IAM*.

**Creación de un usuario con acceso administrativo**

1. Activar IAM Identity Center.

   Consulte las instrucciones en [Activar AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) en la *Guía del usuario de AWS IAM Identity Center*.

1. En IAM Identity Center, conceda acceso administrativo a un usuario.

   Para ver un tutorial sobre cómo usar Directorio de IAM Identity Center como origen de identidad, consulte [Configuración del acceso de los usuarios con el Directorio de IAM Identity Center predeterminado](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) en la *Guía del usuario de AWS IAM Identity Center*.

**Inicio de sesión como usuario con acceso de administrador**
+ Para iniciar sesión con el usuario de IAM Identity Center, use la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.

  Para obtener ayuda para iniciar sesión con un usuario de IAM Identity Center, consulte [Inicio de sesión en el portal de acceso de AWS](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) en la *Guía del usuario de AWS Sign-In*.

**Concesión de acceso a usuarios adicionales**

1. En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.

   Para conocer las instrucciones, consulte [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) en la *Guía del usuario de AWS IAM Identity Center*.

1. Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.

   Para conocer las instrucciones, consulte [Add groups](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) en la *Guía del usuario de AWS IAM Identity Center*.

## Elección de cómo acceder a CloudFront
<a name="introduction-accessing-cloudfront"></a>

Puede acceder a Amazon CloudFront de las siguientes maneras:
+ **Consola de administración de AWS**: los procedimientos a lo largo de esta guía explican cómo utilizar la Consola de administración de AWS para realizar tareas.
+ ** SDK de AWS**: si utiliza un lenguaje de programación para el que AWS proporciona un SDK, puede usar un SDK para obtener acceso a CloudFront. Los SDK simplifican la autenticación, se integran fácilmente con su entorno de desarrollo y proporcionan acceso a los comandos de CloudFront. Para obtener más información, consulte [Uso de CloudFront con AWS SDK](sdk-general-information-section.md).
+ **API de CloudFront**: si utiliza un lenguaje de programación para el que no exista un SDK, consulte la [Referencia de la API de Amazon CloudFront](https://docs.aws.amazon.com/cloudfront/latest/APIReference/Welcome.html) para obtener información acerca de las acciones de API y cómo realizar solicitudes de API.
+ **AWS CLI**: la AWS Command Line Interface (AWS CLI) es una herramienta unificada para administrar los Servicios de AWS. Para obtener más información sobre cómo instalar y configurar la AWS CLI, consulte [Instalar o actualizar a la última versión de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) en la *Guía del usuario de la AWS Command Line Interface*.
+ **Heramientas para Windows PowerShell**: si tiene experiencia con Windows PowerShell, es posible que prefiera utilizar AWS Tools for Windows PowerShell. Para obtener más información, consulte [Installing the AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html) en la *Guía del usuario de Herramientas de AWS para PowerShell*.

# Introducción a una distribución estándar de CloudFront
<a name="GettingStarted.SimpleDistribution"></a>

Los procedimientos de esta sección le muestran cómo utilizar CloudFront para configurar una distribución estándar que realiza lo siguiente:
+ Crea un bucket de S3 para utilizarlo como origen de la distribución.
+ Almacena las versiones originales de los objetos en un solo bucket de Amazon Simple Storage Service (Amazon S3).
+ Utiliza el control de acceso de origen (OAC) para enviar solicitudes autenticadas al origen de Amazon S3. El OAC envía las solicitudes a través de CloudFront para evitar que los lectores accedan directamente al bucket de S3. Para obtener más información sobre OAC, consulte [Restricción del acceso a un origen de Amazon S3](private-content-restricting-access-to-s3.md).
+ Utiliza el nombre de dominio de CloudFront en las URL de los objetos (por ejemplo, `https://d111111abcdef8.cloudfront.net/index.html`).
+ Mantiene los objetos en ubicaciones periféricas de CloudFront durante el período predeterminado de 24 horas (la duración mínima es de 0 segundos).

La mayor parte de esto se configura automáticamente al crear una distribución de CloudFront.

**Topics**
+ [

## Requisitos previos
](#GettingStartedSignup)
+ [

## Crear un bucket de Amazon S3
](#GettingStartedCreateBucket)
+ [

## Carga del contenido en el bucket
](#GettingStartedUploadContent)
+ [

## Creación de una distribución de CloudFront que usa un origen de Amazon S3 con OAC
](#GettingStartedCreateDistribution)
+ [

## Acceso al contenido a través de CloudFront
](#GettingStartedAccessingDistributions)
+ [

## Limpieza
](#GettingStartedDistributionCleanup)
+ [

## Mejora de la distribución básica
](#GettingStartedDistributionNotes)

## Requisitos previos
<a name="GettingStartedSignup"></a>

Antes de comenzar, asegúrese de que ha completado los pasos que se detallan en [Configuración de su Cuenta de AWS](setting-up-cloudfront.md).

## Crear un bucket de Amazon S3
<a name="GettingStartedCreateBucket"></a>

Un bucket de Amazon S3 es un contenedor para archivos (objetos) o carpetas. CloudFront puede distribuir casi cualquier tipo de archivo por usted cuando un bucket de S3 es el origen. Por ejemplo, CloudFront puede distribuir texto, imágenes y vídeos. No hay un máximo para la cantidad de datos que puede almacenar en Amazon S3.

En este tutorial, va a crear un bucket de S3 con los archivos `hello world` de ejemplo proporcionados que utilizará para crear una página web básica.

**Creación de un bucket**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Le recomendamos que utilice nuestro ejemplo “Hello World” para esta introducción. Descargue la página web *hello world*: [hello-world-html.zip](samples/hello-world-html.zip). Descomprímala y guarde la carpeta `css` y el archivo `index` en un lugar adecuado, como el escritorio donde esté ejecutando el navegador.

1. Elija **Crear bucket**.

1. Introduzca un **Nombre de bucket** único que cumpla con a las [reglas de nomenclatura de los buckets de uso general](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html#general-purpose-bucket-names) de la *Guía del usuario de Amazon Simple Storage Service*.

1. En **Región**, le recomendamos que elija una Región de AWS que esté geográficamente cerca de usted. (Esto reduce la latencia y los costos).
   + Elegir otra región también funciona. Puede hacerlo para cumplir con los requisitos reglamentarios, por ejemplo.

1. Deje todas las demás configuraciones en sus valores predeterminados y, a continuación, elija **Crear bucket**.

## Carga del contenido en el bucket
<a name="GettingStartedUploadContent"></a>

Después de haber creado el bucket de Amazon S3, cargue el contenido del archivo `hello world` descomprimido en él. (Ha descargado y descomprimido este archivo en [Crear un bucket de Amazon S3](#GettingStartedCreateBucket)).

**Para cargar el contenido a Amazon S3**

1. En la sección **Buckets de uso general**, elija el nombre del nuevo bucket.

1. Seleccione **Cargar**.

1. En la página **Cargar**, arrastre la carpeta `css` y el archivo `index` al área para soltar elementos.

1. Deje todas las demás configuraciones en sus valores predeterminados y, a continuación, elija **Cargar**.

## Creación de una distribución de CloudFront que usa un origen de Amazon S3 con OAC
<a name="GettingStartedCreateDistribution"></a>

En este tutorial, creará una distribución de CloudFront que utilice un origen de Amazon S3 con control de acceso de origen (OAC). OAC lo ayuda a enviar solicitudes autenticadas de forma segura al origen de Amazon S3. Para obtener más información sobre OAC, consulte [Restricción del acceso a un origen de Amazon S3](private-content-restricting-access-to-s3.md).<a name="GettingStartedCreateDistributionProcedure"></a>

**Creación de una distribución de CloudFront con un origen de Amazon S3 que usa OAC**

1. Abra la consola de CloudFront en [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Elija **Crear distribución**.

1. Introduzca un **Nombre de distribución** para la distribución estándar. El nombre aparecerá como el valor de la clave `Name` como una etiqueta. Puede cambiar este valor posteriormente. Puede agregar hasta 50 etiquetas a la distribución estándar. Para obtener más información, consulte [Etiquetado de una distribución](tagging.md).

1. Elija **Sitio web o aplicación únicos**, **Siguiente**.

1. Elija **Siguiente**.

1. En la página **Tipo de origen**, seleccione **Amazon S3**.

1. En **Origen de S3**, elija **Examinar S3** y seleccione el bucket de S3 que ha creado para este tutorial.

1. En **Configuración**, elija **Utilizar la configuración de origen recomendada**. CloudFront utilizará la configuración de caché y origen recomendada de forma predeterminada para el origen de Amazon S3, incluida la configuración del control de acceso de origen (OAC). Para obtener más información sobre los ajustes recomendados, consulte [Referencia de la configuración de distribución preconfigurada](template-preconfigured-origin-settings.md).

1. Elija **Siguiente**.

1. En la página **Habilitar las protecciones de seguridad**, elija si desea habilitar las protecciones de seguridad de AWS WAF.

1. Elija **Siguiente**.

1. Elija **Crear distribución**. CloudFront actualiza la política de bucket de S3 por usted.

1. Revise la sección **Detalles** de la nueva distribución. Cuando la distribución termine de implementarse, el campo **Última modificación** cambiará de **Implementando** a una fecha y hora.

1. Registre el nombre de dominio que CloudFront asigna a su distribución. Tendrá un aspecto similar al siguiente: `d111111abcdef8.cloudfront.net`.

Antes de usar la distribución y el bucket de S3 de este tutorial en un entorno de producción, asegúrese de configurarlos para que se ajusten a sus necesidades específicas. Para obtener información sobre cómo configurar el acceso en un entorno de producción, consulte [Configuración de acceso seguro y restricción de acceso a contenido](SecurityAndPrivateContent.md).

## Acceso al contenido a través de CloudFront
<a name="GettingStartedAccessingDistributions"></a>

Para acceder a su contenido a través de CloudFront, combine el nombre de dominio de la distribución de CloudFront con la página principal de su contenido. (Ha registrado el nombre de dominio de distribución en [Creación de una distribución de CloudFront que usa un origen de Amazon S3 con OAC](#GettingStartedCreateDistribution)).
+ Su nombre de dominio de distribución podría tener este aspecto: `d111111abcdef8.cloudfront.net`.
+  La ruta a la página principal de un sitio web suele ser `/index.html`. 

Por lo tanto, la URL para acceder a su contenido a través de CloudFront podría tener este aspecto:

`https://d111111abcdef8.cloudfront.net/index.html`.

Si ha seguido los pasos anteriores y ha utilizado la página web *hola mundo*, debería ver una página web que diga **¡Hola mundo\$1**

Cuando carga más contenido en el bucket de S3, puede acceder al contenido a través de CloudFront combinando el nombre de dominio de distribución de CloudFront con la ruta al objeto en el bucket de S3. Por ejemplo, si carga un nuevo archivo llamado `new-page.html` a la raíz de su bucket de S3, la URL tendrá el siguiente aspecto:

`https://d111111abcdef8.cloudfront.net/new-page.html`.

## Limpieza
<a name="GettingStartedDistributionCleanup"></a>

Si creó la distribución y el bucket de S3 solo como ejercicio de aprendizaje, elimínelos para no seguir acumulando cargos. Elimine primero la distribución. Para obtener más información, consulte los enlaces siguientes:
+ [Eliminar una distribución](HowToDeleteDistribution.md)
+ [Eliminación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)

## Mejora de la distribución básica
<a name="GettingStartedDistributionNotes"></a>

En este tutorial de introducción se proporciona un marco mínimo para crear una distribución. Le recomendamos que explore las siguientes mejoras:
+ Puede utilizar la característica de contenido privado de CloudFront para restringir el acceso al contenido de los buckets de Amazon S3. Para obtener más información acerca de la distribución de contenido privado, consulte [Distribución de contenido privado con URL firmadas y cookies firmadas](PrivateContent.md).
+ Puede configurar su distribución de CloudFront para que use un nombre de dominio personalizado (por ejemplo, `www.example.com` en lugar de `d111111abcdef8.cloudfront.net`). Para obtener más información, consulte [Uso de URL personalizadas](CNAMEs.md).
+ En este tutorial se utiliza un origen de Amazon S3 con control de acceso de origen (OAC). No obstante, no puede utilizar OAC si el origen es un bucket de S3 configurado como un [punto de conexión de sitio web](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html). En ese caso, debe configurar el bucket con CloudFront como un origen personalizado. Para obtener más información, consulte [Uso de un bucket de Amazon S3 configurado como punto de conexión del sitio web](DownloadDistS3AndCustomOrigins.md#concept_S3Origin_website). Para obtener más información sobre OAC, consulte [Restricción del acceso a un origen de Amazon S3](private-content-restricting-access-to-s3.md).

# Introducción a una distribución estándar (AWS CLI)
<a name="get-started-cli-tutorial"></a>

Los procedimientos de esta sección le muestran cómo utilizar AWS CLI con CloudFront para definir una configuración básica que incluye lo siguiente:
+ Creación de un bucket de Amazon S3 para utilizarlo como origen de la distribución.
+ Almacenamiento de las versiones originales de los objetos en el bucket de S3.
+ Uso del control de acceso de origen (OAC) para enviar solicitudes autenticadas al origen de Amazon S3. El OAC envía las solicitudes a través de CloudFront para evitar que los lectores accedan directamente al bucket de S3. Para obtener más información sobre OAC, consulte [Restricción del acceso a un origen de Amazon S3](private-content-restricting-access-to-s3.md).
+ Uso del nombre de dominio de CloudFront en las URL de los objetos (por ejemplo, `https://d111111abcdef8.cloudfront.net/index.html`).
+ Mantenimiento de los objetos en ubicaciones periféricas de CloudFront durante el período predeterminado de 24 horas (la duración mínima es de 0 segundos).

La mayoría de estas opciones pueden personalizarse. Para obtener información acerca de cómo personalizar sus opciones de distribución de CloudFront, consulte [Creación de una distribución](distribution-web-creating-console.md).

## Requisitos previos
<a name="get-started-cli-prereqs"></a>

Antes de comenzar, asegúrese de que ha completado los pasos que se detallan en [Configuración de su Cuenta de AWS](setting-up-cloudfront.md).

Instale la AWS CLI y configúrela con las credenciales. Para obtener más información, consulte [Cómo empezar a trabajar con AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) en la *Guía del usuario de AWS CLI*.



## Crear un bucket de Amazon S3
<a name="get-started-cli-create-bucket"></a>

Un bucket de Amazon S3 es un contenedor para archivos (objetos) o carpetas. CloudFront puede distribuir casi cualquier tipo de archivo por usted cuando un bucket de S3 es el origen. Por ejemplo, CloudFront puede distribuir texto, imágenes y vídeos. No hay un máximo para la cantidad de datos que puede almacenar en Amazon S3.

En este tutorial, creará un bucket de S3 y cargará un archivo HTML que utilizará para crear una página web básica.

```
aws s3 mb s3://amzn-s3-demo-bucket/ --region us-east-1
```

Reemplace *amzn-s3-demo-bucket* por un nombre de bucket único globalmente. En la Región de AWS, le recomendamos que elija una región que esté geográficamente cerca de usted. Esto reduce la latencia y los costos, pero también puede elegir una región diferente. Por ejemplo, puede hacerlo para cumplir los requisitos normativos.

## Carga del contenido en el bucket
<a name="get-started-cli-upload-content"></a>

En este tutorial, descargue y extraiga los archivos de contenido de muestra para una página web básica “Hello World”.

```
# Create a temporary directory
mkdir -p ~/cloudfront-demo

# Download the sample Hello World files
curl -o ~/cloudfront-demo/hello-world-html.zip https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/samples/hello-world-html.zip

# Extract the zip file
unzip ~/cloudfront-demo/hello-world-html.zip -d ~/cloudfront-demo/hello-world
```

Esto crea un directorio con un archivo `index.html` y una carpeta `css`. Cargue estos archivos en el bucket de S3.

```
aws s3 cp ~/cloudfront-demo/hello-world/ s3://amzn-s3-demo-bucket/ --recursive
```

## Creación de un control de acceso de origen (OAC)
<a name="get-started-cli-create-oac"></a>

En este tutorial, creará un control de acceso de origen (OAC). OAC lo ayuda a enviar solicitudes autenticadas de forma segura al origen de Amazon S3. Para obtener más información sobre OAC, consulte [Restricción del acceso a un origen de Amazon S3](private-content-restricting-access-to-s3.md).

```
aws cloudfront create-origin-access-control \
    --origin-access-control-config Name="oac-for-s3",SigningProtocol=sigv4,SigningBehavior=always,OriginAccessControlOriginType=s3
```

Guarde el ID de OAC de la salida como una variable de entorno. Reemplace el valor de ejemplo por un ID de OAC propio. Lo utilizará en el siguiente paso.

```
OAC_ID="E1ABCD2EFGHIJ"
```

## Creación de una distribución estándar
<a name="get-started-cli-create-classic"></a>

Cree un archivo de configuración de distribución denominado `distribution-config.json`. Reemplace el nombre del bucket de ejemplo con el nombre del bucket para los valores `Id`, `DomainName` y `TargetOriginId`.

```
cat > distribution-config.json << EOF
{
    "CallerReference": "cli-example-$(date +%s)",
    "Origins": {
        "Quantity": 1,
        "Items": [
            {
                "Id": "S3-amzn-s3-demo-bucket",
                "DomainName": "amzn-s3-demo-bucket.s3.amazonaws.com",
                "S3OriginConfig": {
                    "OriginAccessIdentity": ""
                },
                "OriginAccessControlId": "$OAC_ID"
            }
        ]
    },
    "DefaultCacheBehavior": {
        "TargetOriginId": "S3-amzn-s3-demo-bucket",
        "ViewerProtocolPolicy": "redirect-to-https",
        "AllowedMethods": {
            "Quantity": 2,
            "Items": ["GET", "HEAD"],
            "CachedMethods": {
                "Quantity": 2,
                "Items": ["GET", "HEAD"]
            }
        },
        "DefaultTTL": 86400,
        "MinTTL": 0,
        "MaxTTL": 31536000,
        "Compress": true,
        "ForwardedValues": {
            "QueryString": false,
            "Cookies": {
                "Forward": "none"
            }
        }
    },
    "Comment": "CloudFront distribution for S3 bucket",
    "Enabled": true
}
EOF
```

Cree la distribución estándar.

```
aws cloudfront create-distribution --distribution-config file://distribution-config.json
```

Guarde el ID de distribución y el nombre de dominio de la salida como variables de entorno. Sustituya los valores de ejemplo por sus propios valores. Los utilizará más adelante en este tutorial.

```
DISTRIBUTION_ID="EABCD1234XMPL"
DOMAIN_NAME="d111111abcdef8.cloudfront.net"
```

Antes de usar la distribución y el bucket de S3 de este tutorial en un entorno de producción, asegúrese de configurarlos para que se ajusten a sus necesidades específicas. Para obtener información sobre cómo configurar el acceso en un entorno de producción, consulte [Configuración de acceso seguro y restricción de acceso a contenido](SecurityAndPrivateContent.md).

## Actualización de la política de bucket de S3
<a name="get-started-cli-update-bucket-policy"></a>

Actualice la política de bucket de S3 para permitir que CloudFront acceda a los objetos. Reemplace el nombre de bucket de ejemplo por el nombre del bucket.

```
# Get your AWS account ID
ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)

# Create the bucket policy
cat > bucket-policy.json << EOF
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipal",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudfront::$ACCOUNT_ID:distribution/$DISTRIBUTION_ID"
                }
            }
        }
    ]
}
EOF

# Apply the bucket policy
aws s3api put-bucket-policy \
    --bucket amzn-s3-demo-bucket \
    --policy file://bucket-policy.json
```

## Confirmación de la implementación de la distribución
<a name="get-started-cli-confirm-deployment"></a>

Después de crear la distribución, la implementación tardará un tiempo en completarse. Cuando el estado de la distribución cambie de `InProgress` a `Deployed`, continúe con el siguiente paso.

```
aws cloudfront get-distribution --id $DISTRIBUTION_ID --query 'Distribution.Status'
```

De forma alternativa, puede utilizar el comando `wait` para esperar a que se implemente la distribución.

```
aws cloudfront wait distribution-deployed --id $DISTRIBUTION_ID
```

## Acceso al contenido a través de CloudFront
<a name="get-started-cli-access-content"></a>

Para acceder a su contenido a través de CloudFront, combine el nombre de dominio de la distribución de CloudFront con la página principal de su contenido. Reemplace el nombre de dominio de CloudFront de ejemplo por el suyo propio.

```
https://d111111abcdef8.cloudfront.net/index.html
```

Si ha seguido los pasos anteriores y ha creado el archivo HTML, debería ver una página web donde se muestre **Hello world\$1**

Cuando carga más contenido en el bucket de S3, puede acceder al contenido a través de CloudFront combinando el nombre de dominio de distribución de CloudFront con la ruta al objeto en el bucket de S3. Por ejemplo, si carga un nuevo archivo llamado `new-page.html` a la raíz de su bucket de S3, la URL tendrá el siguiente aspecto:

`https://d111111abcdef8.cloudfront.net/new-page.html`.

## Limpieza
<a name="get-started-cli-cleanup"></a>

Si creó la distribución y el bucket de S3 solo como ejercicio de aprendizaje, elimínelos para no seguir acumulando cargos. Desactive y elimine primero la distribución.

**Desactivación y eliminación de una distribución estándar (AWS CLI)**

1. En primer lugar, desactive la distribución.

   ```
   # Get the current configuration and ETag
   ETAG=$(aws cloudfront get-distribution-config --id $DISTRIBUTION_ID --query 'ETag' --output text)
   
   # Create a modified configuration with Enabled=false
   aws cloudfront get-distribution-config --id $DISTRIBUTION_ID | \
   jq '.DistributionConfig.Enabled = false' > temp_disabled_config.json
   
   # Update the distribution to disable it
   aws cloudfront update-distribution \
       --id $DISTRIBUTION_ID \
       --distribution-config file://<(jq '.DistributionConfig' temp_disabled_config.json) \
       --if-match $ETAG
   ```

1. Espere a que se desactive la distribución.

   ```
   aws cloudfront wait distribution-deployed --id $DISTRIBUTION_ID
   ```

1. Elimine la distribución.

   ```
   # Get the current ETag
   ETAG=$(aws cloudfront get-distribution-config --id $DISTRIBUTION_ID --query 'ETag' --output text)
   
   # Delete the distribution
   aws cloudfront delete-distribution --id $DISTRIBUTION_ID --if-match $ETAG
   ```

**Eliminación de un bucket de S3 (AWS CLI)**
+ Elimine el bucket de S3 y el contenido. Reemplace el nombre del bucket de ejemplo por el suyo.

  ```
  # Delete the bucket contents
  aws s3 rm s3://amzn-s3-demo-bucket --recursive
  
  # Delete the bucket
  aws s3 rb s3://amzn-s3-demo-bucket
  ```

Para limpiar los archivos locales creados para este tutorial, ejecute los siguientes comandos:

```
# Clean up local files
rm -f distribution-config.json bucket-policy.json temp_disabled_config.json
rm -rf ~/cloudfront-demo
```

Si lo desea, puede eliminar el OAC que ha creado para este tutorial.

```
# Get the OAC ETag
OAC_ETAG=$(aws cloudfront get-origin-access-control --id $OAC_ID --query 'ETag' --output text)

# Delete the OAC
aws cloudfront delete-origin-access-control --id $OAC_ID --if-match $OAC_ETAG
```

# Introducción a un sitio web seguro estático
<a name="getting-started-secure-static-website-cloudformation-template"></a>

Puede comenzar a usar Amazon CloudFront con la solución descrita en este tema para crear un sitio web estático seguro para su nombre de dominio. Un *sitio web estático* solo utiliza archivos estáticos, como HTML, CSS, JavaScript, imágenes y vídeos, y no necesita servidores ni procesamiento del lado del servidor. Con esta solución, su sitio web obtiene los siguientes beneficios:
+ **Utiliza el almacenamiento duradero de [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html)**: esta solución crea un bucket de Amazon S3 para alojar el contenido de su sitio web estático. Para actualizar el sitio web, solo tiene que cargar los archivos nuevos en el bucket de S3.
+ **Está acelerado por la red de entrega de contenido de Amazon CloudFront**: esta solución crea una distribución de CloudFront para servir su sitio web a los lectores con baja latencia. La distribución está configurada con un [control de acceso de origen](private-content-restricting-access-to-s3.md) (OAC) para asegurarse de que solo se pueda acceder al sitio web mediante CloudFront, no directamente desde S3.
+ **Está protegido por HTTPS y encabezados de seguridad**: esta solución crea un certificado SSL/TLS en [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) y lo asocia a la distribución de CloudFront. Este certificado permite que la distribución sirva el sitio web de su dominio de forma segura con HTTPS.
+ **Se configura e implementa con [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)**: esta solución utiliza una plantilla de CloudFormation para configurar todos los componentes, de modo que pueda centrarse más en el contenido de su sitio web y menos en la configuración de componentes.

Esta solución es de código abierto en GitHub. Para ver el código, enviar una solicitud de extracción o abrir una incidencia, vaya a [https://github.com/aws-samples/amazon-cloudfront-secure-static-site](https://github.com/aws-samples/amazon-cloudfront-secure-static-site).

**Topics**
+ [

## Información general de la solución
](#cloudformation-website-overview)
+ [

## Implementación de la solución
](#deploy-secure-static-website-cloudformation)

## Información general de la solución
<a name="cloudformation-website-overview"></a>

En el siguiente diagrama se muestra información general de cómo funciona esta solución de sitio web estático:

![\[Diagrama general de un sitio web estático seguro con CloudFront\]](http://docs.aws.amazon.com/es_es/AmazonCloudFront/latest/DeveloperGuide/images/cloudfront-secure-static-website-overview-github.png)


1. El lector solicita el sitio web en www.example.com.

1. Si el objeto solicitado está en caché, CloudFront devuelve el objeto de su caché al lector.

1. Si el objeto no está en la caché de CloudFront, CloudFront solicita el objeto desde el origen (un bucket de S3).

1. S3 devuelve el objeto a CloudFront.

1. CloudFront almacena el objeto en caché.

1. Los objetos se devuelven al espectador. Las solicitudes posteriores del objeto que llegan a la misma ubicación de borde de CloudFront se sirven desde la memoria caché de CloudFront.

## Implementación de la solución
<a name="deploy-secure-static-website-cloudformation"></a>

Para implementar esta solución de sitio web estático seguro, puede elegir una de las siguientes opciones:
+ Utilice la consola de CloudFormation para implementar la solución con contenido predeterminado y, a continuación, cargue el contenido del sitio web en Amazon S3.
+ Clone la solución en su equipo para agregar contenido de su sitio web. A continuación, implemente la solución con AWS Command Line Interface (AWS CLI).

**nota**  
Debe usar la región Este de EE. UU. (Norte de Virginia) para implementar la plantilla de CloudFormation. 

**Topics**
+ [

### Requisitos previos
](#deploy-website-cloudformation-prerequisites)
+ [

### Uso de la consola de CloudFormation
](#deploy-website-cloudformation-console)
+ [

### Clonación local de la solución
](#deploy-website-cloudformation-clone)
+ [

### Búsqueda de registros de acceso
](#deploy-website-cloudformation-logs)

### Requisitos previos
<a name="deploy-website-cloudformation-prerequisites"></a>

Para utilizar esta solución, debe cumplir los siguientes requisitos previos:
+ Un nombre de dominio registrado, como example.com, que apunte a una zona alojada por Amazon Route 53. La zona alojada debe estar en la misma Cuenta de AWS en la que implementa esta solución. Si no tiene un nombre de dominio registrado, puede [registrarlo con Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html). Si tiene un nombre de dominio registrado pero no apunta a una zona alojada por Route 53, [configure Route 53 como su servicio de DNS](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-configuring.html).
+ Permisos de AWS Identity and Access Management (IAM) para iniciar plantillas de CloudFormation que crean roles de IAM y permisos para crear todos los recursos de AWS en la solución. Para obtener más información, consulta [Control de acceso con AWS Identity and Access Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) en la *Guía del usuario de AWS CloudFormation*.

Usted es responsable de los costos generados durante el uso de esta solución. Para obtener más información sobre los costos, consulte las [páginas de precios de cada Servicio de AWS](https://aws.amazon.com/pricing/).

### Uso de la consola de CloudFormation
<a name="deploy-website-cloudformation-console"></a>

**Para efectuar la implementación mediante la consola de CloudFormation**

1. [Inicie esta solución en la consola de CloudFormation](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=amazon-cloudfront-secure-static-site-templates-main&templateURL=https://s3.amazonaws.com/solution-builders-us-east-1/amazon-cloudfront-secure-static-site/latest/main.yaml). Si es necesario, inicie sesión en la Cuenta de AWS.

1. Se abre el asistente **Crear pila** en la consola de CloudFormation, con campos ya rellenados que especifican la plantilla de CloudFormation de esta solución.

   En la parte inferior de la página, elija **Next**.

1. En la página **Especificar los detalles de la pila**, escriba valores para los siguientes campos:
   + **SubDomain (SubDominio)**: escriba el subdominio que se va a utilizar para su sitio web. Por ejemplo, si el subdominio es *www*, el sitio web está disponible en *www*.example.com. (Reemplace example.com por su nombre de dominio, como se explica en el siguiente punto).
   + **DomainName (NombreDominio)**: escriba su nombre de dominio, como *example.com*. Este dominio debe apuntar a una zona alojada por Route 53.
   + **HostedZoneID:** el ID de zona alojada de Route 53 del nombre de dominio.
   + **CreateApex**: (opcional) cree un alias para el ápex del dominio (example.com) en la configuración de CloudFront.

1. Cuando haya terminado, elija **Next (Siguiente)**.

1. (Opcional) En la página **Configure stack options (Configurar las opciones la de pila)**, [agregue etiquetas y otras opciones de pila](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html).

1. Cuando haya terminado, elija **Next (Siguiente)**.

1. En la página **Revisar**, desplácese hasta la parte inferior de la página y, a continuación, seleccione los dos cuadros de la sección **Capacidades**. Estas capacidades permiten a CloudFormation crear un rol de IAM que permite el acceso a los recursos de la pila y asignar nombres a los recursos dinámicamente.

1. Elija **Create stack**.

1. Espere a que termine la creación de la pila. La pila crea algunas pilas anidadas y puede tardar varios minutos en terminar. Cuando termine, el **estado** cambia a **CREATE\$1COMPLETE**.

   Cuando el estado sea **CREATE\$1COMPLETE**, vaya a https://*www.example.com* para ver su sitio web (reemplace www.example.com por el subdominio y el nombre de dominio especificados en el paso 3). Debería ver el contenido predeterminado del sitio web:  
![\[Contenido predeterminado del sitio web estático de esta solución. Se puede ver: "Soy un sitio web estático".\]](http://docs.aws.amazon.com/es_es/AmazonCloudFront/latest/DeveloperGuide/images/cloudfront-secure-static-website-content.png)

**Para reemplazar el contenido predeterminado del sitio web por el suyo propio**

1. Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3](https://console.aws.amazon.com/s3/).

1. Elija el bucket cuyo nombre comienza por **amazon-cloudfront-secure-static-site-s3bucketroot-**.
**nota**  
Asegúrese de elegir el bucket que tiene **s3bucketroot** en el nombre, no **s3bucketlogs**. El bucket con **s3bucketroot** en el nombre incluye el contenido del sitio web. El que tiene **s3bucketlogs** solo contiene archivos de registro.

1. Elimine el contenido predeterminado del sitio web y, a continuación, cargue el suyo propio.
**nota**  
Si ha visto su sitio web con el contenido predeterminado de esta solución, es probable que parte del contenido predeterminado se almacene en caché en una ubicación de borde de CloudFront. Para asegurarse de que los lectores vean el contenido actualizado del sitio web, *invalide* los archivos para quitar las copias almacenadas en caché de las ubicaciones de borde de CloudFront. Para obtener más información, consulte [Invalidación de archivos para eliminar el contenido](Invalidation.md).

### Clonación local de la solución
<a name="deploy-website-cloudformation-clone"></a>

**Requisitos previos**

Para agregar contenido de su sitio web antes de implementar esta solución, debe empaquetar localmente los artefactos de la solución, lo que requiere Node.js y npm. Para obtener más información, consulte [https://www.npmjs.com/get-npm](https://www.npmjs.com/get-npm).

**Para agregar contenido de su sitio web e implementar la solución**

1. Clone o descargue la solución desde [https://github.com/aws-samples/amazon-cloudfront-secure-static-site](https://github.com/aws-samples/amazon-cloudfront-secure-static-site). Después de clonarla o descargarla, abra un símbolo del sistema o terminal y navegue hasta la carpeta `amazon-cloudfront-secure-static-site`.

1. Ejecute el siguiente comando para instalar y empaquetar los artefactos de la solución:

   ```
   make package-static
   ```

1. Copie el contenido de su sitio web en la carpeta `www`, con lo que se sobrescribe el contenido predeterminado del sitio web.

1. Ejecute el siguiente comando de AWS CLI para crear un bucket de Amazon S3 a fin de almacenar los artefactos de la solución. Reemplace *amzn-s3-demo-bucket-for-artifacts* por el nombre de bucket propio.

   ```
   aws s3 mb s3://amzn-s3-demo-bucket-for-artifacts --region us-east-1
   ```

1. Ejecute el siguiente comando de la AWS CLI para empaquetar los artefactos de la solución como una plantilla de CloudFormation. Reemplace *amzn-s3-demo-bucket-for-artifacts* por el nombre del bucket que ha creado en el paso anterior.

   ```
   aws cloudformation package \
       --region us-east-1 \ 
       --template-file templates/main.yaml \
       --s3-bucket amzn-s3-demo-bucket-for-artifacts \
       --output-template-file packaged.template
   ```

1. Ejecute el siguiente comando para implementar la solución con CloudFormation; para ello, reemplace los siguientes valores:
   + *your-CloudFormation-stack-name*: reemplácelo por un nombre para la pila de CloudFormation.
   + *example.com*: reemplácelo por el nombre de su dominio. Este dominio debe apuntar a una zona alojada de Route 53 en la misma Cuenta de AWS.
   + *www*: reemplácelo por el subdominio que se usará para su sitio web. Por ejemplo, si el subdominio es *www*, el sitio web está disponible en www.example.com.
   + *hosted-zone-ID*: reemplácelo por el ID de zona alojada de Route 53 del nombre de dominio.

   ```
   aws cloudformation deploy \
       --region us-east-1 \
       --stack-name your-CloudFormation-stack-name \
       --template-file packaged.template \
       --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND \
       --parameter-overrides DomainName=example.com SubDomain=www HostedZoneId=hosted-zone-ID
   ```

   1. (Opcional) Para implementar la pila con un ápex de dominio, ejecute el siguiente comando en su lugar.

     ```
     aws --region us-east-1 cloudformation deploy \
         --stack-name your-CloudFormation-stack-name \
         --template-file packaged.template \
         --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND \
         --parameter-overrides  DomainName=example.com SubDomain=www HostedZoneId=hosted-zone-ID CreateApex=yes
     ```

1. Espere a que se termine de crear la pila de CloudFormation. La pila crea algunas pilas anidadas y puede tardar varios minutos en terminar. Cuando termine, el **estado** cambia a **CREATE\$1COMPLETE**.

   Cuando el estado cambie a **CREATE\$1COMPLETE**, vaya a https://www.example.com para ver su sitio web (reemplace www.example.com por el subdominio y el nombre de dominio especificados en el paso anterior). Debería ver el contenido de su sitio web.

### Búsqueda de registros de acceso
<a name="deploy-website-cloudformation-logs"></a>

Esta solución habilita los [registros de acceso](AccessLogs.md) para la distribución de CloudFront. Complete los siguientes pasos para localizar los registros de acceso de la distribución.

**Para localizar los registros de acceso de la distribución**

1. Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3](https://console.aws.amazon.com/s3/).

1. Elija el bucket cuyo nombre comience por **amazon-cloudfront-secure-static-site-s3bucketlogs-**.
**nota**  
Asegúrese de elegir el bucket que tiene **s3bucketlogs** en el nombre, no **s3bucketroot**. El bucket con **s3bucketlogs** en el nombre contiene los archivos de registro. El que tiene **s3bucketroot** incluye el contenido del sitio web.

1. La carpeta denominada **cdn** contiene los registros de acceso de CloudFront.