Criar uma nova versão de fórmula de contêiner - EC2 Image Builder

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á.

Criar uma nova versão de fórmula de contêiner

Esta seção mostra como criar uma nova versão de fórmula de contêiner.

Crie uma nova versão de fórmula de contêiner com o console

Criar uma nova versão de uma fórmula do contêiner é praticamente o mesmo que criar uma nova fórmula. A diferença é que certos detalhes são pré-selecionados para corresponder à fórmula de base, na maioria dos casos. A lista a seguir descreve as diferenças entre criar uma nova fórmula e criar uma nova versão de uma fórmula existente.

Detalhes da fórmula
  • Nome: não editável.

  • Versão: obrigatória. Esse detalhe não é pré-preenchido com a versão atual nem com qualquer tipo de sequência. Insira o número da versão que você deseja criar no formato major.minor.patch. Se a versão já existir, você encontrará um erro.

Imagem de base
  • Opção Selecionar imagem: pré-selecionada, mas você pode editá-la. Se você alterar sua escolha para a fonte da imagem de base, você poderá perder outros detalhes que dependem da opção original escolhida por você.

    Para ver detalhes associados à seleção imagem base, escolha a guia que corresponde à sua seleção.

    Managed images
    • Sistema operacional (OS) de imagem: não editável.

    • Nome da imagem: pré-selecionado, com base na combinação de opções de imagem de base que você fez para a fórmula existente. No entanto, se você alterar a opção Selecionar imagem, você perderá o Nome da imagem pré-selecionado.

    • Opções de autoversionamento: não corresponde à sua fórmula de base. As opções de autoversionamento usam como padrão a opção Usar a versão do sistema operacional selecionada.

      Importante

      Se você estiver usando o versionamento semântico para iniciar as compilações do pipeline, altere esse valor para Usar a versão mais recente do sistema operacional disponível. Para saber mais sobre o versionamento semântico dos recursos do Image Builder, consulte Versionamento semântico no Image Builder.

    ECR image
    • Sistema operacional de imagem (OS): pré-selecionado, mas editável.

    • Versão do OS: pré-selecionada, mas editável.

    • ID de imagem ECR: pré-preenchido, mas editável.

    Docker Hub image
    • Sistema operacional (OS) de imagem: não editável.

    • Versão do OS: pré-selecionada, mas editável.

    • ID de imagem do Docker: pré-preenchido, mas editável.

Configuração da instância
  • ID da AMI: pré-preenchido, mas editável.

  • Armazenamento (volumes)

    Volume 1 do EBS (raiz da AMI): pré-preenchido. As seleções Nome do dispositivo, Snapshot e IOPS do volume raiz não podem ser editados. No entanto, você pode alterar todas as demais configurações, como o Tamanho. Você também pode adicionar novos volumes.

    nota

    Se você especificar uma AMI base compartilhada de outra conta com você, os snapshots de qualquer volume secundário especificado também devem ser compartilhados com sua conta.

Diretório de trabalho
  • Caminho do diretório de trabalho: pré-preenchido, mas editável.

Componentes
  • Componentes: os componentes que já estão incluídos na fórmula são exibidos na seção Componentes selecionados no final de cada uma das listas de componentes (compilação e teste). Você pode remover ou reordenar os componentes selecionados para atender às suas necessidades.

    Os componentes de endurecimento do CIS não seguem as regras padrão de ordenação de componentes nas fórmulas do Image Builder. Os componentes de endurecimento do CIS sempre são executados por último para garantir que os testes de benchmark sejam executados em relação à sua imagem de saída.

    nota

    As listas de componentes de compilação e teste exibem os componentes disponíveis com base no tipo de proprietário do componente. Para adicionar um componente, escolha Adicionar componentes de construção e selecione o filtro de propriedade aplicável. Por exemplo, para adicionar um componente de compilação associado a um AWS Marketplace produto, selecioneAWS Marketplace. Isso abre um painel de seleção no lado direito da interface do console que lista AWS Marketplace os componentes.

    Para o componente CIS, selecioneThird party managed.

    Você pode definir as seguintes configurações para seu componente selecionado:

    • Opções de versionamento: pré-selecionadas, mas você pode alterá-las. Recomendamos que você escolha a opção Usar a versão mais recente disponível do componente para garantir que suas compilações de imagem sempre usem a versão mais recente do componente. Se precisar usar uma versão específica do componente em sua fórmula, você pode escolher Especificar versão do componente e inserir a versão na caixa Versão do componente que aparece.

    • Parâmetros de entrada: exibe os parâmetros de entrada que o componente aceita. O Valor é pré-preenchido com o valor da versão anterior da fórmula. Se você estiver usando esse componente pela primeira vez nessa fórmula e um valor padrão tiver sido definido para o parâmetro de entrada, o valor padrão aparecerá na caixa Valor com texto acinzentado. Se nenhum outro valor for inserido, o Image Builder usará o valor padrão.

      Se um parâmetro de entrada for necessário, mas não tiver um valor padrão definido no componente, você deverá fornecer um valor. O Image Builder não criará a versão da fórmula se algum parâmetro obrigatório estiver faltando e não houver um valor padrão definido.

      Importante

      Os parâmetros do componente são valores de texto simples e estão logados em AWS CloudTrail. Recomendamos que você use AWS Secrets Manager ou o AWS Systems Manager Parameter Store para armazenar seus segredos. Para obter mais informações sobre o Secrets Manager, consulte ‭O que é o Secrets Manager?‭‬ no AWS Secrets Manager Guia do usuário‭. Para obter mais informações sobre o ‭ AWS Systems Manager Parameter Store, consulte AWS Systems Manager ‬ Parameter Store‭‬ no AWS Systems Manager ‬ Guia do usuário‭.

    Para expandir as configurações das opções de versionamento ou dos parâmetros de entrada, você pode escolher a seta ao lado do nome da configuração. Para expandir todas as configurações de todos os componentes selecionados, você pode ativar e desativar a opção Expandir tudo.

