Tutorial: Monitorar alterações importantes em sua organização com o CloudWatch Events - AWS Organizations

Tutorial: Monitorar alterações importantes em sua organização com o CloudWatch Events

Este tutorial mostra como configurar o CloudWatch Events para monitorar alterações em sua organização. Você começa por configurar uma regra que é acionada quando os usuários invocam operações específicas do AWS Organizations. Em seguida, você configura o CloudWatch Events para executar uma função do AWS Lambda quando a regra é acionada, e configura o Amazon SNS para enviar um e-mail com detalhes sobre o evento.

A seguinte ilustração mostra as etapas principais do tutorial.

Etapa 1: configurar um seletor de eventos e trilhas

Crie um registro, chamado trilha, em AWS CloudTrail. Você configura-o para capturar todas as chamadas de API.

Etapa 2: Configurar uma função do Lambda

Crie uma função AWS Lambda que registra detalhes sobre o evento para um bucket do S3.

Etapa 3: Criar um tópico do Amazon SNS que envia e-mails para assinantes

Crie um tópico do Amazon SNS que envia e-mails para seus assinantes e, em seguida, inscreva-se no tópico.

Etapa 4: Criar uma regra do CloudWatch Events

Crie uma regra que diz ao CloudWatch Events para passar detalhes de chamadas de API especificadas para a função do Lambda e para os assinantes do tópico do SNS.

Etapa 5: Testar sua regra do CloudWatch Events

Teste a sua nova regra executando uma das operações monitoradas. Neste tutorial, a operação monitorada é a criação de uma unidade organizacional (UO). Você vê a entrada do log que a função do Lambda cria e o e-mail que o Amazon SNS envia aos assinantes.

Tip

Você também poderá usar este tutorial como um guia para configurar operações semelhantes, como enviar notificações por e-mail quando a criação da conta estiver concluída. Como a criação da conta é uma operação assíncrona, por padrão, você não é notificado quando ela é concluída. Para obter mais informações sobre como usar o AWS CloudTrail e o CloudWatch Events com o AWS Organizations, consulte Registrar em log e monitorar no AWS Organizations.

Prerequisites

Este tutorial assume o seguinte:

  • Você pode fazer login no AWS Management Console como um usuário do IAM da conta de gerenciamento de sua organização. O usuário do IAM deve ter permissões para criar e configurar um log no CloudTrail, uma função no Lambda, um tópico no Amazon SNS e uma regra no CloudWatch. Para obter mais informações sobre a concessão de permissões, consulte Gerenciamento de acesso no Manual do usuário do IAM ou o guia do serviço para o qual você deseja configurar acesso.

  • Você tem acesso a um bucket do Amazon Simple Storage Service (Amazon S3) (ou tem permissões para criar um bucket) para receber o log do CloudTrail que você configura na etapa 1.

Importante

No momento, o AWS Organizations só é hospedado na região Leste dos EUA (Norte da Virgínia) (embora esteja disponível globalmente). Para executar as etapas neste tutorial, você deve configurar o AWS Management Console para usar essa região.

Etapa 1: configurar um seletor de eventos e trilhas

Nesta etapa, você faz login na conta de gerenciamento e configura um log (chamado de trilha) no AWS CloudTrail. Você também pode configurar um seletor de eventos na trilha para capturar todas as chamadas de API de leitura/gravação, para que o CloudWatch Events tenha chamadas nas quais acionar.

Para criar uma trilha

  1. Faça login na AWS como administrador da conta de gerenciamento da organização e abra o console do CloudTrail em https://console.aws.amazon.com/cloudtrail/.

  2. Na barra de navegação no canto superior direito do console, escolha a região US East (N. Virginia) (Leste dos EUA (Norte da Virgínia)). Se você escolher outra região, o AWS Organizations não aparece como uma opção nas definições de configuração do CloudWatch Events, e o CloudTrail não captura informações sobre o AWS Organizations.

  3. No painel de navegação, selecione Trilhas.

  4. Escolha Create Trail (Criar trilha).

  5. Em Trail name (Nome da trilha), digite My-Test-Trail.

  6. Execute uma das seguintes opções para especificar onde o CloudTrail deve entregar seus logs:

    • Se você já tiver um bucket, escolha No (Não) ao lado de Create a new S3 bucket (Criar um novo bucket do S3) e escolha o nome do bucket na lista S3 bucket (Bucket do S3).

    • Se você precisar criar um bucket, escolha Yes (Sim) ao lado de Create a new S3 bucket (Criar um novo bucket do S3) e, em S3 bucket (Bucket do S3), digite um nome para o novo bucket.

      nota

      Os nomes de buckets do S3 devem ser exclusivos globalmente.

  7. Escolha Create (Criar).

  8. Escolha a trilha My-Test-Trail que você acabou de criar.

  9. Escolha o ícone de lápis ao lado de Gerenciar eventos.

  10. Para eventos de leitura/gravação, escolha Tudo, escolha Salvar e, em seguida, escolha Configurar.

