Gerenciar recursos usando o AWS CloudFormation - Amazon GameLift

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerenciar recursos usando o AWS CloudFormation

É possível usar o AWS CloudFormation para gerenciar os recursos do Amazon GameLift. No AWS CloudFormation, crie um modelo que modele cada recurso e use-o para criar os recursos. Para atualizar recursos, faça alterações no modelo e use o AWS CloudFormation para implementar as atualizações. É possível organizar os recursos em grupos lógicos, chamados pilhas e conjuntos de pilhas.

Usar o AWS CloudFormation para manter os recursos de hospedagem do Amazon GameLift oferece uma maneira mais eficiente de gerenciar conjuntos de recursos da AWS. É possível usar o controle de versão para monitorar alterações de modelo ao longo do tempo e atualizações de coordenadas feitas por vários membros de equipe. Também é possível reutilizar modelos. Por exemplo, ao implantar um jogo em várias regiões, é possível usar o mesmo modelo para criar recursos idênticos em cada região. Também é possível usar esses modelos para implantar o mesmo conjunto de recursos em outra partição.

Para obter mais informações sobre o AWS CloudFormation, consulte o Guia do usuário do AWS CloudFormation. Para visualizar informações de modelo para recursos do Amazon GameLift, consulte a Referência de tipos de recursos do Amazon GameLift.

Práticas recomendadas

Para obter orientações detalhadas sobre uso do AWS CloudFormation, consulte as melhores práticas do AWS CloudFormation no Guia do usuário do AWS CloudFormation. Além disso, essas melhores práticas têm relevância especial com o Amazon GameLift.

  • Gerencie os recursos de forma consistente usando o AWS CloudFormation. Se você alterar os recursos fora do AWS CloudFormation, os recursos ficarão dessincronizados dos modelos de recursos.

  • Use pilhas e conjuntos de pilhas do AWS CloudFormation para gerenciar vários recursos com eficiência.

    • Use pilhas para gerenciar grupos de recursos conectados. Por exemplo, uma pilha que contém uma compilação, uma frota que faça referência à compilação e um alias que faça referência à frota. Se você atualizar o modelo para substituir uma compilação, o AWS CloudFormation substituirá as frotas conectadas à compilação. Depois, o AWS CloudFormation atualizará os aliases existentes para apontar para as novas frotas. Para obter mais informações, consulte Como trabalhar com pilhas no Guia do usuário do AWS CloudFormation.

    • Use conjuntos de pilhas do AWS CloudFormation se estiver implantando pilhas idênticas em várias regiões ou contas da AWS. Para mais informações, consulte Como trabalhar com conjuntos de pilhas no Guia do usuário do AWS CloudFormation.

  • Se estiver usando instâncias spot, inclua uma frota sob demanda como backup. Recomendamos configurar os modelos com duas frotas em cada região, uma frota com instâncias spot e uma frota com instâncias sob demanda.

  • Agrupe os recursos específicos do local e os recursos globais em pilhas separadas ao gerenciar recursos em vários locais.

  • Posicione os recursos globais próximos aos serviços que os utilizam. Recursos como filas e configurações de criação de jogos tendem a receber um alto volume de solicitações de origens específicas. Ao posicionar os recursos próximos à origem dessas solicitações, você minimiza o tempo de viagem da solicitação e pode melhorar o desempenho geral.

  • Coloque a configuração de criação de jogos na mesma região da fila de sessões de jogo usada.

  • Crie um alias separado para cada frota na pilha.

Usar pilhas do AWS CloudFormation

Recomendamos as seguintes estruturas a serem usadas ao configurar pilhas do AWS CloudFormation para recursos do Amazon GameLift. A estrutura de pilha ideal varia dependendo se você está implantando o jogo em um local ou em vários locais.

Pilhas para um único local

