

# Conceitos básicos do CloudFront
<a name="GettingStarted"></a>

Os tópicos desta seção mostram como começar a distribuir seu conteúdo com o Amazon CloudFront.

O tópico [Configurar a Conta da AWS](setting-up-cloudfront.md) descreve os pré-requisitos para os tutoriais a seguir, como criar uma Conta da AWS e criar um usuário com acesso administrativo.

O tutorial básico de distribuição mostra como configurar o controle de acesso de origem (OAC) para enviar solicitações autenticadas a uma origem do Amazon S3.

O tutorial do site estático seguro mostra como criar um site estático seguro para o nome de domínio usando OAC com uma origem do Amazon S3. O tutorial usa um modelo do Amazon CloudFront (CloudFront) para configuração e implantação.

**Topics**
+ [

# Configurar a Conta da AWS
](setting-up-cloudfront.md)
+ [

# Conceitos básicos de uma distribuição padrão do CloudFront
](GettingStarted.SimpleDistribution.md)
+ [

# Conceitos básicos de uma distribuição padrão (AWS CLI)
](get-started-cli-tutorial.md)
+ [

# Conceitos básicos de um site estático seguro
](getting-started-secure-static-website-cloudformation-template.md)

# Configurar a Conta da AWS
<a name="setting-up-cloudfront"></a>

Este tópico descreve as etapas preliminares, como a criação de uma Conta da AWS, para preparar você para usar o Amazon CloudFront.

