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á.
Você pode usar runbooks de AWS Systems Manager automação para simplificar as tarefas comuns de manutenção, implantação e remediação dos serviços. AWS Neste tutorial, você criará um runbook personalizado para automatizar uma resposta a incidentes no Incident Manager. O cenário deste tutorial envolve um CloudWatch alarme da Amazon atribuído a uma EC2 métrica da Amazon. Quando a instância entra em um estado que aciona o alarme, o Incident Manager executa automaticamente as seguintes tarefas:
-
Cria um incidente no Incident Manager.
-
Inicia um runbook que tenta corrigir o problema.
-
Publica os resultados do runbook na página de detalhes do incidente no Incident Manager.
O processo descrito neste tutorial também pode ser usado com EventBridge eventos da Amazon e outros tipos de AWS recursos. Ao automatizar sua resposta de remediação a alarmes e eventos, você pode reduzir o impacto de um incidente em sua organização e em seus recursos.
Este tutorial descreve como editar um CloudWatch alarme atribuído a uma EC2 instância da Amazon para um plano de resposta do Incident Manager. Se você não tiver um alarme, uma instância ou um plano de resposta configurado, recomendamos que você configure esses recursos antes de começar. Para obter mais informações, consulte os tópicos a seguir.
-
Usando CloudWatch alarmes da Amazon no Guia do CloudWatch usuário da Amazon
-
EC2 Instâncias da Amazon no Guia EC2 do usuário da Amazon
-
EC2Instâncias da Amazon no Guia EC2 do usuário da Amazon
-
Criação e configuração de planos de resposta no Incident Manager
Importante
Você incorrerá em custos criando AWS recursos e usando as etapas de automação do runbook. Para obter mais informações, consulte Definição de preço do AWS
Tópicos
Tarefa 1: Criar o runbook
Use o procedimento a seguir para criar um runbook no console do Systems Manager. Quando invocado a partir de um incidente do Incident Manager, o runbook reinicia uma EC2 instância da Amazon e atualiza o incidente com informações sobre a execução do runbook. Antes de começar, verifique se você tem permissão para criar um runbook. Para obter mais informações, consulte Configuração de Automação no Guia do usuário do AWS Systems Manager .
Importante
Analise os detalhes essenciais a seguir sobre como criar o runbook deste tutorial:
-
O runbook é destinado a um incidente criado a partir de uma fonte de CloudWatch alarme. Se você usar esse runbook para outros tipos de incidentes, por exemplo, incidentes criados manualmente, o evento do cronograma na primeira etapa do runbook não será encontrado e o sistema retornará um erro.
-
O runbook exige que o CloudWatch alarme inclua uma dimensão chamada
InstanceId
. Os alarmes para métricas de EC2 instância da Amazon têm essa dimensão. Se você usar esse runbook com outras métricas (ou com outras fontes de incidentes, como EventBridge), precisará alterar aJsonDecode2
etapa para corresponder aos dados capturados em seu cenário. -
O runbook tenta corrigir o problema que acionou o alarme reiniciando a instância da Amazon. EC2 Para um incidente real, talvez você não queira reiniciar a instância. Atualize o runbook com as ações de remediação específicas que deseja que o sistema execute.
Para obter mais informações sobre a criação de runbooks, consulte Trabalhar com runbooks no Guia do usuário do AWS Systems Manager .
Para criar um runbook personalizado
Abra o AWS Systems Manager console em https://console.aws.amazon.com/systems-manager/
. -
No painel de navegação, escolha Documents.
-
Escolha Automação.
-
Em Name, insira um nome descritivo para o runbook, como
IncidentResponseRunbook
. -
Escolha a guia Editor e depois escolha Edit (Editar).
-
Cole o seguinte conteúdo no editor:
description: This runbook attempts to restart an Amazon EC2 instance that caused an incident. schemaVersion: '0.3' parameters: IncidentRecordArn: type: String description: The incident mainSteps: - name: ListTimelineEvents action: 'aws:executeAwsApi' outputs: - Selector: '$.eventSummaries[0].eventId' Name: eventId Type: String inputs: Service: ssm-incidents Api: ListTimelineEvents incidentRecordArn: '{{IncidentRecordArn}}' filters: - key: eventType condition: equals: stringValues: - SSM Incident Trigger description: This step retrieves the ID of the first timeline event with the CloudWatch alarm details. - name: GetTimelineEvent action: 'aws:executeAwsApi' inputs: Service: ssm-incidents Api: GetTimelineEvent incidentRecordArn: '{{IncidentRecordArn}}' eventId: '{{ListTimelineEvents.eventId}}' outputs: - Name: eventData Selector: $.event.eventData Type: String description: This step retrieves the timeline event itself. - name: JsonDecode action: 'aws:executeScript' inputs: Runtime: python3.8 Handler: script_handler Script: |- import json def script_handler(events, context): data = json.loads(events["eventData"]) return data InputPayload: eventData: '{{GetTimelineEvent.eventData}}' outputs: - Name: rawData Selector: $.Payload.rawData Type: String description: This step parses the timeline event data. - name: JsonDecode2 action: 'aws:executeScript' inputs: Runtime: python3.8 Handler: script_handler Script: |- import json def script_handler(events, context): data = json.loads(events["rawData"]) return data InputPayload: rawData: '{{JsonDecode.rawData}}' outputs: - Name: InstanceId Selector: '$.Payload.detail.configuration.metrics[0].metricStat.metric.dimensions.InstanceId' Type: String description: This step parses the CloudWatch event data. - name: RestartInstance action: 'aws:executeAutomation' inputs: DocumentName: AWS-RestartEC2Instance DocumentVersion: $DEFAULT RuntimeParameters: InstanceId: '{{JsonDecode2.InstanceId}}' description: This step restarts the Amazon EC2 instance
-
Escolha Criar automação.
Tarefa 2: Criar um perfil do IAM
Use o tutorial a seguir para criar uma função AWS Identity and Access Management (IAM) que dê permissão ao Incident Manager para iniciar um runbook especificado em um plano de resposta. O runbook deste tutorial reinicia uma instância da Amazon EC2 . Você especificará esse perfil do IAM na próxima tarefa ao conectar o runbook ao seu plano de resposta.
Crie um perfil do IAM que inicie um runbook a partir de um plano de resposta
Abra o console do IAM em https://console.aws.amazon.com/iam/
. -
No painel de navegação, escolha Perfis e Criar perfil.
-
Verifique se o serviço da AWS está selecionado em Tipo de entidade confiável.
-
Em Caso de uso, no campo Casos de uso para outros serviços da AWS , insira
Incident Manager
. -
Escolha Incident Manager e, em seguida, Next.
-
Na página Adicionar permissões, escolha Criar política. O editor de permissões abrirá em uma nova janela ou guia do navegador.
-
No editor de política, escolha a guia JSON.
-
Copie e cole o seguinte JSON na janela do editor de política de permissões. Substituir
account_ID
por seu ID da Conta da AWS .{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": [ "arn:aws:ssm:*:
account_ID
:automation-definition/IncidentResponseRunbook:*", "arn:aws:ssm:*::automation-definition/AWS-RestartEC2Instance:*" ], "Action": "ssm:StartAutomationExecution" }, { "Effect": "Allow", "Resource": "arn:aws:ssm:*:*:automation-execution/*", "Action": "ssm:GetAutomationExecution" }, { "Effect": "Allow", "Resource": "arn:aws:ssm-incidents:*:*:*", "Action": "ssm-incidents:*" }, { "Effect": "Allow", "Resource": "arn:aws:iam::*:role/AWS-SystemsManager-AutomationExecutionRole", "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Resource": "*", "Action": [ "ec2:StopInstances", "ec2:DescribeInstanceStatus", "ec2:StartInstances" ] } ] } -
Escolha Próximo: tags.
-
(Opcional) Se necessário, marque a sua política.
-
Escolha Próximo: revisar.
-
No campo Nome, insira um nome que o ajude a identificar esse perfil como sendo usado neste tutorial.
-
(Opcional) No campo Description, insira uma descrição.
-
Escolha Criar política.
-
Navegue de volta até a janela ou guia do navegador para o perfil que você está criando. A página Adicionar permissões é exibida.
-
Escolha o botão de atualização (localizado ao lado do botão Criar política) e, em seguida, insira o nome da política de permissões que você criou na caixa de filtro.
-
Escolha o grupo de mídias que você criou e, em seguida, escolha Next.
-
Na página Nomear, revisar e criar em Nome do perfil, insira um nome que o ajude a identificar esse perfil como sendo usado neste tutorial.
-
(Opcional) No campo Description, insira uma descrição.
-
Revise os detalhes do perfil, marque, se necessário, e escolha Criar perfil.
Tarefa 3: Conectar o runbook ao seu plano de resposta
Ao conectar o runbook ao seu plano de resposta do Incident Manager, você garante um processo de mitigação consistente, repetível e oportuno. O runbook também serve como ponto de partida para os resolvedores determinarem seu próximo curso de ação.
Para atribuir o runbook ao seu plano de resposta
-
Abra o console do Incident Manager
. -
Escolha os Planos de resposta.
-
Em Plano de resposta, escolha um plano de resposta existente e escolha Editar. Se não tiver um plano de resposta existente, escolha Criar plano de resposta para criar um novo plano.
Preencha os seguintes campos:
-
Na seção Runbook, escolha Selecionar runbook existente.
-
Em Proprietário, verifique se a opção De minha propriedade está selecionada.
-
Para Runbook, escolha o runbook que você criou em Tarefa 1: Criar o runbook.
-
Em Versão, escolha Padrão no momento da execução.
-
Na seção Entradas, para o IncidentRecordArnparâmetro, escolha ARN do incidente.
-
Na seção Permissões de execução, escolha o perfil do IAM criado em Tarefa 2: Criar um perfil do IAM.
-
-
Salve as alterações.
Tarefa 4: Atribuir um CloudWatch alarme ao seu plano de resposta
Use o procedimento a seguir para atribuir um CloudWatch alarme para uma EC2 instância da Amazon ao seu plano de resposta.
Para atribuir um CloudWatch alarme ao seu plano de resposta
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, em Alarmes, escolha Todos os alarmes.
-
Escolha um alarme para uma EC2 instância da Amazon que você deseja conectar ao seu plano de resposta.
-
Escolha Ações e, em seguida, escolha Editar. Verifique se a métrica tem uma dimensão chamada
InstanceId
. -
Escolha Next.
-
Para Assistente de configuração de ações, escolha Adicionar ação do Systems Manager.
-
Escolha Criar incidente.
-
Escolha o plano de resposta criado em Tarefa 3: Conectar o runbook ao seu plano de resposta.
-
Escolha Create alarm (Criar alarme).
Tarefa 5: verificar os resultados
Para verificar se o CloudWatch alarme cria um incidente e, em seguida, processa o runbook especificado em seu plano de resposta, você deve acionar o alarme. Depois de acionar o alarme e o runbook concluir o processamento, você pode verificar os resultados do runbook usando o procedimento a seguir. Para obter informações sobre como acionar um alarme, consulte set-alarm-statena Referência de AWS CLI Comandos.
-
Abra o console do Incident Manager
. -
Escolha o incidente criado pelo CloudWatch alarme.
-
Escolha a guia Runbooks.
-
Veja as ações realizadas em sua EC2 instância da Amazon na seção Etapas do Runbook.
A imagem a seguir demonstra como as etapas executadas pelo runbook que você criou neste tutorial são relatadas no console. Cada etapa é listada com um carimbo de data/hora e uma mensagem de status.
Para ver todos os detalhes no CloudWatch alarme, expanda a etapa JsonDecode2 e, em seguida, expanda Saída.
Importante
Você deve limpar todas as alterações de recursos implementadas durante este tutorial que não deseje manter. Isso inclui alterações nos recursos do Incident Manager, como planos de recursos e incidentes, alterações CloudWatch nos alarmes e na função do IAM que você criou para este tutorial.