Para gerenciar os recursos do Amazon GameLift em um único local, recomendamos uma estrutura de duas pilhas:

  • Pilha de suporte: essa pilha contém recursos dos quais os recursos do Amazon GameLift dependem. No mínimo, essa pilha deve incluir o bucket do S3 onde você armazena o servidor de jogo personalizado ou arquivos de script Realtime. A pilha também deve incluir um perfil do IAM que conceda ao Amazon GameLift permissão para recuperar os arquivos do bucket do S3 ao criar um recurso de compilação ou de script do Amazon GameLift. Essa pilha também pode conter outros recursos da AWS que são usados com o jogo, como tabelas do DynamoDB, clusters do Amazon Redshift e funções do Lambda.

  • Pilha do Amazon GameLift: essa pilha contém todos os recursos do Amazon GameLift, incluindo a compilação ou o script, um conjunto de frotas, aliases e a fila de sessão de jogo. O AWS CloudFormation cria um recurso de compilação ou de script com arquivos armazenados no local do bucket do S3 e implanta a compilação ou o script em um ou mais recursos de frota. Cada frota deve ter um alias correspondente. A fila de sessões de jogo faz referência a alguns ou a todos os aliases da frota. Se você estiver usando o FlexMatch para a criação de jogos, essa pilha também conterá uma configuração de criação de jogos e um conjunto de regras.

O diagrama a seguir ilustra uma estrutura de duas pilhas para implantar recursos em uma única região da AWS.

O diagrama mostra duas pilhas do AWS CloudFormation. Uma contém os recursos do Amazon GameLift e a outra contém os recursos compatíveis com o GameLift. Essa última pilha inclui o bucket do S3 usado para armazenar arquivos de compilação ou de script e o perfil do IAM que permite que o Amazon GameLift recupere arquivos do bucket do S3.

Pilhas para várias regiões

Ao implantar o jogo em mais de uma região, lembre-se de como os recursos podem interagir entre regiões. Alguns recursos, como frotas do Amazon GameLift, só podem fazer referência a outros recursos na mesma região. Outros recursos, como uma fila do Amazon GameLift, são agnósticos em relação à região. Para gerenciar recursos do Amazon GameLift em várias regiões, recomendamos a estrutura a seguir.

  • Pilhas de suporte regional: essas pilhas contêm recursos dos quais os recursos do Amazon GameLift depende. Essa pilha deve incluir o bucket do S3 onde você armazena o servidor de jogo personalizado ou os arquivos de script em tempo real. Ela também pode conter outros recursos da AWS para o jogo, como tabelas do DynamoDB, clusters do Amazon Redshift e funções do Lambda. Muitos desses recursos são específicos da região e, sendo assim, você deve criá-los em todas as regiões. O Amazon GameLift também precisa de uma perfil do IAM que permita acesso a esses recursos de suporte. Como um perfil do IAM é agnóstico em relação à região, só é necessário um recurso de função colocado em qualquer região e referenciado em todas as outras pilhas compatíveis.

  • Pilhas regionais do Amazon GameLift: essa pilha contém os recursos do Amazon GameLift que devem existir em cada região onde o jogo está sendo implantado, incluindo a compilação ou o script, um conjunto de frotas e os aliases. O AWS CloudFormation cria um recurso de compilação ou de script com arquivos em um local de bucket do S3 e implanta a compilação ou o script em um ou mais recursos de frota. Cada frota deve ter um alias correspondente. A fila de sessões de jogo faz referência a alguns ou a todos os aliases da frota. É possível manter um modelo para descrever esse tipo de pilha e usá-lo para criar conjuntos idênticos de recursos em cada região.

  • Pilha global do Amazon GameLift: essa pilha contém a fila de sessões de jogo e recursos de criação de jogos. Esses recursos podem estar localizados em qualquer região e geralmente são colocados na mesma região. A fila pode fazer referência a frotas ou a aliases que estão localizados em qualquer região. Para colocar filas adicionais em regiões diferentes, crie pilhas globais adicionais.

Os diagramas a seguir ilustram uma estrutura de várias pilhas para implantar recursos em várias regiões da AWS. O primeiro diagrama mostra uma estrutura de uma única fila de sessão de jogo. O segundo diagrama mostra uma estrutura com várias filas.

Esse diagrama mostra várias pilhas do AWS CloudFormation para três regiões. As pilhas de suporte em cada região contêm recursos de suporte, como um bucket do S3. Uma dessas pilhas também contém um perfil do IAM, que pode ser usado pelo Amazon GameLift para acessar qualquer um dos recursos de suporte, independentemente da região. As pilhas regionais do Amazon GameLift contêm compilações ou scripts, frotas e aliases do Amazon GameLift. Uma pilha global do Amazon GameLift contém recursos de criação de jogos e uma fila, que podem fazer referência a frotas ou a aliases em várias regiões.
Este diagrama mostra várias pilhas do AWS CloudFormation para três regiões, incluindo pilhas globais do Amazon GameLift com filas de sessão de jogo em duas regiões. Cada fila faz referência aos aliases das pilhas regionais do Amazon GameLift.

