De Dias a Segundos: Automatizando Solicitações de Certificados AWS com n8n e Slack

Desenvolvedores que solicitam certificados AWS são como adolescentes que pedem as chaves do carro – há muito espera, papeis a serem preenchidos, e dedos cruzados. Se você estiver cansado de ser o guardião das certificações ou sendo o desenvolvedor preso no inferno de entradas.

Vamos transformar esse processo enfadonho de solicitação de certificados em um simples comando Slack usando n8n, uma ferramenta de automação de fluxo intuitiva que fará seus desenvolvedores dizer, “É só isso?”

Cobremos um exemplo de cenário de A a Z, não descuidando dos detalhes, para mostrar como a ferramenta de automação de fluxo n8n pode salvar aos desenvolvedores e gerentes ocupados horas extras de tempoextra.

A Dança Atual de Solicitação de Certificados

Pense neste muito familiar cenário: um desenvolvedor precisa the um novo certificado AWS para seu ambiente de desenvolvimento. Aqui é o que acontece normalmente:

  1. O desenvolvedor envia uma entradada com o texto suficiente para escrever um romance
  2. A entradada fica na fila enquanto o desenvolvedor atualiza sua caixa de entrada com stress
  3. O aprovador finalmente vê a entradada entre 47 outras solicitações urgentes
  4. Metade dos dados necessários está faltando (obviamente)
  5. Inicia-se um jogo doloroso de ping-pong por e-mail
  6. O aprovador entra no console AWS (depois de encontrar o seu dispositivo 2FA)
  7. A criação manual do certificado acontece
  8. Finalmente, o desenvolvedor obtém os detalhes do certificado… talvez
  9. Todos perdemos um pouco do seu coração

Conhecem isso? Eu acho que sim. Vamos corrigir isso.

O Sonho: Comando do Slack → Certificado Instantâneo

E se seus desenvolvedores pudessem apenas digitar /newcert no canal do Slack de sua ambiente de desenvolvimento, obter um ARN de certificado do AWS em segundos? Sem tickets, sem espera, sem afrouxar o coração e voltar e para. Exatamente o que estamos construindo.

Neste cenário, você é um desenvolvedor em uma organização que usa o Slack para comunicação. Você criou um canal do Slack para cada ambiente de desenvolvimento para manter as conversas organizadas.

Aqui é como funcionará nossa fluxo automatizado:

  1. O desenvolvedor digita /newcert no canal do Slack de seu ambiente
  2. O workflow n8n recebe a solicitação com o contexto do canal
  3. O workflow cria o certificado no AWS
  4. O ARN do certificado aparece no mesmo canal do Slack

É só isso. Quatro passos em vez de nove, e zero espera para os seres humanos fazerem coisas humanas!

Como não descuidar dos detalhes, esse post não vai dizer apenas que o n8n pode automatizar este processo, mas mostrará que eu fiz isso mesmo de raiz!

O n8n usa fluxos para juntar tarefas usando nós. Esses fluxos então podem ser executados, disparando todos os nós no fluxo para automatizar processos simples a complexos.

Se você estiver interessado em aprender a configurar este fluxo ou em aprender como um fluxo n8n pode ser configurado, continue lendo!

Primeiro Coisa Primeira: O Gancho da Webhook

Abrir sua instância de n8n, e comecemos com um quadro em branco:

1. Crie um novo fluxo de trabalho. Abaixo, você verá o quadro em branco de um novo fluxo de trabalho de n8n pronto para configurar o primeiro nó de disparo.

2. Em seguida, adicione um webhook nó de disparo. O nó de disparo de webhook é a forma como o Slack se comunicará com este fluxo de trabalho para notificá-lo quando deve enviar solicitações para o AWS para criar novos certificados.

Você pode ver na imagem acima que o nó de disparo de webhook estará ouvindo solicitações HTTP POST.

3. Configure-o para receber solicitações POST do Slack

Este webhook será a nossa porta frontal – é onde o Slack baterá quando alguém usará o comando /newcert de nossa aplicação.

Criando a Aplicação do Slack

