Gerenciar agendamentos usando a infraestrutura como código (IaC) - Agendador de instâncias na AWS

Gerenciar agendamentos usando a infraestrutura como código (IaC)

Importante

Implante agendamentos usando um modelo separado após a conclusão da implantação da pilha de hubs.

O Agendador de instâncias na AWS fornece um recurso personalizado (ServiceInstanceSchedule) que você pode usar para configurar e gerenciar agendamentos por meio do AWS CloudFormation. O recurso personalizado usa chaves PascalCase para os mesmos dados da tabela de configuração do Agendador de instâncias no Amazon DynamoDB (veja o modelo abaixo para obter exemplos). Para obter mais informações sobre os campos para agendamentos, consulte Definições de agendamento. Para obter mais informações sobre os campos para períodos, consulte Definições de período.

Quando você usa o recurso personalizado para criar um agendamento, o nome desse agendamento é o nome do recurso lógico do recurso personalizado por padrão. Para especificar um nome diferente, use a propriedade Name do recurso personalizado. A solução também adiciona o nome da pilha ao nome do agendamento como um prefixo por padrão. Se você não quiser adicionar o nome da pilha como prefixo, use a propriedade NoStackPrefix.

Ao usar as propriedades Name e NoStackPrefix, certifique-se de escolher nomes de agendamento exclusivos. Se já existir um agendamento com o mesmo nome, o recurso não será criado ou atualizado.

Para começar a gerenciar agendamentos usando a IaC, copie e cole o modelo de exemplo a seguir e personalize quantos agendamentos quiser. Salve o arquivo como .template (por exemplo: my-schedules.template) e implante seu novo modelo usando o AWS CloudFormation. Para obter exemplos de modelos de agendamento concluídos, consulte Exemplos de agendamentos.

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  ServiceInstanceScheduleServiceTokenARN:
    Type: String
    Description: (Required) service token arn taken from InstanceScheduler outputs
Metadata:
  'AWS::CloudFormation::Designer': {}
Resources:
  SampleSchedule1:
    Type: 'Custom::ServiceInstanceSchedule'
    Properties:
      ServiceToken: !Ref ServiceInstanceScheduleServiceTokenARN #do not edit this line
      NoStackPrefix: 'False'
      Name: my-renamed-sample-schedule
      Description: a full sample template for creating cfn schedules showing all possible values
      Timezone: America/New_York
      Enforced: 'True'
      Hibernate: 'True'
      RetainRunning: 'True'
      StopNewInstances: 'True'
      UseMaintenanceWindow: 'True'
      SsmMaintenanceWindow: 'my_window_name'
      Periods:
      - Description: run from 9-5 on the first 3 days of March
        BeginTime: '9:00'
        EndTime: '17:00'
        InstanceType: 't2.micro'
        MonthDays: '1-3'
        Months: '3'
      - Description: run from 2pm-5pm on the weekends
        BeginTime: '14:00'
        EndTime: '17:00'
        InstanceType: 't2.micro'
        WeekDays: 'Sat-Sun'

  SampleSchedule2:
    Type: 'Custom::ServiceInstanceSchedule'
    Properties:
      ServiceToken: !Ref ServiceInstanceScheduleServiceTokenARN #do not edit this line
      NoStackPrefix: 'True'
      Description: a sample template for creating simple cfn schedules
      Timezone: Europe/Amsterdam
      Periods:
      - Description: stop at 5pm every day
        EndTime: '17:00'

Ao implantar o modelo, você deve fornecer ServiceTokenARN para a implantação do Agendador de instâncias na AWS. Esse ARN pode ser encontrado no CloudFormation navegando até sua pilha implantada do Agendador de instâncias, selecionando Saídas e procurando ServiceInstanceScheduleServiceToken.

Importante

Não use o console do DynamoDB nem a CLI do agendador para excluir ou modificar agendamentos e períodos que foram configurados usando o recurso personalizado. Se fizer isso, você criará um conflito entre os parâmetros armazenados na pilha e os valores na tabela. Além disso, não use períodos configurados usando o recurso personalizado em agendamentos criados por meio do console do DynamoDB ou da CLI do agendador.

Antes de excluir a pilha principal do Agendador de instâncias, você deve excluir todas as pilhas adicionais que contêm agendamentos e períodos criados usando o recurso personalizado, pois as pilhas de recursos personalizados contêm dependências na tabela do DynamoDB da pilha principal.

Na tabela de configuração do DynamoDB, os agendamentos e períodos que foram configurados com o recurso personalizado podem ser identificados pelo atributo configured_in_stack. O atributo contém o Nome de recurso da Amazon da pilha que foi usada para criar o item.