O UserData da sua pergunta é basicamente um script de shell que é executado na primeira inicialização de sua instância. Consulte a documentação em UserData para obter mais detalhes sobre isso.
Se você quiser configurar um conjunto de chaves públicas , poderá usar AWS :: CloudFormation :: Init em vez disso.
Na seção de arquivos, declare o arquivo authorized_keys:
"files" : {
"/home/ec2-user/.ssh/authorized_keys" : {
"content" : { "Fn::Join" : ["", [
{ "Fn::FindInMap" : [ "Admins", "userx", "sshPublicKey"] }, "\n",
{ "Fn::FindInMap" : [ "Admins", "usery", "sshPublicKey"] }, "\n"
]] },
"mode" : "000600",
"owner" : "ec2-user",
"group" : "ec2-user"
}
...
Os dados do usuário neste exemplo são provenientes da seção Mapeamentos do modelo de cloudformation:
"Admins" : {
"userx" : { "sshPublicKey" : "ssh-rsa AAAABxxxxx...xxxxBSES/H userx" },
"usery" : { "sshPublicKey" : "ssh-rsa AAAABxxxxx...xxxxKM+aSe usery" }
}
Por favor, teste primeiro usando um nome de arquivo diferente ao invés de authorized_keys , pois você será bloqueado da sua instância quando cometer o menor erro.