É hora de configurar o lado do Slack. Você precisará de uma aplicação do Slack para permitir que usuários emitam comandos de linha (/newcert) no canal. A aplicação do Slack também funcionará como uma maneira para o n8n autenticar de volta ao Slack para retornar mensagens.

1. Assim que no ecrã das aplicações do Slack, clique em Criar Nova Aplicação onde você pode fornecer um nome.

2. Em seguida, defina os Scopes para que possa emitir comandos de barra diagonal e para também enviar mensagens de volta ao canal. Você precisará

channels:read

chat:write

commands

3. Em seguida, configure um slash command. Um comando de barra diagonal permite que usuários emitam comandos para seu aplicativo Slack como uma barra diagonal seguida por algum comando. Neste caso, o comando será /newcert para gerar um novo certificado AWS.

No painel de configurações do seu aplicativo, vá para “Comandos de Barra diagonal” e clique em “Criar Novo Comando”

4. Instale o aplicativo no seu espaço de trabalho Uma vez que você tenha configurado os escopos e o comando de barra diagonal.

5. Finalmente, convidar o bot (o aplicativo que você acabou de criar) the um canal do Slack para trabalhar. Neste caso, o canal será o nome do ambiente de desenvolvimento qa-1.

/invite @devenvironmentautomation

Testando o Gatilho do Webhook

Agora você tem o aplicativo Slack e o gatilho do webhook configurados. É hora de testar sua interatividade.

1. Em seu workflow n8n, clique no botão Ouvir Evento de Teste. Isso permitirá que o gatilho do webhook comece a ouvir solicitações que o aplicativo Slack deve enviar.

2. Em seguida, no seu canal do Slack de ambiente de desenvolvimento, execute o comando de slash /newcert. Assim que você fizer isso, você deveria ver o nó do webhook recebendo a solicitação em n8n.

Note abaixo que ela inclui o nome do canal e o ID do usuário na solicitação. Isso nos permitirá ver para qual ambiente de desenvolvimento este certificado se destina e o usuário que solicitou.

Se tudo estiver correto, você deveria ver a resposta JSON padrão dizendo que o workflow recebeu a solicitação que iniciou o workflow.

Configurando o Acesso AWS

O n8n precisa se autenticar no AWS para criar novos certificados. Para fazer isso, é necessário um usuário IAM com os direitos apropriados. Visto que estamos começando do zero neste tutorial, abaixo, você vai encontrar uma maneira rápida de configurar este usuário IAM através do AWS CLI.

Se você ainda não tem um usuário IAM, você pode usar o seguinte código para o fazer:


## criar o arquivo de política
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "acm:DescribeCertificate",
                "acm:ListCertificates",
                "acm:GetCertificate",
								"acm:RequestCertificate"
								"acm:AddTagsToCertificate"
            ],
            "Resource": "*"
        }
    ]
}

## criar o usuário
aws iam create-user --user-name CertificateManager

## criar a chave de acesso e a chave de acesso segredo
aws iam create-access-key --user-name CertificateManager --query 'AccessKey.[AccessKeyId,SecretAccessKey]' --output text > certificate_manager_credentials.txt

## criar a política
$policy = Get-Content -Raw ~/Downloads/cert-policy.json                                                           PS /Users/adam> $policy_arn = aws iam create-policy --policy-name CertificateManagerPolicy --policy-document $policy --query 'Policy.Arn' --output text

## anexar a política

aws iam attach-user-policy --user-name CertificateManager --policy-arn $policy_arn

## ler a chave de acesso e o segredo que precisaremos mais tarde para o workflow
Get-Content ./certificate_manager_credentials.txt

Este código usa a AWS CLI para executar várias tarefas:

1. Criação de Política: Cria uma política de IAM que define exatamente quais ações relacionadas a certificados são permitidas:

– Visualizar detalhes do certificado

– Listar certificados

– Recuperar dados do certificado

– Criar novos certificados

– Adicionar tags aos certificados

2. Criação de Usuário: Cria um usuário de IAM dedicado chamado “CertificateManager” que será usado explicitamente para tarefas de gerenciamento de certificados

