Baseado na documentação oficialBased on the official docs
Aprenda AWS de forma visual e interativa.Learn AWS visually and interactively.
Das contas e permissões até rede, servidores, bancos de dados e domínios. Clique, simule e teste o que aprendeu em cada seção.From accounts and permissions to networking, servers, databases and domains. Click, simulate and test what you learned in every section.
AWS Organizations
Gerencie e governe várias contas AWS de forma central: criar contas, agrupá-las em OUs, aplicar políticas e ter uma fatura única.Centrally manage and govern many AWS accounts: create accounts, group them into OUs, apply policies and get a single bill.
Management account
Conta que administra a organização. SCPs não afetam usuários e roles dela, só as contas-membro.The account that administers the organization. SCPs do not affect its users and roles, only member accounts.Member accounts
As demais contas. Cada conta AWS é um limite natural de permissão, segurança, custo e carga de trabalho.All other accounts. Each AWS account is a natural boundary for permissions, security, cost and workloads.OU
Organizational Unit: grupo de contas (por exemplo, as que atendem a uma aplicação ou a um ambiente). Políticas anexadas a uma OU valem para as contas dentro dela.Organizational Unit: a group of accounts (for example those serving one application or environment). Policies attached to an OU apply to the accounts inside it.SCP
Service Control Policy: define o máximo de permissões disponível para IAM users e roles das contas. Não concede nada.Service Control Policy: defines the maximum permissions available to IAM users and roles in the accounts. It grants nothing.Exemplo de desenho (uma sugestão didática, não um padrão obrigatório da AWS): uma conta para cada ambiente, agrupadas em OUs.Example layout (a teaching suggestion, not a mandatory AWS standard): one account per environment, grouped in OUs.
prod · <ID_CONTA_PROD> OU Non-prod
dev · <ID_CONTA_DEV> OU Shared
tooling: ECR, CI/CDtooling: ECR, CI/CD · <ID_CONTA_TOOLING>
A conta de tooling/compartilhada é opcional e costuma guardar o que várias contas usam, como o repositório de imagens no ECR (acesso entre contas via repository policy). Para começar, duas contas (dev e prod) já bastam.The tooling/shared account is optional and usually holds what several accounts use, such as the image repository in ECR (cross-account access through a repository policy). To start, two accounts (dev and prod) are enough.
Passo a passo: criar a organização com contas dev e prodStep by step: create the organization with dev and prod accounts
A ideia em uma frase: você já tem uma conta AWS; ela vira a management account e, a partir dela, você cria as contas dev e prod. Nenhuma conta nova é feita “do zero” no site da AWS: todas nascem dentro da organização.The idea in one sentence: you already have an AWS account; it becomes the management account and, from it, you create the dev and prod accounts. No new account is made “from scratch” on the AWS site: they are all born inside the organization.
Passo 0 · Nunca usou a AWS? Crie sua primeira contaStep 0 · New to AWS? Create your first account
- Acesse signup.aws.amazon.com (ou o botão “Create an AWS Account” em aws.amazon.com) e informe um e-mail que só você controla e um nome para a conta (pode mudar depois). Esse e-mail vira o login do root user — a identidade mais poderosa que existe na conta, acima de qualquer usuário IAM.Go to signup.aws.amazon.com (or the “Create an AWS Account” button on aws.amazon.com) and enter an email only you control and a name for the account (you can change it later). That email becomes the root user’s login — the single most powerful identity in the account, above any IAM user.
- Confirme o e-mail (a AWS manda um código), defina uma senha forte para o root e preencha o endereço de contato.Confirm the email (AWS sends a code), set a strong root password and fill in the contact address.
- Informe um cartão de crédito válido. A AWS faz uma cobrança pequena e temporária só para verificar o cartão (ela estorna). Sem cartão, a conta não é criada — mesmo que você só use o nível gratuito.Enter a valid credit card. AWS makes a small, temporary charge just to verify the card (it refunds it). Without a card, the account cannot be created — even if you only plan to use the free tier.
- Confirme sua identidade por SMS ou chamada de voz (um código de verificação).Verify your identity by SMS or voice call (a verification code).
- Escolha um plano de suporte: Basic (gratuito; suporte só por fórum e documentação) é suficiente para aprender e para a maioria dos projetos pequenos. Dá para mudar de plano depois, a qualquer momento.Choose a support plan: Basic (free; forum and documentation support only) is enough for learning and for most small projects. You can change plans later, at any time.
- Pronto: essa é a sua conta AWS. Antes de fazer qualquer outra coisa, ative MFA no root user (IAM → Dashboard → Root user → Add MFA, ou um app autenticador/chave de segurança) e nunca use o root no dia a dia — ele é só para tarefas que exigem root, como trocar o plano de suporte ou fechar a conta.Done: that is your AWS account. Before doing anything else, enable MFA on the root user (IAM → Dashboard → Root user → Add MFA, with an authenticator app or a security key) and never use root day to day — it is only for tasks that require it, like changing the support plan or closing the account.
Contas novas ganham, por 12 meses, uma cota mensal gratuita de serviços comuns (por exemplo, 750 horas de uma instância EC2 t2.micro/t3.micro, 5 GB no S3). Além disso, alguns serviços têm uma cota sempre gratuita (não expira), como 1 milhão de requisições mensais no Lambda. Ultrapassar a cota não bloqueia nada: você simplesmente passa a pagar pelo excedente — é por isso que a seção de orçamento logo abaixo importa desde o primeiro dia.New accounts get, for 12 months, a free monthly quota of common services (for example, 750 hours of a t2.micro/t3.micro EC2 instance, 5 GB on S3). On top of that, some services have an always-free quota (it never expires), like 1 million monthly Lambda requests. Going over the quota does not block anything: you simply start paying for the extra usage — which is why the budget section just below matters from day one.
Passo 1 · Prepare a conta que será a managementStep 1 · Prepare the account that will be the management account
- Use a conta mais antiga e “limpa” que você tem, de preferência sem recursos de aplicação: a management account não deve rodar cargas de trabalho, pois SCPs não a limitam.Use the oldest, “cleanest” account you have, ideally with no application resources: the management account should not run workloads, since SCPs do not limit it.
- Proteja o root user com MFA e um e-mail que você controla. Esse e-mail é o dono de toda a organização.Protect the root user with MFA and an email you control. That email owns the whole organization.
Passo 2 · Criar a organizaçãoStep 2 · Create the organization
- No console, entre como root ou como um admin da management account e abra AWS Organizations → Create an organization.In the console, sign in as root or as an admin of the management account and open AWS Organizations → Create an organization.
- Isso cria a Root (a raiz da árvore) e deixa a conta atual como management. O modo padrão é all features, o que habilita SCPs; deixe assim.This creates the Root (the top of the tree) and leaves the current account as the management account. The default mode is all features, which enables SCPs; keep it.
- Confirme o e-mail de verificação que a AWS envia (pode demorar a chegar) em até 24 horas; passado esse prazo, é preciso pedir o reenvio. A verificação é exigida antes de convidar contas.Confirm the verification email AWS sends (it may be delayed) within 24 hours; after that you must request a resend. Verification is required before inviting accounts.
Passo 3 · Criar as OUsStep 3 · Create the OUs
- Em AWS accounts, marque a Root e use Actions → Create new (organizational unit). Crie
ProdeNon-prod. Uma OU é só uma pasta: ela existe para você aplicar a mesma política a várias contas de uma vez.Under AWS accounts, select the Root and use Actions → Create new (organizational unit). CreateProdandNon-prod. An OU is just a folder: it exists so you can apply the same policy to several accounts at once.
Passo 4 · Criar as contas dev e prodStep 4 · Create the dev and prod accounts
Antes, separe dois e-mails diferentes que nunca tenham sido usados em outra conta AWS (incluindo a management). Um alias como nome+dev@dominio.com costuma ser aceito e cai na mesma caixa de entrada, mas escolha uma caixa que a sua equipe também monitore: é por ela que se recupera o root da conta.First, set aside two different emails that have never been used for another AWS account (including the management account). An alias such as name+dev@domain.com is usually accepted and lands in the same inbox, but pick a mailbox your team also monitors: it is how the account’s root is recovered.
- Na management account: AWS Organizations → AWS accounts → Add an AWS account → Create an AWS account.In the management account: AWS Organizations → AWS accounts → Add an AWS account → Create an AWS account.
- AWS account name:
dev. Email address of the account’s root user: o e-mail exclusivo desta conta (global e único: duas contas não podem ter o mesmo). Regras da API: de 6 a 64 caracteres, só ASCII de 7 bits, um único@. Um e-mail inválido impede acessar o root e remover a conta depois.AWS account name:dev. Email address of the account’s root user: the email exclusive to this account (globally unique: two accounts cannot share one). API rules: 6 to 64 characters, 7-bit ASCII only, a single@. An invalid email makes it impossible to reach the root and to remove the account later. - IAM role name: deixe em branco para usar
OrganizationAccountAccessRole. Essa role é criada dentro da conta nova, confia na management account e dá permissões de administrador. O nome não pode começar comAWSServiceRoleFor.IAM role name: leave blank to useOrganizationAccountAccessRole. This role is created inside the new account, trusts the management account and grants administrator permissions. The name cannot start withAWSServiceRoleFor. - Tags (opcional, mas útil): por exemplo
Environment=dev. Se uma tag for inválida, a requisição inteira falha e a conta não é criada.Tags (optional, but useful): for exampleEnvironment=dev. If any tag is invalid, the whole request fails and the account is not created. - Clique em Create AWS account. A criação é assíncrona: a conta aparece na lista como pendente e pode levar alguns minutos até ficar utilizável. Atualize a página.Click Create AWS account. Creation is asynchronous: the account shows up as pending and can take a few minutes to become usable. Refresh the page.
- Repita tudo para
prod, com outro e-mail.Repeat everything forprod, with a different email. - Anote o ID de 12 dígitos de cada conta (
<ID_CONTA_DEV>e<ID_CONTA_PROD>). Você vai usá-los em ARNs, em trust policies e nos perfis da CLI.Write down each account’s 12-digit ID (<ID_CONTA_DEV>and<ID_CONTA_PROD>). You will use them in ARNs, trust policies and CLI profiles. - Mova cada conta para a OU certa: marque
dev(a caixa de seleção, não o nome) → Actions → AWS account → Move →Non-prod;prod→Prod. Contas novas nascem na Root.Move each account to the right OU: selectdev(the checkbox, not the name) → Actions → AWS account → Move →Non-prod;prod→Prod. New accounts are born in the Root.
- “Organization still initializing” ou limite excedido logo após criar a organização: espere cerca de uma hora e tente de novo; se persistir, fale com o AWS Support. Contas fechadas ou excluídas continuam contando para o limite de contas.“Organization still initializing” or limit exceeded right after creating the organization: wait about an hour and try again; if it persists, contact AWS Support. Closed or deleted accounts still count toward the account limit.
- Forma de pagamento: conta criada pelo Organizations não coleta sozinha os dados para operar como conta avulsa (por exemplo, meio de pagamento). Quem paga é a management (fatura consolidada), mas se um dia você precisar remover a conta da organização, terá de informar esses dados antes.Payment method: an account created through Organizations does not collect on its own the information needed to run as a standalone account (for example, a payment method). The management account pays (consolidated billing), but if you ever need to remove the account from the organization, you must provide that information first.
- Root da conta nova: contas criadas pelo Organizations nascem sem credenciais de root e, por padrão, não conseguem entrar como root nem recuperar a senha (a menos que a recuperação de conta esteja habilitada). Se uma tarefa exigir root numa conta-membro, fale com o administrador da organização. No dia a dia você não usa o root.Root of the new account: accounts created through Organizations are born with no root credentials and, by default, cannot sign in as root or recover the password (unless account recovery is enabled). If a task requires root in a member account, ask the organization’s administrator. Day to day you do not use root.
- Acesso do IAM ao billing: a API tem o parâmetro
IamUserAccessToBilling(padrãoALLOW: usuários e roles com a permissão adequada podem ver o billing da conta). ComDENY, só o root vê.IAM access to billing: the API has theIamUserAccessToBillingparameter (defaultALLOW: users and roles with the right permission can see the account’s billing). WithDENY, only root can.
Passo 5 · Dar acesso às pessoas (IAM Identity Center)Step 5 · Give people access (IAM Identity Center)
Para testar rápido, basta o Switch role com a OrganizationAccountAccessRole (ao fim deste passo). Para o dia a dia, a AWS recomenda o IAM Identity Center: uma pessoa entra uma vez no portal e escolhe a conta e o nível de acesso, com credenciais temporárias. Tudo abaixo é feito na management account.To test quickly, Switch role with OrganizationAccountAccessRole is enough (at the end of this step). For daily use, AWS recommends IAM Identity Center: a person signs in once to the portal and picks the account and the level of access, with temporary credentials. Everything below is done in the management account.
- Habilitar. Abra o console do IAM Identity Center e habilite-o com uma instância da organização (a recomendada; só ela gerencia acesso a várias contas). Escolha a região com cuidado: é nela que o serviço vive, e ela aparece depois como
sso_regionna CLI. Ao habilitar pela primeira vez, o diretório do próprio Identity Center já vem como fonte de identidade padrão.Enable. Open the IAM Identity Center console and enable it with an organization instance (the recommended one; only it manages access to many accounts). Choose the Region carefully: that is where the service lives, and it later shows up assso_regionin the CLI. When you enable it for the first time, the Identity Center directory is already the default identity source. - Criar grupos. Groups → Create group: por exemplo
adminsedevs. Dê permissões a grupos, não a pessoas: quem entra ou sai do time muda só a associação.Create groups. Groups → Create group: for exampleadminsanddevs. Give permissions to groups, not people: someone joining or leaving the team only changes membership. - Criar o usuário. Users → Add user: informe o username (fácil de lembrar, não pode ser mudado depois), deixe marcada a opção de enviar um e-mail com as instruções de senha, informe um e-mail único, nome e sobrenome e, na tela seguinte, adicione a pessoa ao grupo. Confirme em Add user.Create the user. Users → Add user: enter the username (easy to remember, cannot be changed later), keep the option to email password-setup instructions, enter a unique email, first and last name, and on the next screen add the person to the group. Confirm with Add user.
- Criar os permission sets. Permission sets → Create permission set → Predefined permission set. Sugestão:
AdministratorAccess,PowerUserAccesseReadOnlyAccess. A duração padrão da sessão é de 1 hora.PowerUserAccessnão gerencia usuários e grupos IAM, ao contrário do administrador.Create the permission sets. Permission sets → Create permission set → Predefined permission set. Suggestion:AdministratorAccess,PowerUserAccessandReadOnlyAccess. The default session duration is 1 hour.PowerUserAccesscannot manage IAM users and groups, unlike administrator. - Atribuir por conta. AWS accounts (em Multi-account permissions) → marque a conta → Assign users or groups → escolha o grupo → escolha o permission set → Submit. O Identity Center cria dentro da conta uma role IAM gerenciada por ele. Aguarde a mensagem de que a conta foi reprovisionada.Assign per account. AWS accounts (under Multi-account permissions) → select the account → Assign users or groups → pick the group → pick the permission set → Submit. Identity Center creates an IAM role it manages inside the account. Wait for the message that the account was reprovisioned.
- A pessoa ativa o acesso. Ela recebe o e-mail “Invitation to join IAM Identity Center” (de
no-reply@signin.awsouno-reply@login.awsapps.com: libere esses remetentes), aceita o convite, define a senha e registra o MFA. Depois entra no AWS access portal, expande a organização, escolhe a conta e a role. “Role” abre o console; “Access keys” dá credenciais temporárias para CLI e SDK.The person activates access. They receive the “Invitation to join IAM Identity Center” email (fromno-reply@signin.awsorno-reply@login.awsapps.com: allow those senders), accept the invitation, set a password and register MFA. Then they sign in to the AWS access portal, expand the organization, and pick the account and role. “Role” opens the console; “Access keys” gives temporary credentials for the CLI and SDKs.
Uma divisão razoável para começar (adapte à sua equipe):A reasonable split to start with (adapt it to your team):
| GrupoGroup | dev | prod | ManagementManagement |
|---|---|---|---|
admins | AdministratorAccess | AdministratorAccess | AdministratorAccess |
devs | PowerUserAccess | ReadOnlyAccess | (nada)(none) |
Passo 5b · Usar as contas no terminalStep 5b · Use the accounts from the terminal
Crie um perfil para cada conta. Pegue a SSO start URL e a região no portal (Access keys → IAM Identity Center credentials) ou a Issuer URL no painel do Identity Center. Com a CLI v2:Create a profile for each account. Get the SSO start URL and Region from the portal (Access keys → IAM Identity Center credentials) or the Issuer URL from the Identity Center dashboard. With CLI v2:
aws configure sso
# SSO session name: baselarte
# SSO start URL: https://<seu-portal>.awsapps.com/start
# SSO region: us-east-1
# SSO registration scopes: sso:account:access
# (choose the dev account and role, then name the profile: dev)
aws configure sso # repeat: choose the prod account, profile name: prod
aws sso login --profile dev
aws sts get-caller-identity --profile dev # Account = <ID_CONTA_DEV>
aws sts get-caller-identity --profile prod # Account = <ID_CONTA_PROD>O resultado em ~/.aws/config: os dois perfis compartilham a mesma sso-session, então um único login vale para ambos.The result in ~/.aws/config: both profiles share the same sso-session, so a single login covers both.
[profile dev]
sso_session = baselarte
sso_account_id = <ID_CONTA_DEV>
sso_role_name = PowerUserAccess
region = sa-east-1
[profile prod]
sso_session = baselarte
sso_account_id = <ID_CONTA_PROD>
sso_role_name = ReadOnlyAccess
region = sa-east-1
[sso-session baselarte]
sso_region = us-east-1
sso_start_url = https://<seu-portal>.awsapps.com/start
sso_registration_scopes = sso:account:access- Alternativa rápida, sem Identity Center: entre na management como um usuário não-root com permissão
sts:AssumeRolesobre a role (o root não troca de role) e use Switch role no console com o ID da conta e a roleOrganizationAccountAccessRole; veja Contas, usuários, roles e ARN. Serve para testar, mas dá administrador total e não escala para uma equipe.Quick alternative, without Identity Center: sign in to the management account as a non-root user with thests:AssumeRolepermission on the role (root cannot switch roles) and use Switch role in the console with the account ID and theOrganizationAccountAccessRolerole; see Accounts, users, roles and ARNs. Fine for testing, but it grants full administrator and does not scale to a team. - Quando as credenciais expiram, rode
aws sso login --profile devde novo;aws sso logoutapaga as credenciais em cache.When credentials expire, runaws sso login --profile devagain;aws sso logoutdeletes the cached credentials.
Passo 6 · Preparar cada conta (o que se repete em dev e prod)Step 6 · Prepare each account (what repeats in dev and prod)
Cada conta nasce vazia. Para receber o deploy automático do GitHub, faça o mesmo checklist nas duas, com os perfis dev e prod (as permissões de administrador só são necessárias nesta preparação inicial):Each account is born empty. To receive automatic deploys from GitHub, run the same checklist in both, with the dev and prod profiles (administrator permissions are only needed for this initial setup):
| # | O que fazer, em cada contaWhat to do, in each account | Onde está o passo a passoWhere the how-to is |
|---|---|---|
| 1 | Escolher a região de trabalho (a mesma nas duas, para o código não mudar).Pick the working Region (the same in both, so the code does not change). | — |
| 2 | Criar um orçamento com alerta.Create a budget with an alert. | Orçamento e cobrançaBudget & billing |
| 3 | Criar rede, repositório ECR, cluster e serviço ECS (um conjunto por conta).Create the network, the ECR repository, the ECS cluster and service (one set per account). | VPC, ECR, ECS |
| 4 | Criar os segredos da aplicação (cada conta com os seus valores).Create the application secrets (each account with its own values). | Secrets Manager |
| 5 | Criar o provedor OIDC do GitHub e a role de deploy da conta.Create the GitHub OIDC provider and the account’s deploy role. | Nota GitHub para AWS com OIDCGitHub to AWS with OIDC note |
Se preferir um repositório ECR único para todos os ambientes, use a conta de tooling e libere as outras por repository policy. Para começar com duas contas, um ECR por conta é mais simples e mantém o isolamento total.If you prefer a single ECR repository for all environments, use the tooling account and allow the others through a repository policy. To start with two accounts, one ECR per account is simpler and keeps isolation complete.
Passo 7 · Conferir se ficou certoStep 7 · Check that it is right
# from the management account (profile with access to it)
aws organizations describe-organization --query 'Organization.FeatureSet' # "ALL"
aws organizations list-accounts --query 'Accounts[].[Name,Id,Status]' --output table
aws organizations list-organizational-units-for-parent --parent-id r-abcd
# each profile must land in a DIFFERENT account
aws sts get-caller-identity --profile dev
aws sts get-caller-identity --profile prod- Esperado:
FeatureSetigual aALL; as contasdeveprodcom statusACTIVEe IDs diferentes; cada perfil devolvendo o ID da sua própria conta.Expected:FeatureSetequal toALL; thedevandprodaccountsACTIVEwith different IDs; each profile returning its own account ID. - Se um perfil devolver o ID errado, o
sso_account_iddo perfil está trocado: é o erro mais comum, e o mais perigoso, porque o deploy de dev iria para a produção.If a profile returns the wrong ID, the profile’ssso_account_idis swapped: the most common mistake and the most dangerous, because a dev deploy would land in production.
Passo 8 · Aplicar guardrails (opcional, mas vale a pena)Step 8 · Apply guardrails (optional, but worth it)
- Habilite o tipo de política em Policies → Service control policies → Enable service control policies. Teste uma SCP primeiro na OU
Non-prod(veja o exemplo mais abaixo) e só depois leve paraProd. Nunca comece pela Root.Enable the policy type under Policies → Service control policies → Enable service control policies. Try an SCP first on theNon-prodOU (see the example below) and only then take it toProd. Never start at the Root. - Para anexar: abra a OU (clique no nome) → aba Policies → Attach. A
FullAWSAccesspadrão continua anexada; só a remova se tiver uma lista de permissões (allow list) que a substitua.To attach: open the OU (click its name) → Policies tab → Attach. The defaultFullAWSAccessstays attached; only remove it if you have an allow list replacing it.
O mesmo pelo terminalThe same from the terminal
Com a CLI autenticada na management account (os IDs abaixo são ilustrativos):With the CLI authenticated to the management account (the IDs below are illustrative):
# 1 · create the organization (all features)
aws organizations create-organization --feature-set ALL
# 2 · find the Root ID and create the OUs
aws organizations list-roots --query 'Roots[0].Id' --output text # r-abcd
aws organizations create-organizational-unit --parent-id r-abcd --name Prod
aws organizations create-organizational-unit --parent-id r-abcd --name Non-prod
# 3 · create the dev account (asynchronous: follow the status)
aws organizations create-account \
--account-name dev --email nome+dev@dominio.com \
--role-name OrganizationAccountAccessRole \
--tags Key=Environment,Value=dev
aws organizations describe-create-account-status --create-account-request-id car-xxxxxxxx
# 4 · move the account to its OU (the account ID comes from the status above)
aws organizations move-account --account-id 111111111111 \
--source-parent-id r-abcd --destination-parent-id ou-abcd-11111111Cada conta é um ambiente completo e isolado: a conta dev tem sua própria VPC, seu RDS e seus serviços; a prod tem os dela. Nada é compartilhado, a não ser que você libere (por exemplo, a imagem Docker no ECR de uma conta de tooling). O mesmo código sobe nas duas contas; só muda para onde a pipeline aponta, via OIDC, com uma role por conta.Each account is a full, isolated environment: the dev account has its own VPC, RDS and services; prod has its own. Nothing is shared unless you allow it (for example, the Docker image in the ECR of a tooling account). The same code ships to both accounts; only where the pipeline points changes, through OIDC, with one role per account.
Por que separar contas por ambienteWhy separate accounts by environment
A AWS recomenda usar várias contas para separar cargas de trabalho, em vez de uma só. Por padrão não existe acesso entre contas: se produção e não-produção ficam em contas distintas, elas permanecem isoladas até você liberar explicitamente. O número de contas não altera a cobrança, que é baseada no uso dos recursos.AWS recommends using several accounts to separate workloads rather than a single one. By default there is no access between accounts: if production and non-production live in different accounts, they stay isolated until you explicitly allow access. The number of accounts does not change billing, which is based on resource usage.
Simulador de herança de SCPSCP inheritance simulator
Exemplo de SCPSCP example
Exemplo didático que nega ações fora de duas regiões, com exceção de serviços globais. Adapte e teste em uma OU de teste antes de usar. A AWS publica exemplos oficiais de SCP na página de exemplos de SCP.Teaching example denying actions outside two regions, except for global services. Adapt it and test it in a test OU first. AWS publishes official SCP examples in its SCP examples page.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"NotAction": ["iam:*", "organizations:*", "route53:*", "support:*"],
"Resource": "*",
"Condition": {
"StringNotEquals": { "aws:RequestedRegion": ["us-east-1", "sa-east-1"] }
}
}
]
}- SCPs só existem em organizações com all features habilitado; no modo apenas de cobrança consolidada elas não estão disponíveis.SCPs exist only in organizations with all features enabled; they are not available with consolidated billing only.
- SCP nunca concede permissão. A permissão efetiva é a interseção entre SCP/RCP e as políticas de identidade e de recurso.An SCP never grants permission. Effective permission is the intersection of SCP/RCP and identity/resource policies.
- SCPs afetam também o root user das contas-membro, mas não afetam service-linked roles nem usuários de fora da organização.SCPs also affect member-account root users, but they do not affect service-linked roles or principals outside the organization.
- Não remova a
FullAWSAccesssem substituí-la: todas as ações das contas-membro falhariam.Do not removeFullAWSAccesswithout replacing it: all member-account actions would fail. - A AWS recomenda não anexar SCPs na raiz sem testar: use uma OU e mova as contas aos poucos.AWS recommends not attaching SCPs to the root without testing: use an OU and move accounts a few at a time.
- Todos os caracteres da SCP contam para o tamanho máximo (veja as cotas).Every character counts toward an SCP's maximum size (see the quotas).
Quando usarWhen to use
Mais de um ambiente ou time; necessidade de guardrails (regiões, serviços); fatura única; compartilhamento central de recursos.More than one environment or team; need for guardrails (regions, services); a single bill; central resource sharing.Quando evitarWhen to avoid
Aplicar SCP direto na raiz sem teste; esperar que SCP libere permissões; rodar cargas de trabalho na management account (ela não é limitada por SCP).Applying an SCP straight to the root without testing; expecting an SCP to grant permissions; running workloads in the management account (it is not limited by SCPs).Uma SCP que permite s3:* já dá acesso ao S3 aos usuários?Does an SCP that allows s3:* already give users S3 access?
Qual conta não é afetada por SCPs?Which account is not affected by SCPs?
- Creating an AWS account
- AWS Free Tier
- What is AWS Organizations?
- Tutorial: Creating and configuring an organization
- Creating a member account in your organization
- Organizations API: CreateAccount
- Email address verification with AWS Organizations
- Getting started with IAM Identity Center · Configure user access with the default directory
- Configuring IAM Identity Center authentication with the AWS CLI
- Service control policies (SCPs)
- Organizing Your AWS Environment Using Multiple Accounts
- IAM: Policy evaluation logic
Removido por falta de fonte oficial: a anotação sobre descontos por volume e compartilhamento de Savings Plans/Reservas na fatura consolidada. Consulte a documentação de billing antes de afirmar isso.Removed for lack of an official source: the note on volume discounts and Savings Plans/Reservations sharing under consolidated billing. Check the billing docs before claiming it.
Contas, usuários, roles e ARNAccounts, users, roles and ARNs
O que cada nome significa (e-mail do root, nome da conta, username), como criar uma identidade que não é root e como uma conta dá acesso a outra por role.What each name means (root email, account name, username), how to create an identity that is not root and how one account grants access to another through a role.
Root user
É a identidade criada com a conta. Entra com o e-mail da conta e a senha. Tem acesso completo a todos os serviços e recursos. Use só nas tarefas que exigem root e proteja com MFA.It is the identity created with the account. It signs in with the account email and password. It has complete access to all services and resources. Use it only for tasks that require root and protect it with MFA.Account name
Um rótulo para humanos (por exemplodev), mostrado em faturas e consoles como o Billing e o Organizations. Não é usado para entrar e não é um identificador: quem identifica a conta é o ID de 12 dígitos.A label for humans (for example dev), shown on invoices and in consoles such as Billing and Organizations. It is not used to sign in and it is not an identifier: the 12-digit ID identifies the account.Username
Nome de uma identidade que não é root: um usuário IAM ou um usuário do Identity Center. Só faz sentido dentro de uma conta (ou de um portal) e vem sempre acompanhado de uma senha.The name of an identity that is not root: an IAM user or an Identity Center user. It only makes sense inside an account (or a portal) and always comes with a password.ARN
Amazon Resource Name: o endereço único de um recurso da AWS (um usuário, uma role, um bucket). É assim que políticas dizem “sobre quem” e “sobre o quê”.Amazon Resource Name: the unique address of an AWS resource (a user, a role, a bucket). It is how policies say “about whom” and “about what”.Quem é quem: root, nome da conta e usernameWho is who: root, account name and username
Uma conta AWS tem um root e quantas identidades não-root você criar. Cada tipo de identidade entra por uma porta diferente, com dados diferentes:An AWS account has one root and as many non-root identities as you create. Each kind of identity signs in through a different door, with different data:
| NomeName | O que éWhat it is | Para que serveWhat it is for | Regras (documentação)Rules (documentation) |
|---|---|---|---|
| E-mail do rootRoot email | Definido ao criar a contaSet when the account is created | É o login do root, junto com a senha. Também é por onde a senha do root é recuperada, então precisa ser uma caixa que você controla.It is the root’s login, together with the password. It is also how the root password is recovered, so it must be a mailbox you control. | Único no mundo entre contas (veja o Passo 4 de Organizations).Globally unique across accounts (see Step 4 of Organizations). |
| Account nameAccount name | Rótulo da contaThe account’s label | Aparece na fatura e em consoles como o Billing e o Organizations. Nenhuma política nem login depende dele.It appears on the invoice and in consoles such as Billing and Organizations. No policy or sign-in depends on it. | Pode ser alterado depois (permissão account:PutAccountName; o root também pode). A documentação sugere um padrão como organização-finalidade-ambiente e evitar dados pessoais.It can be changed later (account:PutAccountName permission; root can too). The documentation suggests a pattern such as organization-purpose-environment and avoiding personal data. |
| ID da contaAccount ID | 12 dígitos, gerado pela AWS12 digits, generated by AWS | É o identificador de verdade: vai nos ARNs, nas trust policies e nos perfis da CLI.It is the real identifier: it goes in ARNs, trust policies and CLI profiles. | Não muda.It does not change. |
| Alias da contaAccount alias | Apelido opcional do IDOptional nickname for the ID | Deixa o link de login dos usuários IAM legível: https://<alias>.signin.aws.amazon.com/console/.Makes IAM users’ sign-in link readable: https://<alias>.signin.aws.amazon.com/console/. | De 3 a 63 caracteres; minúsculas, dígitos e hífens (sem hífen no começo ou no fim, sem dois seguidos, e não pode ser um número de 12 dígitos); único na AWS; só um por conta; não é secreto.3 to 63 characters; lowercase, digits and hyphens (no hyphen at the start or end, no two in a row, and it cannot be a 12-digit number); unique across AWS; only one per account; not secret. |
| Username do usuário IAMIAM user name | Nome do usuário dentro da contaThe user’s name inside the account | Junto com o ID (ou alias) e a senha, é o login de quem não é root. Também aparece no ARN: arn:aws:iam::<ID>:user/maria.Together with the ID (or alias) and the password, it is the login of someone who is not root. It also appears in the ARN: arn:aws:iam::<ID>:user/maria. | Até 64 caracteres; letras, números e + = , . @ _ -; único na conta, sem distinguir maiúsculas (no login e na unicidade). Em políticas e ARNs, distingue.Up to 64 characters; letters, numbers and + = , . @ _ -; unique in the account, case-insensitive (at sign-in and for uniqueness). In policies and ARNs, case matters. |
| Username do Identity CenterIdentity Center username | Nome do usuário no portalThe user’s name in the portal | Login no portal de acesso. Quem usa é a pessoa; as contas aparecem como opções depois.Login to the access portal. The person uses it; the accounts show up as options afterwards. | De 1 a 100 caracteres; definido ao criar o usuário e não pode ser mudado depois (veja o Passo 5 de Organizations).1 to 100 characters; set when the user is created and cannot be changed later (see Step 5 of Organizations). |
ARN: a sigla e como lerARN: the acronym and how to read it
ARN é Amazon Resource Name. Segundo a documentação, ARNs identificam recursos de forma única em toda a AWS e são exigidos quando você precisa apontar um recurso sem ambiguidade, como em políticas do IAM e em chamadas de API. Um ARN não é considerado segredo, mas deve ser compartilhado com cuidado.ARN stands for Amazon Resource Name. According to the documentation, ARNs uniquely identify resources across all of AWS and are required when you must point to a resource unambiguously, such as in IAM policies and API calls. An ARN is not considered secret, but should be shared with care.
| RecursoResource | ARN de exemploExample ARN |
|---|---|
| Usuário IAMIAM user | arn:aws:iam::111122223333:user/maria |
| RoleRole | arn:aws:iam::111122223333:role/PowerUserFromMgmt |
| “Qualquer identidade desta conta” (usado em trust policies)“Any identity in this account” (used in trust policies) | arn:aws:iam::111122223333:root |
| Repositório ECRECR repository | arn:aws:ecr:sa-east-1:111122223333:repository/meu-app |
| Bucket S3S3 bucket | arn:aws:s3:::meu-bucket |
A partição é aws nas regiões comuns (aws-cn na China, aws-us-gov no GovCloud). Para achar o formato de qualquer recurso, a documentação indica a Service Authorization Reference. Curingas (*) valem no Resource (por exemplo role/*), mas não no Principal.The partition is aws in the regular Regions (aws-cn in China, aws-us-gov in GovCloud). To find any resource’s format, the documentation points to the Service Authorization Reference. Wildcards (*) work in Resource (for example role/*), but not in Principal.
Como uma conta dá acesso à outraHow one account grants access to another
A conta root (management) não empresta o root dela. O acesso entre contas sempre passa por uma role, que entrega credenciais temporárias. Há três caminhos, do mais pronto ao mais controlado:The root (management) account does not lend its root. Cross-account access always goes through a role, which hands out temporary credentials. There are three paths, from the most ready-made to the most controlled:
| CaminhoPath | Como funcionaHow it works | Quando usarWhen to use |
|---|---|---|
| 1 · Já vem pronta1 · Ready-made | A AWS cria a role OrganizationAccountAccessRole dentro de toda conta criada pelo Organizations. Ela confia na management e dá administrador.AWS creates the OrganizationAccountAccessRole role inside every account created through Organizations. It trusts the management account and grants administrator. | Testes e emergência. É administrador total.Tests and emergencies. It is full administrator. |
| 2 · Role própria2 · Your own role | Você cria uma role na conta destino, com a trust policy apontando para a origem e só as permissões necessárias. É o que o passo a passo abaixo faz.You create a role in the destination account, with the trust policy pointing to the source and only the needed permissions. It is what the step by step below does. | Acesso mínimo e nomeado, por exemplo “só leitura em prod”.Minimal, named access, for example “read-only in prod”. |
| 3 · Identity Center3 · Identity Center | Você atribui um permission set a um grupo em cada conta; o serviço cria e gerencia as roles.You assign a permission set to a group in each account; the service creates and manages the roles. | O dia a dia de pessoas (recomendado pela AWS). Passo 5 de Organizations.People’s daily use (recommended by AWS). Step 5 of Organizations. |
O caminho 2 precisa de duas chaves, uma em cada conta. É o desenho que a documentação chama de conta confiável (trusted, onde ficam os usuários) e conta confiante (trusting, onde está o recurso):Path 2 needs two keys, one in each account. It is the design the documentation calls the trusted account (where the users are) and the trusting account (where the resource is):
sts:AssumeRole sobre o ARN da role. Se um ARN de usuário ou role citado no Principal for apagado e recriado, a trust policy precisa ser editada, porque a AWS guarda um ID interno.The root cannot switch roles: the documentation says you cannot switch roles when signed in as root; only as an IAM user, an IAM Identity Center user or a federated identity. Sign in as a non-root admin (see below). Also, the trust policy only lets the account trust; each user or group at the source still needs the sts:AssumeRole permission on the role’s ARN. If a user or role ARN named in Principal is deleted and recreated, the trust policy must be edited, because AWS stores an internal ID.Passo a passoStep by step
Cenário: você tem a conta management (<ID_CONTA_MGMT>, só com o root) e a conta dev (<ID_CONTA_DEV>, criada pelo Organizations). Meta: uma pessoa não-root da management trabalhar na dev com permissão limitada.Scenario: you have the management account (<ID_CONTA_MGMT>, with only the root) and the dev account (<ID_CONTA_DEV>, created through Organizations). Goal: a non-root person in the management account works in dev with limited permissions.
Passo A · Criar uma identidade que não é root na managementStep A · Create a non-root identity in the management account
- Entre na management como root (uma das raras vezes em que ele é necessário aqui) e, em IAM, escolha Users → Create user.Sign in to the management account as root (one of the rare times it is needed here) and, in IAM, choose Users → Create user.
- Em Specify user details → User name, escreva o username (por exemplo
maria). É o nome de login dela. Marque Provide user access to the AWS Management Console e escolha I want to create an IAM user.Under Specify user details → User name, type the username (for examplemaria). It is her sign-in name. Check Provide user access to the AWS Management Console and choose I want to create an IAM user. - Em Console password, escolha Autogenerated password (ou uma senha personalizada) e mantenha marcado User must create a new password at next sign-in (recommended). Clique em Next.Under Console password, choose Autogenerated password (or a custom one) and keep User must create a new password at next sign-in (recommended) checked. Click Next.
- Em Set permissions, escolha Add user to group → Create group. Nome do grupo:
admins; em Permissions policies, marqueAdministratorAccesse clique em Create user group. De volta à lista, marque o grupo novo e clique em Next. Dê permissões ao grupo, não ao usuário.Under Set permissions, choose Add user to group → Create group. Group name:admins; under Permissions policies, checkAdministratorAccessand click Create user group. Back on the list, check the new group and click Next. Give permissions to the group, not the user. - Em Review and create, confira e clique em Create user. Na página Retrieve password, use Download .csv file: o arquivo traz a Connection URL, o username e a senha. Entregue por um canal seguro.On Review and create, check and click Create user. On the Retrieve password page, use Download .csv file: the file has the Connection URL, the username and the password. Hand it over through a secure channel.
- A pessoa entra em
https://<ID_CONTA_MGMT>.signin.aws.amazon.com/console/(ou emconsole.aws.amazon.com, digitando o ID ou alias) com ID da conta, username e senha. A documentação recomenda digitar essa URL no favorito à mão, porque redirecionamentos podem esconder o endereço real.The person signs in athttps://<ID_CONTA_MGMT>.signin.aws.amazon.com/console/(or atconsole.aws.amazon.com, typing the ID or alias) with the account ID, username and password. The documentation recommends typing that URL into the bookmark by hand, because redirects can hide the real address. - Registre o MFA: IAM → Users → maria → Security credentials → Multi-factor authentication (MFA) → Assign MFA device, informe um nome, escolha Authenticator app e digite dois códigos seguidos. A AWS recomenda, quando possível, passkey ou chave de segurança no lugar do app. Depois disso, o root volta para o cofre.Register MFA: IAM → Users → maria → Security credentials → Multi-factor authentication (MFA) → Assign MFA device, enter a name, choose Authenticator app and type two consecutive codes. AWS recommends a passkey or security key instead of the app when possible. After that, the root goes back in the vault.
- (Opcional) Crie um alias para o link ficar legível: IAM → Dashboard → AWS Account → Account Alias → Create (exige
iam:CreateAccountAlias). Só existe um alias por conta, e o link com o ID continua funcionando.(Optional) Create an alias so the link is readable: IAM → Dashboard → AWS Account → Account Alias → Create (requiresiam:CreateAccountAlias). There is only one alias per account, and the link with the ID keeps working.
O mesmo pela CLI, no padrão da documentação (a senha vai num arquivo JSON, não na linha de comando):The same from the CLI, following the documentation’s pattern (the password goes in a JSON file, not on the command line):
aws iam create-user --user-name maria
aws iam create-login-profile --generate-cli-skeleton > create-login-profile.json
# edit the file: {"UserName": "maria", "Password": "<password>", "PasswordResetRequired": true}
aws iam create-login-profile --cli-input-json file://create-login-profile.json
aws iam create-group --group-name admins
aws iam attach-group-policy --group-name admins \
--policy-arn arn:aws:iam::aws:policy/AdministratorAccess
aws iam add-user-to-group --user-name maria --group-name admins
aws iam get-group --group-name admins
aws iam create-account-alias --account-alias minha-empresa-mgmt # optionalA senha precisa respeitar a política de senhas da conta; se não respeitar, o erro é PasswordPolicyViolation.The password must comply with the account’s password policy; if it does not, the error is PasswordPolicyViolation.
Passo B · Criar a role na conta dev (as chaves 1 e 2)Step B · Create the role in the dev account (keys 1 and 2)
Entre na dev como administrador. Como a conta foi criada pelo Organizations, ela tem a OrganizationAccountAccessRole (administrador total, confiando em toda a management) e não tem credenciais de root: contas-membro criadas assim não entram como root nem recuperam a senha, a menos que a recuperação esteja habilitada. Use a role a partir de um usuário não-root da management (ou o permission set de administrador do Identity Center).Sign in to dev as an administrator. Since the account was created by Organizations, it has the OrganizationAccountAccessRole (full administrator, trusting the whole management account) and no root credentials: member accounts created this way cannot sign in as root or recover the password unless recovery is enabled. Use the role from a non-root user of the management account (or the administrator permission set from Identity Center).
- IAM → Roles → Create role. Em Trusted entity type, escolha AWS account → Another AWS account e informe o ID da management (
<ID_CONTA_MGMT>). Isso gera a trust policy: quem pode assumir a role.IAM → Roles → Create role. Under Trusted entity type, choose AWS account → Another AWS account and enter the management account ID (<ID_CONTA_MGMT>). This generates the trust policy: who may assume the role. - Marque Require MFA: só entra quem fez login com MFA. (Não marque Require external ID: ela é para contas de terceiros e impede o uso pelo console.)Check Require MFA: only someone who signed in with MFA gets in. (Do not check Require external ID: it is for third-party accounts and blocks console use.)
- Em permissões, escolha o mínimo necessário (por exemplo
PowerUserAccessouReadOnlyAccess). Por padrão, uma role não tem permissão nenhuma.Under permissions, pick the minimum needed (for examplePowerUserAccessorReadOnlyAccess). By default a role has no permissions at all. - Em Role name, use
PowerUserFromMgmt(até 64 caracteres; diferencia maiúsculas no ARN; não dá para renomear depois). Crie e copie o ARN da role (na página da role, Summary):arn:aws:iam::<ID_CONTA_DEV>:role/PowerUserFromMgmt. A mesma página mostra o link de Switch role já preenchido.Under Role name, usePowerUserFromMgmt(up to 64 characters; case-sensitive in the ARN; cannot be renamed later). Create it and copy the role ARN (on the role page, Summary):arn:aws:iam::<ID_CONTA_DEV>:role/PowerUserFromMgmt. The same page shows the prefilled Switch role link.
A trust policy gerada tem esta forma. O :root no Principal significa “esta conta”, e não o usuário root: quem de fato pode assumir é decidido pelas permissões dentro da management (Passo C).The generated trust policy looks like this. The :root in Principal means “this account”, not the root user: who can actually assume it is decided by the permissions inside the management account (Step C).
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::<ID_CONTA_MGMT>:root" },
"Action": "sts:AssumeRole",
"Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } }
}
]
}# the same from the CLI, with the dev profile (trust.json = the policy above)
aws iam create-role --role-name PowerUserFromMgmt \
--assume-role-policy-document file://trust.json --profile dev
aws iam attach-role-policy --role-name PowerUserFromMgmt \
--policy-arn arn:aws:iam::aws:policy/PowerUserAccess --profile devPasso C · Liberar a permissão na management (a chave 2)Step C · Grant the permission in the management account (key 2)
- Na management: IAM → Policies → Create policy → JSON. Cole a política abaixo, com o ARN da role da dev, e salve como
assume-dev-poweruser.In the management account: IAM → Policies → Create policy → JSON. Paste the policy below, with the dev role’s ARN, and save it asassume-dev-poweruser. - Anexe a política ao grupo
admins(ou a um grupo só para isso). EviteResource: "*": ele permitiria assumir qualquer role de qualquer conta que confie na sua. (Pelo editor visual: Create policy → Visual, serviço STS, ação AssumeRole, recurso Specific → Add ARNs → Other account, com o ID da dev e o nome da role.)Attach the policy to theadminsgroup (or to a group just for this). AvoidResource: "*": it would allow assuming any role in any account that trusts yours. (In the visual editor: Create policy → Visual, service STS, action AssumeRole, resource Specific → Add ARNs → Other account, with the dev ID and the role name.)
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::<ID_CONTA_DEV>:role/PowerUserFromMgmt"
}
}Passo D · Usar a role (a etapa 3 do diagrama)Step D · Use the role (step 3 of the diagram)
- Console. A pessoa entra na management, clica no nome dela na barra superior e escolhe Switch role. Em Account, o ID (ou alias) da dev; em Role,
PowerUserFromMgmt; opcionalmente um Display name e uma cor (por exemplo vermelho para prod). Switch Role. Ou usa o linkhttps://signin.aws.amazon.com/switchrole?account=<ID_CONTA_DEV>&roleName=PowerUserFromMgmt. Para voltar: o nome de exibição na barra → Switch back.Console. The person signs in to the management account, clicks their name in the top bar and chooses Switch role. Under Account, the dev ID (or alias); under Role,PowerUserFromMgmt; optionally a Display name and a color (for example red for prod). Switch Role. Or uses the linkhttps://signin.aws.amazon.com/switchrole?account=<ID_CONTA_DEV>&roleName=PowerUserFromMgmt. To go back: the display name in the bar → Switch back. - CLI. Um perfil que usa as credenciais da management como origem e assume a role. Como a trust policy exige MFA, o perfil precisa do
mfa_serial(o ARN do dispositivo de MFA do usuário); a CLI pede o código de 6 dígitos ao usar. Semmfa_serial, a chamada falha com AccessDenied.CLI. A profile that uses the management credentials as the source and assumes the role. Because the trust policy requires MFA, the profile needsmfa_serial(the ARN of the user’s MFA device); the CLI asks for the 6-digit code on use. Withoutmfa_serial, the call fails with AccessDenied.
# ~/.aws/config
[profile mgmt-user]
region = sa-east-1 # the IAM user's access keys (aws configure --profile mgmt-user)
[profile dev-from-mgmt]
role_arn = arn:aws:iam::<ID_CONTA_DEV>:role/PowerUserFromMgmt
source_profile = mgmt-user
mfa_serial = arn:aws:iam::<ID_CONTA_MGMT>:mfa/maria
role_session_name = maria-dev
region = sa-east-1aws sts get-caller-identity --profile dev-from-mgmt
# Enter MFA code for arn:aws:iam::<ID_CONTA_MGMT>:mfa/maria:
# "Account": "<ID_CONTA_DEV>"
# "Arn": "arn:aws:sts::<ID_CONTA_DEV>:assumed-role/PowerUserFromMgmt/maria-dev"
# or by hand, to see the temporary credentials:
aws sts assume-role --role-arn arn:aws:iam::<ID_CONTA_DEV>:role/PowerUserFromMgmt \
--role-session-name maria-dev --profile mgmt-user \
--serial-number arn:aws:iam::<ID_CONTA_MGMT>:mfa/maria --token-code 123456Repare no ARN devolvido: assumed-role, a conta dev e o nome da sessão (role_session_name), que também aparece nos logs do CloudTrail. É a prova de que a pessoa opera na dev. Só um conjunto de permissões vale por vez: ao assumir a role, ela deixa de lado as permissões do usuário e fica com as da role. A sessão da CLI dura 1 hora, salvo se você pedir outra duração (--duration-seconds, até o máximo configurado na role).Note the returned ARN: assumed-role, the dev account and the session name (role_session_name), which also shows up in CloudTrail logs. It is proof the person operates in dev. Only one set of permissions is in effect at a time: when assuming the role, they set aside the user’s permissions and keep the role’s. The CLI session lasts 1 hour, unless you request another duration (--duration-seconds, up to the role’s configured maximum).
Este perfil usa as chaves de um usuário IAM como origem. Para quem entra pelo Identity Center, não encadeie roles: atribua um permission set na conta dev (caminho 3).This profile uses an IAM user’s keys as the source. For people who sign in through Identity Center, do not chain roles: assign a permission set in the dev account (path 3).
OrganizationAccountAccessRole é preciso entrar como um usuário da management com permissão sts:AssumeRole sobre ela. Por isso, no Passo 5b de Organizations, entre como esse usuário não-root.The steps above use root only to create the first administrator. According to the Organizations documentation, to use OrganizationAccountAccessRole you must sign in as a user of the management account with the sts:AssumeRole permission on it. So, in Step 5b of Organizations, sign in as that non-root user.O account name serve para entrar na conta?Is the account name used to sign in?
Por que só criar a role na dev não basta?Why is creating the role in dev not enough?
O que significa ARN e onde ele aparece?What does ARN stand for and where does it appear?
- IAM: Identify AWS resources with Amazon Resource Names (ARNs)
- IAM: Create an IAM user in your AWS account
- IAM: Using an alias for your AWS account ID
- IAM and AWS STS quotas (name requirements)
- IAM: Create an IAM user for emergency access (console and CLI steps)
- IAM: How IAM users sign in to AWS
- IAM: Creating an account alias
- IAM: AWS account root user
- Account Management: Update your AWS account name
- IAM: Assign a virtual MFA device
- IAM Identity Center: Add users to your Identity Center directory
- Organizations: Accessing member accounts · OrganizationAccountAccessRole
- IAM: Switch from a user to an IAM role (console)
- AWS CLI: Using an IAM role in the AWS CLI
- IAM: Create a role to give permissions to an IAM user
- IAM: Grant a user permissions to switch roles
- IAM tutorial: Delegate access across AWS accounts using IAM roles
Os passos, as opções do console e os comandos seguem a documentação citada; nada foi executado numa conta real.The steps, console options and commands follow the cited documentation; nothing was run on a real account.
Orçamento e cobrançaBudget & billing
Saber quanto você está gastando, ser avisado antes de gastar demais, e entender a fatura — para uma conta só ou para uma organização inteira.Knowing how much you are spending, being warned before you overspend, and understanding the bill — for a single account or a whole organization.
AWS Billing and Cost ManagementAWS Billing and Cost Management
O painel central: fatura atual, histórico, métodos de pagamento e créditos.The central console: current bill, history, payment methods and credits.AWS Budgets
Você define um limite (de custo, de uso ou de cobertura de Savings Plan) e a AWS avisa por e-mail/SNS quando ultrapassar, ou está previsto ultrapassar.You set a limit (cost, usage or Savings Plan coverage) and AWS warns you by email/SNS when it is crossed, or forecast to be crossed.Cost Explorer
Gráficos do gasto ao longo do tempo, filtrados por serviço, conta, tag e muito mais. Até 12 meses de histórico, de graça.Charts of spend over time, filtered by service, account, tag and more. Up to 12 months of history, free.Fatura consolidadaConsolidated billing
Numa Organization, a management account recebe UMA fatura com o total de todas as contas-membro.In an Organization, the management account gets ONE bill totalling every member account.Passo a passo: o primeiro orçamento com alertaStep by step: your first budget with an alert
A ideia em uma frase: um Budget não impede gasto nenhum sozinho — ele só avisa. Para realmente travar, combine com uma SCP ou automação (veja o aviso mais abaixo).The idea in one sentence: a Budget does not block any spend by itself — it only warns. To actually enforce a limit, combine it with an SCP or automation (see the warning below).
Passo 1 · Criar um Budget de custo mensalStep 1 · Create a monthly cost budget
- Abra Billing and Cost Management → Budgets → Create a budget e escolha Cost budget.Open Billing and Cost Management → Budgets → Create a budget and choose Cost budget.
- Defina um valor mensal (por exemplo, US$ 20 enquanto estiver estudando) e o período (recorrente, mês a mês).Set a monthly amount (for example, US$ 20 while you are learning) and the period (recurring, month by month).
- Adicione alertas em vários limiares: por exemplo, 50% do real (já gasto) e 100% do previsto (forecast) — o previsto avisa ANTES de você realmente estourar.Add alerts at several thresholds: for example, 50% of actual (already spent) and 100% of forecasted — the forecast one warns you BEFORE you actually go over.
- Informe um e-mail (ou um tópico SNS, se quiser integrar com Slack/chat depois) para receber o alerta.Enter an email (or an SNS topic, if you want to integrate with Slack/chat later) to receive the alert.
Passo 2 · Ativar o alarme clássico de cobrança (opcional, mas simples)Step 2 · Enable the classic billing alarm (optional, but simple)
- Em Billing and Cost Management → Billing preferences, marque Receive Billing Alerts.Under Billing and Cost Management → Billing preferences, check Receive Billing Alerts.
- No CloudWatch, sempre na região
us-east-1(é onde a métrica de cobrança vive, mesmo que seus recursos estejam em outra região), crie um alarme sobre a métricaEstimatedCharges.In CloudWatch, always in theus-east-1region (that is where the billing metric lives, even if your resources are elsewhere), create an alarm on theEstimatedChargesmetric.
O mesmo pelo terminalThe same from the terminal
# cria um budget de custo mensal de US$ 20, com alerta em 80% do real
aws budgets create-budget --account-id 111111111111 --budget '{
"BudgetName": "orcamento-mensal",
"BudgetLimit": {"Amount": "20", "Unit": "USD"},
"TimeUnit": "MONTHLY",
"BudgetType": "COST"
}' --notifications-with-subscribers '[{
"Notification": {"NotificationType": "ACTUAL", "ComparisonOperator": "GREATER_THAN", "Threshold": 80},
"Subscribers": [{"SubscriptionType": "EMAIL", "Address": "voce@exemplo.com"}]
}]'
# alarme clássico de cobrança (rode em us-east-1)
aws cloudwatch put-metric-alarm --alarm-name cobranca-acima-de-20usd \
--metric-name EstimatedCharges --namespace AWS/Billing --statistic Maximum \
--period 21600 --threshold 20 --comparison-operator GreaterThanThreshold \
--dimensions Name=Currency,Value=USD --evaluation-periods 1 \
--alarm-actions arn:aws:sns:us-east-1:111111111111:alerta-de-custo --region us-east-1Cost allocation tags: o custo, explicado por etiquetaCost allocation tags: cost, explained by tag
Tags como Project=loja ou Environment=dev nos seus recursos viram colunas no Cost Explorer depois de ativadas em Billing → Cost allocation tags. É a forma de responder “quanto cada projeto/time/ambiente está custando?” sem precisar de uma conta separada para cada um.Tags like Project=store or Environment=dev on your resources become columns in Cost Explorer once activated under Billing → Cost allocation tags. This is how you answer “how much does each project/team/environment cost?” without needing a separate account for each.
A management account vê e paga o total; cada conta-membro vê só o próprio gasto em Billing → Bills, a não ser que a management libere mais acesso. Budgets podem ser criados tanto na management (cobrindo tudo ou uma conta específica via filtro de LINKED_ACCOUNT) quanto dentro de cada conta-membro, para o próprio gasto.The management account sees and pays the total; each member account sees only its own spend under Billing → Bills, unless the management account grants more access. Budgets can be created either in the management account (covering everything, or one account via a LINKED_ACCOUNT filter) or inside each member account, for its own spend.
- Por padrão, estourar um Budget só manda um e-mail — os recursos continuam rodando e cobrando.By default, going over a Budget only sends an email — resources keep running and billing.
- Para um limite que realmente BLOQUEIA, combine com uma SCP que nega ações caras numa conta de estudo, ou uma automação (ex.: uma função Lambda disparada pelo alerta do Budget, que para instâncias).For a limit that actually BLOCKS, combine it with an SCP that denies expensive actions on a study account, or automation (e.g. a Lambda function triggered by the Budget alert, which stops instances).
- Por padrão, só o root user (ou um usuário/role com a permissão explícita) vê a página de Billing. Ative IAM user and role access to Billing em Account settings se quiser dar acesso de leitura a outros usuários IAM.By default, only the root user (or a user/role with explicit permission) sees the Billing page. Enable IAM user and role access to Billing in Account settings if you want to give other IAM users read access.
Um alerta de Budget em 100% impede que você continue gastando?Does a 100% Budget alert stop you from spending further?
Por que o alarme clássico de cobrança precisa ser criado em us-east-1?Why must the classic billing alarm be created in us-east-1?
EstimatedCharges do CloudWatch só existe nessa região, independentemente de onde seus recursos rodam.Because CloudWatch’s EstimatedCharges metric only exists in that region, regardless of where your resources run.Mapa da arquiteturaArchitecture map
Um caminho típico de uma requisição. Clique em cada peça para entender o papel dela. Cada seção abaixo traz os links da documentação oficial.A typical request path. Click each piece to understand its role. Each section below lists its official documentation links.
IAM
Identity and Access Management: o serviço que controla quem se autentica (login) e quem está autorizado (permissões) a usar os recursos da AWS.Identity and Access Management: the service that controls who is authenticated (signed in) and who is authorized (has permissions) to use AWS resources.
Root user
Identidade criada junto com a conta, com acesso total. A AWS recomenda não usá-la no dia a dia. Algumas tarefas exigem o root, e a documentação lista quais.The identity created with the account, with complete access. AWS recommends not using it for everyday tasks. A few tasks do require root, and the docs list them.User
Identidade com credenciais de longo prazo (senha, access keys). A AWS recomenda usá-lo só quando federação e roles não servem, por exemplo em ferramentas de terceiros que não suportam o IAM Identity Center.An identity with long-term credentials (password, access keys). AWS recommends it only when federation and roles do not fit, for example third-party tools that do not support IAM Identity Center.User Group
Coleção de usuários IAM: anexe a política ao grupo e todos herdam. Um usuário pode estar em vários grupos. Grupos não podem ser aninhados e não podem serPrincipal em uma política.A collection of IAM users: attach the policy to the group and everyone inherits it. A user can be in many groups. Groups cannot be nested and cannot be a Principal in a policy.Role
Identidade sem credenciais próprias de longo prazo, feita para ser assumida por quem precisar (pessoas, outras contas, serviços AWS ou IdPs externos). Ao assumir, você recebe credenciais temporárias da sessão.An identity with no long-term credentials of its own, meant to be assumed by whoever needs it (people, other accounts, AWS services or external IdPs). On assuming it, you get temporary session credentials.Fluxo comum com gruposCommon flow with groups
Anatomia de uma políticaAnatomy of a policy
Uma política é um documento JSON. Exemplo de permissão para enviar (push) imagens a um repositório do ECR, com placeholders no lugar de IDs reais:A policy is a JSON document. Example permission to push images to an ECR repository, with placeholders instead of real IDs:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ecr:GetAuthorizationToken",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload",
"ecr:PutImage"
],
"Resource": "arn:aws:ecr:us-east-1:111122223333:repository/meu-repositorio"
}
]
}| Campo / Field | SignificadoMeaning |
|---|---|
Version | Versão da linguagem de política. Os exemplos da AWS usam 2012-10-17.Policy language version. AWS examples use 2012-10-17. |
Effect | Allow ou Deny.Allow or Deny. |
Action | As operações da API do serviço. Normalmente é preciso listar várias ações.The service API operations. You usually need to list several actions. |
Resource | Sobre quais recursos vale, identificados pelo ARN (Amazon Resource Name).Which resources it covers, identified by ARN (Amazon Resource Name). |
Condition | Opcional. Restringe quando a permissão vale (ex.: exigir TLS, limitar a um IP).Optional. Restricts when the permission applies (e.g. require TLS, limit to an IP). |
Deny explícito (em política de identidade, SCP ou RCP) sobrepõe qualquer Allow. Em contas de uma organização, a permissão efetiva é a interseção entre as políticas IAM e as SCPs.An explicit Deny (in an identity policy, SCP or RCP) overrides any Allow. In accounts of an organization, effective permission is the intersection of IAM policies and SCPs.Quando usarWhen to use
Roles para serviços e CI/CD; grupos + políticas quando houver usuários IAM; Access Analyzer para revisar permissões.Roles for services and CI/CD; groups + policies when IAM users exist; Access Analyzer to review permissions.Quando evitarWhen to avoid
Usuário IAM com access key de longo prazo para pessoas ou para workloads que poderiam usar role; uso do root no dia a dia.IAM users with long-term access keys for people, or for workloads that could use a role; everyday use of root.Por que usar grupos em vez de políticas direto no usuário?Why use groups instead of attaching policies directly to users?
Qual a diferença entre User e Role?What is the difference between a User and a Role?
IAM Identity Center
Login único (SSO) para a força de trabalho: pessoas entram uma vez e acessam várias contas AWS e aplicações, com credenciais temporárias.Single sign-on (SSO) for your workforce: people sign in once and reach many AWS accounts and applications, using temporary credentials.
O IAM Identity Center (antigo AWS Single Sign-On) conecta o seu provedor de identidade existente, sincronizando usuários e grupos, ou permite criar e gerenciar usuários direto nele. Para acesso a contas, a AWS o recomenda como forma de dar acesso a pessoas. Não há cobrança adicional pelo IAM Identity Center; você paga pelos recursos que usa.IAM Identity Center (formerly AWS Single Sign-On) connects your existing identity provider, syncing users and groups, or lets you create and manage users directly in it. For account access, AWS recommends it as the way to give access to people. There is no additional charge for IAM Identity Center; you pay for the resources you use.
Instância da organizaçãoOrganization instance
É a melhor prática e a única que permite gerenciar acesso a contas AWS. Fica na management account do Organizations.It is the best practice and the only one that lets you manage access to AWS accounts. It lives in the Organizations management account.Permission set
Modelo que reúne uma ou mais políticas IAM. Ao atribuí-lo a um usuário ou grupo em uma conta, o Identity Center cria e mantém uma role IAM nela e anexa as políticas.A template grouping one or more IAM policies. When you assign it to a user or group in an account, Identity Center creates and maintains an IAM role there and attaches the policies.Credenciais temporáriasTemporary credentials
A duração da sessão da conta vem do permission set (padrão de 1 hora, máximo de 12 horas). A sessão no portal tem outro limite (padrão de 8 horas, máximo de 90 dias).Account session length comes from the permission set (default 1 hour, maximum 12 hours). The portal session has its own limit (default 8 hours, maximum 90 days).Permission sets na práticaPermission sets in practice
- Permission sets exigem a instância da organização com multi-account permissions habilitado (padrão ao criar a instância).Permission sets require the organization instance with multi-account permissions enabled (default when the instance is created).
- Aceitam políticas gerenciadas pela AWS, gerenciadas pelo cliente, inline e de função de trabalho, além de uma permissions boundary.They accept AWS managed, customer managed, inline and job-function policies, plus a permissions boundary.
- Você pode atribuir mais de um permission set à mesma pessoa. A documentação recomenda escolher, no portal, o mais restritivo que resolve a tarefa, em vez de sempre usar administrador.You can assign more than one permission set to the same person. The docs recommend choosing, in the portal, the most restrictive one that does the job rather than always using admin.
- Exemplo da documentação:
PowerUserAccessnão permite gerenciar usuários e grupos IAM, ao contrário deAdministratorAccess.Docs example:PowerUserAccessdoes not allow managing IAM users and groups, unlikeAdministratorAccess. - Precisa de recursos além do que permission sets oferecem (trust policy customizada, tags de role)? Veja o account access manager do IAM.Need more than permission sets offer (custom trust policy, role tags)? See IAM's account access manager.
Uso no terminalUsing it in the terminal
aws configure sso # cria o perfil (sso-session, conta e permission set)
aws sso login --profile meu-perfil
aws sts get-caller-identity --profile meu-perfil
aws sso logoutQuando as credenciais do SSO expiram, é preciso fazer login de novo. Veja também a seção AWS CLI.When SSO credentials expire you must sign in again. See also the AWS CLI section.
Quando usarWhen to use
Pessoas que acessam várias contas (staging, prod, tooling); quando se quer um único ponto de login e permissões centralizadas por perfil de trabalho.People who access several accounts (staging, prod, tooling); when you want a single sign-in point and permissions centralized per job role.Quando evitarWhen to avoid
Para pipelines de CI/CD e workloads (use roles com OIDC); instâncias de conta para gerenciar acesso a várias contas (só a instância da organização faz isso).For CI/CD pipelines and workloads (use roles with OIDC); account instances to manage access across accounts (only the organization instance does that).O que o Identity Center cria na conta quando você atribui um permission set?What does Identity Center create in the account when you assign a permission set?
OIDC & GitHub Actions
Federação OIDC: um serviço externo (como o GitHub Actions) prova quem é com um token e troca por credenciais temporárias da AWS, sem guardar access keys.OIDC federation: an external service (such as GitHub Actions) proves who it is with a token and exchanges it for temporary AWS credentials, with no stored access keys.
A AWS recomenda não guardar credenciais de longo prazo em aplicações fora da AWS. Com OIDC, o provedor emite um JSON Web Token (JWT); a AWS valida o token e devolve credenciais temporárias de uma role IAM. A operação da API é AssumeRoleWithWebIdentity (AWS STS).AWS recommends not storing long-term credentials in applications outside AWS. With OIDC, the provider issues a JSON Web Token (JWT); AWS validates it and returns temporary credentials for an IAM role. The API operation is AssumeRoleWithWebIdentity (AWS STS).
1 · Criar o provedor OIDC no IAM1 · Create the OIDC provider in IAM
- A URL do provedor começa com
https://, não tem porta e não tem query string. É sensível a maiúsculas e deve ser única na conta. Para o GitHub Actions:https://token.actions.githubusercontent.com.The provider URL starts withhttps://, has no port and no query string. It is case-sensitive and must be unique in the account. For GitHub Actions:https://token.actions.githubusercontent.com. - O campo Audience (
aud) deve bater com o valor que o provedor coloca no token. Para o GitHub Actions no console, ésts.amazonaws.com.The Audience (aud) must match the value the provider puts in the token. For GitHub Actions in the console, it issts.amazonaws.com. - A AWS verifica o certificado do endpoint JWKS com sua biblioteca de CAs confiáveis; thumbprints só entram como alternativa quando o certificado não é de uma CA conhecida.AWS verifies the JWKS endpoint certificate against its library of trusted CAs; thumbprints are only a fallback when the certificate is not from a known CA.
- O provedor OIDC usado na trust policy precisa estar na mesma conta da role.The OIDC provider used in a trust policy must be in the same account as the role.
2 · Trust policy da role2 · The role's trust policy
O GitHub é um provedor OIDC compartilhado entre muitos clientes. Por isso o IAM exige que a trust policy avalie a condição token.actions.githubusercontent.com:sub, e o valor não pode ser só um curinga. Sem essa restrição, workflows de repositórios fora do seu controle poderiam assumir a role. Exemplo restrito a um repositório e uma branch:GitHub is an OIDC provider shared across many customers. So IAM requires the trust policy to evaluate the condition token.actions.githubusercontent.com:sub, and the value cannot be only a wildcard. Without that restriction, workflows from repositories outside your control could assume the role. Example limited to one repository and one branch:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::111122223333:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
"token.actions.githubusercontent.com:sub": "repo:MINHA_ORG/MEU_REPO:ref:refs/heads/main"
}
}
}
]
}O claim sub do GitHubThe GitHub sub claim
| Contexto do jobJob context | sub |
|---|---|
| BranchBranch | repo:ORG/REPO:ref:refs/heads/BRANCH |
| Tag | repo:ORG/REPO:ref:refs/tags/TAG |
| Environment | repo:ORG/REPO:environment:NOME |
| Pull request | repo:ORG/REPO:pull_request |
- Se o job referencia um environment, o
subusa o formato de environment (ele tem prioridade). Pull request só aparece quando não há environment. Branch e tag valem quando não há environment nem pull request.If the job references an environment, thesubuses the environment format (it takes priority). Pull request only appears when there is no environment. Branch and tag apply when there is neither environment nor pull request. - Para restringir repositório, use
StringLikecomrepo:ORG/REPO:*. Para branch, use o valor exato da branch. Para environment, userepo:ORG/REPO:environment:producaoe proteja o environment com regras de deploy (quais branches e tags podem fazer deploy nele), como a AWS e o GitHub recomendam.To restrict the repository, useStringLikewithrepo:ORG/REPO:*. For a branch, use the exact branch value. For an environment, userepo:ORG/REPO:environment:productionand protect the environment with deployment rules (which branches and tags may deploy to it), as AWS and GitHub recommend. - Repositórios novos podem emitir o formato imutável, que inclui IDs:
repo:ORG@ORG_ID/REPO@REPO_ID:.... A documentação da action avisa que, se a trust policy usa o formato antigo e o repositório emite o novo, o assume-role falha com "Not authorized". Confira o formato que o seu repositório emite.New repositories may issue the immutable format, which includes IDs:repo:ORG@ORG_ID/REPO@REPO_ID:.... The action's docs warn that if the trust policy uses the old format and the repository issues the new one, assume-role fails with "Not authorized". Check which format your repository issues. - Dois-pontos dentro de valores aparecem como
%3Anosub.Colons inside values appear as%3Ain thesub.
E o workflow? O arquivo completo (um para develop e main), os environments do GitHub, o build da imagem, o ECR e a troca no ECS estão na nota GitHub para AWS: OIDC, Docker, ECR e ECS. Aqui ficam só os conceitos da AWS. A action usada é a aws-actions/configure-aws-credentials e o job precisa de permissions: id-token: write.And the workflow? The full file (one for develop and main), the GitHub environments, the image build, ECR and the ECS swap are in the GitHub to AWS: OIDC, Docker, ECR and ECS note. This page keeps only the AWS concepts. The action used is aws-actions/configure-aws-credentials and the job needs permissions: id-token: write.
- Uma role por ambiente (staging, prod) e, idealmente, cada uma na sua própria conta, com
subdiferente.One role per environment (staging, prod) and ideally each in its own account, with a differentsub. - A trust policy de uma role OIDC só pode ter um tipo de provedor; para vários IdPs, crie uma role para cada.An OIDC role's trust policy supports only one provider; for several IdPs, create one role each.
- O IAM aceita o token por até 5 minutos além do
exp, por causa de diferença de relógio.IAM accepts the token up to 5 minutes past itsexp, to allow for clock skew.
Quando usarWhen to use
CI/CD que precisa chamar a AWS (push no ECR, deploy no ECS, sync no S3) sem access keys guardadas como secret.CI/CD that needs to call AWS (ECR push, ECS deploy, S3 sync) without access keys stored as secrets.Quando evitarWhen to avoid
Trust policy comsub aberto (ex.: repo:ORG/* em produção); pessoas fazendo login (prefira Identity Center).A trust policy with an open sub (e.g. repo:ORG/* in production); people signing in (prefer Identity Center).Por que a condição em sub é obrigatória para o GitHub?Why is the sub condition mandatory for GitHub?
Que permissão o job precisa para pedir o token?What permission does the job need to request the token?
permissions: id-token: write.permissions: id-token: write.- OIDC federation (IAM)
- Create an OpenID Connect (OIDC) identity provider in IAM
- Create a role for OpenID Connect federation (inclui a seção sobre GitHub)
- Identity-provider controls for shared OIDC providers
- aws-actions/configure-aws-credentials (repositório oficial da action)
- GitHub Docs: OpenID Connect reference (formatos de sub)
Os formatos de sub e o comportamento do GitHub vêm da documentação do GitHub, não da AWS. Revise-os na fonte antes de aplicar em produção.The sub formats and GitHub behavior come from GitHub's docs, not AWS. Review them at the source before applying to production.
AWS CLI (Linux)
Controle serviços da AWS pela linha de comando. Esta página usa a versão 2 do AWS CLI.Control AWS services from the command line. This page covers AWS CLI version 2.
InstalarInstall
O script de instalação é o método recomendado pela documentação. Por padrão ele instala só para o usuário atual, em $HOME/.local. O método com sudo e --system instala para todos.The install script is the method the docs recommend. By default it installs for the current user only, under $HOME/.local. The sudo + --system form installs for everyone.
curl -fsSL https://awscli.amazonaws.com/v2/install.sh | bash
aws --versionsnap. No Amazon Linux, remova antes o pacote awscli do yum se quiser a versão mais recente.Piping a downloaded script into the shell is your call. The docs also offer the .zip installer, with optional GPG signature verification, and a snap package. On Amazon Linux, first remove the yum awscli package if you want the latest version.Atualizar e removerUpdate and remove
aws updateEm instalações feitas pelo script ou pelos instaladores oficiais, o comando acima atualiza o CLI. Se foi instalado para todos os usuários, rode-o com sudo. Para desinstalar, siga a página oficial de desinstalação (link abaixo).For installs done with the script or the official installers, the command above updates the CLI. If it was installed for all users, run it with sudo. To uninstall, follow the official uninstall page (link below).
--update e removia arquivos à mão. A documentação atual traz o comando aws update. Os passos manuais de remoção foram trocados por link para a página oficial.The old note said to repeat the install command with --update and removed files by hand. The current docs have the aws update command. The manual removal steps were replaced by a link to the official page.Quem sou eu? e loginWho am I? and login
aws sts get-caller-identity --profile meu-perfilMostra a identidade (conta e ARN) das credenciais em uso. Para pessoas, configure o login com IAM Identity Center (aws configure sso e aws sso login).Shows the identity (account and ARN) of the credentials in use. For people, set up sign-in with IAM Identity Center (aws configure sso and aws sso login).
ECR — autenticação com um token temporário (válido por 12 horas) para o Docker:authentication with a temporary token (valid for 12 hours) for Docker:
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-1.amazonaws.comQuando usarWhen to use
Automação, scripts, diagnóstico rápido e tarefas repetíveis que o console não resolve bem.Automation, scripts, quick diagnostics and repeatable tasks the console does not handle well.- Installing or updating to the latest version of the AWS CLI
- Uninstalling the AWS CLI version 2 (referenciada pela página de instalação; não lida integralmentereferenced by the install page; not read in full)
- Configuring IAM Identity Center authentication with the AWS CLI
- ECR: Pushing a Docker image
VPC
Amazon Virtual Private Cloud: uma rede virtual logicamente isolada, parecida com a de um data center tradicional, onde você lança seus recursos AWS.Amazon Virtual Private Cloud: a logically isolated virtual network, similar to a traditional data center network, where you launch your AWS resources.
ALB · NAT Gateway
Aplicação (ECS/EC2)Application (ECS/EC2)
Banco de dados (RDS)Database (RDS)
ALB · NAT Gateway
Aplicação (ECS/EC2)Application (ECS/EC2)
Banco de dados (RDS)Database (RDS)
Os blocos CIDR acima são apenas um exemplo didático de desenho; a AWS não define um padrão obrigatório.The CIDR blocks above are only a teaching example of a layout; AWS does not mandate a standard.
Peças principaisMain pieces
- Subnet: faixa de IPs da VPC que fica em uma única zona de disponibilidade.a range of VPC IP addresses living in a single Availability Zone.
- Route table: conjunto de rotas (destino + alvo) que decide para onde vai o tráfego de uma subnet ou gateway. Todo VPC nasce com uma main route table, e você pode criar outras.a set of routes (destination + target) deciding where a subnet's or gateway's traffic goes. Every VPC starts with a main route table, and you can create more.
- Internet gateway: conecta a VPC à internet.connects the VPC to the internet.
- NAT gateway, VPC endpoint, peering, transit gateway, VPN, Flow Logs completam o quadro (veja abaixo e na página oficial).complete the picture (see below and the official page).
- Cada Region já tem uma VPC default, pronta para uso. Não há cobrança pela VPC em si, mas há por alguns componentes, como NAT gateways e IPv4 públicos.Each Region already has a default VPC, ready to use. There is no charge for the VPC itself, but there is for some components, such as NAT gateways and public IPv4 addresses.
Subnets e CIDRSubnets and CIDR
O bloco de uma subnet pode ser igual ao da VPC (uma subnet só) ou parte dele. Subnets da mesma VPC não podem se sobrepor. O tamanho permitido para IPv4 vai de /28 a /16. Em cada subnet, os quatro primeiros IPs e o último não estão disponíveis (rede, roteador da VPC, DNS, uso futuro e broadcast): são 5 reservados.A subnet's block can equal the VPC's (a single subnet) or be part of it. Subnets in the same VPC cannot overlap. The allowed IPv4 size ranges from /28 to /16. In each subnet, the first four IPs and the last one are unavailable (network, VPC router, DNS, future use and broadcast): that is 5 reserved.
Subnets públicas e privadasPublic and private subnets
PúblicaPublic
A route table tem uma rota para o internet gateway. Abriga o que precisa ser alcançado de fora: load balancer e NAT gateway.The route table has a route to the internet gateway. Home to what must be reached from outside: the load balancer and the NAT gateway.PrivadaPrivate
Sem rota para o internet gateway. Para sair para a internet, usa um NAT gateway; para falar com serviços AWS, pode usar VPC endpoints. Boa para aplicação e banco de dados.No route to the internet gateway. To reach the internet it uses a NAT gateway; to talk to AWS services it can use VPC endpoints. Good for application and database.| Route tableRoute table | Destination | Target |
|---|---|---|
| Subnet públicaPublic subnet | 10.0.0.0/16 | local |
| Subnet públicaPublic subnet | 0.0.0.0/0 | igw-… |
| Subnet privadaPrivate subnet | 10.0.0.0/16 | local |
| Subnet privadaPrivate subnet | 0.0.0.0/0 | nat-… |
A rota local permite que as subnets da VPC conversem entre si; quem restringe quem fala com quem são os Security Groups. Um RDS "publicamente acessível" exige que todas as subnets do seu DB subnet group tenham internet gateway; o recomendado para bancos é subnet privada (veja RDS).The local route lets the VPC's subnets talk to each other; what restricts who talks to whom is Security Groups. A "publicly accessible" RDS requires every subnet in its DB subnet group to have an internet gateway; for databases a private subnet is the usual choice (see RDS).
NAT Gateway
Permite que instâncias em subnet privada iniciem conexões para fora da VPC, enquanto serviços externos não conseguem iniciar conexão com elas. O NAT gateway público (padrão) fica numa subnet pública, exige um Elastic IP e roteia o tráfego para o internet gateway. O privado serve para outras VPCs ou redes on-premises (via transit gateway ou virtual private gateway) e não aceita Elastic IP. Existe também o NAT gateway regional, com expansão multi-AZ automática.Lets instances in a private subnet initiate connections out of the VPC, while external services cannot start connections to them. The public NAT gateway (default) lives in a public subnet, needs an Elastic IP and routes traffic to the internet gateway. The private one is for other VPCs or on-premises networks (through a transit gateway or virtual private gateway) and does not accept an Elastic IP. There is also a regional NAT gateway with automatic multi-AZ expansion.
VPC endpoints
Conectam a VPC a serviços AWS de forma privada, sem internet gateway nem NAT. O tráfego fica na rede da AWS.Connect the VPC to AWS services privately, with no internet gateway or NAT. Traffic stays on the AWS network.
Gateway endpoint
Para S3 e DynamoDB. Não usa AWS PrivateLink; o tráfego é direcionado por rota.For S3 and DynamoDB. Does not use AWS PrivateLink; traffic is directed by route.Interface endpoint
Usa AWS PrivateLink: cria uma interface de rede (com IP privado) em cada subnet escolhida e o tráfego é resolvido por DNS. Aceita uma endpoint policy para controlar quem o usa.Uses AWS PrivateLink: creates a network interface (with a private IP) in each chosen subnet and traffic is resolved through DNS. Accepts an endpoint policy to control who uses it.Exemplo: instâncias sem IP público podem usar o Session Manager com VPC endpoints do Systems Manager (veja Systems Manager).Example: instances without a public IP can use Session Manager with Systems Manager VPC endpoints (see Systems Manager).
Quando usarWhen to use
Sempre que houver mais de um ambiente ou camada: borda (ALB) em subnets públicas, aplicação e banco em privadas, em pelo menos duas AZs.Whenever there is more than one environment or tier: edge (ALB) in public subnets, application and database in private ones, in at least two AZs.Quando evitarWhen to avoid
Colocar instâncias de aplicação com IP público só por conveniência; usar NAT gateway quando um endpoint resolveria; CIDRs sobrepostos se houver planos de peering ou transit gateway.Giving application instances public IPs just for convenience; using a NAT gateway when an endpoint would do; overlapping CIDRs if peering or a transit gateway is planned.O que torna uma subnet "pública"?What makes a subnet "public"?
0.0.0.0/0 para o internet gateway.Its route table has a 0.0.0.0/0 route to the internet gateway.Onde fica o NAT gateway público?Where does the public NAT gateway live?
Quantos IPs utilizáveis tem uma subnet /24?How many usable IPs does a /24 subnet have?
- What is Amazon VPC?
- Subnet CIDR blocks
- Configure route tables
- NAT gateways
- AWS PrivateLink concepts (VPC endpoints)
- EC2 instance IP addressing (otimização de IPv4 público)
- RDS: Working with a DB instance in a VPC
Removido por falta de fonte nas páginas lidas: valores padrão de DNS hostnames/DNS resolution e a afirmação de que a rota local "não pode ser deletada". Reformulado: "10.0.0.0/16 é o IPv4 comum" virou apenas um exemplo; "subnet privada nunca fala com a internet" passou a mencionar NAT gateway e VPC endpoints.Removed for lack of a source in the pages read: default values for DNS hostnames/DNS resolution and the claim that the local route "cannot be deleted". Reworded: "10.0.0.0/16 is the common IPv4" became only an example; "a private subnet never talks to the internet" now mentions NAT gateways and VPC endpoints.
Security Groups & Prefix Lists
Security group: firewall virtual que controla o tráfego que pode chegar e sair dos recursos associados a ele. Prefix list: um conjunto de CIDRs reutilizável nas regras.Security group: a virtual firewall controlling the traffic allowed to reach and leave the resources it is associated with. Prefix list: a reusable set of CIDRs for your rules.
Como funcionaHow it works
- Só existem regras de permissão (allow), não de bloqueio. Um SG novo não tem regra inbound, então nenhum tráfego de entrada é permitido até você adicionar.Rules are allow only, no deny. A new SG has no inbound rules, so no inbound traffic is allowed until you add some.
- Um SG novo vem com uma regra outbound que libera toda a saída. Se você remover e não houver regras de saída, nenhuma saída é permitida.A new SG comes with an outbound rule allowing all outbound traffic. If you remove it and have no outbound rules, no outbound traffic is allowed.
- Stateful: a resposta a um tráfego permitido é liberada independentemente das regras do outro sentido. Por isso o outbound de um banco pode ficar vazio e ele ainda responde ao que o inbound autorizou.the response to allowed traffic is permitted regardless of the other direction's rules. That is why a database's outbound can be empty and it still answers what inbound allowed.
- Vários SGs em um recurso têm suas regras somadas. Mudanças nas regras valem na hora para todos os recursos associados. O SG é associado a interfaces de rede, não a IPs individuais.Several SGs on one resource have their rules aggregated. Rule changes apply immediately to all associated resources. An SG is tied to network interfaces, not individual IPs.
- Cada regra tem protocolo, faixa de portas e origem (inbound) ou destino (outbound): um IP (
/32), um CIDR, uma prefix list ou outro Security Group.Each rule has a protocol, port range and a source (inbound) or destination (outbound): an IP (/32), a CIDR, a prefix list or another Security Group. - Não há cobrança por usar security groups. Existem cotas (SGs por VPC, regras por SG, SGs por interface).There is no charge for security groups. There are quotas (SGs per VPC, rules per SG, SGs per interface).
- SGs não filtram tráfego para DNS da Amazon, DHCP, metadados da instância, Time Sync e o roteador da VPC.SGs do not filter traffic to Amazon DNS, DHCP, instance metadata, Time Sync and the VPC router.
Security Groups encadeadosChained Security Groups
Em vez de liberar por IP, use como origem o ID de outro SG. A regra vale para as instâncias associadas àquele SG, pelo IP privado delas, e sobrevive à troca de instâncias. Exemplo clássico da documentação (load balancer, web e banco):Instead of allowing by IP, use another SG's ID as the source. The rule applies to instances associated with that SG, through their private IPs, and survives instance replacement. The docs' classic example (load balancer, web and database):
in: 0.0.0.0/0app port → sg-app
in: sg-albdb port → sg-db
in: sg-app
- Referenciar um SG não copia as regras dele para o SG que referencia.Referencing an SG does not copy its rules into the referencing SG.
- Para referenciar em regra inbound, os SGs devem estar na mesma VPC ou em VPCs ligadas por peering ou transit gateway. Em regra outbound: mesma VPC ou peering.To reference in an inbound rule, the SGs must be in the same VPC or in VPCs linked by peering or a transit gateway. In an outbound rule: same VPC or peering.
- Uma regra que referencia outro SG conta como uma regra, não importa o tamanho do SG referenciado.A rule referencing another SG counts as one rule, no matter the size of the referenced SG.
- Se o tráfego passa por uma appliance intermediária (middlebox), referenciar o SG do outro lado não basta: use o IP privado ou o CIDR da subnet.If traffic goes through a middlebox appliance, referencing the other side's SG is not enough: use the private IP or the subnet CIDR.
Managed Prefix Lists
Conjunto de um ou mais blocos CIDR que você referencia como uma unidade em regras de security group e em route tables. Ao adicionar um CIDR à lista, todos os SGs que a usam são atualizados.A set of one or more CIDR blocks you reference as a unit in security group rules and route tables. Adding a CIDR to the list updates every SG using it.
Gerenciada pelo clienteCustomer-managed
Você define e mantém. Só IPv4 ou IPv6, vale na Region onde foi criada, e você escolhe o máximo de entradas na criação. Pode ser compartilhada com outras contas via AWS RAM. Cada edição cria uma nova versão.You define and maintain it. IPv4 or IPv6 only, applies to the Region it was created in, and you set the maximum entries at creation. It can be shared with other accounts via AWS RAM. Each edit creates a new version.Gerenciada pela AWSAWS-managed
Faixas de IP de serviços da AWS. Você não pode criar, alterar, compartilhar nem apagar.IP ranges of AWS services. You cannot create, modify, share or delete them.Uso típico: um único conjunto de IPs do escritório/VPN liberado para SSH ou para um painel em vários SGs.Typical use: a single set of office/VPN IPs allowed for SSH or an admin panel across several SGs.
0.0.0.0/0); não abra faixas largas de portas; considere NACLs como camada extra.Limit who can create and change SGs; create as few SGs as possible; for ports 22 (SSH) and 3389 (RDP), authorize only specific IP ranges (never 0.0.0.0/0); do not open wide port ranges; consider network ACLs as an extra layer.Quando usarWhen to use
SG por papel (alb, app, db) encadeados por referência; prefix lists para conjuntos de IPs que mudam e se repetem em várias regras.One SG per role (alb, app, db) chained by reference; prefix lists for IP sets that change and repeat across many rules.Quando evitarWhen to avoid
Origem0.0.0.0/0 em portas administrativas ou de banco; prefix list com máximo de entradas grande sem necessidade (consome cota); depender de SG para filtrar DNS.Source 0.0.0.0/0 on admin or database ports; a prefix list with a large max size for no reason (it eats quota); relying on SGs to filter DNS.O banco precisa de regra outbound para responder à API?Does the database need an outbound rule to answer the API?
Quantas regras consome uma prefix list com máximo de 20 entradas e 3 CIDRs hoje?How many rules does a prefix list with max 20 entries and 3 CIDRs today consume?
Removido das anotações antigas (sem fonte): regras de "frontend estático exige backend público" e "SSR: backend só aceita frontends". São decisões de arquitetura, não afirmações da documentação; o encadeamento por SG acima cobre o caso do backend privado.Removed from the old notes (no source): the "static frontend requires a public backend" and "SSR: backend accepts only frontends" rules. They are architecture decisions, not documentation claims; the SG chaining above covers the private-backend case.
Application Load Balancer
O Elastic Load Balancing distribui o tráfego entre vários destinos (instâncias EC2, containers, IPs) em uma ou mais zonas de disponibilidade e só envia para destinos saudáveis. O ALB faz isso na camada de aplicação (HTTP/HTTPS).Elastic Load Balancing distributes traffic across multiple targets (EC2 instances, containers, IPs) in one or more Availability Zones and only sends to healthy targets. The ALB does this at the application layer (HTTP/HTTPS).
Tipos de load balancerLoad balancer types
ALB
Application: camada 7. Roteia por conteúdo da requisição (host, caminho, cabeçalhos...), faz redirect e respostas fixas, e aceita targets por instância, IP ou Lambda.Application: layer 7. Routes by request content (host, path, headers...), does redirects and fixed responses, and supports instance, IP or Lambda targets.NLB
Network: camada 4 (TCP, UDP, TLS, QUIC). Lida com milhões de requisições por segundo e tem IP estático por zona (com opção de Elastic IP).Network: layer 4 (TCP, UDP, TLS, QUIC). Handles millions of requests per second and has a static IP per zone (with Elastic IP option).GWLB
Gateway: camada 3. Implanta e escala appliances virtuais (firewalls, detecção de intrusão, inspeção profunda de pacotes) usando o protocolo GENEVE.Gateway: layer 3. Deploys and scales virtual appliances (firewalls, intrusion detection, deep packet inspection) using the GENEVE protocol.Há ainda o Classic Load Balancer. O restante desta página trata do ALB.There is also the Classic Load Balancer. The rest of this page covers the ALB.
Peças do ALBALB components
HTTPS :443→ Rules
host / path→ Target group→ Targets
- Listener: verifica pedidos de conexão com o protocolo e a porta que você configura. Toda listener tem uma regra default, e você pode adicionar outras.checks for connection requests using the protocol and port you configure. Every listener has a default rule, and you can add others.
- Target group: encaminha para um ou mais targets usando o protocolo e a porta que você definir (a porta do target deve ser a em que a aplicação escuta). Health checks são configurados por target group. Um target pode estar em mais de um target group.routes to one or more targets using the protocol and port you set (the target port must be the one the app listens on). Health checks are configured per target group. A target can be in more than one target group.
- O algoritmo padrão do target group é round robin; a alternativa é least outstanding requests.The target group's default algorithm is round robin; the alternative is least outstanding requests.
Regras por host e caminhoHost and path rules
As regras são avaliadas em ordem de prioridade, da menor para a maior; a regra default é avaliada por último e não tem condições. Exemplo (um ALB para vários domínios):Rules are evaluated in priority order, from the lowest to the highest; the default rule is evaluated last and has no conditions. Example (one ALB for several domains):
| PrioridadePriority | CondiçãoCondition | AçãoAction |
|---|---|---|
| 10 | host-header: api.exemplo.com.br | forward → tg-api |
| 20 | host-header: app.exemplo.com.br | forward → tg-app |
| 30 | path-pattern: /admin/* | fixed-response 403 |
| defaultdefault | — | fixed-response 404 |
- Cada regra tem exatamente uma ação entre
forward,redirectefixed-response, e ela é a última a executar.Each rule has exactly one action amongforward,redirectandfixed-response, and it runs last. - Condições disponíveis:
host-header,path-pattern,http-request-method,source-ip,http-headerequery-string. Há limite de três valores de comparação por condição e cinco por regra.Available conditions:host-header,path-pattern,http-request-method,source-ip,http-headerandquery-string. Limits: three comparison strings per condition and five per rule. - As regex das condições não suportam lookahead, lookbehind, backreferences, entre outros recursos.Condition regexes do not support lookahead, lookbehind, backreferences, among other features.
Health checks
O ALB testa periodicamente cada target e só roteia para os saudáveis. Valores padrão segundo a documentação em 2026-10-13 (podem mudar):The ALB periodically tests each target and only routes to healthy ones. Defaults per the docs on 2026-10-13 (they may change):
| ConfiguraçãoSetting | PadrãoDefault |
|---|---|
| Protocol / Path / Port | HTTP · / · porta do tráfegotraffic port |
| Interval | 30 s (5–300 s)30 s (5–300 s) |
| Timeout | 5 s (2–120 s)5 s (2–120 s) |
| Healthy / Unhealthy threshold | 5 / 2 (2–10)5 / 2 (2–10) |
| Success codes | 200 (aceita 200–499, listas e faixas)(accepts 200–499, lists and ranges) |
- Fail open: se todos os targets do grupo estão não saudáveis, o ALB roteia para todos eles, independentemente do estado.Fail open: if all targets in a group are unhealthy, the ALB routes to all of them regardless of state.
- Health checks não suportam WebSockets.Health checks do not support WebSockets.
- O path do health check precisa responder com um código aceito; apontar para uma página que redireciona (ex.: 301) faz o target ficar unhealthy se 301 não estiver nos success codes.The health check path must answer with an accepted code; pointing at a page that redirects (e.g. 301) makes the target unhealthy unless 301 is in the success codes.
HTTPS
Um listener HTTPS exige pelo menos um certificado X.509: o certificado default. Para vários domínios na mesma porta, adicione certificados à certificate list (o ALB escolhe o certificado pelo nome enviado via SNI) ou use um certificado com SANs/curinga. A AWS recomenda emitir os certificados no AWS Certificate Manager. O nome no certificado precisa bater com o host pedido, senão a conexão falha.An HTTPS listener requires at least one X.509 certificate: the default certificate. For several domains on the same port, add certificates to the certificate list (the ALB picks by the name sent via SNI) or use a certificate with SANs/wildcard. AWS recommends issuing certificates in AWS Certificate Manager. The name on the certificate must match the requested host or the connection fails.
Security Groups: o do ALB libera 80/443 da internet; o da aplicação libera a porta da app só do SG do ALB (veja Security Groups encadeados).Security Groups: the ALB's allows 80/443 from the internet; the app's allows the app port only from the ALB's SG (see chained Security Groups).
Quando usarWhen to use
Aplicações HTTP/HTTPS, vários serviços ou domínios atrás de um único ponto de entrada, containers no ECS, redirect HTTP→HTTPS.HTTP/HTTPS apps, several services or domains behind one entry point, containers on ECS, HTTP→HTTPS redirect.Quando evitarWhen to avoid
Tráfego TCP/UDP genérico ou necessidade de IP estático (NLB); inspeção por appliances (GWLB); health check em WebSocket ou que depende de redirects.Generic TCP/UDP traffic or a need for static IPs (NLB); appliance inspection (GWLB); health checks over WebSocket or relying on redirects.Para quem o ALB envia o tráfego?Who does the ALB send traffic to?
O que acontece quando todos os targets ficam unhealthy?What happens when all targets are unhealthy?
- What is an Application Load Balancer?
- Listener rules for your Application Load Balancer
- Health checks for ALB target groups
- SSL certificates for your Application Load Balancer
- What is a Network Load Balancer? · What is a Gateway Load Balancer?
- VPC: Security group rules (exemplo com ALB)
Corrigido/reformulado: "NLB: performance extrema (jogos, streaming)" foi trocado pelo que a documentação diz (camada 4, milhões de req/s, IP estático); o ELB agora é apresentado como família de quatro tipos. A frase sobre redirect no health check é uma consequência dos success codes documentados, não uma citação.Corrected/reworded: "NLB: extreme performance (games, streaming)" was replaced by what the docs say (layer 4, millions of req/s, static IP); ELB is now presented as a family of four types. The redirect/health-check remark is a consequence of the documented success codes, not a quote.
ACM (Certificate Manager)
AWS Certificate Manager emite e gerencia certificados SSL/TLS para usar com serviços integrados, como o Application Load Balancer. A validação por DNS prova que você controla o domínio.AWS Certificate Manager issues and manages SSL/TLS certificates for integrated services such as the Application Load Balancer. DNS validation proves you control the domain.
Validação por DNSDNS validation
- Ao escolher DNS, o ACM fornece um ou mais registros CNAME (nome e valor únicos para o seu domínio e conta). Eles são a prova de que você controla o domínio.When you choose DNS, ACM gives you one or more CNAME records (a name and value unique to your domain and account). They are proof that you control the domain.
- O CNAME é adicionado uma única vez. O ACM renova o certificado automaticamente enquanto ele estiver em uso e o CNAME continuar no DNS. Apagar o CNAME interrompe a renovação.The CNAME is added only once. ACM renews the certificate automatically as long as it is in use and the CNAME stays in DNS. Deleting the CNAME stops renewal.
- Com o Route 53 como DNS e permissão de escrita na zona, o console mostra o botão Create records in Route 53. O status pode continuar Pending validation por até 30 minutos.With Route 53 as DNS and write permission on the zone, the console shows a Create records in Route 53 button. Status may remain Pending validation for up to 30 minutes.
- Se o ACM não conseguir validar em 72 horas, o status vira Validation timed out e é preciso pedir um novo certificado.If ACM cannot validate within 72 hours, the status becomes Validation timed out and you must request a new certificate.
- Se o DNS não é Route 53, copie o CNAME (ou exporte o CSV) e crie-o no provedor. Alguns provedores acrescentam o domínio ao nome sozinhos: se você colar o nome completo, ele vira
_x.exemplo.com.exemplo.come a validação falha.If DNS is not Route 53, copy the CNAME (or export the CSV) and create it at your provider. Some providers append the domain to the name themselves: if you paste the full name it becomes_x.example.com.example.comand validation fails.
- Um certificado criado com validação por e-mail não pode ser trocado para DNS: apague e crie outro.A certificate created with email validation cannot be switched to DNS: delete it and create a new one.
- O CNAME do domínio base e o do curinga (
*.exemplo.comeexemplo.com) são iguais; subdomínios específicos têm CNAMEs próprios.The CNAME for the base domain and the wildcard (*.example.comandexample.com) are identical; specific subdomains have their own CNAMEs. - Um curinga
*.exemplo.comcobre um nível de subdomínio e não cobre o domínio raiz (exemplo.com); inclua os dois no certificado se precisar.A*.example.comwildcard covers one subdomain level and does not cover the apex (example.com); include both in the certificate if needed. - A resolução de CNAME falha se houver mais de cinco CNAMEs encadeados na configuração de DNS.CNAME resolution fails if more than five CNAMEs are chained in your DNS configuration.
- O token de validação funciona em qualquer Region, então dá para recriar o mesmo certificado em várias Regions.The validation token works in any Region, so you can re-create the same certificate in multiple Regions.
- Certificados importados no ACM não renovam sozinhos: você acompanha a expiração e troca antes do fim.Imported certificates in ACM do not renew by themselves: you track expiry and replace them before it ends.
Se você usa registros CAA no domínio, é preciso autorizar a AWS a emitir; veja a página "Configure a CAA record" do ACM, referenciada na documentação do Route 53.If you use CAA records on the domain, you must authorize AWS to issue; see ACM's "Configure a CAA record" page, referenced in the Route 53 docs.
Quando usarWhen to use
HTTPS em ALB (e outros serviços integrados) com renovação automática; domínios cujo DNS você controla (Route 53 facilita).HTTPS on an ALB (and other integrated services) with automatic renewal; domains whose DNS you control (Route 53 makes it easy).Quando evitarWhen to avoid
Validação por e-mail se o DNS é seu; apagar o CNAME "que sobrou" (quebra a renovação); depender de renovação automática em certificado importado.Email validation if you own the DNS; deleting the "leftover" CNAME (breaks renewal); counting on automatic renewal for an imported certificate.Por que não apagar o CNAME de validação depois de emitir?Why not delete the validation CNAME after issuance?
EC2 & Auto Scaling
Amazon EC2 entrega servidores virtuais na nuvem. O Auto Scaling mantém a quantidade certa de instâncias para a sua carga.Amazon EC2 provides virtual servers in the cloud. Auto Scaling keeps the right number of instances for your load.
AMI
Amazon Machine Image: fornece o software para iniciar a instância e um mapeamento de dispositivos de bloco (os discos a anexar). É específica de Region, sistema operacional, arquitetura de processador, tipo de volume raiz e tipo de virtualização. Dá para copiar para outra Region e compartilhar com outras contas.Amazon Machine Image: provides the software to boot the instance and a block device mapping (the disks to attach). It is specific to Region, operating system, processor architecture, root volume type and virtualization type. You can copy it to another Region and share it with other accounts.Instance type
Define o hardware (CPU, memória, armazenamento, rede). Os tipos são agrupados em famílias; os nomes seguem uma convenção (família, geração, processador, capacidades, tamanho). Há instâncias burstable (como a série T). Como o faturamento é por segundo, é barato testar vários tipos.Defines the hardware (CPU, memory, storage, network). Types are grouped into families; names follow a convention (family, generation, processor, capabilities, size). There are burstable instances (such as the T series). Since billing is per second, testing several types is cheap.Public IPv4
O IP público automático vem do pool da Amazon e não é seu: é liberado ao parar, hibernar ou encerrar, e a instância recebe outro ao iniciar de novo. Para um endereço fixo, use Elastic IP. A AWS cobra por todo IPv4 público.The automatic public IP comes from Amazon's pool and is not yours: it is released on stop, hibernate or terminate, and the instance gets a new one on start. For a fixed address use an Elastic IP. AWS charges for every public IPv4 address.Snapshot vs. ImagemImage
| Snapshot (EBS) | Imagem (AMI)Image (AMI) | |
|---|---|---|
| O que éWhat it is | Cópia pontual (point-in-time) de um volume EBS, incremental: guarda só os blocos alterados desde o último snapshot.A point-in-time copy of an EBS volume, incremental: it stores only the blocks changed since the last snapshot. | Software de boot + mapeamento de discos, usado para lançar instâncias.Boot software + disk mapping, used to launch instances. |
| UsoUse | Backup e restauração: cria um volume novo idêntico ao original no momento do snapshot.Backup and restore: creates a new volume identical to the original at snapshot time. | Clonar a configuração de uma instância: lançar várias com a mesma base.Cloning an instance's setup: launch many from the same base. |
| Onde ficaWhere it lives | Em buckets do S3 que você não acessa diretamente; replicado entre as AZs da Region.In S3 buckets you cannot access directly; replicated across the Region's AZs. | Dentro da Region; pode ser copiada e compartilhada.Within a Region; can be copied and shared. |
Launch Template
Especifica a configuração de uma instância: ID da AMI, tipo de instância, key pair, security groups e outros parâmetros. Tem versões: dá para manter uma base e criar versões novas (por exemplo, com a AMI da última versão da aplicação). A AWS recomenda launch templates em vez de launch configurations, que não suportam recursos como misturar Spot e On-Demand ou vários tipos de instância.Specifies an instance's configuration: AMI ID, instance type, key pair, security groups and other parameters. It has versions: you can keep a base and create new versions (for example with the AMI of the latest app version). AWS recommends launch templates over launch configurations, which lack features such as mixing Spot and On-Demand or multiple instance types.
Auto Scaling Group (ASG)
Coleção de instâncias tratada como uma unidade. Você define:A collection of instances treated as one unit. You define:
- Minimum size: o grupo nunca fica abaixo disso.the group never goes below it.
- Maximum size: o grupo nunca passa disso.the group never exceeds it.
- Desired capacity: quantas instâncias você quer rodando agora (dentro do mínimo e máximo).how many instances you want running now (within the min and max).
Não há cobrança adicional pelo Auto Scaling; você paga pelos recursos usados (instâncias, volumes EBS, alarmes do CloudWatch).There is no additional charge for Auto Scaling; you pay for the resources used (instances, EBS volumes, CloudWatch alarms).
Scaling policies
Target tracking
Escolhe uma métrica e um valor-alvo, como um termostato. Recomendada pela AWS; use métricas que variem de forma inversamente proporcional à capacidade (CPU média, requisições por target). O Auto Scaling cria os alarmes do CloudWatch por você.Pick a metric and a target value, like a thermostat. Recommended by AWS; use metrics that move inversely with capacity (average CPU, request count per target). Auto Scaling creates the CloudWatch alarms for you.Step / simple
Ajustes por faixa de violação do alarme (step) ou um único ajuste com cooldown (simple). Cuidado ao combinar com target tracking: conflitos podem causar comportamento indesejado.Adjustments by alarm-breach size (step) or one adjustment with a cooldown (simple). Be careful combining with target tracking: conflicts can cause unwanted behavior.Scheduled
Ações agendadas mudam a capacidade em horários definidos (única ou recorrente, com cron e fuso horário). Bom para picos previsíveis.Scheduled actions change capacity at set times (one-off or recurring, with cron and time zone). Good for predictable peaks.Predictive
Analisa a carga histórica para achar padrões diários ou semanais e prever a demanda, lançando capacidade antes do pico. Indicado para tráfego cíclico e aplicações lentas para iniciar.Analyzes historical load to detect daily or weekly patterns and forecast demand, launching capacity ahead of the peak. Suited to cyclical traffic and slow-starting apps.Sempre dentro do mínimo e do máximo do grupo. Se mais de uma política pedir mudança ao mesmo tempo, prevalece a que resulta em mais capacidade.Always within the group's min and max. If more than one policy asks for a change at once, the one giving the most capacity wins.
Quando usarWhen to use
Aplicação com carga variável ou que precisa se recuperar sozinha de falhas; servidores idênticos atrás de um load balancer.Apps with variable load or that must self-heal from failures; identical servers behind a load balancer.O IP público automático de uma instância continua o mesmo depois de parar e iniciar?Does an instance's automatic public IP stay the same after stop and start?
O que o ASG faz com uma instância comprometida?What does the ASG do with an impaired instance?
- Amazon EC2 instance types
- Amazon Machine Images in Amazon EC2
- Amazon EC2 instance IP addressing
- Amazon EBS snapshots
- What is Amazon EC2 Auto Scaling?
- Auto Scaling launch templates
- Dynamic scaling · Scheduled scaling · Predictive scaling
Corrigido: a anotação antiga citava "t4.micro" como família; a documentação lida lista a série T4g (e T3), então os exemplos de tipos foram removidos. Valores como "launch template é gratuito" e o "CPU ou memória" no target tracking também saíram por falta de suporte nas páginas lidas.Corrected: the old note cited "t4.micro" as a family; the docs read list the T4g series (and T3), so type examples were removed. Claims like "launch templates are free" and "CPU or memory" for target tracking also left for lack of support in the pages read.
SSH (Secure Shell)
Forma clássica de abrir um terminal remoto em uma instância EC2 Linux, usando um par de chaves.The classic way to open a remote terminal on a Linux EC2 instance, using a key pair.
Pré-requisitos segundo a documentação da EC2Prerequisites per the EC2 docs
- A instância passou nas status checks (pode levar alguns minutos).The instance passed its status checks (it can take a few minutes).
- Você tem a chave privada (
.pem) do key pair e as permissões do arquivo configuradas (a página de pré-requisitos da EC2 detalha isso).You have the key pair's private key (.pem) with file permissions set (the EC2 prerequisites page explains this). - O Security Group da instância libera SSH (porta 22) só do seu IP. Abrir 22 para
0.0.0.0/0deixa qualquer um tentar entrar.The instance's Security Group allows SSH (port 22) only from your IP. Opening 22 to0.0.0.0/0lets anyone try.
ConectarConnect
ssh -i /caminho/minha-chave.pem usuario-da-instancia@dns-publico-da-instanciaNo primeiro acesso, o SSH mostra a impressão digital (fingerprint) do servidor. A documentação sugere conferi-la com a da instância: se não bater, pode ser um ataque man-in-the-middle.On first connection SSH shows the server fingerprint. The docs suggest checking it against the instance's: if it does not match, it may be a man-in-the-middle attack.
chmod 400 na chave e o usuário padrão ec2-user no Amazon Linux.The explanations below (handshake and TCP/IP layers) are general teaching content about the SSH protocol, kept from the original notes. They do not come from AWS documentation and were not verified there. Also left as personal notes: chmod 400 on the key and the default ec2-user on Amazon Linux.Handshake passo a passoHandshake step by step
Protocolos e TCP/IPProtocols and TCP/IP
Um protocolo é um contrato: regras de como os dados são formatados, transmitidos e recebidos. O SSH é da camada de Aplicação e roda sobre TCP/IP.A protocol is a contract: rules for how data is formatted, sent and received. SSH is an Application-layer protocol running on top of TCP/IP.
| CamadaLayer | FunçãoRole |
|---|---|
| 4 · AplicaçãoApplication | Onde os programas trabalham: SSH, SMTP, HTTP.Where programs work: SSH, SMTP, HTTP. |
| 3 · Transporte (TCP)Transport (TCP) | Abre a conexão e garante que todos os pedaços cheguem sem erros.Opens the connection and ensures every piece arrives without errors. |
| 2 · Internet (IP)Internet (IP) | Endereçamento: garante que os pacotes cheguem ao destino.Addressing: ensures packets reach their destination. |
| 1 · Link | Meio físico: cabos ethernet, wi-fi.Physical medium: ethernet cables, wi-fi. |
Quando usarWhen to use
Depuração pontual em instâncias de teste, com porta 22 restrita ao seu IP.Occasional debugging on test instances, with port 22 limited to your IP.Quando evitarWhen to avoid
Porta 22 aberta para a internet; acesso rotineiro em produção (prefira Session Manager).Port 22 open to the internet; routine production access (prefer Session Manager).De onde deve vir o tráfego SSH liberado no Security Group?Where should the SSH traffic allowed in the Security Group come from?
0.0.0.0/0.From your specific IP (or range), never 0.0.0.0/0.IPs ElásticosElastic IPs
Um endereço IPv4 público e estático, pensado para a computação em nuvem dinâmica.A static public IPv4 address designed for dynamic cloud computing.
O Elastic IP é alocado à sua conta e é seu até você liberá-lo. Você pode "mascarar" a falha de uma instância remapeando o endereço para outra instância da conta, ou usá-lo em um registro DNS do seu domínio.An Elastic IP is allocated to your account and stays yours until you release it. You can mask an instance failure by remapping the address to another instance in your account, or use it in a DNS record for your domain.
- É específico de uma Region e não pode ser movido para outra. Não há Elastic IP para IPv6.It is specific to one Region and cannot be moved to another. There are no Elastic IPs for IPv6.
- Ao associar um Elastic IP a uma instância que já tinha IP público automático, esse IP automático é liberado e não pode ser reaproveitado.When you associate an Elastic IP with an instance that had an automatic public IP, that automatic IP is released and cannot be reused.
- Um Elastic IP desassociado continua alocado (e cobrado) até você liberá-lo.A disassociated Elastic IP stays allocated (and billed) until you release it.
- Há uma cota padrão de Elastic IPs por Region, que pode ser aumentada no Service Quotas. Consulte a página oficial para o valor atual.There is a default quota of Elastic IPs per Region, which can be raised in Service Quotas. See the official page for the current value.
A documentação ainda sugere reduzir o número de IPv4 públicos usando um load balancer na frente das instâncias, desligando o "auto-assign public IP" onde não for preciso.The docs also suggest reducing the number of public IPv4 addresses by putting a load balancer in front of the instances and turning off "auto-assign public IP" where not needed.
Quando usarWhen to use
Endereço fixo que precisa sobreviver à troca de instância e que alguém registra (DNS, allowlist de um parceiro).A fixed address that must survive an instance swap and that someone registers (DNS, a partner's allowlist).ECR
Elastic Container Registry: registro gerenciado de imagens de container (Docker, OCI) dentro da AWS, com permissões via IAM.Elastic Container Registry: a managed registry for container images (Docker, OCI) inside AWS, with permissions through IAM.
Para enviar a imagem automaticamente a cada push, com um repositório por conta e tags imutáveis, veja GitHub para AWS, etapa 6.To push the image automatically on every push, with one repository per account and immutable tags, see GitHub to AWS, step 6.
Repository
Repositório privado com permissões baseadas em recurso. Ele precisa existir antes do push, ou você precisa de um repository creation template.A private repository with resource-based permissions. It must exist before the push, or you need a repository creation template.Auth
O token de autenticação vale 12 horas e é por registry. Nodocker login o usuário é AWS. A identidade precisa da permissão ecr:GetAuthorizationToken via política IAM.The authentication token is valid for 12 hours and is per registry. In docker login the user is AWS. The identity needs ecr:GetAuthorizationToken via an IAM policy.RecursosFeatures
Lifecycle policies (limpeza de imagens), scan de vulnerabilidades no push, replicação entre Regions e contas, pull through cache e assinatura gerenciada.Lifecycle policies (image cleanup), vulnerability scan on push, replication across Regions and accounts, pull through cache and managed signing.Push passo a passoPush step by step
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-1.amazonaws.com
docker tag minha-app:1.4.2 111122223333.dkr.ecr.us-east-1.amazonaws.com/minha-app:1.4.2
docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/minha-app:1.4.2Se você omitir a tag no docker tag, a tag assumida é latest.If you omit the tag in docker tag, the assumed tag is latest.
Acesso entre contas (repository policy)Cross-account access (repository policy)
Para a conta de tooling guardar as imagens e as contas de staging e produção baixarem, anexe uma repository policy ao repositório. Exemplo de pull para uma conta (placeholder no lugar do ID real):For the tooling account to hold the images and the staging and production accounts to pull them, attach a repository policy to the repository. Example pull access for one account (placeholder instead of the real ID):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowPullFromProd",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::<ID_CONTA_PROD>:root" },
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
]
}
]
}- O ECR exige que quem autentica tenha
ecr:GetAuthorizationTokenpor política IAM antes de qualquer push ou pull. Essa permissão não vem da repository policy.ECR requires the caller to haveecr:GetAuthorizationTokenthrough an IAM policy before any push or pull. That permission does not come from the repository policy. - A conta que recebe a permissão precisa ter a Region do repositório habilitada, senão a criação da policy dá erro.The account being granted access must have the repository's Region enabled, otherwise creating the policy fails.
- Para ações de push, a documentação inclui também
BatchCheckLayerAvailability,InitiateLayerUpload,UploadLayerPart,CompleteLayerUploadePutImage.For push, the docs also includeBatchCheckLayerAvailability,InitiateLayerUpload,UploadLayerPart,CompleteLayerUploadandPutImage.
Tags e digestsTags and digests
- Tag mutável: o mesmo nome de tag pode ser sobrescrito por um novo push. Com tag immutability ligada, repetir uma tag retorna
ImageTagAlreadyExistsException. A imutabilidade vale para todas as tags (com filtros de exceção opcionais).Mutable tags: the same tag name can be overwritten by a new push. With tag immutability on, reusing a tag returnsImageTagAlreadyExistsException. Immutability covers all tags (with optional exclusion filters). - O ECS, por padrão, resolve a tag da task definition para o digest da imagem no momento do deploy e usa o digest nas demais tarefas, para que todas rodem exatamente a mesma imagem. Veja ECS.By default ECS resolves the task definition's tag to the image digest at deploy time and uses the digest for the other tasks, so all of them run exactly the same image. See ECS.
latest. A ideia combina com a tag immutability, mas a recomendação em si não foi lida na documentação.A design habit: use tags that identify the version (for example the commit hash) instead of latest. It pairs well with tag immutability, but the recommendation itself was not read in the docs.Quando usarWhen to use
Imagens que rodam em ECS, EKS ou EC2 na AWS; repositório central em uma conta de tooling compartilhado entre ambientes.Images that run on ECS, EKS or EC2 in AWS; a central repository in a tooling account shared across environments.Quando evitarWhen to avoid
Repository policy comPrincipal: "*" sem condição; tags mutáveis em produção quando você precisa saber exatamente qual imagem rodou; acumular imagens sem lifecycle policy.A repository policy with Principal: "*" and no condition; mutable tags in production when you must know exactly which image ran; piling up images with no lifecycle policy.ECS
Amazon Elastic Container Service: orquestrador totalmente gerenciado para implantar, gerenciar e escalar aplicações em containers.Amazon Elastic Container Service: a fully managed orchestrator to deploy, manage and scale containerized applications.
Para disparar o deploy a cada push em develop ou main, veja GitHub para AWS, etapa 8.To trigger the deploy on every push to develop or main, see GitHub to AWS, step 8.
Nunca criou um cluster, task definition e service? O roteiro completo, da VPC privada ao SSL até o RDS, está em ECS do zero: um app de to-do.Never created a cluster, task definition and service? The full walkthrough, from the private VPC to SSL all the way to RDS, is in ECS from zero: a to-do app.
Task definition
O "projeto" da aplicação: quais containers rodam e como.The application's "blueprint": which containers run and how.Cluster
A infraestrutura onde a aplicação roda.The infrastructure the application runs on.Task
Uma execução da aplicação, como um job em lote que trabalha e termina.One run of the application, like a batch job that works and stops.Service
Aplicação de longa duração e sem estado: o ECS mantém o número desejado de tasks rodando e faz os deploys.A long-running stateless application: ECS keeps the desired number of tasks running and performs deployments.Capacidade (onde os containers rodam): Fargate (serverless, sem gerenciar servidores), instâncias EC2 que você gerencia, ECS Managed Instances (EC2 com a infraestrutura gerenciada pela AWS) ou servidores externos com ECS Anywhere. O custo depende da capacidade escolhida; veja as páginas de preços do ECS e do Fargate.Capacity (where containers run): Fargate (serverless, no servers to manage), EC2 instances you manage, ECS Managed Instances (EC2 with AWS-managed infrastructure) or external servers with ECS Anywhere. Cost depends on the chosen capacity; see the ECS and Fargate pricing pages.
Deploy com rolling updateRolling update deployment
No tipo de deploy rolling update, o scheduler do ECS substitui as tasks em execução por tasks novas. Dois parâmetros do serviço controlam o ritmo:With the rolling update deployment type, the ECS scheduler replaces running tasks with new ones. Two service parameters control the pace:
| ParâmetroParameter | SignificadoMeaning | Exemplo da documentaçãoDocs example |
|---|---|---|
minimumHealthyPercent | Mínimo de tasks saudáveis durante o deploy, em % do desejado (arredonda para cima).Minimum healthy tasks during the deployment, as a % of desired (rounded up). | 50% com 4 tasks: pode parar 2 antes de iniciar 2 novas.50% with 4 tasks: it can stop 2 before starting 2 new ones. |
maximumPercent | Máximo de tasks em execução durante o deploy, em % do desejado (arredonda para baixo).Maximum running tasks during the deployment, as a % of desired (rounded down). | 200% com 4 tasks: pode iniciar 4 novas antes de parar as 4 antigas.200% with 4 tasks: it can start 4 new ones before stopping the 4 old ones. |
- Garanta que o scheduler consiga parar ou iniciar pelo menos uma task no deploy. Com 75% mínimo e 2 tasks, nada pode ser parado e o deploy trava.Make sure the scheduler can stop or start at least one task during a deployment. With 75% minimum and 2 tasks, nothing can be stopped and the deployment gets stuck.
- Para detectar falha rápido, use o deployment circuit breaker (falha quando as tasks não conseguem iniciar) e/ou alarmes do CloudWatch (falha por métricas da aplicação). Ambos suportam rollback para a revisão anterior do serviço.To detect failure fast, use the deployment circuit breaker (fails when tasks cannot start) and/or CloudWatch alarms (fails on application metrics). Both support rollback to the previous service revision.
- O ECS resolve a tag da imagem para o digest no início do deploy e usa o digest nas outras tasks, garantindo a mesma imagem em todas. Para pegar um digest atualizado, force um novo deploy (
forceNewDeployment).ECS resolves the image tag to the digest at the start of the deployment and uses the digest for the other tasks, ensuring the same image everywhere. To pick up an updated digest, force a new deployment (forceNewDeployment). - Variáveis de ambiente vindas do Parameter Store são resolvidas quando a task inicia: uma task em execução só vê o valor novo após um novo deploy. Veja Systems Manager e Secrets Manager.Environment variables from Parameter Store are resolved when the task starts: a running task only sees the new value after a new deployment. See Systems Manager and Secrets Manager.
aws ecs update-service --cluster meu-cluster --service minha-api --force-new-deploymentCom o load balancerWith the load balancer
O ALB consegue registrar tasks do ECS em um target group, inclusive escolhendo uma porta livre quando a task é agendada. Os health checks do target group definem se a task está saudável. Veja Load Balancer.The ALB can register ECS tasks in a target group, even choosing an unused port when the task is scheduled. The target group's health checks decide whether a task is healthy. See Load Balancer.
Quando usarWhen to use
Aplicações em containers que precisam de deploy repetível, rollback e escala sem operar um plano de controle próprio.Containerized apps needing repeatable deploys, rollback and scaling without running your own control plane.Quando evitarWhen to avoid
Cargas que não são containers;minimumHealthyPercent/maximumPercent que impedem qualquer substituição; esperar que um valor mudado no Parameter Store apareça em tasks já rodando.Non-container workloads; minimumHealthyPercent/maximumPercent values that block any replacement; expecting a changed Parameter Store value to show up in running tasks.Qual a diferença entre task e service?What is the difference between a task and a service?
Como garantir que um deploy com problema volte sozinho?How do you make a bad deployment roll back by itself?
Systems Manager
Duas ferramentas do AWS Systems Manager muito usadas no dia a dia: o Session Manager (acesso a servidores sem SSH) e o Parameter Store (configuração centralizada).Two AWS Systems Manager tools used every day: Session Manager (server access without SSH) and Parameter Store (centralized configuration).
Session Manager
Ferramenta totalmente gerenciada para acessar instâncias EC2 (e servidores on-premises/VMs) por um shell interativo no navegador ou pela AWS CLI, sem abrir portas de entrada, sem bastion host e sem gerenciar chaves SSH.A fully managed tool to reach EC2 instances (and on-premises servers/VMs) through an interactive shell in the browser or the AWS CLI, with no inbound ports, no bastion hosts and no SSH keys to manage.
- Controle por IAM: as políticas definem quem pode abrir sessões e em quais nós; dá para conceder acesso temporário (ex.: plantão).IAM control: policies define who can open sessions and on which nodes; you can grant temporary access (e.g. on-call).
- Sem IP público: com VPC endpoints (AWS PrivateLink) do Systems Manager, o tráfego fica na rede da AWS. Veja VPC endpoints.No public IP: with Systems Manager VPC endpoints (AWS PrivateLink), traffic stays on the AWS network. See VPC endpoints.
- Port forwarding: redireciona uma porta da instância para uma porta local (útil para acessar um banco privado).Port forwarding: redirects an instance port to a local port (handy for reaching a private database).
- Auditoria: integra com CloudTrail, S3, CloudWatch Logs e EventBridge/SNS. Sessões de port forwarding ou SSH não têm log do conteúdo.Auditing: integrates with CloudTrail, S3, CloudWatch Logs and EventBridge/SNS. Port-forwarding or SSH sessions get no content logging.
- Pré-requisitos: o nó precisa ser gerenciado pelo Systems Manager (SSM Agent e permissões IAM; veja "Setting up Session Manager"). Na AWS CLI é preciso a versão 1.16.12 ou superior e o plugin do Session Manager.Prerequisites: the node must be managed by Systems Manager (SSM Agent and IAM permissions; see "Setting up Session Manager"). The AWS CLI needs version 1.16.12 or later plus the Session Manager plugin.
aws ssm start-session --target i-0123456789abcdef0Parameter Store
Armazém centralizado de configuração: valores nomeados (parameters) que a aplicação lê em tempo de execução, sem deixar valores fixos no código.A centralized configuration store: named values (parameters) the application reads at runtime, with no hardcoded values in code.
String
Texto simples: nome do ambiente, URL de endpoint, ID de recurso.Plain text: environment name, endpoint URL, resource ID.StringList
Lista separada por vírgulas, comosubnet-aaa,subnet-bbb.Comma-separated list, such as subnet-aaa,subnet-bbb.SecureString
Valor criptografado com AWS KMS. Para segredos como senhas, chaves de API e tokens, a documentação recomenda o Secrets Manager.A value encrypted with AWS KMS. For secrets such as passwords, API keys and tokens, the docs recommend Secrets Manager./minha-app/prod/db-host # hierarquia: /app/ambiente/nome
/minha-app/staging/db-host- Hierarquia: agrupe por caminho (ex.:
/app/ambiente/chave) para buscar e filtrar vários parâmetros de uma vez e dar permissões IAM por prefixo (ler/minha-app/prod/*mas não/minha-app/dev/*).Hierarchy: group by path (e.g./app/env/key) to fetch and filter several parameters at once and grant IAM permissions per prefix (read/my-app/prod/*but not/my-app/dev/*). - Versões: guarda as 100 versões mais recentes de cada parâmetro.Versions: keeps the 100 most recent versions of each parameter.
- Camadas: standard (sem custo adicional; até 10.000 parâmetros por conta/Region, valor de até 4 KB) e advanced (até 100.000; 8 KB; políticas de parâmetro e compartilhamento entre contas; cobrado). Valores da documentação em 2026-10-13; confira a página de preços.Tiers: standard (no extra charge; up to 10,000 parameters per account/Region, value up to 4 KB) and advanced (up to 100,000; 8 KB; parameter policies and cross-account sharing; billed). Values per the docs on 2026-10-13; check the pricing page.
- Integrações: ECS/Fargate injetam parâmetros como variáveis de ambiente; Lambda tem extensão; CloudFormation e CodeBuild leem parâmetros. Há também parâmetros públicos que apontam para as AMIs atuais.Integrations: ECS/Fargate inject parameters as environment variables; Lambda has an extension; CloudFormation and CodeBuild read parameters. There are also public parameters pointing to current AMIs.
- Uma atualização vale na próxima leitura, sem validação, rollout gradual ou rollback automático. Para configuração em que um valor ruim derruba o sistema, a AWS aponta o AWS AppConfig.An update takes effect on the next read, with no validation, gradual rollout or automatic rollback. For configuration where a bad value could cause an outage, AWS points to AWS AppConfig.
- No ECS, variáveis do Parameter Store são resolvidas quando a task inicia; mudar o valor exige novo deploy (veja ECS).On ECS, Parameter Store variables are resolved when the task starts; changing the value needs a new deployment (see ECS).
- Throughput padrão serve cargas menores; há modo de alto throughput, com custo adicional. Avalie cedo se a aplicação lê parâmetros com frequência.Default throughput suits smaller workloads; a high-throughput mode exists at extra cost. Evaluate early if your app reads parameters often.
| Parameter Store | Secrets Manager | AppConfig | |
|---|---|---|---|
| ParaFor | Configuração estática, endpoints, IDsStatic config, endpoints, IDs | Credenciais e segredosCredentials and secrets | Configuração que muda com frequência, feature flagsFrequently changing config, feature flags |
| RotaçãoRotation | NenhumaNone | AutomáticaAutomatic | Não se aplicaNot applicable |
| CustoCost | Standard sem custo adicionalStandard has no extra charge | Por segredo/mês e por chamadaPer secret/month and per call | Por requisição de configuraçãoPer configuration request |
Quando usarWhen to use
Session Manager: acesso a instâncias privadas, sem porta 22. Parameter Store: configuração por ambiente (/app/prod/...) lida pela aplicação.Session Manager: access to private instances without port 22. Parameter Store: per-environment config (/app/prod/...) read by the application.Quando evitarWhen to avoid
Parameter Store para segredos que precisam de rotação (use Secrets Manager); alterar parâmetros críticos sem validação; esperar log do conteúdo de sessões SSH/port forwarding.Parameter Store for secrets that need rotation (use Secrets Manager); changing critical parameters without validation; expecting content logs for SSH/port-forwarding sessions.O que o Session Manager dispensa?What does Session Manager make unnecessary?
Um SecureString é ideal para uma senha de banco com rotação?Is a SecureString ideal for a rotating database password?
Não verificado nesta rodada: o comando aws ssm start-session exato e as permissões necessárias no perfil da instância (consulte "Setting up Session Manager").Not verified this round: the exact aws ssm start-session command and the permissions needed on the instance profile (see "Setting up Session Manager").
Secrets Manager
AWS Secrets Manager ajuda a gerenciar, recuperar e rotacionar credenciais de banco, credenciais de aplicação, tokens OAuth, chaves de API e outros segredos durante todo o ciclo de vida.AWS Secrets Manager helps you manage, retrieve and rotate database credentials, application credentials, OAuth tokens, API keys and other secrets throughout their lifecycle.
- Em vez de credenciais fixas no código, a aplicação faz uma chamada em tempo de execução ao Secrets Manager. Assim, quem inspeciona a aplicação não encontra a senha.Instead of hardcoded credentials, the application makes a runtime call to Secrets Manager. Anyone inspecting the application will not find the password.
- Rotação automática:Automatic rotation: troca segredos de longo prazo por segredos de curta duração. Como as credenciais não ficam com a aplicação, rotacionar não exige alterar e redeployar os clientes. A rotação (exceto a gerenciada) usa uma função Lambda, cobrada pelo preço do Lambda.replaces long-term secrets with short-term ones. Since credentials are not stored with the app, rotating them does not require changing and redeploying clients. Rotation (except managed rotation) uses a Lambda function, charged at Lambda rates.
- Criptografia:Encryption: com AWS KMS. A chave gerenciada
aws/secretsmanageré gratuita; chaves próprias são cobradas pela tarifa do KMS.with AWS KMS. The managed keyaws/secretsmanageris free; your own keys are charged at KMS rates. - Versionamento:Versioning: versões com staging labels. Também há acesso entre contas e log de auditoria detalhado.versions with staging labels. There are also cross-account access and fine-grained audit logging.
- Custo:Cost: paga-se por segredo por mês e por chamada de API, sem taxa mínima. Segredos marcados para exclusão não são cobrados. Veja a página de preços.you pay per secret per month and per API call, with no minimum fees. Secrets marked for deletion are not charged. See the pricing page.
Integração com o RDSRDS integration
Ao criar um banco, a opção Manage master credentials in AWS Secrets Manager guarda a senha do usuário master em um segredo (com KMS opcional). O RDS Proxy também conecta no banco usando credenciais guardadas no Secrets Manager. Veja RDS.When creating a database, the Manage master credentials in AWS Secrets Manager option stores the master user password in a secret (with optional KMS). RDS Proxy also connects to the database using credentials stored in Secrets Manager. See RDS.
- Credenciais AWS → IAM · Chaves de criptografia → KMS · Chaves SSH → EC2 Instance Connect · Chaves privadas e certificados → ACM.AWS credentials → IAM · Encryption keys → KMS · SSH keys → EC2 Instance Connect · Private keys and certificates → ACM.
Quando usarWhen to use
Credenciais de banco, chaves de API e tokens que devem ser rotacionados, auditados ou compartilhados entre contas.Database credentials, API keys and tokens that must be rotated, audited or shared across accounts.Quando evitarWhen to avoid
Configuração comum (endpoints, nomes): use Parameter Store, que no tier standard não tem custo adicional; credenciais AWS (use roles).Plain configuration (endpoints, names): use Parameter Store, which has no extra charge in the standard tier; AWS credentials (use roles).Rotacionar a senha exige redeploy da aplicação?Does rotating the password require redeploying the app?
- What is AWS Secrets Manager?
- Parameter Store (comparativo com Secrets Manager e AppConfig)
- RDS: Settings for DB instances · Amazon RDS Proxy
Não verificado nesta rodada: o nome exato da chamada de API GetSecretValue usada no diagrama (é a operação padrão de leitura, mas a página lida não a cita).Not verified this round: the exact GetSecretValue API call in the diagram (it is the standard read operation, but the page read does not name it).
RDS
Amazon Relational Database Service: facilita criar, operar e escalar bancos relacionais na nuvem, com a AWS cuidando de backups, patches, detecção de falhas e recuperação.Amazon Relational Database Service: makes it easier to set up, operate and scale relational databases in the cloud, with AWS handling backups, patching, failure detection and recovery.
Motores suportados: Db2, MariaDB, SQL Server, MySQL, Oracle e PostgreSQL (o Aurora tem guia próprio). A AWS recomenda o RDS como escolha padrão para a maioria dos bancos relacionais; em um banco sobre EC2, instalação, patch do SO e do banco, backup e alta disponibilidade ficam por sua conta.Supported engines: Db2, MariaDB, SQL Server, MySQL, Oracle and PostgreSQL (Aurora has its own guide). AWS recommends RDS as the default choice for most relational databases; with a database on EC2, installation, OS and database patching, backups and high availability are on you.
subnet públicapublic subnet→ AppApp
subnet privadaprivate subnet→ DB primary
AZ A · privadaprivate⇄ sync DB standby
AZ B · privadaprivate
ConceitosConcepts
DB instance
Ambiente de banco isolado na nuvem; pode conter um ou mais bancos criados por você. A classe define CPU e memória: há classes de uso geral (db.m), otimizadas para memória (db.r, db.x, db.z), para computação (db.c) e burstable (db.t).An isolated database environment in the cloud; it can hold one or more databases you create. The class defines CPU and memory: general purpose (db.m), memory optimized (db.r, db.x, db.z), compute optimized (db.c) and burstable (db.t).Storage
Volumes EBS. Tipos: General Purpose SSD (indicado para dev/teste), Provisioned IOPS SSD (para cargas intensivas em I/O, indicado para produção) e Magnetic (obsoleto). O storage autoscaling aumenta o espaço sozinho (veja abaixo).EBS volumes. Types: General Purpose SSD (suited to dev/test), Provisioned IOPS SSD (for I/O-intensive workloads, suited to production) and Magnetic (deprecated). Storage autoscaling grows the space on its own (see below).VPC
O banco roda em uma VPC. Você cria um DB subnet group com subnets em pelo menos duas zonas de disponibilidade da Region (mesmo em Single-AZ, para poder virar Multi-AZ depois). Reserve IPs livres nas subnets: o RDS usa para failover e manutenção.The database runs in a VPC. You create a DB subnet group with subnets in at least two Availability Zones of the Region (even for Single-AZ, so it can become Multi-AZ later). Leave free IPs in the subnets: RDS uses them for failover and maintenance.Acesso e segurançaAccess and security
- Public access: "Yes" dá um IP público ao banco; para isso todas as subnets do DB subnet group precisam de internet gateway. "No" deixa o acesso só de dentro da VPC. O acesso final é sempre controlado pelo Security Group: libere a porta do banco só do SG da aplicação."Yes" gives the database a public IP; for that every subnet in the DB subnet group needs an internet gateway. "No" keeps access to inside the VPC only. Final access is always controlled by the Security Group: allow the database port only from the application's SG.
- Master user: usuário criado com a instância, com privilégios altos mas não equivalentes a superusuário total (a lista varia por motor). O nome não pode ser alterado depois. A AWS recomenda não usar o master na aplicação: crie um usuário com o mínimo de privilégios.the user created with the instance, with high but not full-superuser privileges (the list varies by engine). The name cannot be changed later. AWS recommends not using the master in your application: create a user with minimum privileges.
- Secrets Manager: a opção Manage master credentials in AWS Secrets Manager guarda a senha master em um segredo. Veja Secrets Manager.the Manage master credentials in AWS Secrets Manager option stores the master password in a secret. See Secrets Manager.
- Encryption / KMS: criptografia em repouso é opção na criação; com ela você escolhe a chave KMS.encryption at rest is a creation-time option; with it you pick the KMS key.
- Deletion protection: impede apagar o banco por engano (no console, é ligada por padrão ao criar uma instância de produção).prevents accidental deletion (in the console it is on by default when you create a production instance).
- RDS Proxy: mantém um pool de conexões e as compartilha, ajuda a aplicação a escalar e a suportar picos, e se reconecta ao standby em falhas. Fica na mesma VPC do banco e não é publicamente acessível; só funciona para MariaDB, MySQL e PostgreSQL (entre os motores listados). Tem cobrança própria; veja os preços.keeps and shares a connection pool, helps the application scale and absorb spikes, and reconnects to the standby on failures. It lives in the same VPC as the database and is not publicly accessible; among the listed engines it works for MariaDB, MySQL and PostgreSQL. It has its own pricing; see prices.
Multi-AZ
Multi-AZ DB instance
Um standby síncrono em outra AZ, para failover. O standby não atende leitura.One synchronous standby in another AZ, for failover. The standby does not serve reads.Multi-AZ DB cluster
Um writer e dois readers em três AZs; os três atendem leitura e dão suporte a failover.One writer and two readers across three AZs; all three serve reads and support failover.Multi-AZ traz redundância de dados e suporte a failover, elimina congelamentos de I/O e reduz picos de latência em backups. É recomendado para produção; para desenvolvimento e teste dá para criar sem standby. Não confunda com read replicas (escalam leitura, replicação assíncrona). O IP do banco muda no failover: conecte-se sempre pelo nome DNS (endpoint).Multi-AZ gives data redundancy and failover support, eliminates I/O freezes and minimizes latency spikes during backups. It is recommended for production; for development and testing you can create without a standby. Do not confuse it with read replicas (they scale reads, asynchronous replication). The database's IP changes on failover: always connect through the DNS name (endpoint).
BackupsBackups
- Backups automáticos: o RDS faz um snapshot do volume da instância na janela de backup e guarda pelo backup retention period que você define, permitindo restaurar a qualquer ponto no tempo dentro do período. Só ocorrem com o banco no estado
available. Para qualquer banco que importe, use retenção de 1 dia ou mais.Automated backups: RDS takes a volume snapshot of the instance during the backup window and keeps it for the backup retention period you set, letting you restore to any point in time within it. They only happen while the database is in theavailablestate. For any database that matters, use a retention of 1 day or more. - Snapshots manuais: você cria quando quiser; não são apagados quando a instância é excluída (até 100 manuais por Region, segundo a página lida). Backups automáticos são apagados com a instância, a não ser que você escolha retê-los; o snapshot final é opcional.Manual snapshots: you create them whenever you want; they are not deleted when the instance is deleted (up to 100 manual per Region per the page read). Automated backups are deleted with the instance unless you choose to retain them; the final snapshot is optional.
- O primeiro snapshot tem o banco completo; os seguintes são incrementais. Backups ficam no S3 e geram custo de armazenamento.The first snapshot holds the full database; later ones are incremental. Backups live in S3 and incur storage cost.
Storage autoscalingStorage autoscaling
Você define um Maximum storage threshold. O RDS aumenta o storage quando o espaço livre cai a 10% ou menos do alocado por pelo menos 5 minutos, e as modificações anteriores terminaram (máximo de quatro por 24 h). O aumento é do maior valor entre 10 GiB, 10% do alocado e o crescimento previsto. Não precisa de reinício nem causa downtime.You set a Maximum storage threshold. RDS grows storage when free space falls to 10% or less of the allocated for at least 5 minutes and previous modifications have completed (at most four per 24 h). The increase is the greater of 10 GiB, 10% of allocated, and predicted growth. No reboot and no downtime.
Nomes: instância vs. bancoNames: instance vs. database
| Campo / Field | O que éWhat it is |
|---|---|
| DB instance identifier | Nome da instância no RDS (até 63 caracteres alfanuméricos, único na conta e Region).The instance's name in RDS (up to 63 alphanumeric characters, unique per account and Region). |
| Initial database name | Nome do banco criado dentro da instância. Se você não informar, o RDS não cria banco (exceto em Oracle e PostgreSQL).Name of the database created inside the instance. If you leave it out, RDS does not create one (except for Oracle and PostgreSQL). |
Quando usarWhen to use
Bancos relacionais de aplicações, com backup, patch e failover gerenciados. Multi-AZ e deletion protection em produção.Application relational databases with managed backups, patching and failover. Multi-AZ and deletion protection in production.Quando evitarWhen to avoid
Acesso público sem necessidade; usar o master na aplicação; achar que Multi-AZ substitui backup; depender de read replica como alta disponibilidade.Public access without need; using the master in the application; assuming Multi-AZ replaces backups; relying on a read replica as high availability.O standby de um Multi-AZ DB instance atende consultas de leitura?Does a Multi-AZ DB instance's standby serve read queries?
Instance Identifier e Initial Database Name são a mesma coisa?Are Instance Identifier and Initial Database Name the same?
- What is Amazon RDS?
- Working with a DB instance in a VPC
- Settings for DB instances
- Master user account privileges
- Configuring and managing a Multi-AZ deployment
- Introduction to backups
- Managing capacity automatically with storage autoscaling
- Amazon RDS Proxy
Corrigido ou removido: "você não tem acesso ao root; o master é restrito" foi trocado pela descrição da documentação (privilégios elevados do master, lista por motor); "a VPC não muda depois" e "a chave KMS não pode ser alterada depois" saíram por falta de suporte nas páginas lidas; itens sobre o helper "Connect to an EC2" e sobre Certificate Authority ficaram fora por falta de leitura da fonte (consulte "Settings for DB instances").Corrected or removed: "you do not get root; the master is restricted" was replaced with the docs' description (the master's elevated privileges, listed per engine); "the VPC cannot change later" and "the KMS key cannot be changed afterwards" were dropped for lack of support in the pages read; the "Connect to an EC2" helper and Certificate Authority items were left out for lack of a source read (see "Settings for DB instances").
S3
Amazon Simple Storage Service: armazenamento de objetos com grande escala, disponibilidade, segurança e desempenho, para sites, backups, aplicações, data lakes e mais.Amazon Simple Storage Service: object storage with great scalability, availability, security and performance, for websites, backups, applications, data lakes and more.
Bucket
Contêiner de objetos, criado em uma Region. Nome e Region não mudam depois. O nome de um bucket de uso geral é único no namespace global (ou no namespace regional da sua conta).A container for objects, created in a Region. Name and Region cannot change afterwards. A general purpose bucket's name is unique in the global namespace (or in your account's regional namespace).Object & key
Objeto = dados + metadados. A key é o identificador dentro do bucket. Bucket + key (+ versão) identificam o objeto. Com versioning, você preserva e restaura cada versão.Object = data + metadata. The key is the identifier inside the bucket. Bucket + key (+ version) identify the object. With versioning you preserve and restore every version.Privado por padrãoPrivate by default
Buckets e objetos são privados até você conceder acesso (políticas de bucket, IAM, access points). O Block Public Access vem ativado; mantenha-o, salvo necessidade específica.Buckets and objects are private until you grant access (bucket policies, IAM, access points). Block Public Access comes on; keep it on unless you have a specific need.Consistência forteStrong consistency
Leitura-após-escrita forte para PUT e DELETE em todas as Regions: após um PUT bem-sucedido, o GET/LIST seguinte já vê o dado novo. Para gravações simultâneas na mesma key, vale a última (last-writer-wins).Strong read-after-write consistency for PUT and DELETE in all Regions: after a successful PUT, the next GET/LIST already sees the new data. For concurrent writes to the same key, the last writer wins.Presigned URL
Link temporário que dá acesso a um objeto por tempo limitado, sem mexer na bucket policy. Usa as credenciais de quem gerou a URL; para funcionar, essa identidade precisa ter a permissão da operação (ex.: s3:GetObject). Serve para download (GET) e upload (PUT) direto no S3, sem passar pelo seu servidor. Se já existir um objeto com a mesma key, o upload o substitui.A temporary link granting access to one object for a limited time, without touching the bucket policy. It uses the credentials of whoever generated the URL; for it to work, that identity needs the operation's permission (e.g. s3:GetObject). It serves direct download (GET) and upload (PUT) to S3, bypassing your server. If an object with the same key already exists, the upload replaces it.
- Validade: pelo console, de 1 minuto a 12 horas; pela AWS CLI/SDKs, até 7 dias (credenciais de usuário IAM com Signature V4).Lifetime: from the console, 1 minute to 12 hours; from the AWS CLI/SDKs, up to 7 days (IAM user credentials with Signature V4).
- Pegadinha: se a URL foi gerada com credenciais temporárias (role, STS, perfil da EC2/ECS), ela expira junto com a credencial, mesmo que você tenha pedido prazo maior. O S3 confere a validade no momento da requisição: um download já iniciado continua, mas retomar depois do prazo falha.Gotcha: if the URL was generated with temporary credentials (role, STS, EC2/ECS profile) it expires together with the credential, even if you asked for a longer period. S3 checks validity at request time: a download already running continues, but resuming after expiry fails.
- A URL é um "bearer token": quem a tiver acessa o objeto. Proteja-a e, se quiser, restrinja com condições (ex.:
s3:signatureAge, origem de rede).The URL is a bearer token: whoever holds it reaches the object. Protect it and, if you want, restrict with conditions (e.g.s3:signatureAge, network origin).
CustosCosts
A cobrança do S3 é por uso, sem taxas mínimas ou de excedente. Valores reais ficam na página de preços do S3 (as cifras da anotação antiga foram removidas). Pontos que a documentação destaca:S3 billing is pay-as-you-go, with no minimum or overage fees. Real values are on the S3 pricing page (the figures in the old note were removed). Points the docs highlight:
- Armazenamento por classe, requisições e transferência de dados.Storage per class, requests and data transfer.
- Classes IA e Glacier têm taxa de recuperação, duração mínima de armazenamento e tamanho mínimo cobrado.IA and Glacier classes have a retrieval fee, a minimum storage duration and a minimum billable size.
- Transições de lifecycle têm custo por requisição (não há taxa de recuperação nas transições).Lifecycle transitions have a per-request cost (there is no retrieval charge on transitions).
Classes de armazenamentoStorage classes
Todas as classes são projetadas para alta durabilidade (11 noves, 99,999999999%, exceto a legada Reduced Redundancy). A diferença está em acesso, disponibilidade, custo e regras mínimas:All classes are designed for high durability (eleven 9s, 99.999999999%, except the legacy Reduced Redundancy). The difference is access, availability, cost and minimum rules:
| ClasseClass | Indicada paraDesigned for | Duração mínimaMin duration |
|---|---|---|
| Standard | Dados acessados com frequência, acesso em milissegundos (padrão)Frequently accessed data, millisecond access (default) | — |
| Intelligent-Tiering | Padrão de acesso desconhecido ou variável: move objetos entre camadas sozinho. Sem taxa de recuperação; há taxa de monitoramento. Objetos menores que 128 KB não são monitorados.Unknown or changing access: moves objects between tiers by itself. No retrieval fee; there is a monitoring fee. Objects under 128 KB are not monitored. | — |
| Standard-IA / One Zone-IA | Dados de longa vida e acesso raro, ainda em milissegundos. One Zone-IA guarda em uma única AZ (não resiste à perda da AZ).Long-lived, infrequently accessed data, still millisecond access. One Zone-IA stores in a single AZ (does not survive losing the AZ). | 30 diasdays |
| Glacier Instant Retrieval | Arquivo acessado cerca de uma vez por trimestre, com acesso em milissegundosArchive accessed about once a quarter, millisecond access | 90 diasdays |
| Glacier Flexible Retrieval | Arquivo acessado cerca de uma vez por ano; recuperação de minutos a horas, é preciso restaurar antes de lerArchive accessed about once a year; retrieval in minutes to hours, you must restore before reading | 90 diasdays |
| Glacier Deep Archive | Arquivo acessado menos de uma vez por ano; recuperação em horas, é preciso restaurarArchive accessed less than once a year; retrieval in hours, you must restore | 180 diasdays |
Existe ainda o S3 Express One Zone (latência de um dígito de milissegundo em uma única AZ). Os tamanhos mínimos faturáveis (128 KB nas IA e Glacier IR) e as disponibilidades por classe estão na tabela de comparação oficial. Correção: o "Glacier" da anotação antiga virou três classes, e só duas exigem restauração.There is also S3 Express One Zone (single-digit millisecond latency in one AZ). Minimum billable sizes (128 KB for IA and Glacier IR) and per-class availability are in the official comparison table. Correction: the old note's "Glacier" is now three classes, and only two need a restore.
Lifecycle rules
Um conjunto de regras no bucket que faz o S3 agir sobre grupos de objetos. Dois tipos de ação: transition (mover para uma classe mais barata) e expiration (apagar quando expirar). As regras valem para objetos existentes e futuros; uma bucket policy não consegue impedir a ação do lifecycle.A set of rules on the bucket that makes S3 act on groups of objects. Two kinds of action: transition (move to a cheaper class) and expiration (delete when it expires). Rules apply to existing and future objects; a bucket policy cannot prevent the lifecycle action.
Prazos de exemplo. Respeite as durações mínimas das classes (30/90/180 dias): apagar ou mover cedo gera cobrança proporcional.Example timings. Respect the classes' minimum durations (30/90/180 days): deleting or moving early incurs a pro-rated charge.
Static website hosting
O S3 pode hospedar um site estático: páginas com conteúdo estático, possivelmente com scripts no navegador (SPA, HTML puro). É preciso configurar um index document e permissões de acesso. A AWS recomenda usar o AWS Amplify Hosting para servir o conteúdo do S3 com CDN (CloudFront) e URL HTTPS. Se o bucket usa criptografia SSE-KMS, é obrigatório servir via CloudFront com origin access control (OAC), pois SSE-KMS não suporta usuários anônimos.S3 can host a static website: pages with static content, possibly with client-side scripts (SPA, plain HTML). You must configure an index document and access permissions. AWS recommends using AWS Amplify Hosting to serve S3 content through a CDN (CloudFront) with an HTTPS URL. If the bucket uses SSE-KMS encryption, you must serve through CloudFront with origin access control (OAC), because SSE-KMS does not support anonymous users.
Quando usarWhen to use
Arquivos, uploads de usuários (com presigned URL), backups, logs, sites estáticos, dados que seguem o ciclo hot→cold com lifecycle.Files, user uploads (with presigned URLs), backups, logs, static sites, data following a hot→cold cycle with lifecycle.Quando evitarWhen to avoid
Desligar o Block Public Access sem necessidade; presigned URL longa com credencial temporária; mover objetos pequenos para classes com tamanho mínimo; bloquear o lifecycle esperando que a bucket policy resolva.Turning Block Public Access off without need; long presigned URLs with temporary credentials; moving tiny objects to classes with a minimum size; expecting a bucket policy to block lifecycle.Uma presigned URL gerada por uma role de 1 hora vale 7 dias se eu pedir?Does a presigned URL generated by a 1-hour role last 7 days if I ask?
Quais classes exigem restaurar o objeto antes de ler?Which classes require restoring the object before reading?
- What is Amazon S3?
- Download and upload objects with presigned URLs
- Understanding and managing Amazon S3 storage classes
- Managing the lifecycle of objects
- Hosting a static website using Amazon S3
Removido por falta de fonte: "$0,023 por GB", "uploads são mais caros", "entrada é grátis" e "egress costuma ser o maior custo". Ajustado: "index.html obrigatório" (a documentação fala em configurar um index document).Removed for lack of a source: "$0.023 per GB", "uploads cost more", "ingress is free" and "egress is usually the biggest cost". Adjusted: "index.html required" (the docs speak of configuring an index document).
Domínios e DNSDomains & DNS
O DNS traduz nomes (app.exemplo.com.br) em destinos. Os registros de uma zona dizem para onde cada nome aponta; o domínio em si é só o nome registrado.DNS translates names (app.example.com) into destinations. A zone's records say where each name points; the domain itself is just the registered name.
Tipos de registroRecord types
| TipoType | FunçãoPurpose |
|---|---|
| A | Aponta um nome para um endereço IPv4 (ex.: 192.0.2.1).Points a name to an IPv4 address (e.g. 192.0.2.1). |
| AAAA | Igual ao A, mas para IPv6 (ex.: 2001:0db8:85a3:0:0:8a2e:0370:7334).Same as A, but for IPv6 (e.g. 2001:0db8:85a3:0:0:8a2e:0370:7334). |
| CNAME | Mapeia um nome para outro nome. O protocolo DNS não permite CNAME no topo da zona (o apex, ex.: exemplo.com), só em subdomínios. E, se um nome tem CNAME, não pode ter outros registros.Maps a name to another name. The DNS protocol does not allow a CNAME at the top of the zone (the apex, e.g. example.com), only on subdomains. And a name with a CNAME cannot have other records. |
| Alias (Route 53) | Extensão do Route 53: aponta para certos recursos AWS (ALB, CloudFront, bucket S3 de site, API Gateway...). Pode ser usado no apex. Não é cobrada a consulta a alias para recursos AWS.A Route 53 extension: points to certain AWS resources (ALB, CloudFront, S3 website bucket, API Gateway...). It can be used at the apex. Alias queries to AWS resources are not charged. |
| NS | Identifica os name servers da zona, quem responde pelo DNS dela. Também delega subdomínios para outra zona.Identifies the zone's name servers, who answers for its DNS. Also delegates subdomains to another zone. |
| MX | Servidores de e-mail do domínio, cada um com uma prioridade (o menor valor vence). Deve apontar para o nome de um registro A/AAAA, não de um CNAME.The domain's mail servers, each with a priority (the lowest value wins). It must point to the name of an A/AAAA record, not a CNAME. |
| TXT | Uma ou mais strings entre aspas (até 255 caracteres cada; até 4.000 no valor). Muito usado para verificações e e-mail (SPF).One or more quoted strings (up to 255 characters each; up to 4,000 in the value). Widely used for verification and email (SPF). |
| SOA | Informações administrativas da zona (criado pelo Route 53).Administrative information about the zone (created by Route 53). |
| CAA | Define quais autoridades certificadoras podem emitir certificados para o domínio.Defines which certificate authorities may issue certificates for the domain. |
E-mail profissional no seu domínio exige o domínio e registros MX apontando para o provedor de e-mail. A AWS não recomenda mais o tipo SPF: use um TXT.Professional email on your domain needs the domain and MX records pointing to your email provider. AWS no longer recommends the SPF type: use a TXT record.
Provar que o domínio é seuProving the domain is yours
O padrão da AWS para certificados é a validação por DNS: o ACM entrega um CNAME único e você o cria na zona. Veja ACM.AWS's standard for certificates is DNS validation: ACM hands you a unique CNAME and you create it in the zone. See ACM.
Quando usarWhen to use
CNAME para subdomínios que apontam a outro nome; Alias para o apex e para recursos AWS; TXT/MX para verificação e e-mail.CNAME for subdomains pointing to another name; Alias for the apex and AWS resources; TXT/MX for verification and email.Quando evitarWhen to avoid
CNAME no apex; CNAME com outros registros no mesmo nome; MX apontando para um CNAME; SPF como tipo de registro.A CNAME at the apex; a CNAME together with other records on the same name; an MX pointing to a CNAME; SPF as a record type.Posso usar CNAME no domínio raiz?Can I use a CNAME on the root domain?
Removido por falta de fonte: "você prova que é dono criando registros TXT no painel do registrador" (a documentação da AWS descreve CNAME para o ACM).Removed for lack of a source: "you prove ownership by creating TXT records in the registrar panel" (AWS docs describe a CNAME for ACM).
Route 53
Serviço de DNS da AWS. Você cria hosted zones com os registros dos seus domínios e aponta nomes para recursos como o load balancer.AWS's DNS service. You create hosted zones holding your domains' records and point names at resources such as the load balancer.
Hosted Zones
Uma hosted zone é um contêiner de registros que dizem como rotear o tráfego de um domínio e seus subdomínios. Ela tem o mesmo nome do domínio. O preço por zona e por consulta está na página de preços do Route 53 (o valor fixo da anotação antiga foi removido).A hosted zone is a container of records telling how to route traffic for a domain and its subdomains. It has the same name as the domain. Per-zone and per-query pricing is on the Route 53 pricing page (the old note's fixed value was removed).
PúblicaPublic
Registros que dizem como rotear o tráfego na internet (site, API, e-mail).Records saying how to route traffic on the internet (website, API, email).PrivadaPrivate
Registros que dizem como rotear o tráfego dentro de uma VPC, por exemplodb.interno.exemplo resolvendo só para quem está na rede.Records saying how to route traffic inside a VPC, for example db.internal.example resolving only for those on the network.NS & SOA
Ao criar uma zona pública, o Route 53 cria os registros NS (quatro name servers) e SOA. Para que a internet use essa zona, vá ao registrador do domínio (onde ele foi registrado) e configure os quatro name servers do NS padrão da zona. Para delegar um subdomínio a outra zona, crie um NS na zona do domínio raiz.When you create a public zone, Route 53 creates the NS records (four name servers) and SOA. For the internet to use that zone, go to the domain's registrar (where it was registered) and set the four name servers from the zone's default NS record. To delegate a subdomain to another zone, create an NS record in the root domain's zone.
Apontar o domínio para o ALBPointing the domain at the ALB
Crie um registro Alias do tipo A (e AAAA, se o ALB tiver IPv6) para o ALB. Quando o IP do load balancer muda, o Route 53 passa a responder com o novo sem você fazer nada. Para um alias a um recurso AWS você não define o TTL (vale o padrão do recurso) e não paga a consulta. O Alias funciona também no apex (exemplo.com.br), onde o CNAME não é permitido.Create an Alias record of type A (and AAAA, if the ALB has IPv6) for the ALB. When the load balancer's IP changes, Route 53 starts answering with the new one without you doing anything. For an alias to an AWS resource you do not set the TTL (the resource's default applies) and queries are not charged. Alias also works at the apex (example.com), where CNAME is not allowed.
- O alias precisa ter o mesmo nome e tipo da consulta (A ou AAAA) para ser respondido.The alias must match the query's name and type (A or AAAA) to be answered.
- Há políticas de roteamento além da simples: weighted, latency, failover, geolocation e geoproximity também aceitam alias.There are routing policies beyond simple: weighted, latency, failover, geolocation and geoproximity also accept alias.
- Para HTTPS, emita o certificado no ACM (a validação por DNS cria um CNAME nesta mesma zona).For HTTPS, issue the certificate in ACM (DNS validation creates a CNAME in this same zone).
Quando usarWhen to use
Domínios que apontam para recursos AWS (Alias); nomes internos por VPC (zona privada); controle do DNS junto da infraestrutura.Domains pointing to AWS resources (Alias); VPC-internal names (private zone); keeping DNS next to the infrastructure.Quando evitarWhen to avoid
Ter zonas duplicadas para o mesmo domínio sem saber qual está nos NS do registrador; CNAME no apex; esquecer de atualizar os NS no registrador.Having duplicate zones for the same domain without knowing which one the registrar's NS points to; a CNAME at the apex; forgetting to update the NS at the registrar.Onde coloco os 4 NS da Route 53 se comprei o domínio em outro lugar?Where do I put Route 53's 4 NS if I bought the domain elsewhere?
Alias ou CNAME para apontar o domínio raiz ao ALB?Alias or CNAME to point the root domain at the ALB?
- Working with hosted zones
- Choosing between alias and non-alias records
- Supported DNS record types
- ACM DNS validation
Movido: o item "ACM" que ficava aqui agora tem sua própria seção. Não verificado nesta rodada: compra/registro de domínio pelo Route 53 (a anotação antiga o citava; consulte a documentação de registro de domínios).Moved: the "ACM" item that lived here now has its own section. Not verified this round: buying/registering a domain through Route 53 (the old note mentioned it; see the domain registration docs).