CSS-FHXB3M Display-Webkit-Box; Exibir-Webkit-Flex; display-ms-flexbox; Exibição: Flex-Webkit-Flex-Direction: Row-MS-Flex-Direcção: Linha; Flex-Direcção: Row-Webkit-Align-Items: Center-Webkit-Box-Align: Center-Ms-Flex-Align: Center; alinhado-itens: centro;. .5REM; Altura: 2..5rem-webkit-flex-srink: 0-MS-Flex-negativo: 0; Flex-Shrink: 0; estouro: oculto; Radio de fronteira: 9999px; Rahul Lokurte’s blog

Esta solução está usando a versão Terraform 0..16, você pode definir aliases diferentes da seguinte maneira. A Terraform usaria esses provedores quando começamos a criar nossos módulos:

Resumo do artigo:

– A Terraform suporta a Eventbridge e permite que você defina diferentes aliases para os provedores.
– Eventbridge é um serviço de barramento de eventos sem servidor que conecta aplicativos com dados de diferentes fontes.
– Ele suporta integração com aplicativos baseados em SaaS e outros serviços da AWS, como funções lambda e funções de etapas.
– O artigo explica como invocar uma função da AWS Lambda em intervalos programados usando a regra da AWS Eventbridge e Terraform.
– .
– A estrutura do projeto envolve a criação de um novo diretório, recursos e uma pasta Lambda.
– .arquivo js com o código de função lambda.
– A função Lambda usa a Biblioteca Faker para gerar dados aleatórios.
– ..
– .O arquivo TF especifica o provedor da AWS com opções de configuração como região, perfil e arquivo de credenciais.
– Você também pode definir variáveis ​​nas variáveis.arquivo tf para fornecer valores para a configuração do provedor.

Perguntas e respostas:

1. Terraform suporta eventbridge?

A Terraform suporta a Eventbridge e oferece a capacidade de definir diferentes aliases para os provedores. Isso permite que a Terraform use os provedores especificados ao criar módulos.

2. O que é Eventbridge?

Eventbridge é um serviço de barramento de eventos sem servidor que permite que os aplicativos se conectem com dados de várias fontes. Ele fornece observabilidade para eventos e suporta integração com aplicativos baseados em SaaS e de terceiros.

3. O que os serviços da AWS podem eventbridge enviar eventos para?

Eventbridge pode enviar eventos para vários serviços da AWS, incluindo funções lambda e funções de etapas.

4. Como podemos invocar uma função da AWS Lambda em intervalos programados com a regra do Eventbridge usando o Terraform?

Para invocar uma função da AWS Lambda em intervalos agendados, você precisa primeiro configurar uma regra usando o EventBridge e depois usar o Terraform para definir a regra e sua programação.

. Qual é a estrutura do projeto para configurar uma função lambda programada?

A estrutura do projeto envolve a criação de um novo diretório e uma pasta de recursos. Dentro da pasta Recursos, crie uma pasta Lambda para segurar o código da função Lambda.

. Como você cria uma função lambda?

Para criar uma função Lambda, crie uma pasta dentro da pasta de recursos e adicione um índice.. Você pode usar a Biblioteca Faker para gerar dados aleatórios na função Lambda.

7. Quais são os provedores de terraform usados ​​para?

Os provedores de terraform são usados ​​para configurar e interagir com provedores de infraestrutura. Nesse caso, o provedor da AWS é usado para definir a região da AWS, o perfil e outras opções de configuração.

8. .O arquivo TF contém?

O principal.O arquivo TF contém a configuração do Terraform para o provedor da AWS. .

9. Como as variáveis ​​são usadas no Terraform?

As variáveis ​​são usadas para fornecer valores dinâmicos à configuração do Terraform. Eles podem ser definidos em variáveis..

10. O que faz as variáveis.O arquivo TF contém?