**Topics**
+ [

## Inscrever-se para uma Conta da AWS
](#sign-up-for-aws)
+ [

## Criar um usuário com acesso administrativo
](#create-an-admin)
+ [

## Escolha como acessar o CloudFront
](#introduction-accessing-cloudfront)

## Inscrever-se para uma Conta da AWS
<a name="sign-up-for-aws"></a>

Se você ainda não tem uma Conta da AWS, siga as etapas abaixo para criar uma.

**Como cadastrar uma Conta da AWS**

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

1. Siga as instruções online.

   Parte do procedimento de inscrição envolve receber uma chamada telefônica ou uma mensagem de texto e inserir um código de verificação pelo teclado do telefone.

   Quando você se inscreve para uma Conta da AWS, um *Usuário raiz da conta da AWS* é criado. O usuário-raiz tem acesso a todos os Serviços da AWS e recursos na conta. Como prática recomendada de segurança, atribua o acesso administrativo a um usuário e use somente o usuário-raiz para executar [tarefas que exigem acesso de usuário-raiz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

A AWS envia um e-mail de confirmação depois que o processo de inscrição é concluído. A qualquer momento, é possível exibir as atividades da conta atual e gerenciar sua conta acessando [https://aws.amazon.com/](https://aws.amazon.com/) e selecionando **Minha conta**.

## Criar um usuário com acesso administrativo
<a name="create-an-admin"></a>

Depois de se cadastrar em uma Conta da AWS, proteja seu Usuário raiz da conta da AWS, habilite o Centro de Identidade do AWS IAM e crie um usuário administrativo para não usar o usuário-raiz em tarefas cotidianas.

**Proteger o Usuário raiz da conta da AWS**

1.  Faça login no [Console de gerenciamento da AWS](https://console.aws.amazon.com/) como o proprietário da conta ao escolher a opção **Usuário-raiz** e inserir o endereço de e-mail da Conta da AWS. Na próxima página, insira a senha.

   Para obter ajuda ao fazer login usando o usuário-raiz, consulte [Fazer login como usuário-raiz](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) no *Guia do usuário do Início de Sessão da AWS*.

1. Habilite a autenticação multifator (MFA) para o usuário-raiz.

   Para obter instruções, consulte [Habilitar um dispositivo MFA virtual para sua Conta da AWS de usuário-raiz (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) no *Guia do usuário do IAM*.

**Criar um usuário com acesso administrativo**

1. Habilita o Centro de Identidade do IAM.

   Para obter instruções, consulte [Habilitar o Centro de Identidade do AWS IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.

1. No Centro de Identidade do IAM, conceda o acesso administrativo a um usuário.

   Para obter um tutorial sobre como usar o Diretório do Centro de Identidade do IAM como a fonte de identidade, consulte [Configurar o acesso dos usuários com o Diretório do Centro de Identidade do IAM padrão](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.

**Iniciar sessão como o usuário com acesso administrativo**
+ Para fazer login com o seu usuário do Centro de Identidade do IAM, use o URL de login enviado ao seu endereço de e-mail quando o usuário do Centro de Identidade do IAM foi criado.

  Para obter ajuda para fazer login usando um usuário do Centro de Identidade do IAM, consulte [Fazer login no portal de acesso da AWS](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html), no *Guia do usuário do Início de Sessão da AWS*.

**Atribuir acesso a usuários adicionais**

1. No Centro de Identidade do IAM, crie um conjunto de permissões que siga as práticas recomendadas de aplicação de permissões com privilégio mínimo.

   Para obter instruções, consulte [Criar um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.

1. Atribua usuários a um grupo e, em seguida, atribua o acesso de logon único ao grupo.

   Para obter instruções, consulte [Adicionar grupos](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.

## Escolha como acessar o CloudFront
<a name="introduction-accessing-cloudfront"></a>

É possível acessar o Amazon CloudFront das seguintes maneiras:
+ **Console de gerenciamento da AWS**: os procedimentos ao longo deste guia explicam como usar o Console de gerenciamento da AWS para realizar tarefas.
+ **AWS SDKs**: se estiver usando uma linguagem de programação para a qual a AWS fornece um SDK, você poderá usar um SDK para acessar o CloudFront. Os SDKs simplificam a autenticação, integram-se com facilidade ao ambiente de desenvolvimento e fornecem acesso aos comandos do CloudFront. Para obter mais informações, consulte [Como usar o CloudFront com um SDK da AWS](sdk-general-information-section.md).
+ **API do CloudFront**: se você estiver usando uma linguagem de programação para a qual um SDK não está disponível, consulte a [Referência da API do Amazon CloudFront](https://docs.aws.amazon.com/cloudfront/latest/APIReference/Welcome.html) para obter informações sobre as ações de API e sobre como fazer solicitações de API.
+ **AWS CLI**: a AWS Command Line Interface (AWS CLI) é uma ferramenta unificada para gerenciar Serviços da AWS. Para ter informações sobre como instalar e configurar a AWS CLI, consulte [Install or update to the latest version of the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da AWS Command Line Interface*.
+ **Ferramentas do Windows PowerShell**: se tiver experiência com o Windows PowerShell, você poderá preferir usar o AWS Tools for Windows PowerShell. Para obter mais informações, consulte [Instalar a AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html) no *Guia do usuário da Ferramentas da AWS para PowerShell*.

# Conceitos básicos de uma distribuição padrão do CloudFront
<a name="GettingStarted.SimpleDistribution"></a>

Os procedimentos nesta seção mostram como usar o CloudFront para definir uma distribuição padrão que faça o seguinte:
+ Cria um bucket do S3 para usar como sua origem de distribuição.
+ Armazena as versões originais de seus objetos em um bucket do Amazon Simple Storage Service (Amazon S3).
+ Usa o controle de acesso à origem (OAC) para enviar solicitações autenticadas à sua origem do Amazon S3. O OAC envia solicitações por meio do CloudFront para impedir que os visualizadores acessem seu bucket do S3 diretamente. Para ter mais informações sobre OAC, consulte [Restringir o acesso a uma origem do Amazon S3](private-content-restricting-access-to-s3.md).
+ Usa o nome de domínio do CloudFront em URLs para seus objetos (por exemplo, `https://d111111abcdef8.cloudfront.net/index.html`).
+ Armazena seus objetos nos locais da borda do CloudFront pela duração padrão de 24 horas (a duração mínima é de 0 segundo).

A maior parte disso é configurada automaticamente para você quando você cria uma distribuição do CloudFront.

**Topics**
+ [

## Pré-requisitos
](#GettingStartedSignup)
+ [

## Criar um bucket do Amazon S3
](#GettingStartedCreateBucket)
+ [

## Fazer upload do conteúdo no bucket
](#GettingStartedUploadContent)
+ [

## Criar uma distribuição do CloudFront que use uma origem do Amazon S3 com OAC
](#GettingStartedCreateDistribution)
+ [

## Acessar o conteúdo por meio do CloudFront
](#GettingStartedAccessingDistributions)
+ [

## Limpeza
](#GettingStartedDistributionCleanup)
+ [

## Aprimorar a distribuição básica
](#GettingStartedDistributionNotes)

## Pré-requisitos
<a name="GettingStartedSignup"></a>

Antes de começar, certifique-se de que você concluiu as etapas em [Configurar a Conta da AWS](setting-up-cloudfront.md).

## Criar um bucket do Amazon S3
<a name="GettingStartedCreateBucket"></a>

Um bucket do Amazon S3 é um contêiner destinado a arquivos (objetos) ou pastas. O CloudFront pode distribuir praticamente qualquer tipo de arquivo quando um bucket do S3 é a origem. Por exemplo, o CloudFront pode distribuir texto, imagens e vídeos. Não há máximo para a quantidade de dados que você pode armazenar no Amazon S3.

Para este tutorial, crie um bucket do S3 com os exemplos de arquivos `hello world` fornecidos que você usará para criar uma página da web básica.

**Para criar um bucket**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Recomendamos que você use nosso exemplo de Hello World para começar. Baixe o arquivo da página da web *hello world*: [hello-world-html.zip](samples/hello-world-html.zip). Descompacte e salve a pasta `css` e o arquivo `index` em um local acessível, como a área de trabalho em que você está executando o navegador.

1. Selecione **Criar bucket**.

1. Insira um **Bucket name** (Nome de bucket) exclusivo que esteja em conformidade com as [Regras de nomenclatura de buckets de uso geral](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html#general-purpose-bucket-names) no *Guia do usuário do Amazon Simple Storage Service*.

1. Para **Região**, recomendamos escolher uma Região da AWS que esteja geograficamente perto de você. (Isso reduz a latência e os custos.)
   + Escolher uma região diferente também funciona. Você pode fazer isso para atender aos requisitos regulamentares, por exemplo.

1. Deixe todas as outras configurações no modo padrão e escolha **Create bucket (Criar bucket)**.

## Fazer upload do conteúdo no bucket
<a name="GettingStartedUploadContent"></a>

Depois de criar o bucket do Amazon S3, carregue o conteúdo do arquivo descompactado `hello world` nele. (Você baixou e descompactou esse arquivo.) [Criar um bucket do Amazon S3](#GettingStartedCreateBucket)

**Para fazer upload do conteúdo no Amazon S3**

1. Na seção **Buckets de uso geral**, escolha o nome do seu novo bucket.

1. Escolha **Carregar**.

1. Na página **Fazer upload**, arraste a pasta `css` e o arquivo `index` na área para soltá-los.

1. Deixe todas as outras configurações no modo padrão e escolha **Fazer upload**.

## Criar uma distribuição do CloudFront que use uma origem do Amazon S3 com OAC
<a name="GettingStartedCreateDistribution"></a>

Neste tutorial, você irá criar uma distribuição básica do CloudFront que usa uma origem do Amazon S3 com um controle de acesso à origem (OAC). O OAC ajuda a enviar com segurança solicitações autenticadas à sua origem do Amazon S3. Para ter mais informações sobre OAC, consulte [Restringir o acesso a uma origem do Amazon S3](private-content-restricting-access-to-s3.md).<a name="GettingStartedCreateDistributionProcedure"></a>

**Como criar uma distribuição do CloudFront com uma origem do Amazon S3 que use OAC**

1. Abra o console do CloudFront em [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Escolha **Create distribution** (Criar distribuição).

1. Insira um **nome da distribuição** para a distribuição padrão. O nome aparecerá como o valor da chave `Name` como uma marcação. Você pode alterar esse valor posteriormente. Você pode adicionar até cinquenta tags para uma distribuição padrão. Para obter mais informações, consulte [Marcar uma distribuição](tagging.md).

1. Escolha **Site ou aplicativo único**, **Avançar**.

1. Escolha **Próximo**.

1. Para a página **Tipo de origem**, selecione o **Amazon S3**.

1. Para **Origem do S3**, escolha **Procurar no S3** e selecione o bucket do S3 que você criou para este tutorial.

1. Em **Configurações**, escolha **Usar configurações de origem recomendadas**. O CloudFront usará as configurações padrão recomendadas de cache e origem para sua origem do Amazon S3, incluindo a configuração do Controle de Acesso à Origem (OAC). Para ter mais informações sobre as configurações recomendadas, consulte [Referência de configurações de distribuição predefinidas](template-preconfigured-origin-settings.md).

1. Escolha **Próximo**.

1. Na página **Habilitar proteções de segurança**, escolha se deseja habilitar as proteções de segurança do AWS WAF.

1. Escolha **Próximo**.

1. Escolha **Create distribution (Criar distribuição)**. O CloudFront atualiza a política de bucket S3 para você.

1. Analise a seção **Detalhes** da sua nova distribuição. Quando sua distribuição terminar a implantação, o campo **Last modified** (Última modificação) muda de **Deploying** (Implantando) para uma data e hora.

1. Registre o nome de domínio que o CloudFront atribui à sua distribuição. É semelhante ao seguinte: `d111111abcdef8.cloudfront.net`.

Antes de usar a distribuição e o bucket do S3 deste tutorial em um ambiente de produção, certifique-se de configurá-los para atender às suas necessidades específicas. Para ter mais informações sobre como configurar o acesso em um ambiente de produção, consulte [Configurar o acesso seguro e restringir o acesso ao conteúdo](SecurityAndPrivateContent.md).

## Acessar o conteúdo por meio do CloudFront
<a name="GettingStartedAccessingDistributions"></a>

Para acessar o conteúdo por meio do CloudFront, combine o nome de domínio da distribuição do CloudFront com o a página principal do conteúdo. (Você registrou seu nome de domínio de distribuição em [Criar uma distribuição do CloudFront que use uma origem do Amazon S3 com OAC](#GettingStartedCreateDistribution).)
+ O nome de domínio da distribuição pode ser semelhante a: `d111111abcdef8.cloudfront.net`.
+  Normalmente, o caminho para a página principal de um site é `/index.html`. 

Portanto, o URL para acessar o conteúdo por meio do CloudFront pode ser semelhante a:

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

Se você seguiu as etapas anteriores e usou a página da web *hello world*, deverá ver uma página da web com a mensagem **Hello world\$1**.

Ao fazer upload de mais conteúdo para esse bucket do S3, você consegue acessar o conteúdo por meio do CloudFront combinando o nome de domínio da distribuição do CloudFront com o caminho para o objeto no bucket do S3. Por exemplo, se você fizer upload de um novo arquivo chamado `new-page.html` na raiz do bucket do S3, o URL será semelhante a:

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

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

Se tiver criado a distribuição e o bucket do S3 apenas como exercício de aprendizado, poderá excluí-los, de maneira que deixe de acumular cobranças. Exclua a distribuição primeiro. Para obter mais informações, consulte os seguintes links:
+ [Excluir uma distribuição](HowToDeleteDistribution.md)
+ [Excluir um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)

## Aprimorar a distribuição básica
<a name="GettingStartedDistributionNotes"></a>

Este tutorial de conceitos básicos fornece um framework mínimo para a criação de uma distribuição. Recomendamos que você explore os seguintes aprimoramentos:
+ Você pode usar o atributo de conteúdo privado do CloudFront para restringir o acesso ao conteúdo nos buckets do Amazon S3. Para obter mais informações sobre distribuição de conteúdo privado, consulte [Veicular conteúdo privado com URLs e cookies assinados](PrivateContent.md).
+ É possível configurar a distribuição do CloudFront para usar um nome de domínio personalizado (por exemplo, `www.example.com` em vez de `d111111abcdef8.cloudfront.net`). Para obter mais informações, consulte [Usar URLs personalizados](CNAMEs.md).
+ Este tutorial usa uma origem do Amazon S3 com controle de acesso à origem (OAC). No entanto, não é possível usar o OAC se sua origem for um bucket do S3 configurado como um [endpoint de site](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html). Se for esse o caso, você deverá configurar o bucket com o CloudFront como uma origem personalizada. Para obter mais informações, consulte [Usar um bucket do Amazon S3 configurado como um endpoint do site](DownloadDistS3AndCustomOrigins.md#concept_S3Origin_website). Para ter mais informações sobre OAC, consulte [Restringir o acesso a uma origem do Amazon S3](private-content-restricting-access-to-s3.md).

# Conceitos básicos de uma distribuição padrão (AWS CLI)
<a name="get-started-cli-tutorial"></a>

Os procedimentos nesta seção mostram como usar a AWS CLI com o CloudFront para definir uma configuração básica que envolve o seguinte:
+ Criar um bucket do Amazon S3 para usar como sua origem de distribuição.
+ Armazenar as versões originais dos seus objetos no bucket do S3.
+ Usar o controle de acesso à origem (OAC) para enviar solicitações autenticadas à sua origem do Amazon S3. O OAC envia solicitações por meio do CloudFront para impedir que os visualizadores acessem seu bucket do S3 diretamente. Para ter mais informações sobre OAC, consulte [Restringir o acesso a uma origem do Amazon S3](private-content-restricting-access-to-s3.md).
+ Usar o nome de domínio do CloudFront em URLs para seus objetos (por exemplo, `https://d111111abcdef8.cloudfront.net/index.html`).
+ Armazenar seus objetos nos locais da borda do CloudFront pela duração padrão de 24 horas (a duração mínima é de 0 segundo).

É possível personalizar a maioria dessas opções. Para obter informações sobre como personalizar as opções de distribuição do CloudFront, consulte [Criar uma distribuição](distribution-web-creating-console.md).

## Pré-requisitos
<a name="get-started-cli-prereqs"></a>

Antes de começar, certifique-se de que você concluiu as etapas em [Configurar a Conta da AWS](setting-up-cloudfront.md).

Instale a AWS CLI e configure-a com suas credenciais. Para obter mais informações, consulte [Conceitos básicos do AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) no *Manual do usuário do AWS CLI*.



## Criar um bucket do Amazon S3
<a name="get-started-cli-create-bucket"></a>

Um bucket do Amazon S3 é um contêiner destinado a arquivos (objetos) ou pastas. O CloudFront pode distribuir praticamente qualquer tipo de arquivo quando um bucket do S3 é a origem. Por exemplo, o CloudFront pode distribuir texto, imagens e vídeos. Não há máximo para a quantidade de dados que você pode armazenar no Amazon S3.

Para este tutorial, crie um bucket do S3 e faça upload de um arquivo HTML que você usará para criar uma página da web básica.

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

Substitua *amzn-s3-demo-bucket* por um nome de bucket globalmente exclusivo. Para Região da AWS, recomendamos escolher uma Região que esteja geograficamente perto de você. Isso reduz a latência e os custos, mas escolher uma Região diferente também funciona. Por exemplo, você pode fazer isso para atender aos requisitos regulamentares.

## Fazer upload do conteúdo no bucket
<a name="get-started-cli-upload-content"></a>

Para este tutorial, baixe e extraia os arquivos de conteúdo de amostra para uma página da 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
```

Isso cria um diretório com um arquivo `index.html` e uma pasta `css`. Faça upload desses arquivos no bucket do S3.

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

## Criar um controle de acesso à origem (OAC)
<a name="get-started-cli-create-oac"></a>

Para este tutorial, você criará um controle de acesso à origem (OAC). O OAC ajuda a enviar com segurança solicitações autenticadas à sua origem do Amazon S3. Para ter mais informações sobre OAC, consulte [Restringir o acesso a uma origem do 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
```

Salve o ID do OAC da saída como uma variável de ambiente. Substitua o valor de exemplo pelos seu próprio ID do OAC. Ele será usado na próxima etapa.

```
OAC_ID="E1ABCD2EFGHIJ"
```

## Criar uma distribuição padrão
<a name="get-started-cli-create-classic"></a>

Crie um arquivo de configuração denominado `distribution-config.json`. Substitua o nome do bucket de exemplo pelo nome do seu bucket para os valores `Id`, `DomainName` e `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
```

Crie a distribuição padrão.

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

Salve o ID de distribuição e o nome de domínio da saída como variáveis de ambiente. Substitua os valores de exemplo pelos seus próprios. Você precisará disso posteriormente neste tutorial.

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

Antes de usar a distribuição e o bucket do S3 deste tutorial em um ambiente de produção, certifique-se de configurá-los para atender às suas necessidades específicas. Para ter mais informações sobre como configurar o acesso em um ambiente de produção, consulte [Configurar o acesso seguro e restringir o acesso ao conteúdo](SecurityAndPrivateContent.md).

## Atualizar a política de bucket do S3
<a name="get-started-cli-update-bucket-policy"></a>

Atualize sua política de bucket do S3 para permitir que o CloudFront acesse os objetos. Substitua o nome do bucket de exemplo pelo nome do 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
```

## Confirme a implantação da distribuição
<a name="get-started-cli-confirm-deployment"></a>

Depois de criar sua distribuição, levará algum tempo para concluir a implantação. Quando o status da distribuição mudar de `InProgress` para `Deployed`, prossiga para a próxima etapa.

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

Como alternativa, você pode usar o comando `wait` para aguardar a implantação da distribuição.

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

## Acessar o conteúdo por meio do CloudFront
<a name="get-started-cli-access-content"></a>

Para acessar o conteúdo por meio do CloudFront, combine o nome de domínio da distribuição do CloudFront com o a página principal do conteúdo. Substitua o nome de domínio de exemplo do CloudFront pelo seu próprio.

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

Se você seguiu as etapas anteriores e criou o arquivo HTML, deverá ver uma página da web com a mensagem **Hello world\$1**.

Ao fazer upload de mais conteúdo para esse bucket do S3, você consegue acessar o conteúdo por meio do CloudFront combinando o nome de domínio da distribuição do CloudFront com o caminho para o objeto no bucket do S3. Por exemplo, se você fizer upload de um novo arquivo chamado `new-page.html` na raiz do bucket do S3, o URL será semelhante a:

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

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

Se tiver criado a distribuição e o bucket do S3 apenas como exercício de aprendizado, poderá excluí-los, de maneira que deixe de acumular cobranças. Primeiro desabilite e exclua a distribuição.

**Para desabilitar e excluir uma distribuição padrão (AWS CLI)**

1. Primeiro, desabilite a distribuição.

   ```
   # 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. Aguarde até que a distribuição seja desabilitada.

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

1. Excluir a distribuição.

   ```
   # 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
   ```

**Para excluir um bucket do S3 (AWS CLI)**
+ Exclua o bucket do S3 e seu conteúdo. Substitua o nome do bucket de exemplo pelo seu próprio.

  ```
  # 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 limpar os arquivos locais criados para este tutorial, execute os seguintes comandos:

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

Opcionalmente, você pode excluir o OAC que você criou 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
```

# Conceitos básicos de um site estático seguro
<a name="getting-started-secure-static-website-cloudformation-template"></a>

É possível começar a usar o Amazon CloudFront com a solução descrita neste tópico para criar um site estático seguro para seu nome de domínio. Um *site estático* usa apenas arquivos estáticos, como HTML, CSS, JavaScript, imagens e vídeos, e não precisa de servidores nem de processamento no lado do servidor. Com essa solução, seu site obtém os seguintes benefícios:
+ **Usa o armazenamento durável do [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html)**: essa solução cria um bucket do Amazon S3 para hospedar o conteúdo estático do site. Para atualizar seu site, basta carregar os novos arquivos no bucket do S3.
+ **É acelerado pela rede de entrega de conteúdo do Amazon CloudFront**: essa solução cria uma distribuição do CloudFront que o site forneça baixa latência aos visualizadores. A distribuição é configurada com um [controle de acesso à origem](private-content-restricting-access-to-s3.md) (OAC) para garantir que o site seja acessível somente pelo CloudFront, não diretamente pelo S3.
+ **É protegido por HTTPS e cabeçalhos de segurança**: essa solução cria um certificado SSL/TLS no [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) e o anexa à distribuição do CloudFront. Esse certificado permite que a distribuição veicule o site do seu domínio de forma segura com HTTPS.
+ **É configurado e implantado com o [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)**: esta solução usa um modelo do CloudFormation para configurar todos os componentes para que você possa se concentrar mais no conteúdo do seu site e menos na configuração de componentes.

Essa solução é de código aberto no GitHub. Para visualizar o código, enviar uma solicitação pull ou abrir um problema, acesse [https://github.com/aws-samples/amazon-cloudfront-secure-static-site](https://github.com/aws-samples/amazon-cloudfront-secure-static-site).

**Topics**
+ [

## Visão geral da solução
](#cloudformation-website-overview)
+ [

## Implante a solução
](#deploy-secure-static-website-cloudformation)

## Visão geral da solução
<a name="cloudformation-website-overview"></a>

O diagrama a seguir mostra uma visão geral de como essa solução de site estático funciona:

![\[Diagrama de visão geral de um site estático seguro com o CloudFront\]](http://docs.aws.amazon.com/pt_br/AmazonCloudFront/latest/DeveloperGuide/images/cloudfront-secure-static-website-overview-github.png)


1. O visualizador solicita o site em www.exemplo.com.

1. Se o objeto solicitado for armazenado em cache, o CloudFront retornará o objeto de seu cache ao visualizador.

1. Se o objeto não estiver no cache do CloudFront, ele solicitará o objeto da origem (um bucket do S3).

1. O S3 retorna o objeto ao CloudFront.

1. O CloudFront armazena o objeto em cache.

1. Os objetos são retornados ao visualizador. As solicitações subsequentes do objeto que chegam ao mesmo ponto de presença do CloudFront são atendidas com o cache do CloudFront.

## Implante a solução
<a name="deploy-secure-static-website-cloudformation"></a>

Para implantar a solução de site estático seguro, é possível escolher uma das seguintes opções:
+ Use o console do CloudFormation para implantar a solução com conteúdo padrão e faça upload do conteúdo do seu site no Amazon S3.
+ Clone a solução em seu computador para adicionar o conteúdo do site. Depois, implante a solução com a AWS Command Line Interface (AWS CLI).

**nota**  
Você deve usar a região Leste dos EUA (Norte da Virgínia) para implantar o modelo do CloudFormation. 

**Topics**
+ [

### Pré-requisitos
](#deploy-website-cloudformation-prerequisites)
+ [

### Usar o console do CloudFormation
](#deploy-website-cloudformation-console)
+ [

### Clonar a solução localmente
](#deploy-website-cloudformation-clone)
+ [

### Encontrar logs de acesso
](#deploy-website-cloudformation-logs)

### Pré-requisitos
<a name="deploy-website-cloudformation-prerequisites"></a>

Para usar essa solução, são necessários os seguintes pré-requisitos:
+ Um nome de domínio registrado, como example.com, apontado para uma zona hospedada do Amazon Route 53. A zona hospedada deverá estar na mesma Conta da AWS na qual você a solução é implantada. Quando não houver um nome de domínio registrado, é possível [registrar um com o Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html). Quando houver um nome de domínio registrado, mas que não apontado para uma zona hospedada do Route 53, [configure o Route 53 como seu serviço DNS](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-configuring.html).
+ Permissões do AWS Identity and Access Management (IAM) para executar modelos do CloudFormation que criam funções do IAM e permissões para criar todos os recursos da AWS na solução. Para obter mais informações, consulte [Controlar o acesso com o AWS Identity and Access Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) no *Guia do usuário do AWS CloudFormation*.

Você é responsável pelos custos incorridos durante a utilização da solução. Para ter mais informações sobre custos, consulte [as páginas de preços para cada AWS service (Serviço da AWS)](https://aws.amazon.com/pricing/).

### Usar o console do CloudFormation
<a name="deploy-website-cloudformation-console"></a>

**Como implantar usando o console do CloudFormation**

1. [Inicie esta solução no console do 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). Se necessário, faça login na sua Conta da AWS.

1. O assistente **Create Stack** (Criar pilha) será aberto no console do CloudFormation, com campos pré-preenchidos que especificam o modelo do CloudFormation dessa solução.

   Na parte inferior da página, selecione **Próximo**.

1. Na página **Especificar detalhes da pilha**, insira valores para os seguintes campos:
   + **SubDomain (Subdomínio)**: insira o subdomínio a ser usado para o site. Por exemplo, se o subdomínio for *www*, o site estará disponível em *www*.example.com. (Substitua exemplo.com pelo seu nome de domínio, conforme explicado no marcador a seguir.)
   + **DomainName**: insira o nome do domínio, como *example.com*. Esse domínio deve estar apontado para uma zona hospedada do Route 53.
   + **HostedZoneID**: o ID da zona hospedada no Route 53 no seu nome de domínio.
   + **CreateApex**: (opcional) crie um alias para o apex do domínio (exemplo.com) na configuração do CloudFront.

1. Quando terminar, escolha **Next (Próximo)**.

1. (Opcional) Na página **Configure stack options (Configurar opções de pilha)**, [adicione tags e outras opções de pilha](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html).

1. Quando terminar, escolha **Next (Próximo)**.

1. Na página **Revisar**, role até a parte inferior da página e marque as duas caixas na seção **Recursos**. Esses recursos permitem que o CloudFormation crie um perfil do IAM que permita acesso aos recursos da pilha e nomeie-os dinamicamente.

1. Selecione **Create stack**.

1. Aguarde até que a criação da pilha seja concluída. A pilha criará algumas pilhas aninhadas e poderá levar vários minutos ser concluída. Após a conclusão, o **Status** mudará para **CREATE\$1COMPLETE**.

   Quando o status for **CREATE\$1COMPLETE**, acesse https://*www.exemplo.com* para visualizar seu site (substitua www.exemplo.com pelo subdomínio e nome de domínio especificado na etapa 3). Será exibido o conteúdo padrão do site:  
![\[Conteúdo padrão do site estático da solução. Ele diz: “Sou um site estático!”\]](http://docs.aws.amazon.com/pt_br/AmazonCloudFront/latest/DeveloperGuide/images/cloudfront-secure-static-website-content.png)

**Como substituir o conteúdo padrão do site por seu próprio conteúdo**

1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Escolha o bucket que tenha o nome que comece com **amazon-cloudfront-secure-static-site-s3bucketroot-**.
**nota**  
Certifique-se de escolher o bucket com **s3bucketroot** no nome, não **s3bucketlogs**. O bucket com **s3bucketroot** no nome contém o conteúdo do site. Aquele com **s3bucketlogs** contém somente arquivos de log.

1. Exclua o conteúdo padrão do site e carregue o seu.
**nota**  
Se você visualizou seu site com o conteúdo padrão da solução, é provável que parte do conteúdo padrão esteja armazenada em cache em um ponto de presença do CloudFront. Para garantir que os visualizadores vejam o conteúdo atualizado do site, *invalide* os arquivos para remover as cópias armazenadas em cache dos pontos de presença do CloudFront. Para obter mais informações, consulte [Invalidar arquivos para remover conteúdo](Invalidation.md).

### Clonar a solução localmente
<a name="deploy-website-cloudformation-clone"></a>

**Pré-requisitos**

Para adicionar o conteúdo do site antes de implantar essa solução, é necessário empacotar os artefatos da solução localmente, o que requer Node.js e npm. Para obter mais informações, consulte [https://www.npmjs.com/get-npm](https://www.npmjs.com/get-npm).

**Como adicionar o conteúdo do site e implantar a solução**

1. Clone ou faça download da solução em [https://github.com/aws-samples/amazon-cloudfront-secure-static-site](https://github.com/aws-samples/amazon-cloudfront-secure-static-site). Depois que clonar ou fazer download, abra um prompt de comando ou terminal e navegue até a pasta `amazon-cloudfront-secure-static-site`.

1. Execute o seguinte comando para instalar e empacotar os artefatos da solução:

   ```
   make package-static
   ```

1. Copie o conteúdo do site na pasta `www`, substituindo o conteúdo padrão do site.

1. Execute o seguinte comando da AWS CLI para criar um bucket do Amazon S3 para armazenar os artefatos da solução. Substitua *amzn-s3-demo-bucket-for-artifacts* pelo nome do bucket.

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

1. Execute o comando da AWS CLI a seguir a fim de empacotar os artefatos da solução como um modelo do CloudFormation. Substitua *amzn-s3-demo-bucket-for-artifacts* pelo nome do bucket que você criou na etapa 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. Execute o seguinte comando para implantar a solução com o CloudFormation, substituindo os seguintes valores:
   + *your-CloudFormation-stack-name*: substitua por um nome para a pilha do CloudFormation.
   + *example.com*: substitua pelo nome de seu domínio. Esse domínio deve estar apontado para uma zona hospedada do Route 53 na mesma Conta da AWS.
   + *www*: substitua pelo subdomínio a ser usado para o site. Por exemplo, se o subdomínio for *www*, o site estará disponível em www.example.com.
   + *hosted-zone-ID*: substitua pelo ID da zona hospedada do Route 53 do nome de domínio.

   ```
   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 implantar a pilha com um apex de domínio, execute o comando a seguir.

     ```
     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. Aguarde até que a pilha do CloudFormation conclua a criação. A pilha criará algumas pilhas aninhadas e poderá levar vários minutos ser concluída. Após a conclusão, o **Status** mudará para **CREATE\$1COMPLETE**.

   Quando o status for alterado para **CREATE\$1COMPLETE**, acesse https://www.exemplo.com para visualizar o site (substitua www.exemplo.com pelo subdomínio e nome de domínio especificado na etapa anterior). Será exibido o conteúdo do site.

### Encontrar logs de acesso
<a name="deploy-website-cloudformation-logs"></a>

Essa solução habilita os [logs de acesso](AccessLogs.md) para a distribuição do CloudFront. Conclua as etapas a seguir para localizar os logs de acesso da distribuição.

**Como localizar os logs de acesso da distribuição**

1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Escolha o bucket que tenha o nome que comece com **amazon-cloudfront-secure-static-site-s3bucketlogs-**.
**nota**  
Certifique-se de escolher o bucket com **s3bucketlogs** no nome, não **s3bucketroot**. O bucket com **s3bucketlogs** no nome contém arquivos de log. Aquele com **s3bucketroot** contém o conteúdo do site.

1. A pasta chamada **cdn** contém os logs de acesso do CloudFront.