De acordo com o artigo de notícias Novo comando de execução do EC2 , a AWS CLI deve oferecer suporte a um novo subcomando para executar scripts em instâncias remotas do EC2.
No entanto, fiz o check-in aws ec2 help
, mas não consigo encontrar o comando relevante.
Eu instalei aws
via apt-get
:
$ aws --version
aws-cli/1.14.32 Python/3.5.4 Linux/4.12.7-64 botocore/1.8.36
Qual subcomando devo procurar e qual é a sintaxe a ser executada, digamos ipconfig
no PowerShell na instância remota do EC2?
amazon-ec2
aws-cli
kenorb
fonte
fonte
Respostas:
Para executar o ipconfig no comando Executar do AWS Systems Manager:
Nota: Se você encontrou o erro, considere especificar o correto
--region
.Isso pressupõe que você tenha suas credenciais e CLI da AWS configuradas corretamente. Consulte o passo a passo do comando Executar do Gerenciador de Sistemas usando a CLI da AWS para obter mais informações.
Aqui está o exemplo prático do comando shell de envio e obtenção da saída do comando:
fonte
Aqui está um script Bash auxiliar que usa
aws ssm send-command
para executar os comandos:Uso:
Exemplo:
Para executar saídas maiores, consulte: Como evitar que a saída seja truncada ao executar o comando AWS SSM?
fonte
Sim, você pode fazer isso com o gerente de sistemas da AWS. O comando Executar do AWS Systems Manager permite executar remotamente e com segurança um conjunto de comandos no EC2 e no servidor local. Abaixo estão as etapas de alto nível para conseguir isso.
Anexar função do IAM da instância: a instância ec2 deve ter uma função do IAM com a política AmazonSSMFullAccess. Essa função permite que a instância se comunique com a API do Systems Manager.
Instalar agente SSM: A instância do EC2 deve ter o agente SSM instalado nela. O Agente SSM processa os pedidos de comando de execução e configura a instância conforme o comando.
Comando Execute: Exemplo de uso via AWS CLI:
Execute o seguinte comando para recuperar os serviços em execução na instância. Substitua Instance-ID pelo ec2 instance id.
Informações mais detalhadas: aqui
fonte
Aqui está algo super legal que eu faço com o AWS SSM Send-Command!
Usando o Apache Airflow, crio uma Instância EC2 totalmente nova, usando um Modelo de formação em nuvem (ou CFT), que é apenas um arquivo JSON com todos os valores de configuração para minha Instância EC2 que eu quero; observe também que nesta CFT também tenho um comando de autoinicialização que copia um script Python de um local S3 para a nova instância do EC2, para que eu possa executá-lo posteriormente usando um comando de envio do SSM! Eu faço isso usando Python3 e o AWS SDK para Python3 chamado biblioteca Boto3. Aqui está parte do comando para criar a nova pilha CFT que, por sua vez, cria minha nova instância EC2:
Em seguida, posso obter o ID da instância da nova instância do EC2 (necessária para usar o comando de envio do SSM) usando algo como isto:
Em seguida, posso obter o ID da instância da Instância EC2 do servidor do Airflow Worker atual executando este comando
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
através do Python:AGORA!!!! PARA A GRANDE FINAL
Posso executar um script na nova Instância EC2 que eu criei e enviar esse script para quaisquer parâmetros / argumentos que eu quiser ... incluindo o ID da instância do servidor que enviou o Comando de Envio do SSM para que seja executado assim que meu script for concluído executando na nova instância do EC2, ele pode enviar outro comando de envio do SSM de volta ao meu servidor Airflow para informar que o script foi concluído. Este é um nível muito alto, sem detalhes, mas é apenas para demonstrar uma ideia :)
Não tenho certeza se isso ajudou alguém, mas é um exemplo interessante e divertido de fazer algo com o AWS SSM Send-Command! Embora, provavelmente, um cheiro de código xD
fonte