Amazon ec2 user-data, como funciona?

Estamos a iniciar instâncias e a aceder aos dados do utilizador que colocamos. Mas alguém entende os internos desta operação (do lado da Amazônia)? Quando passamos os dados do usuário, em que ponto os dados são transmitidos para a VM (este é um recurso Xen) e onde é armazenado?

eu pensei primeiro, ele foi definido como o USER_DATA env var, mas nós também podemos passá-lo como um arquivo. Onde está esse ficheiro guardado? É genérico para todas as instâncias ou varia dependendo da AMI?

Isto não é ... um problema em si, só queria saber como a Amazon faz isso.

imagem de dados do Utilizador: http://d.pr/GZlY

Author: bfavaretto, 2012-03-19

4 answers

Os dados do utilizador estão disponíveis para a instância com um simples pedido de HTTP neste URL:

http://169.254.169.254/latest/user-data

A Amazon EC2 não coloca estes dados de usuário na instância diretamente, embora muitos AMIs tenham código que instrui a instância para baixar e processar os dados de usuário automaticamente.

Ver além disso:

 50
Author: Eric Hammond, 2015-11-15 00:48:12

Um exemplo fácil para a compreensão de todos: se quiser criar o ficheiro /tmp/testfile.txt quando a máquina começar, pode simplesmente adicionar estas duas linhas no campo User data.

#!/bin/bash
touch /tmp/testfile.txt

Lembre-se de colocar o #!/bin/bash no topo antes dos seus comandos.

Quando executar a instância (Linux AMI), poderá ver o conteúdo do campo User data em /var/lib/cloud/instance/user-data.txt

 5
Author: Avión, 2017-10-03 07:46:41

AWS userdata é o conjunto de comandos/dados que pode fornecer a uma instância na hora de lançamento. Por exemplo, se você estiver lançando uma instância ec2 e quiser ter o docker instalado no ec2 recém-lançado, então você pode fornecer um conjunto de comandos bash no campo userdata da página de configuração aws ec2.

Usecase

Toma. is a well explained example of AWS userdata with tutorial de vídeo

 1
Author: Ajeet Khan, 2017-04-25 10:32:07
Desculpe colocar uma pergunta tão antiga, mas este parece ser o melhor lugar para colocar esta informação adicional.

A maior parte dos documentos AWS descrevem os dados do utilizador como uma propriedade na qual se pode colocar o script de inicialização do ciclo de vida da instância, isto é, as coisas que se deseja executar apenas quando a instância é lançada pela primeira vez.

Este é geralmente o caso, mas tem havido pelo menos uma outra pessoa além de mim que quer realizar diferentes scripts no reinício, digamos para corrigir um quebrado a chave ou algo assim. E adivinha... você pode fazer isso usando dados do Usuário.

Aqui está o código e o link para o documento AWS...

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "Hello World." >> /tmp/sdksdfjsdlf
--//

Não consigo encontrar documentação sobre esta formatação de dados do utilizador que permita que isto aconteça. Já experimentei e funciona. Tentei ver se funciona em todas as startups, e funciona.

Por isso, se achas que precisas de fazer isto, recomendo-te apoio. Certifique - se de que você tem uma cópia dos dados originais do Usuário, e use o código fornecido modificado para suite, e remover o código na próxima vez que você parar a instância (para evitar várias execuções do script).
 1
Author: Les, 2018-04-03 18:12:24