As variáveis.O arquivo TF contém as definições de variáveis ​​que podem ser usadas na configuração do Terraform. As variáveis ​​podem ter descrições e valores padrão e são referenciados usando VAR.variável_name sintaxe.

11. Pode eventbridge se integrar com aplicativos baseados em SaaS?

Sim, a Eventbridge pode se integrar a aplicativos baseados em SaaS e aplicativos de terceiros.

12. O Eventbridge Suport, enviando eventos para outros serviços da AWS?

.

13. Qual é o objetivo da Biblioteca Faker no Código de Função Lambda?

A Biblioteca Faker é usada para gerar dados aleatórios na função Lambda. Pode ser usado para criar perfis falsos, números de telefone, tipos de veículos e mais.

14. Como você define o provedor da AWS em Terraform?

O provedor da AWS é definido na configuração do Terraform usando o bloco de provedores. Ele especifica o provedor como “AWS” e inclui opções de configuração como região e perfil.

15. O que você pode especificar na seção Default_tags da configuração do provedor da AWS?

Na seção Default_tags, você pode especificar tags padrão a serem aplicadas aos recursos da AWS criados pela Terraform. Isso pode ser útil para organizar e gerenciar recursos.

CSS-FHXB3M Display-Webkit-Box; Exibir-Webkit-Flex; display-ms-flexbox; Exibição: Flex-Webkit-Flex-Direction: Row-MS-Flex-Direcção: Linha; Flex-Direcção: Row-Webkit-Align-Items: Center-Webkit-Box-Align: Center-Ms-Flex-Align: Center; alinhado-itens: centro;. …’s blog

Esta solução está usando a versão Terraform 0.12..

Terraform suporta eventbridge

. С помощью этой страницы мы сможем определить, что запросы отправляете именно вы, а не робот. Почpels эээ моогitu произойth?

Эта страница отображается в тех случаях, когда автоматическими системами Google регистрируются исходящие из вашей сети запросы, которые нарушают Условия использования. . .

. Если вы используете общий доступ в Интернет, проблема может быть с компьютером с таким же IP-адресом, как у вас. . ПодробнÉ.

Проверка по слову может также появляться, если вы вводите сложные запросы, обычно распространяемые автоматизированными системами, или же вводите запросы очень часто.

Terraform suporta eventbridge

Amazon Eventbridge é um serviço de barramento de eventos sem servidor que você pode usar para conectar seus aplicativos com dados de uma variedade de fontes. Os eventos são centrais para o Eventbridge e os eventos são observáveis. . Ele também suporta o envio de eventos para outros serviços da AWS, como funções Lambda, funções de etapas.

Neste blog, vamos configurar um Para executar a função Lambda dentro do cronograma a cada 2 minutos usando Terraform.

Estrutura do projeto

  • Crie um novo diretório e vá para o diretório

  Lambda-Schedule-Devent-Bridge 

 

Crie um lambda

