Automatize o portfólio e a implantação de produtos do AWS Service Catalog usando o AWS CDK - Recomendações da AWS

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

Automatize o portfólio e a implantação de produtos do AWS Service Catalog usando o AWS CDK

Criado por Sandeep Gawande (AWS), RAJNEESH TYAGI (AWS) e Viyoma Sachdeva (AWS)

Repositório de códigos: aws-cdk-servicecatalog-automation

Ambiente: PoC ou piloto

Tecnologias: DevOps; Infraestrutura; Gestão e governança

Workload: código aberto

Serviços da AWS: AWS Service Catalog; AWS CDK

Resumo

O AWS Service Catalog ajuda você a gerenciar centralmente catálogos de serviços ou produtos de TI aprovados para uso no ambiente da AWS da sua organização. Uma coleção de produtos é chamada de portfólio, e um portfólio também contém informações de configuração. Com o AWS Service Catalog, você pode criar um portfólio personalizado para cada tipo de usuário em sua organização e, então, conceder acesso de modo seletivo ao portfólio adequado. Esses usuários podem então implantar rapidamente qualquer produto de que precisem dentro do portfólio.

Se você tiver uma infraestrutura de rede complexa, como arquiteturas multirregião de várias contas, é recomendável criar e gerenciar portfólios do Service Catalog em uma única conta central. Esse padrão descreve como usar o AWS Cloud Development Kit (AWS CDK) para automatizar a criação de portfólios do Service Catalog em uma conta central, conceder aos usuários finais acesso a eles e, opcionalmente, provisionar produtos em uma ou mais contas de destino da AWS. Essa ready-to-use solução cria os portfólios do Service Catalog na conta de origem. Opcionalmente, também provisiona produtos em contas de destino usando CloudFormation pilhas da AWS e ajuda você a configurar TagOptions os produtos:

  • AWS CloudFormation StackSets — Você pode usar StackSets para lançar produtos do Service Catalog em várias regiões e contas da AWS. Nessa solução, você tem a opção de provisionar produtos automaticamente ao implantar essa solução. Para obter mais informações, consulte Como usar a AWS CloudFormation StackSets (documentação do Service Catalog) e StackSets conceitos (CloudFormation documentação).

  • TagOption biblioteca — você pode gerenciar tags em produtos provisionados usando TagOption a biblioteca. A TagOptioné um par de valores-chave gerenciado no AWS Service Catalog. Não é uma tag da AWS, mas serve como um modelo para criar uma tag da AWS com base na TagOption. Para obter mais informações, consulte a TagOption biblioteca (documentação do Service Catalog).

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta ativa da AWS que você deseja usar como a conta de origem para administrar os portfólios do Service Catalog.

  • Se você estiver usando essa solução para provisionar produtos em uma ou mais contas de destino, a conta de destino já deverá existir e estar ativa.

  • Permissões do AWS Identity and Access Management (IAM) para acessar o AWS Service Catalog, o AWS CloudFormation e o AWS IAM.

Versões do produto

  • AWS CDK versão 2.27.0

Arquitetura

Pilha de tecnologias de destino

  • Portfólios do Service Catalog em uma conta centralizada da AWS

  • Produtos do Service Catalog implantados na conta de destino

Arquitetura de destino

O AWS CDK cria portfólios do Service Catalog e fornece produtos na conta de destino.
  1. Na conta do portfólio (ou origem), você atualiza o arquivo config.json com a conta da AWS, a região da AWS, o perfil do IAM, o portfólio e as informações do produto para seu caso de uso.

  2. Você implanta o aplicativo AWS CDK.

  3. O aplicativo AWS CDK assume o perfil de implantação do IAM e cria os portfólios e produtos do Service Catalog definidos no arquivo config.json.

    Se você configurou StackSets para implantar produtos em uma conta de destino, o processo continua. Se você não configurou StackSets para provisionar nenhum produto, o processo está concluído.

  4. O aplicativo AWS CDK assume a função de StackSet administrador e implanta o conjunto de CloudFormation pilhas da AWS que você definiu no arquivo config.json.

  5. Na conta-alvo, StackSets assume a função de StackSet execução e provisiona os produtos.

