Automatisieren Sie die Bereitstellung von AWS Service Catalog-Portfolios und Produkten mithilfe von AWS CDK - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Automatisieren Sie die Bereitstellung von AWS Service Catalog-Portfolios und Produkten mithilfe von AWS CDK

Erstellt von Sandeep Gawande (AWS), RAJNEESH TYAGI () und Viyoma Sachdeva (AWS) AWS

Code-Repository: aws-cdk-servicecatalog-automation

Umgebung: PoC oder Pilotprojekt

Technologien: DevOps; Infrastruktur; Management und Unternehmensführung

Arbeitslast: Open Source

AWSDienstleistungen: AWS Service Catalog; AWS CDK

Übersicht

AWSService Catalog unterstützt Sie bei der zentralen Verwaltung von Katalogen mit IT-Services oder -Produkten, die für die Verwendung in der AWS Umgebung Ihres Unternehmens zugelassen sind. Eine Sammlung von Produkten wird als Portfolio bezeichnet, und ein Portfolio enthält auch Konfigurationsinformationen. Mit AWS Service Catalog können Sie für jeden Benutzertyp in Ihrer Organisation ein individuelles Portfolio erstellen und dann Zugriff auf das entsprechende Portfolio gewähren. Diese Benutzer können dann schnell jedes Produkt aus dem Portfolio bereitstellen, das sie benötigen.

Wenn Sie über eine komplexe Netzwerkinfrastruktur verfügen, z. B. Architekturen mit mehreren Regionen und mehreren Konten, wird empfohlen, Service Catalog-Portfolios in einem einzigen, zentralen Konto zu erstellen und zu verwalten. Dieses Muster beschreibt, wie AWS Cloud Development Kit (AWSCDK) verwendet wird, um die Erstellung von Service Catalog-Portfolios in einem zentralen Konto zu automatisieren, Endbenutzern Zugriff darauf zu gewähren und dann, optional, Produkte in einem oder mehreren AWS Zielkonten bereitzustellen. Diese ready-to-use Lösung erstellt die Service Catalog-Portfolios im Quellkonto. Sie stellt optional auch Produkte in Zielkonten mithilfe von AWS CloudFormation Stacks bereit und unterstützt Sie bei der Konfiguration TagOptions der Produkte:

  • AWS CloudFormation StackSets— Sie können es verwenden StackSets , um Service Catalog-Produkte in mehreren AWS Regionen und Konten auf den Markt zu bringen. In dieser Lösung haben Sie die Möglichkeit, Produkte automatisch bereitzustellen, wenn Sie diese Lösung bereitstellen. Weitere Informationen finden Sie unter Verwenden AWS CloudFormation StackSets (Service Catalog-Dokumentation) und StackSets Konzepte (CloudFormation Dokumentation).

  • TagOption Bibliothek — Mithilfe der TagOption Bibliothek können Sie Tags für bereitgestellte Produkte verwalten. A TagOptionist ein Schlüssel-Wert-Paar, das im AWS Service Catalog verwaltet wird. Es ist kein AWS Tag, sondern dient als Vorlage für die Erstellung eines AWS Tags auf der Grundlage von. TagOption Weitere Informationen finden Sie in der TagOption Bibliothek (Service Catalog-Dokumentation).

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS Konto, das Sie als Quellkonto für die Verwaltung von Service Catalog-Portfolios verwenden möchten.

  • Wenn Sie diese Lösung verwenden, um Produkte für ein oder mehrere Zielkonten bereitzustellen, muss das Zielkonto bereits vorhanden und aktiv sein.

  • AWSIdentity and Access Management Zugriffsverwaltungsberechtigungen (IAM) für den Zugriff auf den AWS Service Catalog AWS CloudFormation, und AWSIAM.

Produktversionen

  • AWSCDKVersion 2.27.0

Architektur

Zieltechnologie-Stack

  • Servicekatalog-Portfolios in einem zentralen AWS Konto

  • Service Catalog-Produkte, die im Zielkonto bereitgestellt werden

Zielarchitektur

AWSCDKErstellung von Service Catalog-Portfolios und Bereitstellung von Produkten im Zielkonto.
  1. Im Portfolio- (oder Quellkonto) aktualisieren Sie die Datei config.json mit den AWS Konto-, AWS Regions-, IAM Rollen-, Portfolio- und Produktinformationen für Ihren Anwendungsfall.

  2. Sie stellen die AWS CDK Anwendung bereit.

  3. Die AWS CDK Anwendung übernimmt die IAM Bereitstellungsrolle und erstellt die Service Catalog-Portfolios und -Produkte, die in der Datei config.json definiert sind.

    Wenn Sie StackSets für die Bereitstellung von Produkten in einem Zielkonto konfiguriert haben, wird der Vorgang fortgesetzt. Wenn Sie nicht für StackSets die Bereitstellung von Produkten konfiguriert haben, ist der Vorgang abgeschlossen.

  4. Die AWS CDK Anwendung übernimmt die StackSet Administratorrolle und stellt das AWS CloudFormation Stack-Set bereit, das Sie in der Datei config.json definiert haben.

  5. StackSets Übernimmt im Zielkonto die StackSet Ausführungsrolle und stellt die Produkte bereit.

