Automatizza il portafoglio e la distribuzione dei prodotti di AWS Service Catalog utilizzando AWS CDK - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Automatizza il portafoglio e la distribuzione dei prodotti di AWS Service Catalog utilizzando AWS CDK

Creato da Sandeep Gawande (AWS), RAJNEESH TYAGI (AWS) e Viyoma Sachdeva (AWS)

Archivio di codici: aws-cdk-servicecatalog-automation

Ambiente: PoC o pilota

Tecnologie: DevOps; Infrastruttura; Gestione e governance

Carico di lavoro: open source

Servizi AWS: AWS Service Catalog; CDK AWS

Riepilogo

AWS Service Catalog ti aiuta a gestire centralmente i cataloghi di servizi o prodotti IT approvati per l'uso nell'ambiente AWS della tua organizzazione. Una raccolta di prodotti è chiamata portafoglio e un portafoglio contiene anche informazioni di configurazione. Con AWS Service Catalog, puoi creare un portafoglio personalizzato per ogni tipo di utente della tua organizzazione e quindi concedere l'accesso al portafoglio appropriato. Questi utenti possono quindi distribuire rapidamente qualsiasi prodotto di cui hanno bisogno all'interno del portafoglio.

Se si dispone di un'infrastruttura di rete complessa, ad esempio architetture multiregionali e multi-account, si consiglia di creare e gestire i portafogli Service Catalog in un unico account centrale. Questo modello descrive come utilizzare AWS Cloud Development Kit (AWS CDK) per automatizzare la creazione di portafogli Service Catalog in un account centrale, concedere agli utenti finali l'accesso ad essi e quindi, facoltativamente, fornire prodotti in uno o più account AWS target. Questa ready-to-use soluzione crea i portafogli Service Catalog nell'account di origine. Inoltre, facoltativamente, effettua il provisioning dei prodotti negli account di destinazione utilizzando gli CloudFormation stack AWS e aiuta a configurare TagOptions i prodotti:

  • AWS CloudFormation StackSets: puoi StackSets utilizzarlo per lanciare prodotti Service Catalog su più regioni e account AWS. In questa soluzione, hai la possibilità di effettuare il provisioning automatico dei prodotti quando la distribuisci. Per ulteriori informazioni, consulta Using AWS CloudFormation StackSets (Service Catalog documentation) e StackSets concepts (CloudFormation documentation).

  • TagOption libreria: puoi gestire i tag sui prodotti forniti utilizzando la TagOption libreria. A TagOptionè una coppia chiave-valore gestita in AWS Service Catalog. Non è un tag AWS, ma funge da modello per creare un tag AWS basato su TagOption. Per ulteriori informazioni, vedere TagOption libreria (documentazione del Service Catalog).

Prerequisiti e limitazioni

Prerequisiti

  • Un account AWS attivo che desideri utilizzare come account di origine per l'amministrazione dei portafogli Service Catalog.

  • Se utilizzi questa soluzione per fornire prodotti in uno o più account di destinazione, l'account di destinazione deve già esistere ed essere attivo.

  • Autorizzazioni AWS Identity and Access Management (IAM) per accedere ad AWS Service Catalog CloudFormation, AWS e AWS IAM.

Versioni del prodotto

  • CDK AWS versione 2.27.0

Architettura

Stack tecnologico Target

  • Portafogli Service Catalog in un account AWS centralizzato

  • Prodotti Service Catalog distribuiti nell'account di destinazione

Architettura Target

AWS CDK crea portafogli Service Catalog e fornisce prodotti nell'account di destinazione.
  1. Nell'account portfolio (o source), aggiorni il file config.json con l'account AWS, la regione AWS, il ruolo IAM, il portafoglio e le informazioni sul prodotto per il tuo caso d'uso.

  2. Distribuisci l'applicazione AWS CDK.

  3. L'applicazione AWS CDK assume il ruolo IAM di implementazione e crea i portafogli e i prodotti Service Catalog definiti nel file config.json.

    Se hai configurato StackSets per distribuire prodotti in un account di destinazione, il processo continua. Se non hai configurato alcun prodotto StackSets per fornire alcun prodotto, il processo è completo.

  4. L'applicazione AWS CDK assume il ruolo di StackSet amministratore e distribuisce lo CloudFormation stack set AWS definito nel file config.json.

  5. Nell'account di destinazione, StackSets assume il ruolo di esecuzione e fornisce i prodotti. StackSet

Strumenti

Servizi AWS

  • AWS Cloud Development Kit (AWS CDK) è un framework di sviluppo software che aiuta a definire e fornire l'infrastruttura cloud AWS in codice.

  • AWS CDK Toolkit è un kit di sviluppo cloud a riga di comando che ti aiuta a interagire con la tua app AWS CDK.

  • AWS ti CloudFormation aiuta a configurare le risorse AWS, effettuarne il provisioning in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita su account e regioni AWS.

  • AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.

  • AWS Service Catalog ti aiuta a gestire centralmente i cataloghi di servizi IT approvati per AWS. Gli utenti finali possono distribuire rapidamente soltanto i servizi IT approvati di cui hanno bisogno, in accordo con i vincoli stabiliti dall'organizzazione.

Repository di codice

Il codice per questo pattern è disponibile su GitHub, nel aws-cdk-servicecatalog-automationrepository. L'archivio del codice contiene i seguenti file e cartelle:

  • cdk-sevicecatalog-app— Questa cartella contiene l'applicazione AWS CDK per questa soluzione.

  • config: questa cartella contiene il file config.json e il CloudFormation modello per la distribuzione dei prodotti nel portafoglio Service Catalog.

  • config/config.json: questo file contiene tutte le informazioni di configurazione. Aggiorna questo file per personalizzare questa soluzione in base al tuo caso d'uso.

  • config/templates: questa cartella contiene i CloudFormation modelli per i prodotti Service Center.

  • setup.sh: questo script distribuisce la soluzione.

  • uninstall.sh: questo script elimina lo stack e tutte le risorse AWS create durante la distribuzione di questa soluzione.

Per utilizzare il codice di esempio, segui le istruzioni nella sezione Epics.

Best practice

Epiche

AttivitàDescrizioneCompetenze richieste

Installa AWS CDK Toolkit.

Assicurati di avere installato AWS CDK Toolkit. Inserisci il seguente comando per confermare se è installato e verificare la versione. 

cdk --version

Se AWS CDK Toolkit non è installato, inserisci il seguente comando per installarlo.

npm install -g aws-cdk@2.27.0

Se la versione di AWS CDK Toolkit è precedente alla 2.27.0, inserisci il seguente comando per aggiornarla alla versione 2.27.0.

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

Clonare il repository.

Inserire il seguente comando. In Clona il repository nella sezione Informazioni aggiuntive, puoi copiare il comando completo contenente l'URL del repository. Questo clona il repository da. aws-cdk-servicecatalog-automation GitHub

git clone <repository-URL>.git

Questo crea una cd aws-cdk-servicecatalog-automation cartella nella directory di destinazione. Immettete il seguente comando per navigare in questa cartella.

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

Configura le credenziali AWS.

Esegui i comandi seguenti: Questi esportano le seguenti variabili, che definiscono l'account AWS e la regione in cui stai distribuendo lo stack.

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

Le credenziali AWS per AWS CDK vengono fornite tramite variabili di ambiente.

AWS DevOps, DevOps ingegnere

Configura le autorizzazioni per i ruoli IAM degli utenti finali.

Se intendi utilizzare i ruoli IAM per concedere l'accesso al portafoglio e ai prodotti in esso contenuti, i ruoli devono disporre delle autorizzazioni che devono essere assunte dal responsabile del servizio servicecatalog.amazonaws.com. Per istruzioni su come concedere queste autorizzazioni, consulta Enabling trusted access with Service Catalog (documentazione di AWS Organizations).

AWS DevOps, DevOps ingegnere

Configura i ruoli IAM richiesti da StackSets.

Se utilizzi StackSets il provisioning automatico dei prodotti negli account di destinazione, devi configurare i ruoli IAM che amministrano ed eseguono il set di stack.

  1. Nell'account di origine, conferma se esiste AWSCloudFormationStackSetAdministrationRole già. Negli account di destinazione, conferma se esiste AWSCloudFormationStackSetExecutionRole già. Se questi ruoli esistono già, puoi passare all'epopea successiva.

  2. Segui le istruzioni in Grant self-managed permissions (documentazione IAM) per creare il ruolo di amministrazione dello stack set nell'account di portafoglio e creare il ruolo di esecuzione in ogni account di destinazione.

AWS DevOps, DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Crea i CloudFormation modelli.

Nella config/templates cartella, crea CloudFormation modelli per tutti i prodotti che desideri includere nei tuoi portafogli. Per ulteriori informazioni, consulta Working with AWS CloudFormation templates (CloudFormation documentazione).

Sviluppatore di app, AWS DevOps, DevOps ingegnere

Personalizza il file di configurazione.

Nella config cartella, apri il file config.json e definisci i parametri appropriati per il tuo caso d'uso. Salvo diversa indicazione, sono obbligatori i seguenti parametri:

  • Nella portfolios sezione, definite i seguenti parametri per creare uno o più portafogli Service Catalog:

    • portfolioName— Il nome del portfolio.

    • providerName— Il nome della persona, del team o dell'organizzazione che gestisce il portfolio.

    • description— Una breve descrizione del portfolio.

    • roles— (Facoltativo) Nomi di tutti i ruoli IAM che dovrebbero avere accesso a questo portafoglio. Gli utenti che hanno questo ruolo possono accedere ai prodotti di questo portafoglio.

    • users— (Facoltativo) Nomi di tutti gli utenti IAM che dovrebbero avere accesso a questo portafoglio e ai suoi prodotti.

    • groups— (Facoltativo) Nomi di tutti i gruppi di utenti IAM che dovrebbero avere accesso a questo portafoglio e ai suoi prodotti.

    Attenzione: gli utenti IAM dispongono di credenziali a lungo termine, il che rappresenta un rischio per la sicurezza. Per contribuire a mitigare questo rischio, ti consigliamo di fornire a questi utenti solo le autorizzazioni necessarie per eseguire l'attività e di rimuoverli quando non sono più necessari.

    Importante: rolesusers, e groups sono tutti parametri opzionali, ma se non si definisce uno di questi parametri, nessuno potrà visualizzare i prodotti del portafoglio nella console Service Catalog. Definire almeno uno di questi parametri. Per ulteriori informazioni, vedere Concedere le autorizzazioni agli utenti finali di Service Catalog (documentazione di Service Catalog).

  • (Facoltativo) Nella tagOption sezione, definisci TagOptions per i prodotti:

    • key— Nome della TagOption chiave

    • value— Valori di stringa consentiti per TagOption

    Per ulteriori informazioni, vedere TagOption libreria (documentazione del Service Catalog).

  • Nella productssezione, definisci i seguenti parametri per i prodotti:

    • portfolioName— Il nome del portafoglio in cui desideri aggiungere il prodotto. È possibile specificare un solo portafoglio.

    • productName— Il nome del prodotto.

    • owner— Il proprietario del prodotto.

    • productVersionName— Il nome della versione del prodotto in formato stringa, ad esempiov1.

    • templatePath— Il percorso del file per il CloudFormation modello per il prodotto.

    • deployWithStackSets— (Facoltativo) Specificate uno o più account e regioni da utilizzare StackSets per il provisioning automatico dei prodotti nei portafogli. Se si utilizza questa opzione di distribuzione, sono necessari tutti i seguenti parametri in questa sezione:

      • accounts— Gli account di destinazione.

      • regions— Le regioni bersaglio.

      • stackSetAdministrationRoleName— Il nome del ruolo IAM utilizzato per amministrare la StackSets configurazione. Non modificare questo valore. Questo ruolo deve avere questo nome esatto.

      • stackSetExecutionRoleName— Il nome del ruolo IAM nell'account di destinazione che distribuisce le istanze dello stack. Non modificare questo valore. Questo ruolo deve avere questo nome esatto.

Per un esempio di file di configurazione completato, consulta File di configurazione di esempio nella sezione Informazioni aggiuntive.

Sviluppatore di app, DevOps ingegnere, AWS DevOps

Distribuire la soluzione.

Inserire il seguente comando. Questo distribuisce l'app AWS CDK ed effettua il provisioning dei portafogli e dei prodotti Service Catalog come specificato nel file config.json.

sh +x setup.sh
Sviluppatore di app, DevOps ingegnere, AWS DevOps

Verifica la distribuzione.

Verifica la corretta implementazione effettuando le seguenti operazioni:

  1. Accedi alla Console di gestione AWS con credenziali che possono accedere a uno o più portafogli definiti nel file di configurazione.

  2. Aprire la console Service Catalog all'indirizzo https://console.aws.amazon.com/servicecatalog/

  3. Nel riquadro di navigazione, in Provisioning, scegli Prodotti. Verifica di visualizzare un elenco di prodotti che hai specificato per il portafoglio.

  4. Segui le istruzioni riportate in Launching a product (documentazione Service Catalog) per lanciare uno dei prodotti disponibili. Verifica che le versioni e i tag del prodotto disponibili corrispondano ai valori forniti nel file di configurazione.

  5. Se hai scelto di fornire automaticamente i prodotti in uno o più account di destinazione utilizzando StackSets, procedi come segue:

    1. Accedi con le credenziali che ti consentono di visualizzare i prodotti forniti in uno degli account di destinazione.

    2. Nella console Service Catalog, nel pannello di navigazione, in Provisioning, scegli Provisioned products.

    3. Verifica che i prodotti previsti compaiano nell'elenco.

Informazioni generali su AWS

(Facoltativo) Aggiorna i portafogli e i prodotti.

Se desideri utilizzare questa soluzione per aggiornare i portafogli o i prodotti o per fornire nuovi prodotti:

  1. Apporta le modifiche richieste nel file config.json.

  2. Aggiungi o modifica i CloudFormation modelli necessari nella cartella. config/template

  3. Ridistribuisci la soluzione.

Ad esempio, puoi aggiungere portafogli aggiuntivi o fornire più risorse. L'app AWS CDK implementa solo le modifiche. Se non ci sono modifiche ai portafogli o ai prodotti precedentemente distribuiti, la ridistribuzione non li influenza.

Sviluppatore di app, DevOps ingegnere, General AWS
AttivitàDescrizioneCompetenze richieste

(Facoltativo) Rimuovi le risorse AWS distribuite da questa soluzione.

Se desideri eliminare un prodotto fornito, segui le istruzioni in Eliminazione dei prodotti forniti (documentazione del Service Catalog).

Se desideri eliminare tutte le risorse create da questa soluzione, inserisci il seguente comando.

sh uninstall.sh
AWS DevOps, DevOps ingegnere, sviluppatore di app

Risorse correlate

Informazioni aggiuntive

Informazioni aggiuntive

Clonare il repository

Immettere il seguente comando da cui clonare il repository. GitHub

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

File di configurazione di esempio

Di seguito è riportato un file config.json di esempio con valori di esempio.

{ "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" } } ] }