Eu sei que esta questão está morta há muito tempo, mas surgiu um novo recurso da AWS (meados de 2012) que fornece uma resposta melhor do que era possível anteriormente. Eu achei muito útil e pensei que futuros pesquisadores também poderiam.
Você não precisa mais armazenar chaves em uma instância da AWS para que o código nessa instância possa fazer chamadas da AWS. Agora você pode aproveitar as funções do IAM ( anunciado aqui) para conceder permissões da AWS em vez de armazenar localmente chaves ou certificados privados. As funções são aplicadas às instâncias no lançamento e fornecem acesso seguro baseado em token aos serviços da Amazon. Estes são tokens efêmeros, de rotação automática, armazenados em variáveis de ambiente e não em disco, então acredito que essa seria a maneira mais segura de lidar com os requisitos originais.
Isso não se aplica a chaves SSH gerais que você pode precisar em um ambiente Linux, mas elas não estariam vinculadas a suas contas da AWS e devem ser gerenciadas separadamente. As funções apenas medeiam seu acesso ao Amazon Services.
Uma coisa interessante sobre os Papéis é que você deve atribuí-los no lançamento da instância, mas é possível alterar o que eles são capazes a qualquer momento. Para o exemplo fornecido, você pode conceder à instância a função de mapear um EIP, montar volumes EBS e gravar em um bucket S3 específico e, em seguida, adicionar a capacidade de criar e pesquisar filas SQS mais tarde, se necessário, sem precisar alterar nada a instância.