Usar extensões privadas no CloudFormation - AWS CloudFormation

Usar extensões privadas no CloudFormation

Extensões privadas são aquelas cujo uso você permitiu explicitamente na sua Conta da AWS.

Existem dois tipos de extensões privadas:

  • Extensões privadas ativadas: são cópias locais de extensões de terceiros que você ativou para a sua conta e região. Quando você ativa uma extensão pública de terceiros, o CloudFormation cria uma cópia local dela no registro da sua conta.

  • Extensões privadas registradas: também é possível ativar extensões privadas que não estão listadas no registro público do CloudFormation. Estas podem ser extensões que você mesmo criou ou extensões que foram compartilhadas com você pela sua organização ou por terceiros. Para utilizar uma extensão privada na sua conta, primeiro é preciso registrá-la. O registro da extensão carrega uma cópia dela no registro do CloudFormation na sua conta e a ativa.

Qualquer uso de extensões privadas na sua conta é semelhante ao uso em um ambiente de sandbox. Isso ocorre porque as extensões são controladas por versão, e o comportamento de provisionamento é específico da versão, o que significa que extensões privadas se comportam como se tivessem se tornado públicas.

nota

Extensões privadas e extensões públicas ativadas de editores terceiros podem implementar manipuladores de eventos que são executados durante operações de criação, leitura, atualização, listagem e exclusão. Por causa disso, o uso dessas extensões nas suas pilhas do CloudFormation resulta em cobranças na sua conta. Esses encargos serão acrescentados além de todas as cobranças decorrentes dos recursos criados. Para obter mais informações, consulte Definição de preços do AWS CloudFormation.

Para saber mais sobre como desenvolver suas próprias extensões privadas, consulte Guia do usuário da Interface de linha de comando do CloudFormation.

Registrar extensões privadas

Para usar extensões privadas não listadas no registro do CloudFormation, sejam desenvolvidas por você ou compartilhadas com você, primeiramente é necessário registrá-las no CloudFormation, nas contas e regiões nas quais você deseja usá-las. O registro da extensão carrega uma cópia dela no registro do CloudFormation na sua conta e a ativa. Ao registrar uma extensão privada, ela aparecerá no registro do CloudFormation para a respectiva conta e região, e você poderá usá-la em seus modelos de pilha.

É possível registrar uma extensão usando o comando register-type da AWS CLI ou usando o comando submit da CLI do CloudFormation.

Para registrar uma extensão privada usando a CLI do CloudFormation, consulte Como registrar extensões no Guia do usuário da CLI do CloudFormation.

Permissões do IAM para registrar uma extensão privada

Como parte do registro de uma extensão privada, você especifica um bucket do Amazon S3 que contém o pacote do projeto de extensão. Esse pacote contém todos os arquivos de origem necessários para a extensão que você quer registrar. O usuário que registra a extensão deve ser capaz de acessar o pacote de projeto no bucket do Amazon S3. Ou seja, o usuário precisa ter permissões GetObject para o pacote de extensão.

Isso será verdadeiro se você estiver usando o comando register-type da AWS CLI ou o comando submit da CLI do CloudFormation.

Para obter mais informações, consulte Ações, recursos e chaves de condição para o Amazon S3, no Guia do usuário do AWS Identity and Access Management.

Registrar extensões

Registre sua extensão no registro do AWS CloudFormation para que ele esteja disponível para uso.

Para registrar um hook utilizando a AWS CLI

Registre seu hook no CloudFormation para que ele esteja disponível para uso no registro do AWS CloudFormation.

  1. (Opcional) Configurar o nome padrão da Região da AWS para us-west-2, enviando a operação configure.

    aws configure AWS Access Key ID [None]: <Your Access Key ID> AWS Secret Access Key [None]: <Your Secret Key> Default region name [None]: us-west-2 Default output format [None]: json
  2. (Opcional) O comando a seguir constrói e empacota seu projeto de ganho sem o registrar.

    $ cfn submit --dry-run
  3. Registre o hook usando cfn submit da CLI do CloudFormation.

    cfn submit --set-default

    O comando retorna o seguinte comando.

    {‘ProgressStatus’: ‘COMPLETE’}

    Resultados: você registrou seu hook com êxito.

Para registrar um tipo de recurso usando a AWS CLI

Registre seu tipo de recurso no CloudFormation para que ele esteja disponível para uso no registro do AWS CloudFormation.

  1. Localize o bucket do Amazon S3 que contém o pacote de projeto da extensão privada que você deseja registrar na sua conta.

  2. Use o comando register-type para registrar a extensão na sua conta:

    RegisterType é uma operação assíncrona e retorna um token de registro que você pode usar para rastrear o progresso da solicitação de registro.

    nota

    Se a extensão chamar as APIs da AWS como parte de sua funcionalidade, será necessário criar um perfil de execução do IAM que inclua as permissões necessárias para chamar essas APIs da AWS e provisionar esse perfil de execução na sua conta. Em seguida, você poderá especificar essa função de execução usando o parâmetro --execution-role-arn. Depois, o CloudFormation assumirá essa função de execução para fornecer as credenciais apropriadas para o tipo de recurso.

    Por exemplo, o comando a seguir registra o tipo de recurso My::Resource::Example na Conta da AWS atual:

    aws cloudformation register-type --type-name My::Resource::Example --schema-handler-package [s3 object path] --type RESOURCE { "RegistrationToken": "f5525280-104e-4d35-bef5-8f1fexample" }
  3. Opcional: use o token de registro com o comando describe-type-registration para monitorar o andamento da solicitação de registro.

    Quando o CloudFormation concluir a solicitação de registro, ele definirá o status do andamento da solicitação como COMPLETE.

    O exemplo a seguir usa o token de registro retornado pelo comando describe-type-registration acima para retornar as informações do status do registro.

    aws cloudformation describe-type-registration --registration-token f5525280-104e-4d35-bef5-8f1fexample { "ProgressStatus": "COMPLETE", "TypeArn": "arn:aws:cloudformation:us-east-1:012345678910:type/resource/My-Resource-Example", "Description": "Deployment is currently in DEPLOY_STAGE of status COMPLETED; ", "TypeVersionArn": "arn:aws:cloudformation:us-east-1:111122223333:type/resource/My-Resource-Example/00000001" }