Tools

AWSDienstleistungen

  • AWSCloud Development Kit (AWSCDK) ist ein Softwareentwicklungs-Framework, mit dem Sie AWS Cloud-Infrastruktur im Code definieren und bereitstellen können.

  • AWSCDKToolkit ist ein Cloud-Entwicklungskit für die Befehlszeile, mit dem Sie mit Ihrer AWS CDK App interagieren können.

  • AWS CloudFormationhilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS Konten und Regionen hinweg zu verwalten.

  • AWSIdentity and Access Management (IAM) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.

  • AWSService Catalog hilft Ihnen dabei, Kataloge von IT-Services, für AWS die eine Genehmigung erteilt wurde, zentral zu verwalten. Endbenutzer können schnell nur die jeweils benötigten genehmigten IT-Services bereitstellen, wobei die Einschränkungen Ihrer Organisation berücksichtigt werden.

Code-Repository

Der Code für dieses Muster ist im aws-cdk-servicecatalog-automationRepository verfügbar. GitHub Das Code-Repository enthält die folgenden Dateien und Ordner:

  • cdk-sevicecatalog-app— Dieser Ordner enthält die AWS CDK Anwendung für diese Lösung.

  • config — Dieser Ordner enthält die Datei config.json und die CloudFormation Vorlage für die Bereitstellung der Produkte im Service Catalog-Portfolio.

  • config/config.json — Diese Datei enthält alle Konfigurationsinformationen. Sie aktualisieren diese Datei, um diese Lösung an Ihren Anwendungsfall anzupassen.

  • config/templates — Dieser Ordner enthält die CloudFormation Vorlagen für die Service Center-Produkte.

  • setup.sh — Dieses Skript stellt die Lösung bereit.

  • uninstall.sh — Dieses Skript löscht den Stack und alle AWS Ressourcen, die bei der Bereitstellung dieser Lösung erstellt wurden.

Folgen Sie den Anweisungen im Abschnitt Epics, um den Beispielcode zu verwenden.

Bewährte Methoden

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Installieren Sie das AWS CDK Toolkit.

Stellen Sie sicher, dass Sie das AWS CDK Toolkit installiert haben. Geben Sie den folgenden Befehl ein, um zu bestätigen, ob es installiert ist, und um die Version zu überprüfen. 

cdk --version

Wenn AWS CDK Toolkit nicht installiert ist, geben Sie den folgenden Befehl ein, um es zu installieren.

npm install -g aws-cdk@2.27.0

Wenn die AWS CDK Toolkit-Version älter als 2.27.0 ist, geben Sie den folgenden Befehl ein, um sie auf Version 2.27.0 zu aktualisieren.

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

Klonen Sie das Repository

Geben Sie den folgenden Befehl ein. Unter Repository klonen können Sie im Abschnitt Zusätzliche Informationen den vollständigen Befehl kopieren, der den URL für das Repository enthält. Dadurch wird das aws-cdk-servicecatalog-automationRepository von GitHub geklont.

git clone <repository-URL>.git

Dadurch wird ein cd aws-cdk-servicecatalog-automation Ordner im Zielverzeichnis erstellt. Geben Sie den folgenden Befehl ein, um in diesen Ordner zu navigieren.

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

Richten Sie AWS Anmeldeinformationen ein.

Geben Sie die folgenden Befehle ein. Diese exportieren die folgenden Variablen, die das AWS Konto und die Region definieren, in der Sie den Stack bereitstellen.

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

AWSAnmeldeinformationen für AWS CDK werden über Umgebungsvariablen bereitgestellt.

AWS DevOps, DevOps Ingenieur

Konfigurieren Sie Berechtigungen für IAM Endbenutzerrollen.

Wenn Sie IAM Rollen verwenden möchten, um Zugriff auf das Portfolio und die darin enthaltenen Produkte zu gewähren, müssen die Rollen über Berechtigungen verfügen, damit sie vom Servicecatalog.amazonaws.com Service Principal übernommen werden können. Anweisungen zum Erteilen dieser Berechtigungen finden Sie unter Aktivieren des vertrauenswürdigen Zugriffs mit Service Catalog (Dokumentation für AWS Organizations).

AWS DevOps, DevOps Ingenieur

Konfigurieren Sie die IAM Rollen, die für erforderlich sind StackSets.

Wenn Sie die automatische Bereitstellung von Produkten in Zielkonten verwenden StackSets , müssen Sie die IAM Rollen konfigurieren, mit denen das Stack-Set verwaltet und ausgeführt wird.

  1. Bestätigen Sie im Quellkonto, ob das AWSCloudFormationStackSetAdministrationRole bereits existiert. Bestätigen Sie in den Zielkonten, ob es AWSCloudFormationStackSetExecutionRole bereits vorhanden ist. Wenn diese Rollen bereits existieren, kannst du zum nächsten Epos springen.

  2. Folgen Sie den Anweisungen unter Selbstverwaltete Berechtigungen gewähren (IAMDokumentation), um die Stackset-Administratorrolle im Portfoliokonto und die Ausführungsrolle in jedem Zielkonto zu erstellen.

AWS DevOps, DevOps Ingenieur
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie die CloudFormation Vorlagen.

Erstellen Sie in dem config/templates Ordner CloudFormation Vorlagen für alle Produkte, die Sie in Ihre Portfolios aufnehmen möchten. Weitere Informationen finden Sie unter Arbeiten mit AWS CloudFormation Vorlagen (CloudFormation Dokumentation).

App-Entwickler AWS DevOps, DevOps Ingenieur

Passen Sie die Konfigurationsdatei an.

Öffnen Sie in dem config Ordner die Datei config.json und definieren Sie die Parameter entsprechend Ihrem Anwendungsfall. Die folgenden Parameter sind erforderlich, sofern nicht anders angegeben:

  • Definieren Sie in portfolios diesem Abschnitt die folgenden Parameter, um ein oder mehrere Service Catalog-Portfolios zu erstellen:

    • portfolioName— Der Name des Portfolios.

    • providerName— Der Name der Person, des Teams oder der Organisation, die das Portfolio verwaltet.

    • description— Eine kurze Beschreibung des Portfolios.

    • roles— (Optional) Namen aller IAM Rollen, die Zugriff auf dieses Portfolio haben sollten. Benutzer mit dieser Rolle können auf die Produkte in diesem Portfolio zugreifen.

    • users— (Optional) Namen aller IAM Benutzer, die Zugriff auf dieses Portfolio und seine Produkte haben sollten.

    • groups— (Optional) Namen aller IAM Benutzergruppen, die Zugriff auf dieses Portfolio und seine Produkte haben sollten.

    Warnung: IAM Benutzer verfügen über langfristige Anmeldeinformationen, was ein Sicherheitsrisiko darstellt. Um dieses Risiko zu minimieren, empfehlen wir, diesen Benutzern nur die Berechtigungen zu gewähren, die sie für die Ausführung der Aufgabe benötigen, und diese Benutzer zu entfernen, wenn sie nicht mehr benötigt werden.

    Wichtig: rolesusers, und groups sind alles optionale Parameter. Wenn Sie jedoch keinen dieser Parameter definieren, kann niemand die Portfolioprodukte in der Service Catalog-Konsole anzeigen. Definieren Sie mindestens einen dieser Parameter. Weitere Informationen finden Sie unter Erteilen von Berechtigungen für Service Catalog-Endbenutzer (Service Catalog-Dokumentation).

  • (Optional) Definieren Sie in tagOption diesem Abschnitt TagOptions für die Produkte:

    • key— Name des TagOption Schlüssels

    • value— Zulässige Zeichenkettenwerte für TagOption

    Weitere Informationen finden Sie in der TagOption Bibliothek (Service Catalog-Dokumentation).

  • Definieren Sie in productsdiesem Abschnitt die folgenden Parameter für die Produkte:

    • portfolioName— Der Name des Portfolios, dem Sie das Produkt hinzufügen möchten. Sie können nur ein Portfolio angeben.

    • productName— Der Name des Produkts.

    • owner— Der Besitzer des Produkts.

    • productVersionName— Der Name der Produktversion als Zeichenkettenwert, z. v1 B.

    • templatePath— Der Dateipfad für die CloudFormation Vorlage für das Produkt.

    • deployWithStackSets— (Optional) Geben Sie ein oder mehrere Konten und Regionen an, in denen Sie Produkte in den Portfolios automatisch bereitstellen möchten. StackSets Wenn Sie diese Bereitstellungsoption verwenden, sind alle folgenden Parameter in diesem Abschnitt erforderlich:

      • accounts— Die Zielkonten.

      • regions— Die Zielregionen.

      • stackSetAdministrationRoleName— Der Name der IAM Rolle, die zur Verwaltung der StackSets Konfiguration verwendet wird. Ändern Sie diesen Wert nicht. Diese Rolle muss genau diesen Namen haben.

      • stackSetExecutionRoleName— Der Name der IAM Rolle im Zielkonto, das die Stack-Instances bereitstellt. Ändern Sie diesen Wert nicht. Diese Rolle muss genau diesen Namen haben.

Ein Beispiel für eine fertige Konfigurationsdatei finden Sie unter Beispielkonfigurationsdatei im Abschnitt Zusätzliche Informationen.

App-Entwickler, DevOps Ingenieur, AWS DevOps

Stellen Sie die Lösung bereit.

Geben Sie den folgenden Befehl ein. Dadurch wird die AWS CDK App bereitgestellt und die Service Catalog-Portfolios und -Produkte bereitgestellt, wie in der Datei config.json angegeben.

sh +x setup.sh
App-Entwickler, Ingenieur, DevOps AWS DevOps

Überprüfen Sie die Bereitstellung.

Überprüfen Sie die erfolgreiche Bereitstellung, indem Sie wie folgt vorgehen:

  1. Melden Sie sich bei der AWS Management Console mit Anmeldeinformationen an, mit denen Sie auf eines oder mehrere der Portfolios zugreifen können, die Sie in der Konfigurationsdatei definiert haben.

  2. Öffnen Sie die Service Catalog-Konsole unter https://console.aws.amazon.com/servicecatalog/

  3. Wählen Sie im Navigationsbereich unter Provisioning die Option Produkte aus. Vergewissern Sie sich, dass eine Liste der Produkte angezeigt wird, die Sie für das Portfolio angegeben haben.

  4. Folgen Sie den Anweisungen unter Produkt auf den Markt bringen (Servicekatalog-Dokumentation), um eines der verfügbaren Produkte auf den Markt zu bringen. Vergewissern Sie sich, dass die verfügbaren Produktversionen und Tags den Werten entsprechen, die Sie in der Konfigurationsdatei angegeben haben.

  5. Wenn Sie sich dafür entschieden haben, Produkte mithilfe von automatisch in einem oder mehreren Zielkonten bereitzustellen StackSets, gehen Sie wie folgt vor:

    1. Melden Sie sich mit Anmeldeinformationen an, die Ihnen die Erlaubnis geben, die bereitgestellten Produkte in einem der Zielkonten anzusehen.

    2. Wählen Sie in der Service Catalog-Konsole im Navigationsbereich unter Provisioning die Option Provisioned products aus.

    3. Vergewissern Sie sich, dass die erwarteten Produkte in der Liste angezeigt werden.

Allgemein AWS

(Optional) Aktualisieren Sie die Portfolios und Produkte.

Wenn Sie diese Lösung verwenden möchten, um die Portfolios oder Produkte zu aktualisieren oder neue Produkte bereitzustellen:

  1. Nehmen Sie die erforderlichen Änderungen in der Datei config.json vor.

  2. Fügen Sie dem Ordner nach Bedarf alle CloudFormation Vorlagen hinzu oder ändern Sie sie. config/template

  3. Stellen Sie die Lösung erneut bereit.

Sie können beispielsweise zusätzliche Portfolios hinzufügen oder mehr Ressourcen bereitstellen. Die AWS CDK App implementiert nur die Änderungen. Wenn es keine Änderungen an zuvor bereitgestellten Portfolios oder Produkten gibt, hat die Neuverteilung keine Auswirkungen auf sie.

App-Entwickler, DevOps Ingenieur, General AWS
AufgabeBeschreibungErforderliche Fähigkeiten

(Optional) Entfernen Sie die von dieser Lösung bereitgestellten AWS Ressourcen.

Wenn Sie ein bereitgestelltes Produkt löschen möchten, folgen Sie den Anweisungen unter Löschen bereitgestellter Produkte (Service Catalog-Dokumentation).

Wenn Sie alle mit dieser Lösung erstellten Ressourcen löschen möchten, geben Sie den folgenden Befehl ein.

sh uninstall.sh
AWS DevOps, DevOps Ingenieur, App-Entwickler

Zugehörige Ressourcen

Zusätzliche Informationen

Zusätzliche Informationen

Klonen Sie das Repository

Geben Sie den folgenden Befehl ein, um das Repository zu klonen GitHub.

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

Beispiel für eine Konfigurationsdatei

Im Folgenden finden Sie eine config.json-Beispieldatei mit Beispielwerten.

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