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

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.


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.



