Como trabalhar com tipos de ação - AWS CodePipeline

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como trabalhar com tipos de ação

Os tipos de ação são ações pré-configuradas que você, como provedor, cria para os clientes usando um dos modelos de integração compatíveis com o AWS CodePipeline.

Você pode solicitar, visualizar e atualizar os tipos de ação. Se o tipo de ação for criado para sua conta como proprietário, você poderá usar o AWS CLI para visualizar ou atualizar as propriedades e a estrutura do tipo de ação. Se você for o provedor ou proprietário do tipo de ação, seus clientes poderão escolher a ação e adicioná-la aos seus pipelines depois que ela estiver disponível. CodePipeline

nota

Você cria ações custom no campo owner para serem executadas com um operador de trabalho. Você não as cria com um modelo de integração. Para obter informações sobre as ações personalizadas, consulte Crie e adicione uma ação personalizada no CodePipeline.

Componentes do tipo de ação

Os componentes a seguir formam um tipo de ação.

  • ID do tipo de ação: o ID consiste na categoria, proprietário, provedor e versão. O exemplo a seguir mostra um ID de tipo de ação com um proprietário ThirdParty, uma categoria Test, um provedor chamado TestProvider e a versão 1.

    { "Category": "Test", "Owner": "ThirdParty", "Provider": "TestProvider", "Version": "1" },
  • Configuração do executor: o modelo de integração, ou mecanismo de ação, especificado quando a ação é criada. Ao especificar o executor para um tipo de ação, você escolhe um dos dois tipos:

    • Lambda: o proprietário do tipo de ação grava a integração como uma função Lambda, que é invocada CodePipeline sempre que há um trabalho disponível para a ação.

    • JobWorker: o proprietário do tipo de ação escreve a integração como um funcionário que pesquisa as vagas disponíveis nos canais de clientes. Em seguida, o funcionário executa o trabalho e envia o resultado do trabalho CodePipeline usando CodePipeline APIs.

      nota

      O modelo de integração do operador de trabalho não é o modelo de integração preferido.

  • Artefatos de entrada e saída: limites para os artefatos que o proprietário do tipo de ação designa para os clientes da ação.

  • Permissões: a estratégia de permissões que designa os clientes que podem acessar o tipo de ação de terceiros. As estratégias de permissões disponíveis dependem do modelo de integração escolhido para o tipo de ação.

  • URLs: links profundos para recursos com os quais o cliente pode interagir, como a página de configuração do proprietário do tipo de ação.

Solicitar um tipo de ação

Quando um novo tipo de CodePipeline ação é solicitado por um provedor terceirizado, o tipo de ação é criado para o proprietário do tipo de ação CodePipeline, e o proprietário pode gerenciar e visualizar o tipo de ação.

Um tipo de ação pode ser uma ação privada ou pública. Quando seu tipo de ação é criado, ele é privado. Para solicitar que um tipo de ação seja alterado para uma ação pública, entre em contato com a equipe CodePipeline de atendimento.

Antes de criar seu arquivo de definição de ação, recursos do executor e solicitação de tipo de ação para a CodePipeline equipe, você deve escolher um modelo de integração.

Etapa 1: Escolher seu modelo de integração

Escolha seu modelo de integração e, em seguida, crie a configuração para esse modelo. Após escolher o modelo de integração, você deve configurar seus recursos de integração.

  • Para o modelo de integração do Lambda, crie uma função do Lambda e adicione permissões. Adicione permissões à função Lambda do integrador para fornecer CodePipeline ao serviço permissões para invocá-lo usando CodePipeline o principal de serviço:. codepipeline.amazonaws.com As permissões podem ser adicionadas usando AWS CloudFormation ou a linha de comando.

    • Exemplo de adição de permissões usando o AWS CloudFormation:

      CodePipelineLambdaBasedActionPermission: Type: 'AWS::Lambda::Permission' Properties: Action: 'lambda:invokeFunction' FunctionName: {"Fn::Sub": "arn:${AWS::Partition}:lambda:${AWS::Region}:${AWS::AccountId}:function:function-name"} Principal: codepipeline.amazonaws.com
    • Documentação para linha de comando

  • Para o modelo de integração de trabalhadores, você cria uma integração com uma lista de contas permitidas em que o funcionário pesquisa trabalhos com as CodePipeline APIs.