Crie uma pasta Perfil-gerador-lambda recursos . Arquivo com o conteúdo abaixo. Além disso, inicialize o projeto do nó e instale as dependências.

 cd .js npm init -y npm install faker 

 faker = ("Faker/Locale/En_ind" .manipulador = assíncrono (evento, contexto) => <  primeiro nome = faker..primeiro nome(); deixar .nome. deixar PhoneNumber = Faker.telefone.número de telefone();  VehicleType = Faker.veículo.veículo(); deixar  < , sobrenome: sobrenome, número de telefone: número de telefone, Tipo de Veículo: vehicleType,>; retornar < StatusCode: 200, cabeçalhos: < "Tipo de conteúdo": "Aplicativo/JSON", >, corpo: JSON.stringify (< perfil: resposta,>),>; >; 

Fornecedores de Terraforma

Agora, escreveremos os scripts do Terraform na linguagem HCL, onde utilizaremos o provedor da AWS. ..

Toque em Main.tf 

Terraform < required_providers < aws = < fonte = "Hashicorp/AWS" versão = "3.50.0 "  "Aws" < # Opções de configuração região = var.Perfil da região = var.aws_profile shared_credentials_file = var. < tags = var.tags >> 

  • Cada módulo Terraform deve declarar quais fornecedores exigem para que o Terraform possa instalar e usá -los. Os requisitos do provedor são declarados em um bloco _RequiredProviders.
  • Os provedores da AWS exigem configurações como regiões em nuvem, perfis, credenciais para estarem disponíveis antes que possam ser usados.
  • Todos os valores serão fornecidos a partir dos parâmetros de variáveis.

Vamos criar variáveis.tf no diretório raiz do projeto e adicione o conteúdo abaixo.

Toque em variáveis.tf 

variável  < description = "Região de implantação" padrão = "AP-Sul-1" > variável "AWS_PROFILE" < description = "Dado nome no arquivo de credencial"  = String padrão = "Rahul-Admin" > variável "Shared_credentials_file" < description = "Arquivo de perfil com credenciais para a conta da AWS"  = String padrão = .AWS/credenciais " > variável "Tag" < description = "Um mapa de tags para adicionar a todos os recursos."   < application = "Aprendizagem"  "Teste" >> 

Cada variável de entrada aceita por um módulo deve ser declarada usando um bloco variável. O rótulo após a palavra -chave variável é um nome para a variável, que deve ser única entre todas as variáveis ​​no mesmo módulo.

  • Um valor padrão torna a variável opcional.
  • Um tipo indica quais tipos de valor são aceitos para a variável.
  • Uma descrição especifica a documentação da variável de entrada.

Módulos de Terraform

Agora, usaremos o módulo Terraform-AWS-Modules/Lambda/AWS para criar infraestrutura de camada lambda e lambda.

Crie os arquivos lambda..

toque em lambda.tf 

módulo "Profile_generator_lambda" <    versão = .7.0 "  function_name = "Perfil-gerador-lambda" descrição =  manipulador = .manipulador "  "Nodejs14.x " fonte_Path = "$ /Recursos /Perfil-Generator-Lambda " tags = < Name =  >> 

event_bridge. .

toque em event_bridge.tf 

  "Profile_generator_lambda_event_rule" < name = "Perfil-gerador-lambda-event-regra" descrição =  cronograma_expression =    "Profile_generator_lambda_target" < arn = module.profile_generator_lambda.lambda_function_arn rule = aws_cloudwatch_event_rule.profile_generator_lambda_event_rule.name >recurso "Aws_lambda_permission" "Allow_cloudwatch_to_call_rw_fallout_retry_step_deletion_lambda" < statement_id =  ação =  function_name = módulo.perfil_generator_lambda.lambda_function_name principal = "Eventos..com " fonte_arn = AWS_CLOUDWATCH_EVENT_RULE..arn> 

Como pode ser visto acima, o cronograma_expression atributo tem uma taxa de 2 minutos. aws_cloudwatch_event_target.perfil_generator_lambda_target. Também damos permissão de lambda, para que o evento possa invocar a função.

Execute scripts Terraform

Vamos executar os 3 comandos básicos da Terraform para criar os recursos na AWS.

  • Inicialize a Terraform que baixará todos os provedores e módulos usados ​​na configuração.

Terraform init 

  • Verifique se um plano corresponde à expectativa e também arma

Plano de Terraform -Out  

  • Depois que o plano for verificado, aplique as alterações para obter os componentes de infraestrutura desejados.

Terraform se aplica "Planejar" 

Verifique a infraestrutura na AWS

Terraform suporta eventbridge

.

Evento-Bridge-2.png

Exclua os recursos

Podemos excluir os recursos criados pela Terraform, emitindo o comando abaixo para não sermos cobrados pelos recursos.

Terraform Destroe 

Conclusão

Nesta postagem do blog, vimos como criar uma função lambda e uma regra de ponte de eventos usando o Terraform. Também vimos, como agendar a função Lambda a cada 2 minutos, criando uma regra de ônibus de evento.

Você achou este artigo valioso?

Apoiar Rahul Lokurte Tornando -se um patrocinador. Qualquer quantidade é apreciada!

Eventbridge Pipes usando Terraform

Neste post, mostrarei como implementar um aplicativo simples orientado a eventos usando o Eventbridge Pipes e o Terraform. No momento da redação deste post, os recursos da Eventbridge Pipes não estão disponíveis com Terraform Provedor da AWS, Portanto, eu uso Terraform AWS Cloud Control Provider (AWSCC). Você pode seguir isso Para saber mais sobre o Eventbridge Pipes.

Caso de uso

&rsquo; Ouro, prata e platina. Atualmente, essas consultas são publicadas em uma fila centralizada do SQS e processadas por um aplicativo de consumidor.

Agora, temos um novo requisito de que queremos filtrar todas as consultas dos clientes de platina e reprocessá -los para incluir os detalhes do agente de suporte ao cliente antes de enviá -los para o Serviço de Consumidor. (Consulte o diagrama acima)

Componentes dos tubos de eventos

O diagrama a seguir mostra os principais componentes dos tubos de eventos que vamos implementar neste exemplo.

Fonte

Este é o ponto de partida dos tubos de eventos. O tubo pode receber eventos de várias fontes, como SQs, DynamoDB etc. .

Recurso "AWS_SQS_QUEUE" "Customer_Request_Sqs" Name = "Customer-Request"
>

Como precisamos filtrar os eventos dos clientes da platina dos eventos de origem, podemos incluir o opcional &ldquo;Filtragem&rdquo; entre no cano. Você pode usar padrões de eventos do Amazon Eventbridge para escrever critérios de filtragem. Como você pode ver no código abaixo, eu uso o Tipo de Cliente Campo no corpo da mensagem SQS para filtrar eventos de clientes de platina.

 filtros = [< pattern = "< \"body\": < \"customer_type\": [\"Platinum\"] >> ">]
>

Podemos usar a etapa de enriquecimento dos tubos de eventos para aprimorar os dados da fonte antes de enviá -los para o alvo. Neste exemplo, a etapa de enriquecimento realiza as seguintes tarefas.

  1. .
  2. Inclua dados adicionais sobre a carga útil do evento usando uma função Lambda de enriquecimento.

Transforme um evento de entrada

A seguir, é apresentado um evento de amostra da solicitação do cliente. Você pode ver isso Data de criação Data de criação Antes de enviá -lo para a função Lambda de enriquecimento.

 "ID": "003", 
"Customer_type": "Platinum",
"Consulta": "Precisa de suporte técnico",
"Gravidade": "High",
"CreatedDate": "2023-02-25"

Transformador de entrada de enriquecimento para transformar o evento como abaixo.

 "eu ia": "", 
"Tipo de Cliente": "",
,
"gravidade":"",
"Data de criação": ""
>

2. Inclua dados adicionais na carga útil do evento

Neste exemplo, queremos incluir os detalhes do agente de suporte ao cliente no evento antes de enviá -los ao Serviço de Consumidor. Portanto, precisamos reprocessar o evento e gerar um novo evento. Para fazer isso, podemos usar uma função lambda como um alvo de enriquecimento de tubos de eventos.

módulo "enrich_customer_request_lambda" fonte = "Terraform-AWS-Modules/Lambda/AWS"

function_name = "enrich-customer-request"
fonte_Path = "$/lambda/enrich-cuStomer-request"
Handler = "Índice.
.x "
LOCAL_EXISTING_PACKAGE = "$/Lambda/Enrich-Customer-Request/Index.fecho eclair"
create_role = false
lambda_role = AWS_IAM_ROLE..Arn
>

Manipulador de lambda de enriquecimento

Como você pode ver no código abaixo, crio um novo evento para incluir os detalhes do agente do cliente e voltar ao tubo. Em seguida, o tubo enviará eventos enriquecidos para a função Lambda alvo.

exportar const Handler = assíncrono (evento) => console.log ("Eventos de clientes de platina filtrada: %O", evento);



.Comprimento> 0) Evento.foreach (EventoBJ => Let UpdateEvent = . EventObj,
. agente_id: "0001",
,
agente_email: "[email protected] "


enriquedevents.push (updateEvent);
>);
>
retornar enriquedevents;
>;