Atualizar compilações

As compilações do Amazon GameLift são imutáveis, assim como a relação entre uma compilação e uma frota. Como resultado, ao atualizar os recursos de hospedagem para usar um novo conjunto de arquivos de compilação de jogos, é necessário fazer o seguinte:

  • Crie uma compilação usando o novo conjunto de arquivos (substituição).

  • Crie um conjunto de frotas para implantar a nova compilação do jogo (substituição).

  • Redirecione os aliases para apontar para as novas frotas (atualização sem interrupção).

Para obter mais informações, consulte Atualizar comportamentos de recursos de pilha no Guia do usuário doAWS CloudFormation.

Implantar atualizações de compilação automaticamente

Ao atualizar uma pilha que contém recursos de compilação, frota e alias relacionados, o comportamento padrão do AWS CloudFormation é executar essas etapas automaticamente em sequência. Acione essa atualização primeiro fazendo upload dos novos arquivos de compilação para um novo local do S3. Depois, modifique o modelo de compilação do AWS CloudFormation a fim de apontar para o novo local do S3. Ao atualizar a pilha com o novo local do S3, isso aciona a seguinte sequência do AWS CloudFormation:

  1. Recupera os novos arquivos do S3, valida os arquivos e cria uma compilação do Amazon GameLift.

  2. Atualiza a referência de compilação no modelo de frota, que aciona a criação da frota.

  3. Depois que as novas frotas estiverem ativas, atualiza a referência da frota no alias, o que aciona o alias para atualizar a fim de atingir as novas frotas.

  4. Apaga a frota antiga.

  5. Exclui a compilação antiga.

Se a fila de sessões de jogo usar aliases de frota, o tráfego de jogadores será automaticamente alterado para as novas frotas assim que os aliases forem atualizados. As frotas antigas são gradualmente drenadas de jogadores à medida que as sessões de jogo terminam. A escalabilidade automática lida com a tarefa de adicionar e remover instâncias de cada conjunto de frotas à medida que o tráfego de jogadores flutua. Como alternativa, é possível especificar uma contagem inicial de instâncias desejada a fim de acelerar rapidamente para a troca e habilitar a escalabilidade automática mais tarde.

Também é possível fazer com que o AWS CloudFormation retenha recursos em vez de excluí-los. Para obter mais informações, consulte RetainResources na Referência de API do AWS CloudFormation.

Implantar atualizações de compilação manualmente

Se quiser ter mais controle sobre quando novas frotas são ativadas para os jogadores, há algumas opções. É possível optar por gerenciar aliases manualmente usando o console do Amazon GameLift ou a CLI. Como alternativa, em vez de atualizar o modelo de compilação para substituir as compilações e as frotas, é possível adicionar um segundo conjunto de definições de compilação e de frota ao modelo. Ao atualizar o modelo, o AWS CloudFormation cria um segundo recurso de compilação e frotas correspondentes. Como os recursos existentes não são substituídos, eles não são excluídos e os aliases permanecem apontando para as frotas originais.

A principal vantagem desta abordagem é que ela oferece flexibilidade. É possível criar recursos separados para a nova versão da compilação, testar os novos recursos e controlar quando a nova frota é acionada para os jogadores. Uma possível desvantagem é que ela requer duas vezes mais recursos em cada região por um breve período.

O diagrama a seguir ilustra esse processo.

O diagrama mostra várias pilhas do AWS CloudFormation para três regiões, incluindo pilhas globais do Amazon GameLift com filas de sessões de jogo em duas regiões. Cada fila faz referência aos aliases das pilhas regionais do Amazon GameLift.

Como funcionam as reversões

Ao executar uma atualização de recurso, se qualquer etapa não for concluída com êxito, o AWS CloudFormation iniciará automaticamente uma reversão. Esse processo reverte cada etapa em sequência, excluindo os recursos recém-criados.

Se precisar acionar manualmente uma reversão, altere a chave de localização do S3 do modelo de compilação de volta para o local original e atualize a pilha. Uma compilação e uma frota do Amazon GameLift são criadas, e o alias muda para a nova frota após ela estar ativa. Se estiver gerenciando aliases separadamente, será necessário mudá-los a fim de apontar para as novas frotas.

Para obter mais informações sobre como lidar com uma reversão que falha ou trava, consulte Continuar revertendo uma atualização no Guia do usuário do AWS CloudFormation.