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:
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:
Agora podemos, seguramente, fazer nosso primeiro acesso SSH ao server:
# 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