Alvo

Esta é a etapa final dos tubos de eventos que processa os dados provenientes da etapa de enriquecimento. Neste exemplo, usamos uma função lambda como a Alvo.



function_name = "Process-Customer-Request"
Source_Path = "$/lambda/process-clustomer-request"
Handler = "Índice.manipulador "
Runtime = "NodeJS18.
LOCAL_EXISTING_PACKAGE = "$/Lambda/Process-Customer-Request/Index.fecho eclair"
create_role = false
lambda_role = AWS_IAM_ROLE.process_customer_request_lambda_iam_role.Arn

Manipulador de Lambda alvo

exportar const Handler = assíncrono (evento) => console.log ("Eventos de clientes enriquecidos de platina: %O", evento);

if (evento && evento.Comprimento> 0) Evento.foreach (EventObject => Console.


evento de retorno;

Combinou todas as etapas

A seguir está o awscc_pipes_pipe Recurso que cria os tubos de eventos com todas as etapas que discutimos antes. Você pode baixar o código fonte completo deste link.

Recurso "AWSCC_PIPES_PIPE" "Pipe" Nome = "Pipe-Customer-Request" 
Role_arn = AWS_IAM_ROLE..Arn

.Customer_Request_Sqs.Arn

fonte_parameters = sqs = sqs_queue_parameters = batch_size = 10
>
>

filtro_criteria = filtros = [< pattern = "< \"body\": < \"customer_type\": [\"Platinum\"] >> ">]

>

enriquecimento = módulo.enrich_customer_request_lambda.
enriquecimento_parameters = input_template = "\", \ "Customer_type \": \ "\", \ "Query \": \ "\", \ "gravidade \": \ "\", \ "criou_date \": \ "\"> ">
>

..
>

Teste

Encontre o arquivo de amostra . no código -fonte e execute o comando abaixo. .

AWS SQS Enviar-Message-lotch \
--fila-url https: // sqs.US-EAST-1..
--Região EUA-East-1 \
--.

Logs de função de enriquecimento lambda

O evento de log a seguir mostra o evento transformado que o Eventbridge Pipes enviou para a função Lambda de enriquecimento.

Target Lambda Function Logs

O evento de log a seguir mostra o evento enriquecido que veio do Enriquecimento etapa.

Alguns pontos importantes

  • Se você estiver usando a chave de criptografia personalizada da AWS KMS (CMK) para criptografar a fonte, você deve dar explicitamente &ldquo;KMS: descriptografar&rdquo; permissão para tubar -se&rsquo;.
  • Se você encontrou um erro como abaixo. Exclua o tubo e execute o reencontro &ldquo;Terraform se aplica&rdquo;. Este é um problema conhecido com o Recurso AWSCC_PIPE.

 Nosuchpath na fonte, caminho fornecido: // fonteparameters/filtercriteria/filters/0/padrão

Referências

Um guia simples sobre como implantar um Eventbus de CloudWatch com Terraform. Se você verificar a documentação oficial do Terraform, você notará que&rsquo;é bastante leve e você&rsquo;provavelmente precisará de algumas orientações neste momento.

Eu também mantenho meu blog atualizado com novos artigos com minha empresa de consultoria, você pode verificar em https: // CDCLOUDLOGIX.com/blog para mais informações 🙂

Em sua conta remota AWS.

1. Fornecedores de Terraforma

Esta solução está usando a versão Terraform 0.12.16, você pode definir aliases diferentes da seguinte maneira.

.