Identificar cada instância executada em uma única solicitação
Este exemplo demonstra como usar dados do usuário e metadados de instância para configurar as instâncias do Amazon EC2.
nota
Os exemplos nesta seção usam o endereço IPv4 do IMDS: 169.254.169.254
. Se você estiver recuperando metadados de instância para instâncias do EC2 pelo endereço IPv6, certifique-se de habilitar e usar o endereço IPv6: [fd00:ec2::254]
. O endereço IPv6 do IMDS é compatível com comandos IMDSv2. O endereço IPv6 só pode ser acessado em instâncias baseadas no AWS Nitro System e em uma sub-rede compatível com IPv6 (pilha dupla ou IPv6 apenas).
Alice deseja executar quatro instâncias de sua AMI de banco de dados favorita, em que a primeira atua como a instância original e as três restantes como réplicas. Ao executá-las, ela deseja adicionar dados do usuário sobre a estratégia de replicação para cada réplica. Ela sabe que esses dados estarão disponíveis para todas as quatro instâncias, então, ela precisa estruturar os dados do usuário de forma que permita a cada instância reconhecer quais partes são aplicáveis a ela. Ela pode fazer isso usando o valor de metadados da instância ami-launch-index
, que será exclusivo para cada instância. Se você iniciar mais de uma instância ao mesmo tempo, o ami-launch-index
indicará a ordem em que as instâncias foram executadas. O valor da primeira instância iniciada é 0
.
Veja a seguir os dados de usuário construídos por Alice.
replicate-every=1min | replicate-every=5min | replicate-every=10min
Os dados replicate-every=1min
definem a configuração da primeira réplica, replicate-every=5min
definem a configuração da segunda réplica e assim por diante. Alice decide fornecer esses dados como uma string ASCII com um símbolo de pipe (|
) que limita os dados para as instâncias separadas.
Alice executa quatro instâncias usando o comando run-instances e especificando os dados do usuário.
aws ec2 run-instances \ --image-id
ami-0abcdef1234567890
\ --count 4 \ --instance-type t2.micro \ --user-data "replicate-every=1min | replicate-every=5min | replicate-every=10min"
Depois de executadas, todas as instâncias têm uma cópia dos dados do usuário e os metadados comuns mostrados aqui:
-
ID da AMI: ami-0abcdef1234567890
-
ID da reserva: r-1234567890abcabc0
-
Chaves públicas: nenhuma
-
Nome do security group: padrão
-
Tipo de instância: t2.micro
No entanto, cada instância tem metadados exclusivos, conforme mostrado nas tabelas a seguir.
Metadados | Valor |
---|---|
instance-id | i-1234567890abcdef0 |
ami-launch-index | 0 |
public-hostname | ec2-203-0-113-25.compute-1.amazonaws.com |
public-ipv4 | 67.202.51.223 |
local-hostname | ip-10-251-50-12.ec2.internal |
local-ipv4 | 10.251.50.35 |
Metadados | Valor |
---|---|
instance-id | i-0598c7d356eba48d7 |
ami-launch-index | 1 |
public-hostname | ec2-67-202-51-224.compute-1.amazonaws.com |
public-ipv4 | 67.202.51.224 |
local-hostname | ip-10-251-50-36.ec2.internal |
local-ipv4 | 10.251.50.36 |
Metadados | Valor |
---|---|
instance-id | i-0ee992212549ce0e7 |
ami-launch-index | 2 |
public-hostname | ec2-67-202-51-225.compute-1.amazonaws.com |
public-ipv4 | 67.202.51.225 |
local-hostname | ip-10-251-50-37.ec2.internal |
local-ipv4 | 10.251.50.37 |
Metadados | Valor |
---|---|
instance-id | i-1234567890abcdef0 |
ami-launch-index | 3 |
public-hostname | ec2-67-202-51-226.compute-1.amazonaws.com |
public-ipv4 | 67.202.51.226 |
local-hostname | ip-10-251-50-38.ec2.internal |
local-ipv4 | 10.251.50.38 |
Alice pode usar o valor ami-launch-index
para determinar qual parte dos dados do usuário é aplicável a uma instância específica.
-
Ela se conecta a uma das instâncias e recupera o
ami-launch-index
dessa instância para garantir que ela seja uma das réplicas: -
Ela salva o
ami-launch-index
como uma variável. -
Ela salva os dados do usuário como uma variável.
-
Finalmente, Alice usa o comando cut para extrair a parte dos dados do usuário aplicável à instância.