AWS LambdaReferência da ação de implantação do - AWS CodePipeline

AWS LambdaReferência da ação de implantação do

Você usa uma ação de implantação do AWS Lambda para gerenciar a implantação do código do aplicativo para a implantação da tecnologia sem servidor. Você pode implantar uma função e usar estratégias de implantação para implantação de tráfego assim:

  • Implantações canário e linear para mudança de tráfego

  • Implantações todas de uma vez

nota

Essa ação só é compatível para pipelines tipo V2.

Tipo de ação

  • Categoria: Deploy

  • Proprietário: AWS

  • Fornecedor: Lambda

  • Versão: 1

Parâmetros de configuração

FunctionName

Obrigatório: Sim

O nome da função criado por você no Lambda, como MyLambdaFunction.

Você já deve ter criado uma versão.

FunctionAlias

Obrigatório: Não

O alias da função criada por você no Lambda e é a função a ser implantada, como live. O alias deverá existir e ter uma versão por trás quando a execução da ação for iniciada. (Será a versão de destino da reversão.)

Se não for fornecida, a ação vai implantar o artefato de origem em $LATEST e criar uma nova versão. Nesse caso de uso, as opções da estratégia de implantação e da versão de destino não estão disponíveis.

PublishedTargetVersion

Obrigatório: Não

A versão de função do Lambda desejada a ser implantada em FunctionAlias. Podem ser variáveis do pipeline ou do nível de ação, como #{variables.lambdaTargetVersion}. A versão deverá ser publicada quando a execução da ação for iniciada.

Obrigatório se nenhum artefato de entrada for fornecido.

DeployStrategy

Obrigatório: não (o padrão é AllAtOnce)

Determina a taxa na qual a ação de implantação do Lambda é adotada para mudar o tráfego da versão original da função do Lambda para a nova versão de FunctionAlias. As estratégias de implantação disponíveis são canário ou linear. Formatos aceitos:

  • AllAtOnce -

    Desloca todo o tráfego para as funções do Lambda atualizadas de uma única vez.

    Se não especificado, o padrão será AllAtOnce)

  • Canary10Percent5Minutes: muda 10 por cento do tráfego no primeiro incremento. Os 90 por cento restantes serão implantados cinco minutos depois.

    Os valores de porcentagem e minutos podem ser alterados.

  • Linear10PercentEvery1Minute: muda 10 por cento do tráfego a cada minuto até que todo o tráfego seja deslocado.

    Os valores de porcentagem e minutos podem ser alterados.

As seguintes considerações se aplicam para este campo:

  • O tempo de espera total máximo é de 2 dias.

  • Só disponível quando FunctionAlias é fornecido.

Alarmes

Obrigatório: Não

Uma lista separada por vírgulas dos nomes de alarme configurados para a implantação do Lambda. No máximo, dez alarmes podem ser adicionados. A ação falha quando alarmes monitorados vão para o estado ALARME.

A imagem a seguir mostra um exemplo da página Editar da ação.

A página Editar ação de um novo pipeline com a ação de implantação do Lambda.

Input artifacts (Artefatos de entrada)

  • Número de artefatos: 1

  • Descrição: os arquivos fornecidos, se houver, para dar suporte às ações de script durante a implantação.

Artefatos de saída

  • Número de artefatos: 0

  • Descrição: os artefatos de saída não se aplicam a esse tipo de ação.

Variáveis de saída

Quando configurada, essa ação produz variáveis que podem ser referenciadas pela configuração de ação de uma ação downstream no pipeline. Esta ação produz variáveis que podem ser visualizadas como variáveis de saída, mesmo que a ação não tenha um namespace. Configure uma ação com um namespace a fim de disponibilizar as variáveis para a configuração de ações downstream.

Para obter mais informações, consulte Referência de variáveis.

FunctionVersion

A nova versão da função do Lambda que foi implantada.

Permissões de política do perfil de serviço para a ação de implantação do Lambda

Quando o CodePipeline executa a ação, o perfil de serviço do CodePipeline exige as permissões a seguir, com escopo indicado para acesso com privilégio mínimo.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "StatementForLambda", "Effect": "Allow", "Action": [ "lambda:GetAlias", "lambda:GetFunctionConfiguration", "lambda:GetProvisionedConcurrencyConfig", "lambda:PublishVersion", "lambda:UpdateAlias", "lambda:UpdateFunctionCode" ], "Resource": [ "arn:aws:lambda:us-east-1:111122223333:function:{{FunctionName}}", "arn:aws:lambda:us-east-1:111122223333:function:{{FunctionName}}:*" ] }, { "Sid": "StatementForCloudWatch", "Effect": "Allow", "Action": [ "cloudwatch:DescribeAlarms" ], "Resource": [ "arn:aws:cloudwatch:us-east-1:111122223333:alarm:{{AlarmNames}}" ] }, { "Sid": "StatementForLogs1", "Effect": "Allow", "Action": [ "logs:CreateLogGroup" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}", "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}:*" ] }, { "Sid": "StatementForLogs2", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:/us-east-1/codepipeline/{{pipelineName}}:log-stream:*" ] } ] }

Declaração de ação

YAML
name: Deploy actionTypeId: category: Deploy owner: AWS provider: Lambda version: '1' runOrder: 1 configuration: DeployStrategy: Canary10Percent5Minutes FunctionAlias: aliasV1 FunctionName: MyLambdaFunction outputArtifacts: [] inputArtifacts: - name: SourceArtifact region: us-east-1 namespace: DeployVariables
JSON
{ "name": "Deploy", "actionTypeId": { "category": "Deploy", "owner": "AWS", "provider": "Lambda", "version": "1" }, "runOrder": 1, "configuration": { "DeployStrategy": "Canary10Percent5Minutes", "FunctionAlias": "aliasV1", "FunctionName": "MyLambdaFunction" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1", "namespace": "DeployVariables" },

Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esta ação.