Ferramentas

Serviços da AWS

  • O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.

  • O AWS CDK Toolkit é um kit de desenvolvimento em nuvem de linha de comando que ajuda você a interagir com seu aplicativo AWS CDK.

  • CloudFormationA AWS ajuda você a configurar recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas as contas e regiões da AWS.

  • O AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.

  • O AWS Service Catalog ajuda você a gerenciar de modo centralizado os catálogos de serviços de TI aprovados para a AWS. Os usuários finais podem implantar rapidamente somente os serviços de TI aprovados de que precisam, seguindo as restrições definidas pela organização.

Repositório de código

O código desse padrão está disponível em GitHub, no aws-cdk-servicecatalog-automationrepositório. O repositório de código contém os seguintes arquivos e pastas:

  • cdk-sevicecatalog-app— Essa pasta contém o aplicativo AWS CDK para essa solução.

  • config — Essa pasta contém o arquivo config.json e o CloudFormation modelo para implantar os produtos no portfólio do Service Catalog.

  • config/config.json: esse arquivo contém todas as informações de configuração. Você atualiza esse arquivo para personalizar essa solução para seu caso de uso.

  • config/templates — Essa pasta contém os CloudFormation modelos dos produtos do Service Center.

  • setup.sh: esse script implanta a solução.

  • uninstall.sh: esse script exclui a pilha e todos os recursos da AWS criados ao implantar essa solução.

Para usar o código de amostra, siga as instruções na seção Épicos.

Práticas recomendadas

Épicos

TarefaDescriçãoHabilidades necessárias

Instale o AWS CDK Toolkit.

Verifique se você tem o AWS CDK Toolkit instalado. Digite o comando a seguir para confirmar se ele está instalado e verificar a versão. 

cdk --version

Se o AWS CDK Toolkit ainda não estiver instalado, insira o comando a seguir para instalá-lo.

npm install -g aws-cdk@2.27.0

Se a versão do AWS CDK Toolkit for anterior à 2.27.0, digite o comando a seguir para atualizá-la para a versão 2.27.0.

npm install -g aws-cdk@2.27.0 --force
AWS DevOps, DevOps engenheiro

Clonar o repositório.

Insira o comando da a seguir. Em Clonar o repositório na seção Informações adicionais, você pode copiar o comando completo contendo a URL do repositório. Isso clona o aws-cdk-servicecatalog-automationrepositório de. GitHub

git clone <repository-URL>.git

Isso cria uma pasta cd aws-cdk-servicecatalog-automation no diretório de destino. Para navegar até essa pasta, insira o comando a seguir.

cd aws-cdk-servicecatalog-automation
AWS DevOps, DevOps engenheiro

Configurar credenciais da AWS.

Insira os comandos a seguir. Eles exportam as seguintes variáveis, que definem a conta da AWS e a região em que você está implantando a pilha.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

As credenciais da AWS para o AWS CDK são fornecidas por meio de variáveis de ambiente.

AWS DevOps, DevOps engenheiro

Configurar permissões de usuário usando perfis do IAM.

Se você for usar funções do IAM para conceder acesso ao portfólio e aos produtos nele contidos, as funções devem ter permissões para serem assumidas pela entidade principal de serviço servicecatalog.amazonaws.com. Para obter instruções sobre como conceder essas permissões, consulte Habilitar o acesso confiável com o Service Catalog (documentação do AWS Organizations).

AWS DevOps, DevOps engenheiro

Configure as funções do IAM exigidas pelo StackSets.