3. Geração de Chave de Acesso: Cria um par de chaves de acesso (Chave de Acesso ID e Chave de Acesso Segredo) para o novo usuário e os salva em um arquivo

4. Anexo de Política: Cria a política IAM e a anexa ao novo usuário, concedendo-lhe apenas as permissões específicas de gerenciamento de certificados definidas na política

5. Usa o comando PowerShell Get-Content para ler o arquivo de texto com a chave de acesso e o segredo que você precisará fornecer ao workflow.

Isso segue as melhores práticas de segurança, por:

  • Usar o princípio de privilégio mínimo (concedendo apenas as permissões necessárias).
  • Criando um usuário dedicado para gerenciamento de certificados
  • Separação das credenciais do conta de admin

Nota: Em um ambiente de produção, você gostaria de armazenar as credenciais geradas de forma segura, não em um arquivo de texto simples. Considere usar o AWS Secrets Manager ou outra solução de armazenamento de segredos seguro.

Configurando as credenciais de Workflow AWS do n8n

Quando chegarmos a esse passo, o workflow precisará ser capaz de autenticar com o AWS Certificate Manager para emitir novos certificados. O n8n usa credentials para fazer isso. Para criar um novo credential para AWS:

1. Em seu espaço de trabalho, clique em Credentials no topo da tela e clique em Add credential.

2. Especifique AWS como o tipo de credencial.

3. Forneça as chaves de acesso e secreta de acesso geradas pelas comandos do AWS CLI anteriormente.

O n8n tem uma funcionalidade agradável que testa automaticamente a credencial quando você salvá-la, portanto, você saberá imediatamente se a credencial funciona ou não.

Criando o Nó de Requisição HTTP

Embora o n8n tenha suporte para o serviço Gerenciador de Certificados AWS, atualmente não suporta a criação de certificados novos, portanto, você não está desesperado! Você pode usar o nó de solicitação HTTP genérica. Este nó permite que você emita solicitações HTTP genéricas para operações de API que não são atualmente suportadas.

 No need to worry about complex API authentication. Once you create a credential, n8n can leverage that and manage all that OAuth goodness for you. 

1. Para criar o nó de solicitação HTTP que procuramos, primeiro, defina todos os parâmetros que o API AWS exige. Esses são:

URL – O ponto final da API para a região em que você está trabalhando

Autenticação – Use o Tipo de Credencial Predefinida para aproveitar as credenciais criadas anteriormente.

Tipo de CredencialAWS

AWS – As credenciais AWS criadas anteriormente.

Enviar Cabeçalhos – Você precisará do cabeçalho X-Amz-Target para dizer ao API qual operação você gostaria de usar; é CertificateManager.RequestCertificate nesta situação.

Tipo de Conteúdo do Corpoapplication/x-amz-json-1.1

2. A seguir, configure o corpo HTTP. Este é um passo crucial na criação de uma solicitação API com o nome do ambiente de desenvolvimento. Neste cenário, estamos atribuindo uma etiqueta AWS chamada Environment ao certificado e definindo o valor do nome do ambiente recebido da solicitação do Slack.

Você precisará de uma entrada dinâmica ou Expressão para esta tarefa. Clique em Expressão no campo Corpo, e você verá que a entrada se transforma em um texto de função.

3. Clique no ícone de expandir no canto inferior direito do campo de corpo, e você terá um editor intuitivo.

O corpo do HTTP precisa estar em JSON. Estou usando um dos meus nomes de domínio aqui e validando o certificado com DNS.

Você pode ver abaixo que posso incluir o valor da tag arrastando o valor recebido do Slack para a expressão.

    {
        "DomainName": "atademos.com",
        "ValidationMethod": "DNS",
        "Tags": [
            {
                "Key": "Environment",
                "Value": "{{ $('Webhook').item.json.body.channel_name }}"
    }
    ]}

O valor agora é {{ $('Webhook').item.json.body.channel_name }} Esta variável será passada para a AWS na solicitação da API contendo o nome do canal do Slack (o nome do ambiente de desenvolvimento neste cenário).

