BT

Experimente a nova interface visual do InfoQ! Veja o novo design do InfoQ 3.0 e nos diga o que você achou.

Amazon anuncia extensibilidade para o AWS CloudFormation com macros do AWS Lambda Powered

| por Steef-Jan Wiggers Seguir 10 Seguidores , traduzido por Mayra Michels Seguir 2 Seguidores em 11 out 2018. Tempo estimado de leitura: 2 minutos |

Com o AWS CloudFormation, os desenvolvedores podem modelar e definir sua infraestrutura como codigo. Agora a Amazon anunciou um novo recurso da AWS CloudFormation chamada de Macros, que permite aos desenvolvedores estender a sintaxe nativa dos modelos do CloudFormation chamando as transformações ativadas pelo AWS Lambda.

O AWS CloudFormation é um bloco de construção essencial na plataforma da AWS, com muitos serviços dependendo dele. Desde o seu lançamento inicial em 2011, o CloudFormation evoluiu para o estado atual com a mais recente adição de Macros. Uma macro no AWS CloudFormation tem dois componentes: uma definição e uma implementação. Um desenvolvedor cria uma definição começando com o tipo de recurso do CloudFormation, AWS::CloudFormation::Macro, que descreve a função lambda a ser usada e como a macro deve ser chamada.

Type: "AWS::CloudFormation::Macro"
Properties:
  Description: String
  FunctionName: String
  LogGroupName: String
  LogRoleARN: String
  Name: String

Na definição, o Name deve ser exclusivo e a referência a função Lambda no FunctionName precisa estar na mesma região que a macro. Quando o desenvolvedor executa o modelo de macro, ele ficará disponível para outros modelos também. A implementação da macro é uma função do Lambda e espera uma carga útil do JSON.

{
    "region": "us-east-1",
    "accountId": "$ACCOUNT_ID",
    "fragment": { ... },
    "transformId": "$TRANSFORM_ID",
    "params": { ... },
    "requestId": "$REQUEST_ID",
    "templateParameterValues": { ... }
}

O fragmento na carga útil do JSON contém um modelo inteiro ou partes relevantes do modelo. Observe que o fragmento também será JSON, independentemente de o modelo ser YAML. Além disso, a função Lambda retorna uma resposta JSON contendo:

  • Um ID de requisição, o mesmo que ele recebe na requisição;
  • Um campo de status contendo sucesso ou outros valores que falharão no ChangeSet;
  • E um fragmento contendo o JSON do CloudFormation válido do modelo transformado.

Quando os desenvolvedores querem usar a macro, eles podem chamar Fn::Transform com os parâmetros necessários.

AWSTemplateFormatVersion: 2010-09-09
Resources:
  MyS3Bucket:
    Type: 'AWS::S3::Bucket'
    Fn::Transform:
      Name: EchoMacro
      Parameters:
        Key: Value

No caso de um desenvolvedor precisar analisar um modelo inteiro, ele poderá incluí-lo na lista de transformações no modelo. Ao executar esse modelo, as transformações serão coletadas em um conjunto de alterações, chamando a função especificada de cada macro e retornando o modelo final de acordo com a postagem do blog.

 
Fonte: https://aws.amazon.com/blogs/aws/cloudformation-macros/

Rendall Hunt, evangelista técnico sênior da AWS, disse na postagem sobre o anúncio de macros:

O poder real aqui é que você pode estender sua infraestrutura existente como código, com código. As possibilidades permitidas por essa nova funcionalidade são virtualmente ilimitadas.

Existem várias macros de referência, como ShortHand e String Functions, que os desenvolvedores podem explorar para se familiarizar com as macros. O novo recurso Macros no AWS CloudFormation está disponível em todas as regiões da AWS que fornecem o AWS Lambda. Além disso, não há cobrança adicional de CloudFormation para Macros, o que significa que os clientes só recebem cobranças da função padrão do AWS Lambda.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
BT