Se você estiver usando StackSets para provisionar produtos automaticamente nas contas de destino, precisará configurar as funções do IAM que administram e executam o conjunto de pilhas.

  1. Na conta de origem, confirme se AWSCloudFormationStackSetAdministrationRole já existe. Nas contas de destino, confirme se AWSCloudFormationStackSetExecutionRole já existe. Se essas funções já existirem, vá direto para o próximo épico.

  2. Siga as instruções em Conceder permissões autogerenciadas (documentação do IAM) para criar a função de administração do conjunto de pilhas na conta do portfólio e criar a função de execução em cada conta de destino.

AWS DevOps, DevOps engenheiro
TarefaDescriçãoHabilidades necessárias

Crie os CloudFormation modelos.

Na config/templates pasta, crie CloudFormation modelos para qualquer produto que você queira incluir em seus portfólios. Para obter mais informações, consulte Como trabalhar com CloudFormation modelos da AWS (CloudFormation documentação).

Desenvolvedor de aplicativos, AWS DevOps, DevOps engenheiro

Personalize o arquivo de configuração.

Na pasta config, abra o arquivo config.json e defina os parâmetros conforme apropriado para seu caso de uso. Os seguintes parâmetros são obrigatórios, salvo indicação em contrário:

  • Na seção portfolios, defina os seguintes parâmetros para criar um ou mais portfólios do Service Catalog:

    • portfolioName: o nome do portfólio.

    • providerName: o nome da pessoa, equipe ou organização que gerencia o portfólio.

    • description: uma breve descrição do portfólio.

    • roles: (opcional) nomes de todas as funções do IAM que devem ter acesso a esse portfólio. Os usuários que têm essa função podem acessar os produtos desse portfólio.

    • users: (opcional) nomes de todos os usuários do IAM que deveriam ter acesso a esse portfólio e seus produtos.

    • groups: (opcional) nomes de quaisquer grupos de usuários do IAM que deveriam ter acesso a esse portfólio e seus produtos.

    Aviso: os usuários do IAM têm credenciais de longo prazo, o que representa um risco de segurança. Para ajudar a reduzir esse risco, recomendamos que você forneça a esses usuários somente as permissões necessárias para realizar a tarefa e que você os remova quando não forem mais necessários.

    Importante: roles, users e groups são todos parâmetros opcionais, mas se você não definir um desses parâmetros, ninguém poderá visualizar os produtos do portfólio no console do Service Catalog. Defina pelo menos um desses parâmetros. Para obter mais informações, consulte Conceder permissões aos usuários finais do Service Catalog (documentação do Service Catalog).

  • (Opcional) Na tagOption seção, defina TagOptions para os produtos:

    • key— Nome da TagOption chave

    • value— Valores de string permitidos para o TagOption

    Para obter mais informações, consulte a TagOption biblioteca (documentação do Service Catalog).

  • Na seção products, defina os seguintes parâmetros para os produtos:

    • portfolioName: o nome do portfólio onde deseja adicionar o produto. Você pode especificar apenas um portfólio.

    • productName: o nome do produto.

    • owner: o proprietário do produto.

    • productVersionName: o nome da versão do produto no valor da string, como v1.

    • templatePath— O caminho do arquivo para o CloudFormation modelo do produto.

    • deployWithStackSets— (Opcional) Especifique uma ou mais contas e regiões onde você deseja usar StackSets para provisionar automaticamente produtos nos portfólios. Se você usar essa opção de implantação, todos os parâmetros a seguir nesta seção serão obrigatórios:

      • accounts: as contas de destino.

      • regions: as regiões de destino.

      • stackSetAdministrationRoleName— O nome da função do IAM usada para administrar a StackSets configuração. Não mude esse valor. Esse perfil deve ter esse nome exato.

      • stackSetExecutionRoleName: o nome do perfil do IAM na conta de destino que implanta as instâncias da pilha. Não mude esse valor. Esse perfil deve ter esse nome exato.

Para ver um exemplo de um arquivo de configuração completo, consulte Exemplo de arquivo de configuração na seção Informações adicionais.

Desenvolvedor de aplicativos, DevOps engenheiro, AWS DevOps

Implante a solução.