[su_hightlight]The expressions in n8n are powerful. They’ve developed their own templating language that’s intuitive and is integrated well in various parts of the tool.[/su_hightlight]

4. Por fim, teste o nó de solicitação HTTP clicando em Testar etapa. Se tudo correu bem, você deverá ver a resposta JSON da AWS, incluindo o ARN do certificado

Criar o Nó do Slack

Neste ponto, você tem dois dos três nós completos neste fluxo de trabalho simples do n8n: o acionador de webhook para o Slack chamar e o nó de Solicitação HTTP que fará solicitações à AWS. O nó final é o nó do Slack, que inicia uma mensagem de resposta para o usuário.

1. Abra o painel de Nós e clique no botão de adição para criar um novo nó do Slack em seu fluxo de trabalho.

2. Procure por Slack e escolha a ação Enviar uma mensagem.

3. A seguir, clique em Credencial para conectar com e escolha Criar uma Nova Credencial para criar uma credencial do Slack semelhante à credencial do AWS. Assim que você configure uma credencial, você pode usá-la no nó do Slack.

4. Forneça os parâmetros apropriados para o nó do Slack:

  • RecursoMensagem (para enviar uma mensagem de canal)
  • OperaçãoEnviar
  • Enviar Mensagem ParaCanal
  • CanalPor Nome. Você pode usar o editor de expressão novamente e arrastar o atributo channel_name do disparador do webhook para usar uma expressão dinâmica.
  • Texto da Mensagem – Neste cenário, o workflow retornará o ARN de certificado recebido do AWS para o desenvolvedor no canal do Slack. Como o AWS retorna uma string JSON, podemos usar a função de expressão interna JSON.parse para analisar o JSON e apenas extrair o valor CertificateArn.

 The ability to run simple JavaScript like JSON.parse directly in expressions is extremely handy. If I didn’t have this ability, I’d have to create a whole new node just to format this simple data. 

5. Clique em Testar passo e o canal original do Slack deveria receber a mensagem!

Testar o Workflow

Neste ponto, você deveria ter um workflow com três nós. É hora de testar o workflow inteiro juntamente!

Clicando em Testar Workflow, você verá que o n8n começa a esperar por um disparador.

Entre no canal do ambiente de desenvolvimento do Slack e execute o comando /newcert. Voilà, o workflow deveria executar sem problemas!

Agora você deveria ter um certificado marcado explicitamente para o ambiente de desenvolvimento onde será usado, um histórico da solicitação e desenvolvedores muito mais felizes, por exemplo, acesso a novos certificados!

Por Que Isso Importa

Pense em o que acabamos de construir:

  • Eliminou o intermediário do sistema de ticket
  • Reduziu o tempo de solicitação de certificado de dias para segundos
  • Automatizou a documentação (etiquetas AWS)
  • Fez os desenvolvedores mais felizes (priceless)

Este post de blog abordou apenas uma tarefa: construir o workflow. Agora ele pode ser executado ilimitadamente para salvar quantas horas quiser!

E a melhor parte? Isto é apenas o início. Você poderia estender este workflow para lidar com diferentes tipos de certificados, adicionar aprovações para ambientes de produção ou até mesmo automatizar notificações de renovação de certificados.

Confira as Modelos Pré-Construídos

O n8n fornece centenas de modelos pré-construídos como este workflow. Esses modelos permitem que você acorte o processo que abordamos para aproveitar workflows construídos e testados pelo n8n.

 If you’d like another great example of a Slack workflow, check out their Advanced Slackbot template. 

Pensamentos Finais

O n8n torna muito fácil automatizar esses tipos de workflows. Nós tiramos um processo que normalmente envolve vários sistemas, pessoas e níveis de paciência e transformamos em um único comando de Slack.

Quer tentar isso sozinho? A versão básica do n8n é gratuita, e você provavelmente conseguirá configurá-la mais rápido do que processar uma solicitação de certificado sozinho, na forma antiga. Seus desenvolvedores te agradecerão, e você terá menos dores de cabeça administrativas.

Source:
https://adamtheautomator.com/automate-aws-cert-creation-n8n-slack/