Quando você cria sua conta da AWS, a Amazon cria automaticamente uma VPC padrão em cada região que abrange a região. Ele também cria sub-redes padrão para você em cada região; cada sub-rede abrange uma única zona. (Observe o plural "subnets".) Não há como uma sub-rede abranger várias zonas.
Ao criar uma solicitação pontual, você tem a opção de especificar uma VPC e uma sub-rede. Se você quiser que sua solicitação pontual seja apenas para uma zona específica, escolha a sub-rede gerada por padrão para essa zona. (Isso resolve o comentário de Michael acima.) Isso funciona muito bem, e é como eu esperava que as coisas funcionassem.
No entanto, você também tem a opção de "sem preferência" na sub-rede (e na zona implícita). Eu entendi "sem preferência" para significar "qualquer sub-rede". Parece que não é o caso (mas gostaria de receber uma correção aqui), e que "nenhuma preferência" significa que a Amazon escolhe uma sub-rede para você entre as sub-redes padrão. Ou seja, eles escolhem uma zona para você (como a zona está implícita na sub-rede escolhida). Parece que eles escolhem a atual zona de baixo preço, mas é claro que nem sempre será a zona de baixo preço de todos os tempos. E uma vez que a zona é escolhida, é fixada para a vida da solicitação. (Para um pedido persistente, isso é para sempre.)
FWIW, outra possibilidade é criar um grupo de escalonamento automático e usar instâncias spot em vez de instâncias sob demanda. Com um grupo de escalonamento automático, você pode fazer com que o grupo abranja várias zonas. No entanto, parece que o grupo sempre tenta distribuir as solicitações por todas as regiões de maneira uniforme, independentemente do preço. Parece que não há uma opção para o grupo fazer solicitações na zona de preço mais baixo. Mas eu suponho que esse seja um tópico para outra pergunta ...
Atualização : não usei um grupo de escalonamento automático no começo porque é mais complicado do que apenas criar um grupo de solicitações pontuais. Mas, claro, isso também não funcionou. A resposta é: a única maneira de obter a zona de preço mais baixo é usar uma solicitação de frota spot.
Eu não fiz isso primeiro porque é mais complicado criar, requer que o usuário do IAM que está criando a frota tenha (levemente) mais permissões do que apenas ec2:*
actions, e a interface ainda é um pouco instável. Consulte o link para começar. No entanto, tenha em atenção que esta ainda é beta e a documentação não está atualizada. As permissões também exigem "iam: GetRole", "iam: CreateRole", "iam: AttachRolePolicy". (O console irá avisá-lo sobre isso quando você tentar criar sua primeira frota spot. Aparentemente, você ainda precisa dessas permissões, mesmo que a função correta já exista ... vá em frente.)
Voltar ao meu problema original: ao criar a frota spot, escolha a estratégia "preço mais baixo" (que não é o padrão, como dizem os documentos, mas está disponível). Então - como no grupo de escalonamento automático ou na solicitação pontual - você deve "selecionar" as zonas e marcar todas elas (caso contrário, apenas a zona padrão é usada novamente).
Espero que alguém ache isso útil.