AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Como uso o Agendador do EventBridge para interromper e iniciar instâncias do Amazon EC2 em intervalos regulares?
Quero usar o Agendador do Amazon EventBridge para parar e iniciar automaticamente minhas instâncias do Amazon Elastic Compute Cloud (Amazon EC2).
Breve descrição
Para parar e iniciar automaticamente as instâncias do EC2, use o Agendador do EventBridge para chamar diretamente as APIs StartInstances e StopInstances do Amazon EC2. Ou você pode usar o agendador para invocar uma função do AWS Lambda para parar e iniciar a instância. É uma prática recomendada usar as APIs do Amazon EC2 como destino do agendador para evitar a necessidade de criar funções adicionais do Lambda.
Para obter uma solução mais avançada, use o Agendador de Instâncias na AWS.
Resolução
Pré-requisito: Obtenha os IDs das instâncias que você deseja parar e iniciar.
Use o agendador para chamar diretamente as APIs do Amazon EC2
Crie uma política e um perfil do IAM para o Agendador do EventBridge
Conclua as etapas a seguir:
- Use o editor de políticas JSON para criar uma política do AWS Identity and Access Management (IAM) que permite que o Agendador do EventBridge pare e inicie sua instância.
Exemplo de política:
Observação: se você criptografou seu volume do Amazon Elastic Block Store (Amazon EBS) com uma chave do AWS Key Management Service (AWS KMS) gerenciada pelo cliente, adicione kms:CreateGrant à política. Se a função do Lambda não tiver acesso à chave de criptografia, ela só poderá parar, mas não reiniciar a instância. Para obter mais informações, consulte a política de chaves obrigatórias do AWS KMS para uso com volumes criptografados.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:Start*", "ec2:Stop*" ], "Resource": "*" } ] } - Abra o console do IAM.
- Escolha Perfis e depois Criar perfil.
- Em Tipo de entidade confiável, escolha Política de confiança personalizada.
- Insira a seguinte política do IAM:
Observação: substitua AWS_ACCOUNT_ID pelo ID da sua conta da AWS.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "AWS_ACCOUNT_ID" } } } ] } - Escolha Avançar.
- Em Políticas de permissões, selecione a política do IAM que você criou na etapa 1.
- Em Nome do perfil, insira um nome como EventBridge_Scheduler_Role.
- Selecione Criar perfil.
Crie o agendamento do Agendador do EventBridge
Crie um agendamento para a API StopInstances e outro para a API StartInstances. Defina as seguintes configurações ao criar o agendamento:
- Em API de destino, selecione Todas as APIs e, em seguida, pesquise Amazon EC2.
- Selecione StopInstances ou StartInstances e, em seguida, insira os IDs da instância.
- Em Configurações - opcional, em Permissões, escolha Selecionar um perfil existente e, em seguida, escolha o perfil do IAM que você criou.
Use o agendador para invocar funções do Lambda
Crie uma política e um perfil do IAM para a função do Lambda
Conclua as etapas a seguir:
- Use o editor de políticas JSON para criar uma política do IAM que permita ao Lambda parar e iniciar sua instância.
Exemplo de política:
Observação: se você usar um volume do Amazon EBS criptografado com uma chave do AWS KMS gerenciada pelo cliente, adicione kms:CreateGrant à política. Se a função do Lambda não tiver acesso à chave de criptografia, ela só poderá parar, mas não reiniciar a instância. Para obter mais informações, consulte a política de chaves obrigatórias do AWS KMS para uso com volumes criptografados.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "ec2:Start*", "ec2:Stop*" ], "Resource": "*" } ] } - Crie um perfil do IAM para o Lambda.
- Anexe a política do IAM a um perfil do IAM.
Crie funções do Lambda para parar e iniciar suas instâncias
Conclua as etapas a seguir:
- Abra o console do Lambda.
- Selecione Criar função, e em seguida, selecione Criar do zero.
- Em Informações básicas, defina as seguintes configurações:
Em Nome da função, insira um nome que descreva a função, como StopEC2Instances ou StartEC2Instances.
Em Runtime, escolha Python 3.14.
Em Permissões, expanda Alterar perfil de execução padrão.
Em Perfil de execução, escolha Usar um perfil existente.
Em Função existente, escolha o perfil do IAM criado. - Selecione Criar função.
- Escolha a guia Código e, em seguida, escolha a guia lambda_funciton.py.
- Em Fonte de código, insira o código a seguir no editor de código para configurar a parada da instância:
Para configurar o início da instância, insira o seguinte código no editor de código:import boto3 region = 'us-west-1' instances = ['i-12345acdb12345abcd', 'i-12345acdb12345abcd'] ec2 = boto3.client('ec2', region_name=region) def lambda_handler(event, context): ec2.stop_instances(InstanceIds=instances) print('stopped your instances: ' + str(instances))
Observação: substitua us-west-1 pela região da AWS de suas instâncias e i-12345acdb12345abcd pelos IDs de suas instâncias.import boto3 region = 'us-west-1' instances = ['i-12345acdb12345abcd', 'i-12345acdb12345abcd'] ec2 = boto3.client('ec2', region_name=region) def lambda_handler(event, context): ec2.start_instances(InstanceIds=instances) print('started your instances: ' + str(instances)) - Selecione Implantar.
- Escolha a guia Configuração e, em seguida, escolha Configuração geral.
- Clique em Editar.
- Em Tempo limite, selecione 10 segundos e escolha Salvar.
Observação: se você associou a função à Amazon Virtual Private Cloud (Amazon VPC), valide se a função pode alcançar o endpoint do Amazon EC2 pela Internet. Ou configure um endpoint de nuvem privada virtual (VPC) para o Amazon EC2.
Teste as funções do Lambda
Teste as funções do Lambda para parada e início da instância.
Antes e depois do teste, verifique o status das suas instâncias para confirmar se suas funções funcionam.
Para usar o AWS CloudTrail para confirmar que a função do Lambda parou ou iniciou a instância, conclua as seguintes etapas:
- Abra o console do CloudTrail.
- No painel de navegação, selecione Histórico de eventos.
- Na lista suspensa Atributos de pesquisa selecione Nome do evento.
- Insira StopInstances na barra de pesquisas para examinar os resultados. Em seguida, insira StartInstances.
Observação: se não houver resultados, a função do Lambda não parou nem iniciou as instâncias.
Crie um agendamento no Agendador do EventBridge para executar suas funções do Lambda
Crie um agendamento para executar suas funções do Lambda. Em Selecionar destino, selecione Destinos modelados e, em seguida, escolha AWS Lambda Invoke. Use as funções do Lambda que você criou.
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
feita há 2 anos