Criar instância virtual no EC2
Uma vez que temos o key-pair e security group definidos, podemos criar nossa instância virtual:
aws --profile personal ec2 \
run-instances \
--image-id ami-0c4f7023847b90238 \
--instance-type t2.micro \
--key-name aws-ec2-key \
--security-group-ids <sg-group-id> \
--associate-public-ip-address \
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=myapp}]" \
--count 1
Explicação do comando a seguir:
run-instances
A ação se chama run-instances
, que cria uma ou mais instâncias virtuais a partir de uma imagem de sistema operacional pré-definida no AWS.
image-id
Identificador da imagem (AMI) na AWS. Exemplo da lista de AMI's quando se cria instância pela interface web:

No nosso caso, utilizamos a AMI ami-0c4f7023847b90238
que é referente ao Ubuntu Server 20.04 LTS.
instance-type
Tipo da instância, neste caso sendo t2.micro
que tem 1GB de memória e faz parte do período free tier.
key-name
Nome da chave key-pair
criada previamente, que se chama aws-ec2-key
. A AWS vai atribuir a chave pública do par nesta instância, assim poderemos posteriormente fazer SSH com a parte privada que já guardamos nos steps anteriores.
security-group-ids
Lista de ID's de security groups. Neste exemplo usamos aquele criado previamente, que por regra abre somente a porta 22 (SSH).
outras opções
--associate-public-ip-address
: associa um IP público à instância. Sem esta opção, a instância não irá ter IP público, apenas privado dentro da mesma rede interna da conta (VPC).--count
: número de instâncias a serem criadas com estas especificações, no nosso caso apenas 1.--tag-specifications
: dar uma tag "Name" à instância, para melhor visualização na interface web.
Verificando que a instância foi criada
Nossa instância foi criada. Para verificar que foi criada, bem como sabe qual o IP público pra acesso SSH:
aws --profile personal ec2 \
describe-instances \
--filters "Name=tag:Name,Values=myapp" | \
jq -r '.Reservations[0].Instances[0].PublicIpAddress'
Testando acesso SSH à instância virtual
Sabendo o IP público, que dá pra extrair tanto pelo CLI como vimos no último passo como também através da interface web, podemos fazer o SSH utilizando a chave privada.
Mas antes, vamos marcar a chave como sendo apenas de leitura:
# definindo apenas permissão de leitura à chave, pois por segurança,
# o server rejeita uma chave pública que tenha permissões de escritas,
# evitando assim ataques de key-pair que possam forjar uma chave igual
chmod 400 ~/.ssh/aws-ssh-key.pem
Agora podemos, seguramente, fazer nosso primeiro acesso SSH ao server:
ssh ubuntu@<public-ip> -i ~/.ssh/aws-ssh-key.pem

Last updated