Etapa 2: Criar um arquivo de definição de tipo de ação

Você define um tipo de ação em um arquivo de definição de tipo de ação usando a linguagem JSON. No arquivo, você inclui a categoria da ação, o modelo de integração usado para gerenciar o tipo de ação e as propriedades de configuração.

nota

Após criar uma ação pública, você não pode alterar a propriedade do tipo de ação em properties de optional pararequired. Você não pode alterar o owner.

Para obter mais informações sobre os parâmetros do arquivo de definição do tipo de ação, consulte ActionTypeDeclaratione UpdateActionTypena Referência da CodePipeline API.

Há oito seções no arquivo de definição de tipo de ação:

  • description: a descrição do tipo de ação a ser atualizado.

  • executor: informações sobre o executor de um tipo de ação criado com um modelo de integração compatível, Lambda ou job worker. Você só pode fornecer um jobWorkerExecutorConfiguration ou lambdaExecutorConfiguration, com base no seu tipo de executor.

    • configuration: recursos para a configuração do tipo de ação, com base no modelo de integração escolhido. No modelo de integração do Lambda, use o ARN da função do Lambda. No modelo de integração do operador de trabalho, use a conta ou a lista de contas na qual o operador de trabalho atua.

    • jobTimeout: o tempo limite, em segundos, do trabalho. A execução de uma ação pode consistir em vários trabalhos. Esse é o tempo limite de um único trabalho, e não de toda a execução da ação.

      nota

      No modelo de integração Lambda, o tempo limite máximo é 15 minutos.

    • policyStatementsTemplate: a declaração de política que especifica as permissões na conta do CodePipeline cliente que são necessárias para executar com êxito uma ação.

    • type: o modelo de integração usado para criar e atualizar o tipo de ação, Lambda ou JobWorker.

  • id: o ID da categoria, do proprietário, do provedor e da versão para o tipo de ação:

    • category: O tipo de ação pode ser executado no estágio: Origem, Compilar, Implantar, Testar, Invocar ou Aprovar.

    • provider: o provedor do tipo de ação que está sendo chamado, por exemplo, a empresa fornecedora ou o nome do produto. O nome do provedor é fornecido quando o tipo de ação é criado.

    • owner: O criador do tipo de ação que está sendo chamado: AWS ou ThirdParty.

    • version: uma string usada para criar a versão do tipo de ação. Para a primeira versão, defina o número da versão como 1.

  • inputArtifactDetails: o número de artefatos esperados do estágio anterior do pipeline.

  • outputArtifactDetails: o número de artefatos esperados do resultado do estágio do tipo de ação.

  • permissions: detalhes que identificam as contas com permissões para usar o tipo de ação.

  • properties: os parâmetros necessários para que as tarefas do seu projeto sejam concluídas.

    • description: a descrição da propriedade exibida para os usuários.

    • optional: se a propriedade da configuração é opcional.

    • noEcho: se o valor do campo inserido pelo cliente foi omitido do log. Em caso true afirmativo, o valor será redigido quando retornado com uma solicitação de GetPipeline API.

    • key: se a propriedade da configuração é uma chave.

    • queryable: Se a propriedade é usada com pesquisas. Um tipo de ação pode ter até uma propriedade consultável. Se tiver uma, essa propriedade deve ser obrigatória e não secreta.

    • name: o nome de propriedade que é exibido para os usuários.

  • urls: uma lista dos URLs é CodePipeline exibida para seus usuários.

    • entityUrlTemplate: URL para os recursos externos do tipo de ação, como uma página de configuração.

    • executionUrlTemplate: URL para os detalhes da última execução da ação.

    • revisionUrlTemplate: URL exibida no CodePipeline console para a página em que os clientes podem atualizar ou alterar a configuração da ação externa.

    • thirdPartyConfigurationUrl: URL de uma página na qual os usuários podem se cadastrar em um serviço externo e executar a configuração inicial da ação fornecida por esse serviço.

