Conecte o site a imagens privadas do S3

AWSBeginner
Pratique Agora

Introdução

Associe uma função preparada ao EC2, confirme a leitura real da imagem privada e remova a associação.

Conclua os laboratórios anteriores do portfólio. Este ambiente fornece seus próprios recursos e capacidades anteriores necessárias. Reutilize conhecimentos, não instâncias, arquivos ou credenciais anteriores.

Relação com certificação

Certificação Tarefas Prática
AWS Certified Cloud Practitioner (CLF-C02) Task 2.3 Dar ao site leitura de quatro objetos específicos por uma função de instância.

Visão geral

Associe uma função preparada ao EC2, confirme a leitura real da imagem privada e remova a associação.

Entenda a permissão ausente

Nesta etapa, você examinará imagem e política antes da associação. Abra o portfólio: texto funciona, imagem não. Uma função IAM fornece identidade e permissões; um instance profile a associa ao EC2. Ambos se chamam portfolio-reader.

Entre no projeto.

cd /home/labex/project

Carregue e mostre o bucket deste ambiente.

source website.env
echo "$PORTFOLIO_BUCKET"

Confirme images/aura-brand.webp em Contents. Terminal tem sua própria identidade; o site não herda suas permissões.

aws s3api list-objects-v2 --bucket "$PORTFOLIO_BUCKET"

A política permite s3:GetObject. O array Resource contém os ARN exatos das três imagens e projects.json, sem escrita ou outros objetos. ARN identifica o recurso completo; esse limite aplica o menor privilégio.

cat read-image-policy.json

O bucket continua privado. A aplicação lê com autorização e devolve a imagem ao visitante; acesso ao site não significa bucket público.

Associe a função de leitura

Nesta etapa, você fornecerá o perfil à aplicação. A SDK descobre credenciais temporárias; não copie chaves permanentes para o código.

Mostre e confira INSTANCE_ID.

echo "$INSTANCE_ID"

Associe Name=portfolio-reader. $(...) captura a saída, query escolhe AssociationId e output text produz o ID exibido por echo.

ASSOCIATION_ID=$(aws ec2 associate-iam-instance-profile   --instance-id "$INSTANCE_ID"   --iam-instance-profile Name=portfolio-reader   --query 'IamInstanceProfileAssociation.AssociationId'   --output text)
echo "$ASSOCIATION_ID"

Atualize até aparecerem AURA, FORMA e ECHO. Clique numa capa: o painel lê título e descrição de projects.json em S3. Mantenha o bucket privado; confira instância e perfil se necessário. A SDK recebe credenciais temporárias via IMDSv2, sem copiar chaves.

Ponto de controle real do laboratório; seus identificadores podem variar.

Ponto de controle real do laboratório; seus identificadores podem variar.

Remova associação e servidor

Nesta etapa, você retirará a associação e encerrará o processo. Credenciais temporárias podem estar em cache; desassociar não garante revogação instantânea. Não use uma imagem quebrada imediata como prova.

Desassocie o ID exato salvo.

aws ec2 disassociate-iam-instance-profile --association-id "$ASSOCIATION_ID"

Encerre a instância para impedir novas solicitações.

aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"

Espere terminated.

aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"

Preserve função, bucket e referências fornecidos. O site não está mais em execução.

Resumo

Você distinguiu identidades, associou o perfil, viu a imagem privada e limpou associação e servidor.

Referências oficiais: EC2 application roles, instance profiles.