Modelo do Dockerfile
  • Modelo do Dockerfile: pré-preenchido, mas editável. Você pode especificar qualquer uma das variáveis contextuais a seguir que o Image Builder substitui por informações de compilação no runtime.

     

    parentImage (obrigatória)

    No momento da compilação, esta variável é resolvida na imagem de base da sua fórmula.

    Exemplo: .

    FROM {{{ imagebuilder:parentImage }}}
    environments (necessários se os componentes forem especificados)

    Esta variável será resolvida em um script que executa componentes.

    Exemplo: .

    {{{ imagebuilder:environments }}}
    components (opcional)

    O Image Builder resolve scripts de componentes de compilação e teste para os componentes que a fórmula de contêiner inclui. Esta variável pode ser colocada em qualquer lugar no Dockerfile, depois da variável environments.

    Exemplo: .

    {{{ imagebuilder:components }}}
Repositório de destino
  • Nome do repositório de destino: o repositório Amazon ECR onde sua imagem de saída está armazenada se não houver outro repositório especificado na configuração de distribuição do seu pipeline para a região onde o pipeline é executado (Região 1).

Para criar uma nova fórmula de contêiner:
  1. Na parte superior da página de detalhes da fórmula do contêiner, escolha Criar nova versão. Você será direcionado para a página Criar fórmula para fórmulas de contêiner.

  2. Para criar a nova versão, faça suas alterações e depois escolha Criar fórmula.

Para obter mais informações sobre como criar uma fórmula de contêiner ao criar um pipeline de imagens, consulte Etapa 2: Escolher fórmula a seção Introdução deste guia.

Criar uma fórmula de contêiner com o AWS CLI

Para criar uma receita de contêiner do Image Builder com o imagebuilder create-container-recipe comando no AWS CLI, siga estas etapas:

Pré-requisitos

Antes de executar os comandos do Image Builder nesta seção para criar uma receita de contêiner com o AWS CLI, você deve criar os componentes que a receita usará. O exemplo de fórmula de contêiner na etapa a seguir se refere a exemplos de componentes que são criados na seção Crie um componente personalizado a partir do AWS CLI deste guia.