O código a seguir mostra um exemplo de arquivo de definição de tipo de ação.

{ "actionType": { "description": "string", "executor": { "configuration": { "jobWorkerExecutorConfiguration": { "pollingAccounts": [ "string" ], "pollingServicePrincipals": [ "string" ] }, "lambdaExecutorConfiguration": { "lambdaFunctionArn": "string" } }, "jobTimeout": number, "policyStatementsTemplate": "string", "type": "string" }, "id": { "category": "string", "owner": "string", "provider": "string", "version": "string" }, "inputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "outputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "permissions": { "allowedAccounts": [ "string" ] }, "properties": [ { "description": "string", "key": boolean, "name": "string", "noEcho": boolean, "optional": boolean, "queryable": boolean } ], "urls": { "configurationUrl": "string", "entityUrlTemplate": "string", "executionUrlTemplate": "string", "revisionUrlTemplate": "string" } } }

Etapa 3: registre sua integração com CodePipeline

Para registrar seu tipo de ação CodePipeline, você entra em contato com a equipe CodePipeline de atendimento com sua solicitação.

A equipe CodePipeline de serviço registra a nova integração do tipo de ação fazendo alterações na base de código do serviço. CodePipeline registra duas novas ações: uma ação pública e uma ação privada. Você usa a ação privada para testar e, quando está pronto, ativa a ação pública para atender ao tráfego de clientes.

Para registrar uma solicitação de integração do Lambda
  • Envie uma solicitação para a equipe CodePipeline de atendimento usando o formulário a seguir.

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. The Lambda function ARN 4. List of Regiões da AWS where your action will be available 5. Will this be available as a public action?
Para registrar uma solicitação de integração do operador de trabalho
  • Envie uma solicitação para a equipe CodePipeline de atendimento usando o formulário a seguir.

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type. 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. URL information: Website URL: https://www.example.com/%TestThirdPartyName%/%TestVersionNumber% Example URL pattern where customers will be able to review their configuration information for the action: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%CustomerActionConfiguration% Example runtime URL pattern: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%TestRunId% 4. List of Regiões da AWS where your action will be available 5. Will this be available as a public action?

Etapa 4: Ativar a nova integração

Entre em contato com a equipe de CodePipeline atendimento quando estiver pronto para usar a nova integração publicamente.

Adicionar um tipo de ação disponível a um pipeline (console)

Você adiciona seu tipo de ação a um pipeline para testá-lo. Você pode fazer isso criando um novo pipeline ou editando um existente.

nota

Se seu tipo de ação for uma ação de categoria de origem, criação ou implantação, você poderá adicioná-la criando um pipeline. Se seu tipo de ação estiver na categoria de teste, você deve adicioná-la ao editar um pipeline existente.

