

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 das AWS Service Catalog-Portfolio und die Produktbereitstellung mithilfe von AWS CDK
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk"></a>

*Sandeep Gawande, Viyoma Sachdeva und RAJNEESH TYAGI, Amazon Web Services*

## Zusammenfassung
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-summary"></a>

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

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 das AWS Cloud Development Kit (AWS CDK) 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. Es stellt optional auch Produkte in Zielkonten mithilfe von CloudFormation AWS-Stacks bereit und hilft Ihnen bei der Konfiguration TagOptions für die 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 von AWS CloudFormation StackSets](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/using-stacksets.html) (Service Catalog-Dokumentation) und [StackSets Konzepte](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) (CloudFormation Dokumentation).
+ **TagOption Bibliothek** — Mithilfe der TagOption Bibliothek können Sie Tags für bereitgestellte Produkte verwalten. A *TagOption*ist 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](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/tagoptions.html) (Service Catalog-Dokumentation).

## Voraussetzungen und Einschränkungen
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-prereqs"></a>

**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 in einem oder mehreren Zielkonten bereitzustellen, muss das Zielkonto bereits existieren und aktiv sein.
+ AWS Identity and Access Management (IAM) -Berechtigungen für den Zugriff auf AWS Service Catalog CloudFormation, AWS und AWS IAM.

**Produktversionen**
+ AWS CDK versie 2.27.0

## Architektur
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-architecture"></a>

**Zieltechnologie-Stack**
+ Service Catalog-Portfolios in einem zentralen AWS-Konto
+ Service Catalog-Produkte, die im Zielkonto bereitgestellt werden

**Zielarchitektur**

![\[AWS CDK erstellt Service Catalog-Portfolios und stellt Produkte im Zielkonto bereit.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e8f217a7-aec4-4c85-8f6b-f91995506be0/images/1f027b82-14c3-485a-909b-1544e974b90a.png)


1. Im Portfolio- (oder *Quellkonto*) aktualisieren Sie die Datei **config.json** mit dem AWS-Konto, der AWS-Region, der IAM-Rolle, dem Portfolio und den Produktinformationen für Ihren Anwendungsfall.

1. Sie stellen die AWS-CDK-Anwendung bereit.

1. Die AWS-CDK-Anwendung übernimmt die IAM-Rolle für die Bereitstellung und erstellt die Service Catalog-Portfolios und -Produkte, die in der **Datei config.json** definiert sind.

   Wenn Sie für StackSets 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.

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

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

## Tools
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-tools"></a>

**AWS-Services**
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) ist ein Befehlszeilen-Cloud-Entwicklungskit, das Sie bei der Interaktion mit Ihrer AWS-CDK-App unterstützt.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft 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.
+ Mit [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) können Sie den Zugriff auf Ihre AWS-Ressourcen sicher verwalten, indem Sie kontrollieren, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ Mit [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) können Sie Kataloge von IT-Services, die für AWS zugelassen sind, zentral 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-automation](https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git)Repository 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](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-epics), um den Beispielcode zu verwenden.