O CloudWatch Events permite que você escolha entre várias maneiras diferentes de enviar alertas quando uma regra de alarme corresponde a uma chamada de API de entrada. Este tutorial demonstra dois métodos: invocar uma função do Lambda que pode registrar a chamada de API no log e enviar informações para um tópico do Amazon SNS que envia um e-mail ou mensagem de texto para os assinantes do tópico. Nas duas próximas etapas, você criará os componentes necessários: a função do Lambda e o tópico do Amazon SNS.

Etapa 2: Configurar uma função do Lambda

Nesta etapa, você cria uma função do Lambda que registra as atividades de APIs que são enviadas a ela pela regra do CloudWatch Events que você configura mais tarde.

Para criar uma função do Lambda que registra eventos do CloudWatch Events

  1. Abra o console do AWS Lambda em https://console.aws.amazon.com/lambda/.

  2. Se você não estiver familiarizado com o Lambda, escolha Get Started Now (Começar a usar agora) na página de boas-vindas. Do contrário, escolha Create a function (Criar uma função).

  3. Na página Create function (Criar função), selecione Blueprints (Esquemas).

  4. Na caixa de pesquisa Blueprints (Esquemas), digitehello para o filtro e escolha o esquema hello-world.

  5. Selecione Configurar.

  6. Na página Basic information (Informações básicas), faça o seguinte:

    1. No nome da função do Lambda, insira LogOrganizationEvents na caixa de texto Name (Nome).

    2. Em Role (Função), escolha Create a custom role (Criar uma função personalizada) e, na parte inferior da página AWS Lambda requires access to your resources (O AWS Lambda requer acesso a seus recursos), escolha Allow (Permitir). Essa função concede à sua função do Lambda permissões para acessar os dados necessários e para gravar seu log de saída.

    3. Escolha Create function.

  7. Na página seguinte, edite o código da função do Lambda, conforme mostrado no seguinte exemplo.

    console.log('Loading function'); exports.handler = async (event, context) => { console.log('LogOrganizationsEvents'); console.log('Received event:', JSON.stringify(event, null, 2)); return event.key1; // Echo back the first key value // throw new Error('Something went wrong'); };

    Este código de exemplo registra o evento em log com uma string do marcador LogOrganizationEvents seguida pela string JSON que compõe o evento.

  8. Escolha Save (Salvar).

Etapa 3: Criar um tópico do Amazon SNS que envia e-mails para assinantes

Nesta etapa, você cria um tópico do Amazon SNS que envia informações por e-mail a seus assinantes. Você torna esse tópico um "alvo" da regra do CloudWatch Events que você cria mais tarde.

Para criar um tópico do Amazon SNS para enviar um e-mail aos assinantes

  1. Abra o console do Amazon SNS em https://console.aws.amazon.com/sns/v3/.

  2. No painel de navegação, escolha Topics (Tópicos).

  3. Selecione Create new topic (Criar novo tópico).

    1. Em Topic name (Nome do tópico), digite OrganizationsCloudWatchTopic.

    2. Em Display name (Nome de exibição), digite OrgsCWEvnt.

    3. Escolha Create topic.

  4. Agora você pode criar uma assinatura para o tópico. Escolha o ARN para o tópico que você acabou de criar.

  5. Selecione Create subscription.

    1. Na página Create subscription (Criar assinatura), em Protocol (Protocolo), selecione Email (E-mail).

    2. Para Endpoint, insira seu endereço de e-mail.

    3. Escolha Create subscription (Criar assinatura). A AWS envia um e-mail ao endereço de e-mail que você especificou na etapa anterior. Aguarde até o e-mail chegar e, em seguida, clique no link Confirmar assinatura no e-mail para verificar se você recebeu o e-mail corretamente.

    4. Volte ao console e atualize a página. A mensagem Confirmação pendente desaparece e é substituída pelo ID de assinatura agora válido.

Etapa 4: Criar uma regra do CloudWatch Events

Agora que a função do Lambda necessária existe em sua conta, você cria uma regra do CloudWatch Events que a invoca quando os critérios da regra forem atendidos.

Para criar uma regra do CloudWatch Events

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. Como antes, você deve definir o console para a região Leste dos EUA (Norte da Virgínia), ou as informações sobre Organizations não estão disponíveis. Na barra de navegação no canto superior direito do console, escolha a região US East (N. Virginia) (Leste dos EUA (Norte da Virgínia)).

  3. No painel de navegação, escolha Rules (Regras) e escolha Create rule (Criar regra).

  4. Em Origem do evento, faça o seguinte:

    1. Escolha Event pattern (Padrão de evento).

    2. Escolha Construir padrão de eventos para corresponder a eventos por serviço.

    3. Em Nome do serviço, escolha Organizações.

    4. Em Event type (Tipo de evento), escolha AWS API Call via CloudTrail (Chamada de API da AWS pelo CloudTrail).

    5. Selecione Specific operation(s) (Operações específicas) e insira as APIs que você deseja monitorar: CreateAccount e CreateOrganizationalUnit. Você pode selecionar quaisquer outras que também desejar. Para obter uma lista completa das APIs do AWS Organizations, consulte a Referência de APIs do AWS Organizations.

  5. Em Targets (Destinos), em Function (Função), escolha a função que você criou no procedimento anterior.

  6. Em Targets (Destinos), escolha Add target (Adicionar destino).

  7. Na nova linha de destino, escolha o cabeçalho suspenso e escolha SNS topic (Tópico SNS).

  8. Em Topic (Tópico), escolha o tópico chamado OrganizationCloudWatchTopic que você criou no procedimento anterior.

  9. Escolha Configure details (Configurar detalhes).

  10. Na página Configure rule details (Configurar detalhes da regra), em Name (Nome) digite OrgsMonitorRule, deixe State (Estado) selecionado e escolha Create rule (Criar regra).

Etapa 5: Testar sua regra do CloudWatch Events

Nesta etapa, você cria uma unidade organizacional (UO) e, em seguida, observa a regra do CloudWatch Events gerar uma entrada de log e enviar um e-mail a você com detalhes sobre o evento.

AWS Management Console

Para criar uma UO

  1. Abra o console do AWS Organizations na página Contas da AWS

  2. Escolha a caixa de seleção Root OU (UO raiz), escolha Actions (Ações)e, em Organizational unit (Unidade organizacional), escolha Create (Criar).

  3. No nome da UO, digite TestCWEOU e escolha Create organizational unit (Criar unidade organizacional).

Para ver a entrada de logo do CloudWatch Events

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. Na página de navegação, escolha Logs.

  3. Na página Log Groups (Registrar grupos), escolha o grupo associado à sua função do Lambda: /aws/lambda/LogOrganizationEvents.

  4. Cada grupo contém um ou mais streams e deve haver um grupo para hoje. Escolha-o.

  5. Visualize o log. Você deve ver linhas semelhantes às seguintes:

  6. Selecione a linha do meio da entrada para ver o texto JSON completo do evento recebido. Você pode ver todos os detalhes da solicitação da API nas partes requestParameters e responseElements da saída:

    2017-03-09T22:45:05.101Z 0999eb20-051a-11e7-a426-cddb46425f16 Received event: { "version": "0", "id": "123456-EXAMPLE-GUID-123456", "detail-type": "AWS API Call via CloudTrail", "source": "aws.organizations", "account": "123456789012", "time": "2017-03-09T22:44:26Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "1.04", "userIdentity": { ... }, "eventTime": "2017-03-09T22:44:26Z", "eventSource": "organizations.amazonaws.com", "eventName": "CreateOrganizationalUnit", "awsRegion": "us-east-1", "sourceIPAddress": "192.168.0.1", "userAgent": "AWS Organizations Console, aws-internal/3", "requestParameters": { "parentId": "r-exampleRootId", "name": "TestCWEOU" }, "responseElements": { "organizationalUnit": { "name": "TestCWEOU", "id": "ou-exampleRootId-exampleOUId", "arn": "arn:aws:organizations::1234567789012:ou/o-exampleOrgId/ou-exampleRootId-exampeOUId" } }, "requestID": "123456-EXAMPLE-GUID-123456", "eventID": "123456-EXAMPLE-GUID-123456", "eventType": "AwsApiCall" } }
  7. Verifique se existe em sua conta de e-mail uma mensagem de OrgsCWEvnt (o nome de exibição do seu tópico do Amazon SNS). O corpo do e-mail contém a mesma saída de texto JSON que a entrada de registro mostrada na etapa anterior.

Limpar: remover os recursos que não são mais necessários

Para evitar ser cobrado, você deve excluir qualquer recurso AWS que criou como parte deste tutorial que você não deseja manter.

Para limpar o seu ambiente AWS

  1. Use o console do CloudTrail para excluir a trilha chamada My-Test-Trail que você criou na etapa 1.

  2. Se você criou um bucket do Amazon S3 na etapa 1, use o console do Amazon S3 para excluí-lo.

  3. Use o console do Lambda para excluir a função chamada LogOrganizationEvents que você criou na etapa 2.

  4. Use o console do Amazon SNS para excluir o tópico do Amazon SNS chamado OrganizationsCloudWatchTopic que você criou na etapa 3.

  5. Use o console do CloudWatch para excluir a regra chamada OrgsMonitorRule que você criou na etapa 4.

  6. Use o console do Organizations para excluir a UO denominada TestCWEOU que você criou na etapa 5.

Isso é tudo. Neste tutorial, você configurou o CloudWatch Events para monitorar alterações em sua organização. Você configurou uma regra que é acionada quando os usuários invocam operações específicas do AWS Organizations. A regra executou uma função do Lambda que registrou o evento no log e enviou um e-mail com detalhes sobre o evento.