Insira o comando da a seguir. Isso implanta o aplicativo AWS CDK e provisiona os portfólios e produtos do Service Catalog conforme especificado no arquivo config.json.

sh +x setup.sh
Desenvolvedor de aplicativos, DevOps engenheiro, AWS DevOps

Verificar a implantação.

Verifique a implantação bem-sucedida fazendo o seguinte:

  1. Faça login no Console de Gerenciamento da AWS com credenciais que podem acessar um ou mais dos portfólios que você definiu no arquivo de configuração.

  2. Abra o console do Service Catalog em https://console.aws.amazon.com/servicecatalog/

  3. No painel de navegação, em Provisionamento, escolha Produtos. Verifique se você vê uma lista de produtos que especificou para o portfólio.

  4. Siga as instruções em Lançamento de um produto (documentação do Service Catalog) para lançar um dos produtos disponíveis. Confirme se as versões e tags disponíveis do produto correspondem aos valores fornecidos no arquivo de configuração.

  5. Se você optar por provisionar produtos automaticamente em uma ou mais contas de destino usando StackSets, faça o seguinte:

    1. Faça login com credenciais que lhe dão permissão para visualizar os produtos provisionados em uma das contas de destino.

    2. No console do Service Catalog, no painel de navegação, em Provisionamento, escolha Produtos provisionados.

    3. Confirme se os produtos esperados aparecem na lista.

AWS geral

(Opcional) Atualize os portfólios e os produtos.

Se você quiser usar essa solução para atualizar os portfólios ou produtos ou para provisionar novos produtos:

  1. Faça as alterações necessárias no arquivo config.json.

  2. Adicione ou modifique CloudFormation qualquer modelo conforme necessário na config/template pasta.

  3. Reimplante a solução.

Por exemplo, você pode adicionar mais portfólios ou provisionar mais recursos. O aplicativo AWS CDK implementa somente as alterações. Se não houver alterações nos portfólios ou produtos implantados anteriormente, a reimplantação não os afetará.

Desenvolvedor de aplicativos, DevOps engenheiro, AWS geral
TarefaDescriçãoHabilidades necessárias

(Opcional) Remova os recursos da AWS implantados por essa solução.

Se você quiser excluir um produto provisionado, siga as instruções em Excluindo produtos provisionados (documentação do Service Catalog).

Para excluir todos os recursos criados por essa solução, insira o comando a seguir.

sh uninstall.sh
AWS DevOps, DevOps engenheiro, desenvolvedor de aplicativos

Recursos relacionados

Mais informações

Informações adicionais

Clonar o repositório

Digite o comando a seguir para clonar o repositório. GitHub

git clone https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git

Arquivo de configuração de amostra

Veja a seguir um exemplo de arquivo config.json com valores de exemplo.

{ "portfolios": [ { "displayName": "EC2 Product Portfolio", "providerName": "User1", "description": "Test1", "roles": [ "<Names of IAM roles that can access the products>" ], "users": [ "<Names of IAM users who can access the products>" ], "groups": [ "<Names of IAM user groups that can access the products>" ] }, { "displayName": "Autoscaling Product Portfolio", "providerName": "User2", "description": "Test2", "roles": [ "<Name of IAM role>" ] } ], "tagOption": [ { "key": "Group", "value": [ "finance", "engineering", "marketing", "research" ] }, { "key": "CostCenter", "value": [ "01", "02", "03", "04" ] }, { "key": "Environment", "value": [ "dev", "prod", "stage" ] } ], "products": [ { "portfolioName": "EC2 Product Profile", "productName": "Ec2", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template1.json" }, { "portfolioName": "Autoscaling Product Profile", "productName": "autoscaling", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template2.json", "deployWithStackSets": { "accounts": [ "012345678901", ], "regions": [ "us-west-2" ], "stackSetAdministrationRoleName": "AWSCloudFormationStackSetAdministrationRole", "stackSetExecutionRoleName": "AWSCloudFormationStackSetExecutionRole" } } ] }