Conceitos básicos de uma distribuição padrão (AWS CLI)
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.
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.
Pré-requisitos
Antes de começar, certifique-se de que você concluiu as etapas em Configurar a Conta da AWS.
Instale a AWS CLI e configure-a com suas credenciais. Para obter mais informações, consulte Conceitos básicos do AWS CLI no Manual do usuário do AWS CLI.
Criar um bucket do Amazon S3
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
/ --regionus-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
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)
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.
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
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.
Atualizar a política de bucket do S3
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 \ --bucketamzn-s3-demo-bucket
\ --policy file://bucket-policy.json
Confirme a implantação da distribuição
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
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!.
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
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)
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
Aguarde até que a distribuição seja desabilitada.
aws cloudfront wait distribution-deployed --id $DISTRIBUTION_ID
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