## Best Practices
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-best-practices"></a>
+ Die für die Bereitstellung dieser Lösung verwendeten IAM-Rollen sollten dem [Prinzip der geringsten Rechte entsprechen (IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)).
+ Halten Sie sich an die [Best Practices für die Entwicklung von Cloud-Anwendungen mit AWS CDK](https://aws.amazon.com/blogs/devops/best-practices-for-developing-cloud-applications-with-aws-cdk/) (AWS-Blogbeitrag).
+ Halten Sie sich an die [ CloudFormation bewährten AWS-Methoden](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html) (CloudFormation Dokumentation).

## Epen
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-epics"></a>

### So richten Sie Ihre Umgebung ein
<a name="set-up-your-environment"></a>


| Aufgabe | Description | Erforderliche 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. <pre>cdk --version</pre>Wenn das AWS CDK Toolkit nicht installiert ist, geben Sie den folgenden Befehl ein, um es zu installieren.<pre>npm install -g aws-cdk@2.27.0</pre>Wenn die Version des AWS CDK Toolkit älter als 2.27.0 ist, geben Sie den folgenden Befehl ein, um sie auf Version 2.27.0 zu aktualisieren.<pre>npm install -g aws-cdk@2.27.0 --force</pre> | AWS DevOps, DevOps Ingenieur | 
| Klonen Sie das Repository | Geben Sie den folgenden Befehl ein. Unter *Das Repository klonen* können Sie im Abschnitt [Zusätzliche Informationen](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional) den vollständigen Befehl kopieren, der die URL für das Repository enthält. Dadurch wird das [aws-cdk-servicecatalog-automation](https://github.com/aws-samples/aws-cdk-servicecatalog-automation)Repository von GitHub geklont.<pre>git clone <repository-URL>.git</pre>Dadurch wird ein `cd aws-cdk-servicecatalog-automation` Ordner im Zielverzeichnis erstellt. Geben Sie den folgenden Befehl ein, um in diesen Ordner zu navigieren.<pre>cd aws-cdk-servicecatalog-automation</pre> | 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.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number></pre><pre>export CDK_DEFAULT_REGION=<AWS Region></pre>AWS-Anmeldeinformationen für AWS CDK werden über Umgebungsvariablen bereitgestellt. | AWS DevOps, DevOps Ingenieur | 
| Konfigurieren Sie Berechtigungen für IAM-Rollen von Endbenutzern. | 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](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-servicecatalog.html#integrate-enable-ta-servicecatalog) (Dokumentation zu 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.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html) | AWS DevOps, DevOps Ingenieur | 

### Passen Sie die Lösung an und stellen Sie sie bereit
<a name="customize-and-deploy-the-solution"></a>


| Aufgabe | Description | Erforderliche 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 CloudFormation AWS-Vorlagen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) (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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html)Ein Beispiel für eine fertige Konfigurationsdatei finden Sie unter *Beispielkonfigurationsdatei* im Abschnitt [Zusätzliche Informationen](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional). | 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.<pre>sh +x setup.sh</pre> | App-Entwickler, DevOps Ingenieur, AWS DevOps | 
| Überprüfen Sie die Bereitstellung. | Überprüfen Sie die erfolgreiche Bereitstellung, indem Sie wie folgt vorgehen: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html) | Allgemeines 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html)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 erneute Bereitstellung keine Auswirkungen auf sie. | App-Entwickler, DevOps Ingenieur, General AWS | 

### Säubere die Lösung
<a name="clean-up-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| (Optional) Entfernen Sie AWS-Ressourcen, die von dieser Lösung bereitgestellt werden. | Wenn Sie ein bereitgestelltes Produkt löschen möchten, folgen Sie den Anweisungen unter [Löschen bereitgestellter Produkte](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) (Service Catalog-Dokumentation).Wenn Sie alle mit dieser Lösung erstellten Ressourcen löschen möchten, geben Sie den folgenden Befehl ein.<pre>sh uninstall.sh</pre> | AWS DevOps, DevOps Ingenieur, App-Entwickler | 

## Zugehörige Ressourcen
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-resources"></a>
+ [AWS Service Catalog Construct-Bibliothek](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_servicecatalog-readme.html) (AWS-API-Referenz)
+ [StackSets Konzepte](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) (CloudFormation Dokumentation)
+ [AWS Service Catalog](https://aws.amazon.com/servicecatalog) (AWS-Marketing)
+ [Verwenden von Service Catalog mit dem AWS CDK](https://catalog.us-east-1.prod.workshops.aws/workshops/d40750d7-a330-49be-9945-cde864610de9/en-US/4-builders-devs/sc-cdk) (AWS-Workshop)

## Zusätzliche Informationen
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional"></a>

**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"
            }
        }
    ]
}
```