Para adicionar seu tipo de ação a um pipeline existente a partir do CodePipeline console
  1. Faça login no AWS Management Console e abra o CodePipeline console em http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Na lista de pipelines, escolha o pipeline em que deseja adicionar o tipo de ação.

  3. Na página de visualização do resumo do pipeline, escolha Editar.

  4. Opte por editar o estágio. Na etapa em que você deseja adicionar seu tipo de ação, escolha Adicionar grupo de ações. A página Editar ação é exibida.

  5. Na página Editar ação, em Nome da ação, insira um nome para a ação. Esse será o nome exibido para o estágio no seu pipeline.

  6. Em Provedor de ação, selecione seu tipo de ação na lista.

    Observe que o valor na lista baseia-se no provider especificado no arquivo de definição de tipo de ação.

  7. Em Artefatos de entrada, insira o nome do artefato neste formato:

    Artifactname::FileName

    Observe que as quantidades mínima e máxima permitidas são definidas com base no inputArtifactDetails especificado no arquivo de definição de tipo de ação.

  8. Escolha Conectar-se a <Action_Name>.

    Uma janela de navegador é aberta e se conecta ao site que você criou para seu tipo de ação.

  9. Faça login no site como cliente e conclua as etapas que um cliente deve executar para usar seu tipo de ação. Suas etapas variam de acordo com sua categoria de ação, site e configuração, mas geralmente incluem uma ação de conclusão que retorna o cliente à página Editar ação.

  10. Na página CodePipeline Editar ação, os campos de configuração adicionais da ação são exibidos. Os campos exibidos são as propriedades de configuração que você especificou no arquivo de definição de ação. Insira as informações nos campos personalizados para seu tipo de ação.

    Por exemplo, se o arquivo de definição de ação especificou uma propriedade chamada Host, um campo com o rótulo Host será mostrado na página Editar ação da sua ação.

  11. Em Artefatos de saída, insira o nome do artefato neste formato:

    Artifactname::FileName

    Observe que as quantidades mínima e máxima permitidas são definidas com base no outputArtifactDetails especificado no arquivo de definição de tipo de ação.

  12. Escolha Concluído para retornar à página de detalhes do pipeline.

    nota

    Se desejarem, seus clientes poderão usar a CLI para adicionar o tipo de ação ao pipeline.

  13. Para testar sua ação, confirme uma alteração na origem especificada no estágio de origem do pipeline ou siga as etapas em Iniciar manualmente um pipeline.

Para criar um pipeline com seu tipo de ação, siga as etapas em Crie um pipeline em CodePipeline e escolha o tipo de ação em quantas etapas desejar testar.

Visualizar um tipo de ação

É possível usar a CLI para visualizar seu tipo de ação. Use o comando get-action-type para visualizar os tipos de ação que foram criados por meio de um modelo de integração.

Visualizar um tipo de ação
  1. Crie um arquivo JSON de entrada e nomeie o arquivo como file.json. Adicione o ID do seu tipo de ação no formato JSON como mostrado no exemplo a seguir.

    { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }
  2. Em uma janela de terminal ou na linha de comando, execute o comando get-action-type.

    aws codepipeline get-action-type --cli-input-json file://file.json

    Esse comando retorna a saída da definição de ação para um tipo de ação. Este exemplo mostra um tipo de ação que foi criado com o modelo de integração Lambda.

    { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda" }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "<account-id>" ] }, "properties": [] } }

Atualizar um tipo de ação

Você pode usar a CLI para editar tipos de ação criados com um modelo de integração.

Para um tipo de ação pública, você não pode atualizar o proprietário, não pode alterar propriedades opcionais para obrigatórias e só pode adicionar novas propriedades opcionais.

  1. Use o comando get-action-type para obter a estrutura do seu tipo de ação. Copie a estrutura.

  2. Crie um arquivo JSON e o nomeie como action.json. Cole nele a estrutura de tipo de ação que você copiou na etapa anterior. Atualize os parâmetros que deseja atualizar. Você também pode adicionar parâmetros opcionais.

    Para obter mais informações sobre os parâmetros do arquivo de entrada, consulte a descrição do arquivo de definição de ação em Etapa 2: Criar um arquivo de definição de tipo de ação.

    O exemplo a seguir mostra como atualizar um exemplo de tipo de ação criado com o modelo de integração Lambda. Este exemplo efetua as seguintes alterações:

    • Mude o nome do provider para TestProvider1.

    • Adicione um tempo limite de trabalho de 900 segundos.

    • Adiciona uma propriedade de configuração de ação chamada Host que é exibida para o cliente que utiliza a ação.

      { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda", "jobTimeout": 900 }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider1", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "account-id" ] }, "properties": { "description": "Owned build action parameter description", "optional": true, "noEcho": false, "key": true, "queryable": false, "name": "Host" } } }
  3. No terminal ou na linha de comando, execute o comando update-action-type.

    aws codepipeline update-action-type --cli-input-json file://action.json

    Esse comando retorna a saída do tipo de ação com base nos parâmetros atualizados.