

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.

# Starten Sie mithilfe von Step Functions und einer Lambda-Proxyfunktion ein CodeBuild Projekt für alle AWS-Konten
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function"></a>

*Richard Milner-Watts und Amit Anjarlekar, Amazon Web Services*

## Zusammenfassung
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-summary"></a>

Dieses Muster zeigt, wie ein CodeBuild AWS-Projekt mithilfe von AWS AWS Step Functions und einer AWS Lambda-Proxyfunktion asynchron über mehrere AWS-Konten hinweg gestartet wird. Sie können die Step Functions-Beispielstatusmaschine des Musters verwenden, um den Erfolg Ihres CodeBuild Projekts zu testen.

CodeBuild hilft Ihnen dabei, betriebliche Aufgaben mithilfe der AWS-Befehlszeilenschnittstelle (AWS CLI) in einer vollständig verwalteten Laufzeitumgebung zu starten. Sie können das Verhalten Ihres CodeBuild Projekts zur Laufzeit ändern, indem Sie Umgebungsvariablen überschreiben. Darüber hinaus können Sie es CodeBuild zur Verwaltung von Workflows verwenden. Weitere Informationen finden Sie unter [Service Catalog Tools](https://service-catalog-tools-workshop.com/tools.html) auf der AWS Workshop-Website und [Schedule jobs in Amazon RDS for PostgreSQL using AWS CodeBuild and EventBridge Amazon](https://aws.amazon.com/blogs/database/schedule-jobs-in-amazon-rds-for-postgresql-using-aws-codebuild-and-amazon-eventbridge/) im AWS Database Blog.

## Voraussetzungen und Einschränkungen
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-prereqs"></a>

**Voraussetzungen**
+ Zwei aktive AWS-Konten: ein Quellkonto zum Aufrufen einer Lambda-Proxyfunktion mit Step Functions und ein Zielkonto zum Erstellen eines Remote-Beispielprojekts CodeBuild 

**Einschränkungen**
+ Dieses Muster kann nicht verwendet werden, um [Artefakte](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html) zwischen Konten zu kopieren.

## Architektur
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-architecture"></a>

Das folgende Diagramm zeigt die Architektur, die dieses Muster aufbaut.

![\[Architekturdiagramm des Starts eines CodeBuild Projekts über mehrere AWS-Konten\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/857ba3ae-eb9a-4d6b-b73e-e596f41c8cb8.png)


Das Diagramm zeigt den folgenden Workflow:

1. Die Step Functions Functions-Zustandsmaschine analysiert die bereitgestellte Eingabemap und ruft die Lambda-Proxyfunktion (`codebuild-proxy-lambda`) für jedes Konto, jede Region und jedes Projekt auf, das Sie definiert haben.

1. Die Lambda-Proxyfunktion verwendet AWS Security Token Service (AWS STS), um eine IAM-Proxyrolle (`codebuild-proxy-role`) anzunehmen, die mit einer IAM-Richtlinie (`codebuild-proxy-policy`) im Zielkonto verknüpft ist.

1. Unter Verwendung der angenommenen Rolle startet die Lambda-Funktion das CodeBuild Projekt und gibt die CodeBuild Job-ID zurück. Die Step Functions Functions-Zustandsmaschine wiederholt den CodeBuild Job und fragt ihn ab, bis er einen Erfolgs- oder Fehlerstatus erhält.

Die Logik der Zustandsmaschine ist in der folgenden Abbildung dargestellt.

![\[Arbeitsablauf von Step Functions State Machine\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/4729bbfc-79ad-455d-a85a-b96cce00f432.png)


**Technologie-Stack**
+ AWS CloudFormation
+ CodeBuild
+ IAM
+ Lambda
+ Step Functions
+ X-Ray

## Tools
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-tools"></a>
+ [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.
+ [AWS CloudFormation Designer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-json-editor.html) bietet einen integrierten JSON- und YAML-Editor, mit dem Sie CloudFormation Vorlagen anzeigen und bearbeiten können.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) ist ein vollständig verwalteter Build-Service, mit dem Sie Quellcode kompilieren, Komponententests ausführen und bereitstellungsbereite Artefakte erstellen können.
+ 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.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Lambda-Funktionen und andere AWS-Services kombinieren können, um geschäftskritische Anwendungen zu erstellen.
+ [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) hilft Ihnen dabei, Daten über die Anfragen zu sammeln, die Ihre Anwendung bedient, und bietet Tools, mit denen Sie diese Daten anzeigen, filtern und Einblicke in sie gewinnen können, um Probleme und Optimierungsmöglichkeiten zu identifizieren.

**Code**

Der Beispielcode für dieses Muster ist im GitHub [Cross Account CodeBuild Proxy](https://github.com/aws-samples/cross-account-codebuild-proxy) Repository verfügbar. Dieses Muster verwendet die Bibliothek AWS Lambda Powertools for Python, um Protokollierungs- und Ablaufverfolgungsfunktionen bereitzustellen. Weitere Informationen zu dieser Bibliothek und ihren Dienstprogrammen finden Sie unter [Powertools for AWS Lambda (Python)](https://docs.powertools.aws.dev/lambda/python/latest/).

## Best Practices
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-best-practices"></a>

1. Passen Sie die Wartezeitwerte in der Step Function-Zustandsmaschine an, um die Anzahl der Abfragen für den Jobstatus zu minimieren. Verwenden Sie die erwartete Ausführungszeit für das CodeBuild Projekt.

1. Passen Sie die `MaxConcurrency` Eigenschaft der Map in Step Functions an, um zu steuern, wie viele CodeBuild Projekte parallel ausgeführt werden können.

1. Prüfen Sie bei Bedarf den Beispielcode auf Produktionsreife. Überlegen Sie, welche Daten von der Lösung protokolliert werden könnten und ob die standardmäßige CloudWatch Amazon-Verschlüsselung ausreichend ist.

## Epen
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-epics"></a>

### Erstellen Sie die Lambda-Proxyfunktion und die zugehörige IAM-Rolle im Quellkonto
<a name="create-the-lambda-proxy-function-and-associated-iam-role-in-the-source-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erfassen Sie das AWS-Konto IDs. | AWS AWS-Konto IDs ist erforderlich, um den kontenübergreifenden Zugriff einzurichten.Notieren Sie sich die AWS-Konto-ID für Ihre Quell- und Zielkonten. Weitere Informationen [finden Sie in der IAM-Dokumentation unter Finden Ihrer AWS-Konto-ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId). | AWS DevOps | 
| Laden Sie die CloudFormation AWS-Vorlagen herunter. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)In den CloudFormation AWS-Vorlagen `<SourceAccountId>` ist dies die AWS-Konto-ID für das Quellkonto und `<TargetAccountId>` die AWS-Konto-ID für das Zielkonto. | AWS DevOps | 
| Erstellen und implementieren Sie den CloudFormation AWS-Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Sie müssen den CloudFormation AWS-Stack für die Proxy-Lambda-Funktion erstellen, bevor Sie Ressourcen in Zielkonten erstellen. Wenn Sie eine Vertrauensrichtlinie in einem Zielkonto erstellen, wird die IAM-Rolle vom Rollennamen in eine interne Kennung übersetzt. Aus diesem Grund muss die IAM-Rolle bereits existieren. | AWS DevOps | 
| Bestätigen Sie die Erstellung der Proxyfunktion und der State-Machine. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Erstellen Sie eine IAM-Rolle im Zielkonto und starten Sie ein Beispielprojekt CodeBuild
<a name="create-an-iam-role-in-the-target-account-and-launch-a-sample-codebuild-project"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen und implementieren Sie den CloudFormation AWS-Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Überprüfen Sie die Erstellung des CodeBuild Beispielprojekts.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Testen Sie die kontoübergreifende Lambda-Proxyfunktion
<a name="test-the-cross-account-lambda-proxy-function"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Starten Sie die Zustandsmaschine. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Validieren Sie die Umgebungsvariablen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

## Fehlerbehebung
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die Ausführung von Step Functions dauert länger als erwartet. | Passen Sie die `MaxConcurrency` Eigenschaft der Map in der Step Function-Zustandsmaschine an, um zu steuern, wie viele CodeBuild Projekte parallel ausgeführt werden können. | 
| Die Ausführung der CodeBuild Jobs dauert länger als erwartet. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | 