Como faço para usar o Programador de instâncias com o CloudFormation para programar instâncias do EC2?
Quero usar o Programador de instâncias da AWS com o AWS CloudFormation para programar instâncias do Amazon Elastic Compute Cloud (Amazon EC2).
Breve descrição
Use modelos do CloudFormation para automatizar a implantação do Programador de instâncias da AWS.
Importante: se você usar o Programador de instâncias para instâncias do EC2 com um Amazon Elastic Block Store (Amazon EBS) criptografado, suas instâncias não poderão ser iniciadas. Para iniciá-las, você deve conceder ao Programador de instâncias uma função de usuário principal com uma política de chave para criptografar ou descriptografar volumes do EBS. É necessário adicionar a política de chave à chave do AWS Key Management Service (AWS KMS) para permitir que a função de usuário principal use essa chave.
Resolução
Instale o Programador de instâncias
Se você ainda não tiver feito isso, siga as instruções para instalar a interface de linha de comandos (CLI) do Programador de instâncias.
Para verificar se a instalação foi bem-sucedida, execute o seguinte comando:
$ scheduler-cli --version
Crie uma pilha do CloudFormation com o modelo do Programador de instâncias
A pilha implanta uma função do AWS Lambda, uma tabela do Amazon DynamoDB, uma regra do Amazon EventBridge e métricas personalizadas do Amazon CloudWatch.
- Abra o Console de Gerenciamento da AWS.
- Abra o CloudFormation com o modelo do Programador de instâncias. Ou vá para a página Step 1. Launch the instance scheduler hub stack e selecione Iniciar solução.
Observação: o modelo é executado na região Leste dos EUA (Norte da Virgínia) por padrão. - Na barra de navegação, selecione a região da AWS em que você deseja executar sua pilha com o modelo e, em seguida, escolha Avançar.
- Em Nome da pilha, nomeie sua pilha.
- Em TagName do Programador de instâncias, você pode manter o valor padrão como Schedule ou personalizá-lo.
- Em Frequência, escolha uma frequência em minutos para executar seu programador. Por exemplo, você pode escolher 5 minutos.
Observação: a frequência é o número de minutos decorridos antes que o EventBridge inicie novamente a função do Lambda para o Programador de instâncias. Se você tiver um grande número de instâncias, use a frequência mais alta possível para evitar o controle de utilização. Se a frequência não for suficiente para suas necessidades, você poderá ajustar a propriedade Frequência posteriormente. - Em Habilitar métricas do CloudWatch, selecione Sim.
- Em Habilitar o CloudWatch Logs, selecione Sim.
- (Opcional) Em Tags iniciadas, insira state=started.
- (Opcional) Em Tags paradas, insira state=stopped.
- Para programação entre contas, forneça o parâmetro Funções entre contas. Insira os ARNs de cada função das contas secundárias, separados por vírgulas. Se você não estiver usando a programação entre contas, deixe o parâmetro vazio.
- Para todos os outros parâmetros, personalize a pilha de acordo com suas necessidades.
- Selecione Avançar.
- Na página Opções, selecione Avançar.
- Analise suas configurações e selecione Eu reconheço que o AWS CloudFormation pode criar recursos do IAM.
- Selecione Criar.
Crie os períodos
Para criar períodos, você pode usar a CLI do Programador de instâncias, o console do DynamoDB ou recursos personalizados. Para obter mais informações sobre períodos de tempo, consulte Start and stop times.
O exemplo a seguir mostra como criar instâncias que:
- comecem às 9h e parem às 17h de segunda a sexta-feira
- comecem às 9h e parem às 12h no sábado
Neste exemplo, você deve criar dois períodos. Para sua própria situação, crie o número apropriado de períodos.
Como usar a CLI do Programador de instâncias
Conecte-se à CLI do Programador de instâncias e execute os seguintes comandos:
$ scheduler-cli create-period --stack your\_stack\_name --region eu-west-1 --name mon-fri-9-5 --begintime 9:00 --endtime 16:59 --weekdays mon-fri $ scheduler-cli create-period --stack your\_stack\_name --region eu-west-1 --name sat-9-12 --begintime 9:00 --endtime 11:59 --weekdays sat
Observação: substitua seu your_stack_name pelo nome da pilha escolhida na etapa 4 e eu-west-1 pela sua região.
Como usar o console do DynamoDB
- Abra o console do DynamoDB.
- Selecione Tabelas e, em seguida, escolha a tabela de configuração.
Observação: o modelo do Programador de instâncias cria automaticamente duas tabelas do DynamoDB: estado e configuração. A tabela de estado armazena o estado das instâncias que o modelo interrompe e inicia. A tabela de configuração permite especificar os períodos e programações de acordo com suas necessidades. - Selecione Explorar itens da tabela.
- Selecione Criar item.
- Selecione a visualização JSON e, em seguida, use o seguinte modelo de notação de objeto JavaScript (JSON):
{ "type": { "S": "period" }, "name": { "S": "mon-fri-9-5" }, "begintime": { "S": "9:00" }, "endtime": { "S": "16:59" }, "weekdays": { "SS": \[ "mon-fri" \] } }
Observação: o modelo JSON anterior cria o primeiro período. Use um modelo JSON similar para o segundo período. Certifique-se de editar os modelos de acordo com suas necessidades.
Crie uma programação
Para criar uma programação, você pode usar a CLI do Programador de instâncias, o console do DynamoDB ou recursos personalizados.
Como usar a CLI do Programador de instâncias
Execute o seguinte comando:
$ scheduler-cli create-schedule --stack your\_stack\_name --name m-f9-5-sat9-12 --region eu-west-1 --periods mon-fri-9-5,sat-9-12 --timezone UTC
Como usar o console do DynamoDB
- Abra o console do DynamoDB.
- Selecione Tabelas e, em seguida, escolha a tabela de configuração.
- Selecione Explorar itens da tabela.
- Selecione Criar item.
- Selecione a visualização JSON e, em seguida, use o seguinte modelo JSON:
{ "type": { "S": "schedule" }, "name": { "S": "m-f9-5-sat9-12" }, "timezone": { "S": "UTC" }, "periods": { "SS": \[ "mon-fri-9-5" \] } }
Marque a instância com tag e teste a programação
Ao usar uma pilha do CloudFormation com o Programador de instâncias, você deve definir o parâmetro TagName do Programador de instâncias. O valor padrão para esse parâmetro é Schedule.
O Programador de instâncias monitora as tags nas instâncias. Se a chave da tag da instância corresponder à tag definida do programador, o Programador de instâncias aplicará a programação definida para o valor da tag da instância. Por exemplo, a chave de uma tag é definida como Schedule e o valor é definido como m-f9-5-sat9-12. Neste exemplo, as instâncias começam às 9h e param às 17h de segunda a sexta-feira. As instâncias também começam às 9h e terminam às 12h no sábado.
Observação: as chaves e os valores de tags diferenciam maiúsculas de minúsculas. O Programador de instâncias não interrompe a execução de instâncias se elas forem iniciadas manualmente fora do período de execução. O Programador de instâncias também não inicia uma instância se ela for interrompida manualmente durante o período de execução, a menos que a programação seja aplicada. Para obter mais informações, consulte Schedule definitions.
Use programações predefinidas
Além das programações personalizadas, também é possível usar qualquer uma das programações predefinidas da tabela de configuração. Por exemplo, as etapas a seguir testam a programação predefinida chamada running:
- Abra o console do Amazon EC2.
- Selecione as instâncias interrompidas que você deseja marcar com tag.
- Selecione a visualização Tags e, em seguida, selecione Gerenciar tags.
- Selecione Adicionar tag.
- Em Chave, insira Schedule.
- Em Valor, insira running.
- Selecione Salvar.
- Atualize o console do Amazon EC2 e aguarde até que a função do Lambda seja iniciada.
Observação: quando a função do Lambda é iniciada e executada sem erros, o Estado da instância é exibido como running, dependendo da programação que você está testando. No console do CloudWatch, você pode verificar as métricas do Lambda em busca de invocações e erros. - Abra o console do DynamoDB.
- Selecione Tabelas e, em seguida, selecione a tabela de estados.
- Selecione Explorar itens da tabela e confirme se a instância marcada com tag foi iniciada. Os dados do estado são armazenados na tabela de estados.
Importante: podem ser cobrados custos adicionais com base na frequência e duração da função do Lambda que está usando. Também podem ser cobrados custos adicionais pelas tabelas do DynamoDB ou pelas regras do EventBridge criadas.
Para programação entre contas: inicie a pilha remota em contas secundárias
Para programar instâncias em contas secundárias usando o Programador de instâncias, implante o modelo aws-instance-scheduler-remote do CloudFormation. Esse modelo cria a função que permite que o Programador de instâncias da conta principal gerencie instâncias na conta secundária.
Observação: você deve fornecer o ARN da função como um parâmetro para a pilha do Programador de instâncias na conta principal. Certifique-se de criar ou atualizar sua pilha do Programador de instâncias com o parâmetro correto.
- Abra o Console de Gerenciamento da AWS da conta secundária e inicie o modelo aws-instance-scheduler-remote do CloudFormation. Você também pode baixar o modelo para uso futuro.
Observação: o modelo é executado na região Leste dos EUA (Norte da Virgínia) por padrão. - Na barra de navegação, selecione a região da AWS em que você deseja executar sua pilha com o modelo e, em seguida, escolha Avançar.
- Na página Selecionar modelo, verifique se você selecionou o modelo correto e, em seguida, escolha Avançar.
- Na página Especificar detalhes, atribua um nome à sua pilha remota.
- Em Parâmetros, revise e modifique o parâmetro da Conta principal. Insira o número da conta principal.
- Selecione Avançar.
- Na página Opções, selecione Avançar.
- Analise suas configurações e selecione Eu reconheço que o AWS CloudFormation pode criar recursos do IAM.
- Selecione Criar.
- Selecione a guia Saídas da pilha e, em seguida, copie o valor CrossAccountRole.
- Na conta principal, selecione sua pilha do CloudFormation e selecione Atualizar.
- Na página Atualizar pilha, selecione Usar modelo atual.
- No parâmetro Funções entre contas, cole o valor CrossAccountRole.
- Selecione Avançar e, em seguida, selecione Eu reconheço que o AWS CloudFormation pode criar recursos do IAM.
- Selecione Atualizar pilha.
Vídeos relacionados
Conteúdo relevante
- Resposta aceitafeita há 4 diaslg...
- feita há 6 diaslg...
- feita há 20 diaslg...
- feita há 6 diaslg...
- AWS OFICIALAtualizada há 4 meses
- AWS OFICIALAtualizada há 3 anos