Não é possível iniciar uma nova instância do EC2 com um volume existente do EBS anexado.
Em vez disso, anexe seu volume do EBS existente após o lançamento da nova instância do EC2. Você tem duas opções:
- Anexe seu volume do EBS existente durante a sequência inicial de inicialização da sua instância. Usando o cloud init, você tem uma execução de script inicial que anexa o volume.
- Depois de lançar sua nova instância do EC2, aguarde que ela termine de ser iniciada e, em seguida, anexe o volume existente do EBS de dentro do seu script Python.
Editar: adicionou mais detalhes com base nos comentários.
Todos os vários SDKs de idiomas chamam a API de base da AWS. Veja a documentação básica da API da AWS para RunInstances
:
Nesse comando, há um parâmetro BlockDeviceMapping
de forma que, se você seguir sua estrutura de dados, não incluirá uma propriedade de ID de volume.
Não estou familiarizado com o SDK do Python, mas é possível que o SDK esteja sobrecarregando a classe BlockDeviceMapping
para representar uma especificação para ativação (que não permite o ID do volume) e um mapeamento para uma instância em execução (que pode incluir um ID de volume).
Eu costumo trabalhar com o AWS SDK for .NET e raramente me refiro à documentação específica para isso. Eu normalmente me refiro aos documentos de base da API (como referi acima), então eu "encontro" os métodos apropriados para usar no .NET SDK. Mas considero os documentos da API de base como corretos se houver uma discrepância.