Depois de criar seus componentes, ou se você estiver usando componentes existentes, anote o ARNs que você deseja incluir na receita.

  1. Criar um arquivo JSON de entrada da CLI

    Você pode fornecer toda a entrada para o comando create-container-recipe com parâmetros de comando embutidos. No entanto, o comando resultante pode ser bastante longo. Para simplificar o comando, você pode fornecer um arquivo JSON que contenha todas as configurações da fórmula do contêiner

    nota

    A convenção de nomenclatura para os valores de dados no arquivo JSON segue o padrão especificado para os parâmetros de solicitação de operação da API Image Builder. Para revisar os parâmetros da solicitação de operação da API, consulte o CreateContainerRecipecomando na Referência da API EC2 Image Builder.

    Para fornecer os valores dos dados como parâmetros da linha de comando, consulte os nomes dos parâmetros especificados na AWS CLI Referência de comando.

    Aqui está um resumo dos parâmetros neste exemplo:

    • componentes (matriz de objetos, obrigatório): contém uma matriz de ComponentConfiguration objetos. Pelo menos um componente da compilação deve ser especificado:

      nota

      O Image Builder instala os componentes na ordem em que você os especificou na fórmula. No entanto, os componentes de fortalecimento do CIS sempre são executados por último para garantir que os testes de benchmark sejam executados em relação à sua imagem de saída.

      • componentARN (string, obrigatório): o ARN do componente.

        dica

        Para usar o exemplo para criar sua própria receita de contêiner, substitua o ARNs exemplo ARNs pelo dos componentes que você está usando para sua receita,. Isso inclui o Região da AWS, nome, e o número da versão de cada um.

      • parameters (matriz de objetos): contém uma variedade de objetos ComponentParameter. Se um parâmetro de entrada for necessário, mas não tiver um valor padrão definido no componente, você deverá fornecer um valor. O Image Builder não criará a versão da fórmula se algum parâmetro obrigatório estiver faltando e não houver um valor padrão definido.

        Importante

        Os parâmetros do componente são valores de texto simples e estão logados em AWS CloudTrail. Recomendamos que você use AWS Secrets Manager ou o AWS Systems Manager Parameter Store para armazenar seus segredos. Para obter mais informações sobre o Secrets Manager, consulte ‭O que é o Secrets Manager?‭‬ no AWS Secrets Manager Guia do usuário‭. Para obter mais informações sobre o ‭ AWS Systems Manager Parameter Store, consulte AWS Systems Manager ‬ Parameter Store‭‬ no AWS Systems Manager ‬ Guia do usuário‭.

        • nome (string, obrigatório): o nome do parâmetro do componente a ser definido.

        • value (matriz de strings, obrigatório): contém uma matriz de strings para definir o valor do parâmetro do componente nomeado. Se houver um valor padrão definido para o componente e nenhum outro valor for fornecido, AWSTOE use o valor padrão.

    • ContainerType (string, obrigatório): o tipo de contêiner a ser criado. Os valores válidos são: DOCKER.

    • dockerfileTemplateData(string) — O modelo Dockerfile usado para criar sua imagem, expresso como um blob de dados embutido.

    • name (string, obrigatório): o nome da fórmula do contêiner.

    • description (string): a descrição da fórmula do contêiner.

    • parentImage (string, obrigatório): a imagem que a fórmula de contêiner usa como base para sua imagem personalizada. O valor pode ser o ARN de imagem de base ou um ID de AMI.

    • platformOverride (string) - Especifica a plataforma do sistema operacional quando você usa uma imagem base personalizada.

    • SemanticVersion (string, obrigatório): a versão semântica da fórmula do contêiner especificada no formato a seguir, com valores numéricos em cada posição para indicar uma versão específica: <major>,<minor>,<patch> . Um exemplo seria 1.0.0. Para saber mais sobre o versionamento semântico dos recursos do Image Builder, consulte Versionamento semântico no Image Builder.

    • tags (string map) - Tags que estão anexadas à fórmula do contêiner.

    • instanceConfiguration (objeto) - Um grupo de opções que pode ser utilizado para configurar uma instância para compilar e testar imagens de contêiner.

      • image (string) - O ID da AMI a ser usado como imagem base para uma instância de compilação e teste de contêineres. Se você não especificar esse valor, o Image Builder usará a AMI otimizada do Amazon ECS apropriada como imagem base.

      • blockDeviceMappings(matriz de objetos) — Define os dispositivos de bloco a serem conectados para criar uma instância a partir da AMI do Image Builder especificada no image parâmetro.

        • deviceName (string): o dispositivo ao qual esses mapeamentos se aplicam.

        • ebs (objeto) - Use para gerenciar a configuração específica do Amazon EBS para esse mapeamento.

          • deleteOnTermination(Boolean) — Usado para configurar a exclusão no encerramento do dispositivo associado.

          • encrypted (booleano): usado para configurar a criptografia do dispositivo.

          • volumeSize (inteiro): usado para substituir o tamanho do volume do dispositivo.

          • volumeSize (string): usado para substituir o tipo do volume do dispositivo.

    • targetRepository (objeto, obrigatório): o repositório de destino da imagem do contêiner, se não houver outro repositório especificado na configuração de distribuição do pipeline para a região onde o pipeline é executado (Região 1).

      • repositoryName (string, obrigatório) - O nome do repositório de contêiner onde a imagem do contêiner de saída é armazenada. Este nome é prefixado pelo local do repositório.

      • serviço (string, obrigatório) - Especifica o serviço no qual esta imagem foi registrada.

    • workingDirectory (string) - O diretório de trabalho a ser usado durante os fluxos de trabalho de compilação e teste.

    { "components": [ { "componentArn": "arn:aws:imagebuilder:us-east-1:123456789012:component/helloworldal2/x.x.x" } ], "containerType": "DOCKER", "description": "My Linux Docker container image", "dockerfileTemplateData": "FROM {{{ imagebuilder:parentImage }}}\n{{{ imagebuilder:environments }}}\n{{{ imagebuilder:components }}}", "name": "amazonlinux-container-recipe", "parentImage": "amazonlinux:latest", "platformOverride": "Linux", "semanticVersion": "1.0.2", "tags": { "sometag" : "Tag detail" }, "instanceConfiguration": { "image": "ami-1234567890", "blockDeviceMappings": [ { "deviceName": "/dev/xvda", "ebs": { "deleteOnTermination": true, "encrypted": false, "volumeSize": 8, "volumeType": "gp2" } } ] }, "targetRepository": { "repositoryName": "myrepo", "service": "ECR" }, "workingDirectory": "/tmp" }
  2. Criar a fórmula

    Use o comando a seguir para criar a fórmula. Forneça o nome do arquivo JSON que você criou na etapa anterior no parâmetro --cli-input-json:

    aws imagebuilder create-container-recipe --cli-input-json file://create-container-recipe.json
    nota
    • É necessário incluir a notação file:// no início do caminho do arquivo JSON.

    • O caminho para o arquivo JSON deve seguir a convenção apropriada para o sistema operacional de base no qual você está executando o comando. Por exemplo, o Windows usa a barra invertida (\) para se referir ao caminho do diretório, enquanto o Linux e o macOS usam a barra (/).