Configurar extensões no nível da conta

Uma extensão pode incluir propriedades de configuração destinadas a serem aplicadas em todas as instâncias da extensão para uma determinada conta e região. O autor da extensão as define na configuração da definição da extensão. Se houver alguma propriedade necessária na definição de configuração da extensão, você deverá especificá-la antes de poder utilizar a extensão na sua conta e região.

nota

Se a configuração de tipo incluir referências dinâmicas aos valores armazenados no AWS Systems Manager ou no AWS Secrets Manager, qualquer perfil usado para provisionar o tipo (por exemplo, ao criar ou atualizar uma pilha) deverá ter as permissões adequadas para recuperar esse valor. Especificamente:

  • Se a configuração de tipo contiver um parâmetro armazenado no AWS Systems ManagerParameter Store, o usuário ou perfil usado para provisionar o tipo deverá ter permissões para chamar GetParameter.

  • Se a configuração de tipo contiver um segredo armazenado no AWS Secrets Manager, o usuário ou perfil usado para provisionar o tipo deverá ter permissões para chamar GetSecretValue.

Para obter mais informações, consulte Usar referências dinâmicas para especificar valores de modelo.

Para saber mais sobre como definições de configuração são especificadas ao desenvolver uma extensão, consulte Definir a configuração em nível de conta de uma extensão, no Guia do usuário do CloudFormation para desenvolvimento de extensões.

Para visualizar os dados de configuração atuais para uma extensão no console do CloudFormation
  1. Use o registro do CloudFormation para localizar a extensão.

  2. Escolha a extensão para visualizar seus detalhes.

  3. Na página de detalhes da extensão, selecione a guia Configuration (Configuração).

  4. Expanda a guia Configuration schema (Esquema de configuração) para ver o esquema de configuração definido para a extensão.

  5. Expanda a guia Configuration (Configuração) para ver a configuração atual que você definiu para essa extensão.

Para visualizar os dados de configuração atuais de uma extensão na AWS CLI
  • Use o comando describe-type para retornar informações detalhadas sobre a extensão. O elemento ConfigurationSchema da saída contém a definição de configuração atual da extensão em uma determinada região.

    Como alternativa, use o comando batch-describe-type-configurations para retornar dados de configuração sobre várias extensões.

Para especificar propriedades de configuração para tipos de extensões

Para especificar propriedades de configuração para uma extensão utilizando o console do CloudFormation

  1. Use o registro do CloudFormation para localizar a extensão nas extensões ativadas da sua conta.

  2. Selecione a extensão para visualizar seus detalhes.

  3. Na página de detalhes da extensão, na guia Configuration (Configuração), selecione Edit configuration (Editar configuração).

    Como alternativa, em Actions (Ações), selecione Edit (Editar) e depois Edit configuration (Editar configuração).

    O CloudFormation exibe a página Configure extension (Configurar extensão). Certifique-se de que a opção View configuration schema (Visualizar esquema de configuração) esteja ativada para ver o esquema de definição de configuração atual da extensão.

  4. Na caixa de texto Configuration JSON (Configuração JSON), insira uma string JSON que represente o esquema de configuração que você deseja definir para essa extensão. Ele deve ser validado com o esquema definido em Configuration schema (Esquema de configuração).

  5. Selecione Configure extension (Configurar extensão).

Para especificar as propriedades de configuração de uma extensão utilizando a AWS CLI

  • Use o comando set-type-configuration para especificar a configuração a ser utilizada com a extensão na sua conta e região.

    O JSON transmitido para --configuration deve validar em relação ao esquema de definição de configuração da extensão. Veja a seguir um exemplo de um comando set-type-configuration que especifica a configuração.

    aws cloudformation set-type-configuration \ --region us-west-2 \ --type RESOURCE \ --type-name My::Resource::Example \ --configuration-alias default \ --configuration "{"CredentialKey": "testUserCredential"}"

Especificar uma versão de uma extensão privada para usar com a AWS CLI

Ao longo do tempo, você pode registrar várias versões da mesma extensão. Você pode especificar qual versão da extensão deseja usar para as operações do CloudFormation.

Para especificar uma versão de uma extensão

Use o comando set-type-default-version para especificar qual versão da extensão será usada nas operações do CloudFormation em sua conta.

Por exemplo, o comando a seguir define a versão padrão do tipo de recurso My::Resource::Example como 00000003 para a conta atual.

aws cloudformation set-type-default-version \ --type RESOURCE \ --type-name My::Resource::Example \ --version-id 00000003

Para especificar a versão padrão do hook

Para especificar a versão padrão do seu hook na sua conta, use o comando set-type-default-version e especifique o tipo, o nome do tipo e o ID da versão.

aws cloudformation set-type-default-version \ --type HOOK \ --type-name MyCompany::Testing::MyTestHook \ --version-id 00000003