Posso usar a API de metadados para verificar se uma instância está sendo finalizada?

1

Usando instâncias do servidor do Windows 2016.

Eu quero que a instância execute um comando local antes de terminar.

Eu posso ter um script executado quando o Windows está sendo desligado.

Eu gostaria que o script verificasse se a instância em si está no estado final e, se for o caso, execute algumas coisas de limpeza.

Não tem certeza dos documentos, existe uma maneira de verificar se a instância local está sendo terminada da própria instância? link

Isso retorna InstanceStatuses:

aws ec2 describe-instance-status --include-all-instances --instance-ids i-123123123

O que parece:

{
    "InstanceStatuses": [
        {
            "AvailabilityZone": "us-west-2a",
            "InstanceId": "i-123123123",
            "InstanceState": {
                "Code": 16,
                "Name": "running"
            },
            "InstanceStatus": {
                "Details": [
                    {
                        "Name": "reachability",
                        "Status": "passed"
                    }
                ],
                "Status": "ok"
            },
            "SystemStatus": {
                "Details": [
                    {
                        "Name": "reachability",
                        "Status": "passed"
                    }
                ],
                "Status": "ok"
            }
        }
    ]
}

Como fica o estado quando a instância está "encerrando"? Ainda não terminou, mas está pendente de rescisão? Como posso verificar se uma instância está no estado de finalização pendente?

    
por red888 09.11.2018 / 23:32

1 resposta

1

O que você está chamando de terminating state AWS refere-se a shutting-down .

Você pode usar describe-instances e usar --query ou jq para analisar as informações desejadas.

Exemplo com --query:

aws ec2 describe-instances --instance-ids i-070ca5c669933b949 --query 'Reservations[].Instances[].State.Code

Retornará o código de status da instância (detalhes abaixo):

[ 48 ]

Exemplo com jq:

aws ec2 describe-instances --instance-ids i-070ca5c669933b949 |jq .Reservations[].Instances[].State.Code

Saídas:

48

Você também pode obter a saída no texto:

aws ec2 describe-instances --instance-ids i-070ca5c669933b949 |jq .Reservations[].Instances[].State.Name

A saída será:

"terminated"

Abaixo está a saída pertinente do comando e os códigos que correspondem ao estado da instância:

State -> (structure)
    The current state of the instance.

    Code -> (integer)
        The low byte represents the state. The high byte is used for internal purposes and should be ignored.

        0 : pending
        16 : running
        32 : shutting-down
        48 : terminated
        64 : stopping
        80 : stopped
    Name -> (string)
        The current state of the instance.

Referências

link link

    
por 12.11.2018 / 21:27