

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.

# Datenverarbeitung
<a name="compute-pattern-list"></a>

**Topics**
+ [Container und Microservices](containersandmicroservices-pattern-list.md)
+ [Serverless](serverless-pattern-list.md)
+ [Netzwerk](networking-pattern-list.md)
+ [Bereitstellung von Inhalten](contentdelivery-pattern-list.md)

# Container und Microservices
<a name="containersandmicroservices-pattern-list"></a>

**Topics**
+ [Greifen Sie von einem Amazon EKS-Container aus auf eine Amazon Neptune-Datenbank zu](access-amazon-neptune-database-from-amazon-eks-container.md)
+ [Greifen Sie mithilfe von AWS PrivateLink und einem Network Load Balancer privat auf Container-Anwendungen auf Amazon ECS zu](access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.md)
+ [Greifen Sie privat auf Container-Anwendungen auf Amazon ECS zu, indem Sie AWS Fargate PrivateLink, AWS und einen Network Load Balancer verwenden](access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.md)
+ [Greifen Sie mit AWS PrivateLink und einem Network Load Balancer privat auf Container-Anwendungen auf Amazon EKS zu](access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer.md)
+ [Automatisieren Sie Backups für Amazon RDS for PostgreSQL PostgreSQL-DB-Instances mithilfe von AWS Batch](automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch.md)
+ [Automatisieren Sie die Bereitstellung von Node Termination Handler in Amazon EKS mithilfe einer CI/CD Pipeline](automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline.md)
+ [Automatisches Erstellen und Bereitstellen einer Java-Anwendung auf Amazon EKS mithilfe einer CI/CD Pipeline](automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.md)
+ [Kopieren Sie Amazon ECR-Container-Images zwischen und AWS-Konten AWS-Regionen](copy-ecr-container-images-across-accounts-regions.md)
+ [Erstellen Sie eine Amazon ECS-Aufgabendefinition und mounten Sie mithilfe von Amazon EFS ein Dateisystem auf EC2 Instances](create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs.md)
+ [Stellen Sie Lambda-Funktionen mit Container-Images bereit](deploy-lambda-functions-with-container-images.md)
+ [Bereitstellen von Java-Microservices auf Amazon ECS mithilfe von AWS Fargate](deploy-java-microservices-on-amazon-ecs-using-aws-fargate.md)
+ [Stellen Sie Kubernetes-Ressourcen und -Pakete mithilfe von Amazon EKS und einem Helm-Chart-Repository in Amazon S3 bereit](deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3.md)
+ [Stellen Sie mithilfe von Terraform einen CockroachDB-Cluster in Amazon EKS bereit](deploy-cockroachdb-on-eks-using-terraform.md)
+ [Stellen Sie einen Beispiel-Java-Microservice auf Amazon EKS bereit und machen Sie den Microservice mithilfe eines Application Load Balancer verfügbar](deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer.md)
+ [Stellen Sie eine GRPC-basierte Anwendung auf einem Amazon EKS-Cluster bereit und greifen Sie mit einem Application Load Balancer darauf zu](deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer.md)
+ [Stellen Sie containerisierte Anwendungen bereit, wenn AWS IoT Greengrass V2 sie als Docker-Container ausgeführt werden](deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.md)
+ [Container mithilfe von Elastic Beanstalk bereitstellen](deploy-containers-by-using-elastic-beanstalk.md)
+ [Generieren Sie eine statische ausgehende IP-Adresse mithilfe einer Lambda-Funktion, Amazon VPC und einer serverlosen Architektur](generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.md)
+ [Automatische Identifizierung doppelter Container-Images bei der Migration zu einem Amazon ECR-Repository](identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.md)
+ [Installieren Sie SSM Agent mithilfe von Kubernetes auf Amazon EKS-Worker-Knoten DaemonSet](install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset.md)
+ [Installieren Sie den SSM-Agent und den CloudWatch Agenten auf Amazon EKS-Worker-Knoten mit preBootstrapCommands](install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands.md)
+ [Migrieren Sie NGINX Ingress Controller, wenn Sie den Amazon EKS Auto Mode aktivieren](migrate-nginx-ingress-controller-eks-auto-mode.md)
+ [Migrieren Sie Ihre Container-Workloads von Azure Red Hat OpenShift (ARO) zu Red Hat OpenShift Service in AWS (ROSA)](migrate-container-workloads-from-aro-to-rosa.md)
+ [Führen Sie Amazon ECS-Aufgaben auf Amazon WorkSpaces mit Amazon ECS Anywhere aus](run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere.md)
+ [Führen Sie einen ASP.NET Core-Web-API-Docker-Container auf einer Amazon EC2 Linux-Instance aus](run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.md)
+ [Führen Sie statusbehaftete Workloads mit persistentem Datenspeicher aus, indem Sie Amazon EFS auf Amazon EKS mit AWS Fargate verwenden](run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate.md)
+ [Richten Sie ereignisgesteuertes Auto Scaling in Amazon EKS mithilfe von Amazon EKS Pod Identity und KEDA ein](event-driven-auto-scaling-with-eks-pod-identity-and-keda.md)
+ [Optimieren Sie PostgreSQL-Bereitstellungen auf Amazon EKS mithilfe von PGO](streamline-postgresql-deployments-amazon-eks-pgo.md)
+ [Vereinfachen Sie die Anwendungsauthentifizierung mit gegenseitigem TLS in Amazon ECS mithilfe von Application Load Balancer](simplify-application-authentication-with-mutual-tls-in-amazon-ecs.md)
+ [Mehr Muster](containersandmicroservices-more-patterns-pattern-list.md)

# Greifen Sie von einem Amazon EKS-Container aus auf eine Amazon Neptune-Datenbank zu
<a name="access-amazon-neptune-database-from-amazon-eks-container"></a>

*Ramakrishnan Palaninathan, Amazon Web Services*

## Zusammenfassung
<a name="access-amazon-neptune-database-from-amazon-eks-container-summary"></a>

Dieses Muster stellt eine Verbindung zwischen Amazon Neptune, einer vollständig verwalteten Graphdatenbank, und Amazon Elastic Kubernetes Service (Amazon EKS), einem Container-Orchestrierungsservice, her, um auf eine Neptune-Datenbank zuzugreifen. Neptune-DB-Cluster sind auf eine virtuelle private Cloud (VPC) beschränkt. AWS Aus diesem Grund erfordert der Zugriff auf Neptune eine sorgfältige Konfiguration der VPC, um Konnektivität zu ermöglichen.

Im Gegensatz zu Amazon Relational Database Service (Amazon RDS) für PostgreSQL ist Neptune nicht auf typische Datenbankzugriffsanmeldeinformationen angewiesen. Stattdessen verwendet es AWS Identity and Access Management (IAM) -Rollen für die Authentifizierung. Um von Amazon EKS aus eine Verbindung zu Neptune herzustellen, muss daher eine IAM-Rolle mit den erforderlichen Berechtigungen für den Zugriff auf Neptune eingerichtet werden.

Darüber hinaus sind Neptune-Endpoints nur innerhalb der VPC zugänglich, in der sich der Cluster befindet. Das bedeutet, dass Sie Netzwerkeinstellungen konfigurieren müssen, um die Kommunikation zwischen Amazon EKS und Neptune zu erleichtern. Abhängig von Ihren spezifischen Anforderungen und Netzwerkpräferenzen gibt es [verschiedene Ansätze zur Konfiguration der VPC, um](https://docs.aws.amazon.com/neptune/latest/userguide/get-started-vpc.html) eine nahtlose Konnektivität zwischen Neptune und Amazon EKS zu ermöglichen. Jede Methode bietet unterschiedliche Vorteile und Überlegungen, sodass Sie Ihre Datenbankarchitektur flexibel an die Anforderungen Ihrer Anwendung anpassen können.

## Voraussetzungen und Einschränkungen
<a name="access-amazon-neptune-database-from-amazon-eks-container-prereqs"></a>

**Voraussetzungen**
+ Installieren Sie die neueste Version von **kubectl** (siehe [Anweisungen](https://kubernetes.io/docs/tasks/tools/#kubectl)). Um deine Version zu überprüfen, führe folgenden Befehl aus: 

  ```
  kubectl version --short
  ```
+ Installieren Sie die neueste Version von **eksctl** (siehe [Anweisungen](https://eksctl.io/installation/)). Um deine Version zu überprüfen, führe folgenden Befehl aus: 

  ```
  eksctl info
  ```
+ Installieren Sie die neueste Version von AWS Command Line Interface (AWS CLI) Version 2 (siehe [Anweisungen](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)). Um Ihre Version zu überprüfen, führen Sie folgenden Befehl aus: 

  ```
  aws --version
  ```
+ Erstellen Sie einen Neptune-DB-Cluster (siehe [Anweisungen](https://docs.aws.amazon.com/neptune/latest/userguide/get-started-cfn-create.html)). Stellen Sie sicher, dass die Kommunikation zwischen der VPC des Clusters und Amazon EKS über [VPC-Peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) oder eine andere Methode hergestellt [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-getting-started.html)wird. Stellen Sie außerdem sicher, dass der Status des Clusters „verfügbar“ lautet und dass es für die Sicherheitsgruppe eine Regel für eingehenden Datenverkehr auf Port 8182 gibt.
+ [Konfigurieren Sie einen IAM OpenID Connect (OIDC) -Anbieter auf einem vorhandenen Amazon EKS-Cluster (siehe Anweisungen).](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html)

**Produktversionen**
+ [Amazon EKS 1,27](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)
+ [Version 1.3.0.0 der Amazon Neptune Neptune-Engine (15.11.2023)](https://docs.aws.amazon.com/neptune/latest/userguide/engine-releases-1.3.0.0.html)

## Architektur
<a name="access-amazon-neptune-database-from-amazon-eks-container-architecture"></a>

Das folgende Diagramm zeigt die Verbindung zwischen Kubernetes-Pods in einem Amazon EKS-Cluster und Neptune, um Zugriff auf eine Neptune-Datenbank zu ermöglichen.

![\[Pods in einem Kubernetes-Knoten mit Amazon Neptune verbinden.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/2fcf9e00-1664-462a-825e-b0fdd962f478/images/86da67e5-340e-4b29-acc6-2da416ce57eb.png)


**Automatisierung und Skalierung**

Sie können den Amazon EKS [Horizontal Pod Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/horizontal-pod-autoscaler.html) verwenden, um diese Lösung zu skalieren.

## Tools
<a name="access-amazon-neptune-database-from-amazon-eks-container-tools"></a>

**Services**
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html) ist ein Graphdatenbank-Service, mit dem Sie Anwendungen erstellen und ausführen können, die mit stark verbundenen Datensätzen arbeiten.

## Best Practices
<a name="access-amazon-neptune-database-from-amazon-eks-container-best-practices"></a>

Bewährte Methoden finden Sie unter [Identity and Access Management](https://aws.github.io/aws-eks-best-practices/security/docs/iam/) in den *Amazon EKS Best Practices Guides*.

## Epen
<a name="access-amazon-neptune-database-from-amazon-eks-container-epics"></a>

### Festlegen von Umgebungsvariablen
<a name="set-environment-variables"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie den Clusterkontext. | Bevor Sie mit Ihrem Amazon EKS-Cluster mithilfe von Helm oder anderen Befehlszeilentools interagieren, müssen Sie Umgebungsvariablen definieren, die die Details Ihres Clusters kapseln. Diese Variablen werden in nachfolgenden Befehlen verwendet, um sicherzustellen, dass sie auf den richtigen Cluster und die richtigen Ressourcen abzielen.Stellen Sie zunächst sicher, dass Sie im richtigen Clusterkontext arbeiten. Dadurch wird sichergestellt, dass alle nachfolgenden Befehle an den vorgesehenen Kubernetes-Cluster gesendet werden. Führen Sie den folgenden Befehl aus, um den aktuellen Kontext zu überprüfen.<pre>kubectl config current-context</pre> | AWS-Administrator, Cloud-Administrator | 
| Definieren Sie die `CLUSTER_NAME` Variable. | Definieren Sie die `CLUSTER_NAME` Umgebungsvariable für Ihren Amazon EKS-Cluster. Ersetzen Sie im folgenden Befehl den Beispielwert `us-west-2` durch den AWS-Region für Ihren Cluster korrekten Wert. Ersetzen Sie den Beispielwert `eks-workshop` durch Ihren vorhandenen Clusternamen.<pre>export CLUSTER_NAME=$(aws eks describe-cluster --region us-west-2 --name eks-workshop --query "cluster.name" --output text)</pre> | AWS-Administrator, Cloud-Administrator | 
| Ausgabe validieren. | Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Variablen richtig gesetzt wurden.<pre>echo $CLUSTER_NAME</pre>Stellen Sie sicher, dass die Ausgabe dieses Befehls mit der Eingabe übereinstimmt, die Sie im vorherigen Schritt angegeben haben. | AWS-Administrator, Cloud-Administrator | 

### Erstellen Sie eine IAM-Rolle und verknüpfen Sie sie mit Kubernetes
<a name="create-iam-role-and-associate-it-with-kubernetes"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ein -Service-Konto aktualisieren | Sie verwenden [IAM-Rollen für Dienstkonten](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html?sc_channel=el&sc_campaign=appswave&sc_content=eks-integrate-secrets-manager&sc_geo=mult&sc_country=mult&sc_outcome=acq), um Ihre Kubernetes-Servicekonten IAM-Rollen zuzuordnen, um ein detailliertes Berechtigungsmanagement für Ihre Anwendungen zu ermöglichen, die auf Amazon EKS ausgeführt werden. Sie können [eksctl](https://eksctl.io/) verwenden, um eine IAM-Rolle zu erstellen und einem bestimmten Kubernetes-Servicekonto in Ihrem Amazon EKS-Cluster zuzuordnen. Die AWS verwaltete Richtlinie `NeptuneFullAccess` ermöglicht Schreib- und Lesezugriff auf Ihren angegebenen Neptune-Cluster.Bevor Sie diese Befehle ausführen können, muss Ihrem Cluster ein [OIDC-Endpunkt](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html?sc_channel=el&sc_campaign=appswave&sc_content=eks-integrate-secrets-manager&sc_geo=mult&sc_country=mult&sc_outcome=acq) zugeordnet sein.Erstellen Sie ein Dienstkonto, das Sie einer AWS verwalteten Richtlinie mit dem Namen zuordnen möchten. `NeptuneFullAccess`<pre>eksctl create iamserviceaccount --name eks-neptune-sa --namespace default --cluster $CLUSTER_NAME --attach-policy-arn arn:aws:iam::aws:policy/NeptuneFullAccess --approve --override-existing-serviceaccounts</pre>wo `eks-neptune-sa ` ist der Name des Dienstkontos, das Sie erstellen möchten.Nach Abschluss zeigt dieser Befehl die folgende Antwort an:<pre>2024-02-07 01:12:39 [ℹ] created serviceaccount "default/eks-neptune-sa"</pre> | AWS-Administrator, Cloud-Administrator | 
| Stellen Sie sicher, dass das Konto ordnungsgemäß eingerichtet ist. | Stellen Sie sicher, dass das `eks-neptune-sa` Dienstkonto im Standard-Namespace in Ihrem Cluster korrekt eingerichtet ist.<pre>kubectl get sa eks-neptune-sa -o yaml</pre>Die Ausgabe sollte in etwa wie folgt aussehen:<pre>apiVersion: v1<br />kind: ServiceAccount<br />metadata:<br />  annotations:<br />    eks.amazonaws.com/role-arn: arn:aws:iam::123456789123:role/eksctl-eks-workshop-addon-iamserviceaccount-d-Role1-Q35yKgdQOlmM<br />  creationTimestamp: "2024-02-07T01:12:39Z"<br />  labels:<br />    app.kubernetes.io/managed-by: eksctl<br />  name: eks-neptune-sa<br />  namespace: default<br />  resourceVersion: "5174750"<br />  uid: cd6ba2f7-a0f5-40e1-a6f4-4081e0042316</pre> | AWS-Administrator, Cloud-Administrator | 
| Überprüfen Sie die Konnektivität. | Stellen Sie einen Beispiel-Pod bereit, der aufgerufen wurde, `pod-util` und überprüfen Sie die Konnektivität mit Neptune.<pre>apiVersion: v1<br />kind: Pod<br />metadata:<br />  name: pod-util<br />  namespace: default<br />spec:<br />  serviceAccountName: eks-neptune-sa<br />  containers:<br />  - name: pod-util<br />    image: public.ecr.aws/patrickc/troubleshoot-util<br />    command:<br />      - sleep<br />      - "3600"<br />    imagePullPolicy: IfNotPresent</pre><pre>kubectl apply -f pod-util.yaml</pre><pre>kubectl exec --stdin --tty pod-util -- /bin/bash<br />bash-5.1# curl -X POST -d '{"gremlin":"g.V().limit(1)"}' https://db-neptune-1.cluster-xxxxxxxxxxxx.us-west-2.neptune.amazonaws.com:8182/gremlin<br />{"requestId":"a4964f2d-12b1-4ed3-8a14-eff511431a0e","status":{"message":"","code":200,"attributes":{"@type":"g:Map","@value":[]}},"result":{"data":{"@type":"g:List","@value":[]},"meta":{"@type":"g:Map","@value":[]}}}<br />bash-5.1# exit<br />exit</pre> | AWS-Administrator, Cloud-Administrator | 

### Überprüfen Sie die Verbindungsaktivität
<a name="validate-connection-activity"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktivieren Sie die IAM-Datenbankauthentifizierung. | Standardmäßig ist die IAM-Datenbankauthentifizierung deaktiviert, wenn Sie einen Neptune-DB-Cluster erstellen. Sie können die IAM-Datenbankauthentifizierung aktivieren oder deaktivieren, indem Sie den verwenden. AWS-ManagementkonsoleFolgen Sie den Schritten in der AWS Dokumentation, um die [IAM-Datenbankauthentifizierung in Neptune zu aktivieren](https://docs.aws.amazon.com/neptune/latest/userguide/iam-auth-enable.html). | AWS-Administrator, Cloud-Administrator | 
| Überprüfen Sie die Verbindungen. | In diesem Schritt interagieren Sie mit dem `pod-util` Container, der sich bereits im Ausführungsstatus befindet, um **awscurl** zu installieren und die Verbindung zu überprüfen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-amazon-neptune-database-from-amazon-eks-container.html) | AWS-Administrator, Cloud-Administrator | 

## Fehlerbehebung
<a name="access-amazon-neptune-database-from-amazon-eks-container-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Ich kann nicht auf die Neptun-Datenbank zugreifen. | Überprüfen Sie die IAM-Richtlinie, die mit dem Dienstkonto verknüpft ist. Stellen Sie sicher, dass sie die erforderlichen Aktionen (z. B.`neptune:Connec,neptune:DescribeDBInstances`) für die Operationen, die Sie ausführen möchten, zulässt. | 

## Zugehörige Ressourcen
<a name="access-amazon-neptune-database-from-amazon-eks-container-resources"></a>
+ [Kubernetes-Workloads Zugriff auf die AWS Nutzung von Kubernetes-Servicekonten gewähren](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html) (Amazon EKS-Dokumentation)
+ [IAM-Rollen für Dienstkonten](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) (Amazon EKS-Dokumentation)
+ [Einen neuen Neptune-DB-Cluster erstellen (Amazon Neptune Neptune-Dokumentation](https://docs.aws.amazon.com/neptune/latest/userguide/get-started-create-cluster.html))

# Greifen Sie mithilfe von AWS PrivateLink und einem Network Load Balancer privat auf Container-Anwendungen auf Amazon ECS zu
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer"></a>

*Kirankumar Chandrashekar, Amazon Web Services*

## Zusammenfassung
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-summary"></a>

Dieses Muster beschreibt, wie Sie eine Docker-Container-Anwendung privat auf Amazon Elastic Container Service (Amazon ECS) hinter einem Network Load Balancer hosten und mithilfe von AWS auf die Anwendung zugreifen. PrivateLink Sie können dann ein privates Netzwerk verwenden, um sicher auf Dienste in der Amazon Web Services (AWS) Cloud zuzugreifen. Amazon Relational Database Service (Amazon RDS) hostet die relationale Datenbank für die Anwendung, die auf Amazon ECS mit hoher Verfügbarkeit (HA) ausgeführt wird. Amazon Elastic File System (Amazon EFS) wird verwendet, wenn die Anwendung persistenten Speicher benötigt.

Der Amazon ECS-Service, auf dem die Docker-Anwendungen ausgeführt werden, mit einem Network Load Balancer am Frontend kann mit einem Virtual Private Cloud (VPC) -Endpunkt für den Zugriff über AWS verknüpft werden. PrivateLink Dieser VPC-Endpunktdienst kann dann mit anderen gemeinsam genutzt werden, VPCs indem deren VPC-Endpunkte verwendet werden.

Sie können auch [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) anstelle einer Amazon EC2 Auto Scaling Scaling-Gruppe verwenden. Weitere Informationen finden Sie unter [Privaten Zugriff auf Containeranwendungen auf Amazon ECS mithilfe von AWS Fargate PrivateLink, AWS und einem Network Load Balancer](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html?did=pg_card).

## Voraussetzungen und Einschränkungen
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ [AWS-Befehlszeilenschnittstelle (AWS CLI) Version 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html), installiert und konfiguriert unter Linux, macOS oder Windows
+ [Docker](https://www.docker.com/), installiert und konfiguriert unter Linux, MacOS oder Windows
+ Eine Anwendung, die auf Docker läuft

## Architektur
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-architecture"></a>

![\[Verwenden von AWS PrivateLink für den Zugriff auf eine Container-App auf Amazon ECS hinter einem Network Load Balancer.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a316bf46-24db-4514-957d-abc60f8f6962/images/573951ed-74bb-4023-9d9c-43e77e4f8eda.png)


 

**Technologie-Stack**
+ Amazon CloudWatch
+ Amazon Elastic Compute Cloud (Amazon EC2)
+ Amazon EC2 Auto Scaling
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon ECS
+ Amazon RDS
+ Amazon Simple Storage Service (Amazon-S3)
+ AWS Lambda
+ AWS PrivateLink
+ AWS Secrets Manager
+ Application Load Balancer
+ Network Load Balancer
+ VPC

*Automatisierung und Skalierung*
+ Sie können [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) verwenden CloudFormation, um dieses Muster mithilfe von [Infrastructure as Code](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) zu erstellen.

## Tools
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-tools"></a>
+ [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) — Amazon Elastic Compute Cloud (Amazon EC2) bietet skalierbare Rechenkapazität in der AWS-Cloud.
+ [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) — Amazon EC2 Auto Scaling hilft Ihnen sicherzustellen, dass Ihnen die richtige Anzahl von EC2 Amazon-Instances zur Verfügung steht, um die Last für Ihre Anwendung zu bewältigen.
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) — Amazon Elastic Container Service (Amazon ECS) ist ein hoch skalierbarer, schneller Container-Management-Service, der es einfach macht, Container in einem Cluster auszuführen, zu stoppen und zu verwalten.
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) — Amazon Elastic Container Registry (Amazon ECR) ist ein verwalteter AWS-Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) — Amazon Elastic File System (Amazon EFS) bietet ein einfaches, skalierbares, vollständig verwaltetes elastisches NFS-Dateisystem zur Verwendung mit AWS-Cloud-Services und lokalen Ressourcen.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) — Lambda ist ein Rechenservice zum Ausführen von Code ohne Bereitstellung oder Verwaltung von Servern.
+ [Amazon RDS](https://docs.aws.amazon.com/rds/) — Amazon Relational Database Service (Amazon RDS) ist ein Webservice, der die Einrichtung, den Betrieb und die Skalierung einer relationalen Datenbank in der AWS-Cloud erleichtert.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) ist Speicher für das Internet. Der Service ist darauf ausgelegt, Cloud Computing für Entwickler zu erleichtern.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) — Secrets Manager hilft Ihnen dabei, hartcodierte Anmeldeinformationen in Ihrem Code, einschließlich Passwörter, zu ersetzen, indem es einen API-Aufruf an Secrets Manager bereitstellt, um das Geheimnis programmgesteuert abzurufen.
+ [Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) — Amazon Virtual Private Cloud (Amazon VPC) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) — Elastic Load Balancing verteilt eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele, wie EC2 Amazon-Instances, Container und IP-Adressen, in mehreren Availability Zones.
+ [Docker](https://www.docker.com/) — Docker hilft Entwicklern dabei, jede Anwendung als leichten, portablen und autarken Container zu packen, zu versenden und auszuführen.

## Epen
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-epics"></a>

### Netzwerkkomponenten erstellen
<a name="create-networking-components"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine VPC. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 

### Erstellen Sie die Load Balancer
<a name="create-the-load-balancers"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Network Load Balancer.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Erstellen Sie einen Application Load Balancer. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 

### Erstellen eines Amazon EFS-Dateisystems
<a name="create-an-amazon-efs-file-system"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Amazon EFS-Dateisystem. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Mounten Sie Ziele für die Subnetze. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Stellen Sie sicher, dass die Subnetze als Ziele bereitgestellt sind.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 

### Erstellen eines S3-Buckets
<a name="create-an-s3-bucket"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen S3-Bucket.  | Öffnen Sie die Amazon S3 S3-Konsole und erstellen Sie bei Bedarf einen S3-Bucket, um die statischen Ressourcen Ihrer Anwendung zu speichern. | Cloud-Administrator | 

### Ein Secrets Manager Manager-Geheimnis erstellen
<a name="create-a-secrets-manager-secret"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen AWS-KMS-Schlüssel, um das Secrets Manager Manager-Geheimnis zu verschlüsseln. | Öffnen Sie die AWS Key Management Service (AWS KMS) -Konsole und erstellen Sie einen KMS-Schlüssel. | Cloud-Administrator | 
|  Erstellen Sie ein Secrets Manager Manager-Geheimnis, um das Amazon RDS-Passwort zu speichern. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator  | 

### Eine Amazon RDS-Instance erstellen
<a name="create-an-amazon-rds-instance"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen einer DB-Subnetzgruppe  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Erstellen Sie eine Amazon RDS-Instance. | Erstellen und konfigurieren Sie eine Amazon RDS-Instance in den privaten Subnetzen. Stellen Sie sicher, dass **Multi-AZ** für HA aktiviert ist. | Cloud-Administrator | 
| Laden Sie Daten in die Amazon RDS-Instance.  | Laden Sie die für Ihre Anwendung erforderlichen relationalen Daten in Ihre Amazon RDS-Instance. Dieser Prozess hängt von den Anforderungen Ihrer Anwendung sowie davon ab, wie Ihr Datenbankschema definiert und entworfen ist. | Cloud-Administrator, DBA | 

### Erstellen Sie die Amazon ECS-Komponenten
<a name="create-the-amazon-ecs-components"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen ECS-Cluster. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Erstellen Sie die Docker-Images.  | Erstellen Sie die Docker-Images, indem Sie den Anweisungen im Abschnitt *Verwandte Ressourcen* folgen. | Cloud-Administrator | 
| Erstellen Sie Amazon ECR-Repositorys. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator, DevOps Ingenieur | 
| Authentifizieren Sie Ihren Docker-Client für das Amazon ECR-Repository.  | Um Ihren Docker-Client für das Amazon ECR-Repository zu authentifizieren, führen Sie den `aws ecr get-login-password` Befehl "in der AWS-CLI aus. | Cloud-Administrator | 
| Übertragen Sie die Docker-Images in das Amazon ECR-Repository.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Erstellen Sie eine Amazon ECS-Aufgabendefinition.  | Eine Aufgabendefinition ist erforderlich, um Docker-Container in Amazon ECS auszuführen. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html)Hilfe beim Einrichten Ihrer Aufgabendefinition finden Sie unter „Eine Aufgabendefinition erstellen“ im Abschnitt *Verwandte Ressourcen*. Stellen Sie sicher, dass Sie die Docker-Images bereitstellen, die Sie an Amazon ECR übertragen haben. | Cloud-Administrator | 
| Erstellen Sie einen Amazon-ECS-Service.  | Erstellen Sie einen Amazon ECS-Service mithilfe des ECS-Clusters, den Sie zuvor erstellt haben. Stellen Sie sicher, dass Sie Amazon EC2 als Starttyp und die im vorherigen Schritt erstellte Aufgabendefinition sowie die Zielgruppe des Application Load Balancer auswählen. | Cloud-Administrator | 

### Eine Amazon EC2 Auto Scaling Scaling-Gruppe erstellen
<a name="create-an-amazon-ec2-auto-scaling-group"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen einer Startkonfiguration | Öffnen Sie die EC2 Amazon-Konsole und erstellen Sie eine Startkonfiguration. Stellen Sie sicher, dass die Benutzerdaten den Code enthalten, der es den EC2 Instances ermöglicht, dem gewünschten ECS-Cluster beizutreten. Ein Beispiel für den erforderlichen Code finden Sie im Abschnitt *Verwandte Ressourcen*. | Cloud-Administrator | 
| Erstellen Sie eine Amazon EC2 Auto Scaling Scaling-Gruppe.  | Kehren Sie zur EC2 Amazon-Konsole zurück und wählen Sie unter **Auto Scaling** die Option **Auto Scaling Scaling-Gruppen** aus. Richten Sie eine Amazon EC2 Auto Scaling Scaling-Gruppe ein. Stellen Sie sicher, dass Sie die privaten Subnetze auswählen und die Konfiguration starten, die Sie zuvor erstellt haben. | Cloud-Administrator | 

### AWS einrichten PrivateLink
<a name="set-up-aws-privatelink"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie den PrivateLink AWS-Endpunkt ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html)Weitere Informationen finden Sie im Abschnitt *Verwandte Ressourcen*. | Cloud-Administrator | 

### Erstellen eines VPC-Endpunkts
<a name="create-a-vpc-endpoint"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen VPC-Endpunkt. | Erstellen Sie einen VPC-Endpunkt für den PrivateLink AWS-Endpunkt, den Sie zuvor erstellt haben. Der vollqualifizierte Domainname (FQDN) des VPC-Endpunkts zeigt auf den PrivateLink AWS-Endpunkt-FQDN. Dadurch wird eine elastic network interface zum VPC-Endpunktdienst erstellt, auf die die DNS-Endpunkte zugreifen können. | Cloud-Administrator | 

### So erstellen Sie die Lambda-Funktion:
<a name="create-the-lambda-function"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| So erstellen Sie die Lambda-Funktion: | Erstellen Sie auf der AWS Lambda Lambda-Konsole eine Lambda-Funktion, um die IP-Adressen des Application Load Balancer als Ziele für den Network Load Balancer zu aktualisieren. Weitere Informationen dazu finden Sie im Blogbeitrag [Verwenden von AWS Lambda zur Aktivierung statischer IP-Adressen für Application Load Balancers](https://aws.amazon.com/blogs/networking-and-content-delivery/using-aws-lambda-to-enable-static-ip-addresses-for-application-load-balancers/). | App-Developer | 

## Zugehörige Ressourcen
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer-resources"></a>

**Erstellen Sie die Load Balancer:**
+ [Verwenden Sie einen Network Load Balancer für Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/nlb.html)
+ [Einen Network Load Balancer erstellen](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html)
+ [Verwenden Sie einen Application Load Balancer für Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/alb.html)
+ [Erstellen Sie einen Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)

**Erstellen Sie ein Amazon EFS-Dateisystem:**
+ [Erstellen Sie ein Amazon EFS-Dateisystem](https://docs.aws.amazon.com/efs/latest/ug/creating-using-create-fs.html)
+ [Bereitstellungsziele in Amazon EFS erstellen](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs.html)

**Erstellen Sie einen S3-Bucket:**
+ [Erstellen Sie einen S3-Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#creating-bucket)

**Erstellen Sie ein Secrets Manager Manager-Geheimnis:**
+ [Schlüssel in AWS KMS erstellen](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)
+ [Erstellen Sie ein Geheimnis in AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)

**Erstellen Sie eine Amazon RDS-Instance:**
+ [Eine Amazon RDS-DB-Instance erstellen](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)

**Erstellen Sie die Amazon ECS-Komponenten:**
+ [Erstellen Sie einen Amazon ECS-Cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-ec2-cluster-console-v2.html)
+ [Erstellen Sie ein Docker-Image](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-container-image.html)
+ [Erstellen Sie ein Amazon ECR-Repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)
+ [Authentifizieren Sie Docker mit dem Amazon ECR-Repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth)
+ [Ein Bild in ein Amazon ECR-Repository übertragen](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)
+ [Amazon ECS-Aufgabendefinition erstellen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)
+ [Einen Amazon ECS-Service erstellen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-console-v2.html)

**Erstellen Sie eine Amazon EC2 Auto Scaling Scaling-Gruppe:**
+ [Erstellen Sie eine Startkonfiguration](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-config.html)
+ [Erstellen einer Auto-Scaling-Gruppe mithilfe einer Startkonfiguration](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg.html)
+ [Bootstrap-Container-Instances mit EC2 Amazon-Benutzerdaten](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html)

**AWS einrichten PrivateLink:**
+ [VPC-Endpunktdienste (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html)

**Erstellen Sie einen VPC-Endpunkt:**
+ [Schnittstelle VPC-Endpunkte (AWS) PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)

**Erstellen Sie die Lambda-Funktion:**
+ [Erstellen Sie eine Lambda-Funktion](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)

**Andere Ressourcen:**
+ [Verwendung statischer IP-Adressen für Application Load Balancer](https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/)
+ [Sicherer Zugriff auf Services über AWS PrivateLink](https://d1.awsstatic.com/whitepapers/aws-privatelink.pdf)

# Greifen Sie privat auf Container-Anwendungen auf Amazon ECS zu, indem Sie AWS Fargate PrivateLink, AWS und einen Network Load Balancer verwenden
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer"></a>

*Kirankumar Chandrashekar, Amazon Web Services*

## Zusammenfassung
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer-summary"></a>

Dieses Muster beschreibt, wie Sie eine Docker-Container-Anwendung privat in der Amazon Web Services (AWS) -Cloud hosten, indem Sie Amazon Elastic Container Service (Amazon ECS) mit einem AWS Fargate-Starttyp hinter einem Network Load Balancer verwenden und mithilfe von AWS auf die Anwendung zugreifen. PrivateLink Amazon Relational Database Service (Amazon RDS) hostet die relationale Datenbank für die Anwendung, die auf Amazon ECS mit hoher Verfügbarkeit (HA) ausgeführt wird. Sie können Amazon Elastic File System (Amazon EFS) verwenden, wenn die Anwendung persistenten Speicher benötigt.

Dieses Muster verwendet einen [Fargate-Starttyp](https://docs.aws.amazon.com/AmazonECS/latest/userguide/launch_types.html) für den Amazon ECS-Service, auf dem die Docker-Anwendungen ausgeführt werden, mit einem Network Load Balancer am Frontend. Es kann dann mit einem Virtual Private Cloud (VPC) -Endpunkt für den Zugriff über AWS PrivateLink verknüpft werden. Dieser VPC-Endpunktdienst kann dann mit anderen gemeinsam genutzt werden, VPCs indem deren VPC-Endpunkte verwendet werden.

Sie können Fargate mit Amazon ECS verwenden, um Container auszuführen, ohne Server oder Cluster von Amazon Elastic Compute Cloud (Amazon EC2) -Instances verwalten zu müssen. Sie können anstelle von Fargate auch eine Amazon EC2 Auto Scaling Scaling-Gruppe verwenden. Weitere Informationen finden Sie unter [Privaten Zugriff auf Containeranwendungen auf Amazon ECS mithilfe von AWS PrivateLink und einem Network Load Balancer](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.html?did=pg_card&trk=pg_card).

## Voraussetzungen und Einschränkungen
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ [AWS-Befehlszeilenschnittstelle (AWS CLI) Version 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html), installiert und konfiguriert unter Linux, macOS oder Windows
+ [Docker](https://www.docker.com/), installiert und konfiguriert unter Linux, MacOS oder Windows
+ Eine Anwendung, die auf Docker läuft

## Architektur
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer-architecture"></a>

![\[Wird PrivateLink für den Zugriff auf eine Container-App auf Amazon ECS mit einem AWS Fargate-Starttyp verwendet.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/31cca5e2-8d8b-45ec-b872-a06b0dd97007/images/57cc9995-45f4-4039-a0bf-2d2b3d6a05de.png)


**Technologie-Stack**
+ Amazon CloudWatch
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon ECS
+ Amazon EFS
+ Amazon RDS
+ Amazon Simple Storage Service (Amazon-S3)
+ AWS Fargate
+ AWS PrivateLink
+ AWS Secrets Manager
+ Application Load Balancer
+ Network Load Balancer
+ VPC

**Automatisierung und Skalierung**
+ Sie können [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) verwenden CloudFormation, um dieses Muster mithilfe von [Infrastructure as Code](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) zu erstellen.

## Tools
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer-tools"></a>

**AWS-Services**
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter AWS-Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) ist ein hoch skalierbarer, schneller Container-Management-Service, der das Ausführen, Stoppen und Verwalten von Containern in einem Cluster vereinfacht.
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) bietet ein einfaches, skalierbares, vollständig verwaltetes elastisches NFS-Dateisystem zur Verwendung mit AWS-Cloud-Services und lokalen Ressourcen.
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)ist eine Technologie, die Sie mit Amazon ECS verwenden können, um Container auszuführen, ohne Server oder Cluster von EC2 Amazon-Instances verwalten zu müssen.
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/rds/index.html) ist ein Webservice, der die Einrichtung, den Betrieb und die Skalierung einer relationalen Datenbank in der erleichtert. AWS Cloud
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist Speicher für das Internet. Der Service ist darauf ausgelegt, Cloud Computing für Entwickler zu erleichtern.
+ Mit [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/) können Sie fest codierte Anmeldeinformationen im Code (einschließlich Passwörter) durch einen API-Aufruf an Secrets Manager ersetzen und das Geheimnis programmgesteuert abrufen.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) verteilt eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele wie EC2 Instances, Container und IP-Adressen in mehreren Availability Zones.

**Andere Tools**
+ [Docker](https://www.docker.com/) hilft Entwicklern dabei, jede Anwendung einfach als leichten, tragbaren und autarken Container zu packen, zu versenden und auszuführen.

## Epen
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer-epics"></a>

### Netzwerkkomponenten erstellen
<a name="create-networking-components"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine VPC. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 

### Erstellen Sie die Load Balancer
<a name="create-the-load-balancers"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Network Load Balancer.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html)Hilfe zu dieser und anderen Geschichten finden Sie im Abschnitt *Verwandte Ressourcen*. | Cloud-Administrator | 
| Erstellen Sie einen Application Load Balancer. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 

### Erstellen eines Amazon EFS-Dateisystems
<a name="create-an-amazon-efs-file-system"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Amazon EFS-Dateisystem. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Mounten Sie Ziele für die Subnetze. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Stellen Sie sicher, dass die Subnetze als Ziele bereitgestellt sind.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 

### Erstellen eines S3-Buckets
<a name="create-an-s3-bucket"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen S3-Bucket. | Öffnen Sie die Amazon S3 S3-Konsole und [erstellen Sie bei Bedarf einen S3-Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#creating-bucket), um die statischen Ressourcen Ihrer Anwendung zu speichern. | Cloud-Administrator | 

### Ein Secrets Manager Manager-Geheimnis erstellen
<a name="create-a-secrets-manager-secret"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  Erstellen Sie einen AWS-KMS-Schlüssel, um das Secrets Manager Manager-Geheimnis zu verschlüsseln. | Öffnen Sie die AWS Key Management Service (AWS KMS) -Konsole und erstellen Sie einen KMS-Schlüssel. | Cloud-Administrator | 
|  Erstellen Sie ein Secrets Manager Manager-Geheimnis, um das Amazon RDS-Passwort zu speichern. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 

### Eine Amazon RDS-Instance erstellen
<a name="create-an-amazon-rds-instance"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen einer DB-Subnetzgruppe  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Erstellen Sie eine Amazon RDS-Instance. | Erstellen und konfigurieren Sie eine Amazon RDS-Instance in den privaten Subnetzen. Stellen Sie sicher, dass **Multi-AZ** für Hochverfügbarkeit (HA) aktiviert ist. | Cloud-Administrator | 
| Laden Sie Daten in die Amazon RDS-Instance.  | Laden Sie die für Ihre Anwendung erforderlichen relationalen Daten in Ihre Amazon RDS-Instance. Dieser Prozess hängt von den Anforderungen Ihrer Anwendung sowie davon ab, wie Ihr Datenbankschema definiert und entworfen ist. | DBA | 

### Erstellen Sie die Amazon ECS-Komponenten
<a name="create-the-amazon-ecs-components"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen ECS-Cluster. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Erstellen Sie die Docker-Images. | [Erstellen Sie die Docker-Images, indem Sie den Anweisungen in der AWS Dokumentation folgen.](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-container-image.html) | Cloud-Administrator | 
| Erstellen Sie ein Amazon-ECR-Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator, DevOps Ingenieur | 
| Übertragen Sie die Docker-Images in das Amazon ECR-Repository.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 
| Erstellen Sie eine Amazon ECS-Aufgabendefinition.  | Eine Aufgabendefinition ist erforderlich, um Docker-Container in Amazon ECS auszuführen. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html)Hilfe beim Einrichten Ihrer Aufgabendefinition finden Sie unter „Eine Aufgabendefinition erstellen“ im Abschnitt *Verwandte Ressourcen*. Stellen Sie sicher, dass Sie die Docker-Images bereitstellen, die Sie an Amazon ECR übertragen haben. | Cloud-Administrator | 
| Erstellen Sie einen ECS-Service und wählen Sie Fargate als Starttyp. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 

### AWS einrichten PrivateLink
<a name="set-up-aws-privatelink"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie den PrivateLink AWS-Endpunkt ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.html) | Cloud-Administrator | 

### Erstellen eines VPC-Endpunkts
<a name="create-a-vpc-endpoint"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen VPC-Endpunkt. | [Erstellen Sie einen VPC-Endpunkt](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) für den PrivateLink AWS-Endpunkt, den Sie zuvor erstellt haben. Der vollqualifizierte Domainname (FQDN) des VPC-Endpunkts zeigt auf den PrivateLink AWS-Endpunkt-FQDN. Dadurch wird eine elastic network interface zum VPC-Endpunktdienst erstellt, auf die die Domain Name Service-Endpunkte zugreifen können. | Cloud-Administrator | 

### Legen Sie das Ziel fest
<a name="set-the-target"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie den Application Load Balancer als Ziel hinzu. | [Folgen Sie den Anweisungen in der Dokumentation, um den Application Load Balancer als Ziel für den Network Load Balancer hinzuzufügen.AWS](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/application-load-balancer-target.html) | App-Developer | 

## Zugehörige Ressourcen
<a name="access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer-resources"></a>

**Erstellen Sie die Load Balancer:**
+ [Verwenden Sie einen Network Load Balancer für Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/nlb.html)
+ [Einen Network Load Balancer erstellen](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html)
+ [Verwenden Sie einen Application Load Balancer für Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/alb.html)
+ [Erstellen Sie einen Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)

**Erstellen Sie ein Amazon EFS-Dateisystem:**
+ [Erstellen Sie ein Amazon EFS-Dateisystem](https://docs.aws.amazon.com/efs/latest/ug/creating-using-create-fs.html)
+ [Bereitstellungsziele in Amazon EFS erstellen](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs.html)

**Erstellen Sie ein Secrets Manager Manager-Geheimnis:**
+ [Schlüssel in AWS KMS erstellen](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)
+ [Erstellen Sie ein Geheimnis in AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)

**Erstellen Sie eine Amazon RDS-Instance:**
+ [Eine Amazon RDS-DB-Instance erstellen](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)

**Erstellen Sie die Amazon ECS-Komponenten**
+ [Erstellen Sie ein Amazon ECR-Repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)
+ [Authentifizieren Sie Docker mit dem Amazon ECR-Repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth)
+ [Ein Bild in ein Amazon ECR-Repository übertragen](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)
+ [Amazon ECS-Aufgabendefinition erstellen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)
+ [Einen Amazon ECS-Service erstellen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-console-v2.html)

**Andere Ressourcen:**
+ [Sicherer Zugriff auf Services über AWS PrivateLink](https://d1.awsstatic.com/whitepapers/aws-privatelink.pdf)

# Greifen Sie mit AWS PrivateLink und einem Network Load Balancer privat auf Container-Anwendungen auf Amazon EKS zu
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer"></a>

*Kirankumar Chandrashekar, Amazon Web Services*

## Zusammenfassung
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-summary"></a>

Dieses Muster beschreibt, wie Sie eine Docker-Container-Anwendung privat auf Amazon Elastic Kubernetes Service (Amazon EKS) hinter einem Network Load Balancer hosten und mithilfe von AWS auf die Anwendung zugreifen. PrivateLink Sie können dann ein privates Netzwerk verwenden, um sicher auf Dienste in der Amazon Web Services (AWS) Cloud zuzugreifen. 

Der Amazon EKS-Cluster, auf dem die Docker-Anwendungen ausgeführt werden, mit einem Network Load Balancer am Frontend kann mit einem Virtual Private Cloud (VPC) -Endpunkt für den Zugriff über AWS verknüpft werden. PrivateLink Dieser VPC-Endpunktdienst kann dann mit anderen gemeinsam genutzt werden, VPCs indem deren VPC-Endpunkte verwendet werden.

Das in diesem Muster beschriebene Setup ist eine sichere Methode, um den Anwendungszugriff zwischen VPCs AWS-Konten gemeinsam zu nutzen. Es sind keine speziellen Konnektivitäts- oder Routing-Konfigurationen erforderlich, da die Verbindung zwischen den Kunden- und Anbieterkonten auf dem globalen AWS-Backbone erfolgt und nicht über das öffentliche Internet erfolgt.

## Voraussetzungen und Einschränkungen
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-prereqs"></a>

**Voraussetzungen**
+ [Docker](https://www.docker.com/), installiert und konfiguriert unter Linux, MacOS oder Windows.
+ Eine Anwendung, die auf Docker läuft.
+ Ein aktives AWS-Konto.
+ [AWS-Befehlszeilenschnittstelle (AWS CLI) Version 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html), installiert und konfiguriert unter Linux, macOS oder Windows.
+ Ein vorhandener Amazon EKS-Cluster mit markierten privaten Subnetzen, der für das Hosten von Anwendungen konfiguriert ist. Weitere Informationen finden Sie unter [Subnet-Tagging](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html#vpc-subnet-tagging) in der Amazon EKS-Dokumentation. 
+ Kubectl, installiert und konfiguriert für den Zugriff auf Ressourcen in Ihrem Amazon EKS-Cluster. Weitere Informationen finden Sie unter [Installation von kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) in der Amazon EKS-Dokumentation. 

## Architektur
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-architecture"></a>

![\[Verwenden Sie PrivateLink und einen Network Load Balancer, um auf eine Anwendung in einem Amazon EKS-Container zuzugreifen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/ce977924-012c-4fb6-8e51-94d6e5c829a6/images/378456a3-f4d1-4a57-bb36-879c240cabfb.png)


**Technologie-Stack**
+ Amazon EKS
+ AWS PrivateLink
+ Network Load Balancer

**Automatisierung und Skalierung**
+ Kubernetes-Manifeste können in einem Git-basierten Repository verfolgt und verwaltet und mithilfe von Continuous Integration and Continuous Delivery (CI/CD) in AWS bereitgestellt werden. CodePipeline 
+ Sie können AWS verwenden CloudFormation , um dieses Muster mithilfe von Infrastructure as Code (IaC) zu erstellen.

## Tools
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-tools"></a>
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) — AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) — Elastic Load Balancing verteilt eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele, wie Amazon Elastic Compute Cloud (Amazon EC2) -Instances, Container und IP-Adressen, in einer oder mehreren Availability Zones.
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) — Amazon Elastic Kubernetes Service (Amazon EKS) ist ein verwalteter Service, mit dem Sie Kubernetes auf AWS ausführen können, ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren, betreiben und warten zu müssen.
+ [Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) — Amazon Virtual Private Cloud (Amazon VPC) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten.
+ [Kubectl — Kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) ist ein Befehlszeilenprogramm zum Ausführen von Befehlen für Kubernetes-Cluster.

## Epen
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-epics"></a>

### Stellen Sie die Kubernetes-Bereitstellungs- und Service-Manifestdateien bereit
<a name="deploy-the-kubernetes-deployment-and-service-manifest-files"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  Erstellen Sie die Manifestdatei für die Kubernetes-Bereitstellung. | Erstellen Sie eine Bereitstellungsmanifestdatei, indem Sie die folgende Beispieldatei Ihren Anforderungen entsprechend ändern.<pre>apiVersion: apps/v1<br />kind: Deployment<br />metadata:<br />  name: sample-app<br />spec:<br />  replicas: 3<br />  selector:<br />    matchLabels:<br />      app: nginx<br />  template:<br />    metadata:<br />      labels:<br />        app: nginx<br />    spec:<br />      containers:<br />        - name: nginx<br />          image: public.ecr.aws/z9d2n7e1/nginx:1.19.5<br />          ports:<br />            - name: http<br />              containerPort: 80</pre>Dies ist eine NGINX-Beispielkonfigurationsdatei, die mithilfe des NGINX-Docker-Images bereitgestellt wird. Weitere Informationen finden Sie in der Docker-Dokumentation unter [So verwenden Sie das offizielle NGINX-Docker-Image](https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/). | DevOps Ingenieur | 
| Stellen Sie die Kubernetes-Bereitstellungsmanifestdatei bereit. | Führen Sie den folgenden Befehl aus, um die Bereitstellungsmanifestdatei auf Ihren Amazon EKS-Cluster anzuwenden:`kubectl apply –f <your_deployment_file_name> ` | DevOps Ingenieur | 
|  Erstellen Sie die Manifestdatei des Kubernetes-Dienstes.  | Erstellen Sie eine Dienstmanifestdatei, indem Sie die folgende Beispieldatei Ihren Anforderungen entsprechend ändern.<pre>apiVersion: v1<br />kind: Service<br />metadata:<br />  name: sample-service<br />  annotations:<br />    service.beta.kubernetes.io/aws-load-balancer-type: nlb<br />    service.beta.kubernetes.io/aws-load-balancer-internal: "true"<br />spec:<br />  ports:<br />    - port: 80<br />      targetPort: 80<br />      protocol: TCP<br />  type: LoadBalancer<br />  selector:<br />    app: nginx</pre>Stellen Sie sicher, dass Sie Folgendes angegeben haben`annotations`, um einen internen Network Load Balancer zu definieren:<pre>service.beta.kubernetes.io/aws-load-balancer-type: nlb<br />service.beta.kubernetes.io/aws-load-balancer-internal: "true"</pre> | DevOps Ingenieur | 
| Stellen Sie die Manifestdatei des Kubernetes-Dienstes bereit. | Führen Sie den folgenden Befehl aus, um die Service-Manifest-Datei auf Ihren Amazon EKS-Cluster anzuwenden:`kubectl apply -f <your_service_file_name>` | DevOps Ingenieur | 

### Erstellen Sie die Endpunkte
<a name="create-the-endpoints"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Notieren Sie sich den Namen des Network Load Balancers.  | Führen Sie den folgenden Befehl aus, um den Namen des Network Load Balancer abzurufen:`kubectl get svc sample-service -o wide`Notieren Sie sich den Namen des Network Load Balancers, der für die Erstellung eines PrivateLink AWS-Endpunkts erforderlich ist. | DevOps Ingenieur | 
| Erstellen Sie einen PrivateLink AWS-Endpunkt. | Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die Amazon VPC-Konsole und erstellen Sie dann einen PrivateLink AWS-Endpunkt. Ordnen Sie diesen Endpunkt dem Network Load Balancer zu, damit die Anwendung privat für Kunden verfügbar ist. Weitere Informationen finden Sie unter [VPC Endpoint Services (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) in der Amazon VPC-Dokumentation.Wenn das Verbraucherkonto Zugriff auf die Anwendung benötigt, muss die [AWS-Konto-ID des Verbraucherkontos](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html) zur Liste der zulässigen Prinzipale für die PrivateLink AWS-Endpunktkonfiguration hinzugefügt werden. Weitere Informationen finden Sie unter [Hinzufügen und Entfernen von Berechtigungen für Ihren Endpunkt-Service](https://docs.aws.amazon.com/vpc/latest/userguide/add-endpoint-service-permissions.html) in der Amazon VPC-Dokumentation. | Cloud-Administrator  | 
| Erstellen Sie einen VPC-Endpunkt. | Wählen Sie in der Amazon VPC-Konsole **Endpoint Services** und dann **Create Endpoint Service** aus. Erstellen Sie einen VPC-Endpunkt für den PrivateLink AWS-Endpunkt.Der vollqualifizierte Domainname (FQDN) des VPC-Endpunkts verweist auf den FQDN für den AWS-Endpunkt. PrivateLink Dadurch wird eine elastic network interface zum VPC-Endpunktdienst erstellt, auf die die DNS-Endpunkte zugreifen können.  | Cloud-Administrator | 

## Zugehörige Ressourcen
<a name="access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer-resources"></a>
+ [Verwenden Sie das offizielle NGINX Docker-Image](https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/)
+ [Network Load Balancing in Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html) 
+ [VPC-Endpunktdienste (AWS PrivateLink) erstellen](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) 
+ [Hinzufügen und Entfernen von Berechtigungen für Ihren Endpunkt-Service](https://docs.aws.amazon.com/vpc/latest/userguide/add-endpoint-service-permissions.html)

# Automatisieren Sie Backups für Amazon RDS for PostgreSQL PostgreSQL-DB-Instances mithilfe von AWS Batch
<a name="automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch"></a>

*Kirankumar Chandrashekar, Amazon Web Services*

## Zusammenfassung
<a name="automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch-summary"></a>

Das Sichern Ihrer PostgreSQL-Datenbanken ist eine wichtige Aufgabe und kann in der Regel mit dem [Hilfsprogramm pg\$1dump](https://www.postgresql.org/docs/current/app-pgdump.html) erledigt werden, das standardmäßig den Befehl COPY verwendet, um ein Schema und einen Datendump einer PostgreSQL-Datenbank zu erstellen. Dieser Vorgang kann sich jedoch wiederholen, wenn Sie regelmäßige Backups für mehrere PostgreSQL-Datenbanken benötigen. Wenn Ihre PostgreSQL-Datenbanken in der Cloud gehostet werden, können Sie auch die [automatische Backup-Funktion](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html) von Amazon Relational Database Service (Amazon RDS) für PostgreSQL nutzen. Dieses Muster beschreibt, wie regelmäßige Backups für Amazon RDS for PostgreSQL PostgreSQL-DB-Instances mithilfe des Dienstprogramms pg\$1dump automatisiert werden.

Hinweis: In den Anweisungen wird davon ausgegangen, dass Sie Amazon RDS verwenden. Sie können diesen Ansatz jedoch auch für PostgreSQL-Datenbanken verwenden, die außerhalb von Amazon RDS gehostet werden. Um Backups zu erstellen, muss die AWS Lambda Lambda-Funktion auf Ihre Datenbanken zugreifen können.

Ein zeitbasiertes Amazon CloudWatch Events-Ereignis initiiert eine Lambda-Funktion, die nach bestimmten [Backup-Tags sucht, die auf die Metadaten der PostgreSQL-DB-Instances auf Amazon RDS angewendet](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) wurden. Wenn die PostgreSQL-DB-Instances das Tag **bkp:Automated DBDump = Active** und andere erforderliche Backup-Tags haben, sendet die Lambda-Funktion einzelne Jobs für jede Datenbanksicherung an AWS Batch. 

AWS Batch verarbeitet diese Jobs und lädt die Backup-Daten in einen Amazon Simple Storage Service (Amazon S3) -Bucket hoch. Dieses Muster verwendet eine Dockerfile- und eine Datei entrypoint.sh, um ein Docker-Container-Image zu erstellen, das zum Erstellen von Backups im AWS Batch Batch-Job verwendet wird. Nach Abschluss des Sicherungsvorgangs zeichnet AWS Batch die Backup-Details in einer Inventartabelle auf Amazon DynamoDB auf. Als zusätzliche Schutzmaßnahme löst ein CloudWatch Events-Ereignis eine Amazon Simple Notification Service (Amazon SNS) -Benachrichtigung aus, wenn ein Job in AWS Batch fehlschlägt. 

## Voraussetzungen und Einschränkungen
<a name="automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Eine bestehende verwaltete oder nicht verwaltete Rechenumgebung. Weitere Informationen finden Sie unter [Verwaltete und nicht verwaltete Rechenumgebungen](https://docs.aws.amazon.com/batch/latest/userguide/compute_environments.html) in der AWS Batch Batch-Dokumentation. 
+ [Docker-Image der AWS-Befehlszeilenschnittstelle (CLI), Version 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-docker.html), installiert und konfiguriert.
+ Bestehende Amazon RDS for PostgreSQL PostgreSQL-DB-Instances.  
+ Ein vorhandener S3-Bucket. 
+ [Docker](https://www.docker.com/), installiert und konfiguriert unter Linux, MacOS oder Windows.
+ Vertrautheit mit der Programmierung in Lambda. 

## Architektur
<a name="automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch-architecture"></a>

![\[Architektur zur Sicherung von Amazon RDS for PostgreSQL PostgreSQL-DB-Instances mithilfe des Dienstprogramms pg_dump.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/3283f739-980b-43d4-aca0-9d77a2ce3b85/images/352e2eab-1b7d-44ec-840a-a772a175e873.png)


 

**Technologie-Stack**
+  CloudWatch Amazon-Veranstaltungen
+ Amazon DynamoDB
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon RDS
+ Amazon SNS
+ Amazon S3
+ AWS Batch
+ AWS Key Management Service (AWS KMS)
+ AWS Lambda
+ AWS Secrets Manager
+ Docker

## Tools
<a name="automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch-tools"></a>
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — CloudWatch Events bietet einen Stream von Systemereignissen, die Änderungen an AWS-Ressourcen beschreiben, nahezu in Echtzeit.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) — DynamoDB ist ein vollständig verwalteter NoSQL-Datenbankservice, der schnelle und vorhersehbare Leistung mit nahtloser Skalierbarkeit bietet.
+ [Amazon ECR](https://docs.aws.amazon.com/ecr/index.html) — Amazon Elastic Container Registry (Amazon ECR) ist ein verwalteter AWS-Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [Amazon RDS](https://docs.aws.amazon.com/rds/index.html) — Amazon Relational Database Service (Amazon RDS) ist ein Webservice, der die Einrichtung, den Betrieb und die Skalierung einer relationalen Datenbank in der AWS-Cloud erleichtert.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) — Amazon Simple Notification Service (Amazon SNS) ist ein verwalteter Service, der die Nachrichtenzustellung von Herausgebern an Abonnenten ermöglicht.
+ [Amazon S3](https://docs.aws.amazon.com/s3/index.html) — Amazon Simple Storage Service (Amazon S3) ist ein Speicher für das Internet.
+ [AWS Batch](https://docs.aws.amazon.com/batch/index.html) — Mit AWS Batch können Sie Batch-Computing-Workloads in der AWS-Cloud ausführen.
+ [AWS KMS](https://docs.aws.amazon.com/kms/index.html) — AWS Key Management Service (AWS KMS) ist ein verwalteter Service, mit dem Sie auf einfache Weise die zur Verschlüsselung Ihrer Daten verwendeten Verschlüsselungsschlüssel erstellen und kontrollieren können.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/index.html) — Lambda ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/index.html) — Secrets Manager hilft Ihnen dabei, hartcodierte Anmeldeinformationen in Ihrem Code, einschließlich Passwörter, durch einen API-Aufruf an Secrets Manager zu ersetzen, um das Geheimnis programmgesteuert abzurufen.
+ [Docker](https://www.docker.com/) — Docker hilft Entwicklern dabei, jede Anwendung als leichten, tragbaren und autarken Container einfach zu packen, zu versenden und auszuführen.

Auf Ihre PostgreSQL-DB-Instances auf Amazon RDS müssen [Tags auf ihre Metadaten angewendet werden](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html). Die Lambda-Funktion sucht nach Tags, um DB-Instances zu identifizieren, die gesichert werden sollten, und die folgenden Tags werden normalerweise verwendet.


| 
| 
| Markierung | Description | 
| --- |--- |
| bkp:Automated = Aktiv DBDump  | Identifiziert eine Amazon RDS-DB-Instance als Kandidaten für Backups. | 
| bkp: = AutomatedBackupSecret <secret\$1name > | Identifiziert das Secrets Manager Manager-Geheimnis, das die Amazon RDS-Anmeldeinformationen enthält. | 
| bkp: DBDump Automatisierter S3-Bucket = <s3\$1bucket\$1name> | Identifiziert den S3-Bucket, an den Backups gesendet werden sollen. | 
| BKPDBDump: Automatisierte FrequenzBKP:Automatisierte DBDump Zeit | Identifizieren Sie die Häufigkeit und die Zeiten, zu denen Datenbanken gesichert werden sollten.  | 
| bkp:pgdumpcommand = <pgdump\$1command> | Identifiziert die Datenbanken, für die die Backups erstellt werden müssen. | 

## Epen
<a name="automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch-epics"></a>

### Erstellen Sie eine Inventartabelle in DynamoDB
<a name="create-an-inventory-table-in-dynamodb"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Tabelle in DynamoDB. | Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die Amazon DynamoDB DynamoDB-Konsole und erstellen Sie eine Tabelle. Hilfe zu dieser und anderen Geschichten finden Sie im Abschnitt *Verwandte Ressourcen*. | Cloud-Administrator, Datenbankadministrator | 
| Vergewissern Sie sich, dass die Tabelle erstellt wurde.  | Führen Sie den Befehl `aws dynamodb describe-table --table-name <table-name> \| grep TableStatus` aus. Wenn die Tabelle existiert, gibt der Befehl das `"TableStatus": "ACTIVE",` Ergebnis zurück. | Cloud-Administrator, Datenbankadministrator | 

### Erstellen Sie ein SNS-Thema für fehlgeschlagene Auftragsereignisse in AWS Batch
<a name="create-an-sns-topic-for-failed-job-events-in-aws-batch"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein SNS-Thema. | Öffnen Sie die Amazon SNS SNS-Konsole, wählen Sie **Themen** und erstellen Sie ein SNS-Thema mit dem Namen. `JobFailedAlert` Abonnieren Sie das Thema mit einer aktiven E-Mail-Adresse und überprüfen Sie Ihren E-Mail-Posteingang, um die SNS-Abonnement-E-Mail von AWS Notifications zu bestätigen. | Cloud-Administrator | 
| Erstellen Sie eine Ereignisregel für fehlgeschlagene Jobs für AWS Batch.  | Öffnen Sie die CloudWatch Amazon-Konsole, wählen Sie **Ereignisse** und dann **Regel erstellen** aus. Wählen Sie **Erweiterte Optionen anzeigen** und anschließend **Bearbeiten**. Ersetzen Sie unter „**Ein Muster erstellen, das Ereignisse für die Verarbeitung durch Ihre Ziele auswählt**“ den vorhandenen Text durch den Code „Fehlgeschlagenes Auftragsereignis“ aus dem Abschnitt „*Zusätzliche Informationen*“. Dieser Code definiert eine CloudWatch Ereignisregel, die ausgelöst wird, wenn AWS Batch ein `Failed` Ereignis hat. | Cloud-Administrator | 
| Ziel für eine Ereignisregel hinzufügen.  | Wählen Sie unter **Ziele** die Option **Ziele hinzufügen** und wählen Sie das `JobFailedAlert` SNS-Thema aus. Konfigurieren Sie die verbleibenden Details und erstellen Sie die Cloudwatch Events-Regel. | Cloud-Administrator | 

### Erstellen Sie ein Docker-Image und übertragen Sie es in ein Amazon ECR-Repository
<a name="build-a-docker-image-and-push-it-to-an-amazon-ecr-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Amazon-ECR-Repository. | Öffnen Sie die Amazon ECR-Konsole und wählen Sie die AWS-Region aus, in der Sie Ihr Repository erstellen möchten. Wählen Sie **Repositories** und dann **Create** repository aus. Konfigurieren Sie das Repository gemäß Ihren Anforderungen. | Cloud-Administrator | 
| Schreiben Sie eine Docker-Datei.  | Melden Sie sich bei Docker an und verwenden Sie die „Beispieldatei Dockerfile“ und „Beispieldatei entrypoint.sh“ aus dem Abschnitt *Zusätzliche Informationen*, um ein Dockerfile zu erstellen. | DevOps Ingenieur | 
| Erstellen Sie ein Docker-Image und übertragen Sie es in das Amazon ECR-Repository. | Erstellen Sie das Dockerfile in ein Docker-Image und übertragen Sie es in das Amazon ECR-Repository. *Hilfe zu dieser Geschichte finden Sie im Abschnitt Verwandte Ressourcen.* | DevOps Ingenieur | 

### Erstellen Sie die AWS Batch Batch-Komponenten
<a name="create-the-aws-batch-components"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine AWS Batch Batch-Auftragsdefinition. | Öffnen Sie die AWS Batch Batch-Konsole und erstellen Sie eine Auftragsdefinition, die den Uniform Resource Identifier (URI) des Amazon ECR-Repositorys als Eigenschaft `Image` enthält. | Cloud-Administrator | 
| Konfigurieren Sie die AWS Batch Batch-Jobwarteschlange.  | Wählen Sie in der AWS Batch Batch-Konsole **Job-Warteschlangen** und anschließend **Warteschlange erstellen** aus. Erstellen Sie eine Auftragswarteschlange, in der Jobs gespeichert werden, bis AWS Batch sie auf den Ressourcen in Ihrer Rechenumgebung ausführt. Wichtig: Stellen Sie sicher, dass Sie Logik für AWS Batch schreiben, um die Backup-Details in der DynamoDB-Inventartabelle aufzuzeichnen. | Cloud-Administrator | 

### Eine Lambda-Funktion erstellen und planen
<a name="create-and-schedule-a-lambda-function"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Lambda-Funktion, um nach Tags zu suchen. | Erstellen Sie eine Lambda-Funktion, die nach Tags in Ihren PostgreSQL-DB-Instances sucht und Backup-Kandidaten identifiziert. Stellen Sie sicher, dass Ihre Lambda-Funktion das `bkp:AutomatedDBDump = Active` Tag und alle anderen erforderlichen Tags identifizieren kann. Wichtig: Die Lambda-Funktion muss auch in der Lage sein, Jobs zur AWS Batch Batch-Jobwarteschlange hinzuzufügen. | DevOps Ingenieur | 
| Erstellen Sie ein zeitbasiertes Ereignis für CloudWatch Ereignisse.  | Öffnen Sie die CloudWatch Amazon-Konsole und erstellen Sie ein CloudWatch Events-Ereignis, das einen Cron-Ausdruck verwendet, um Ihre Lambda-Funktion regelmäßig auszuführen. Wichtig: Alle geplanten Ereignisse verwenden die UTC-Zeitzone. | Cloud-Administrator | 

### Testen Sie die Backup-Automatisierung
<a name="test-the-backup-automation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Amazon KMS-Schlüssel. | Öffnen Sie die Amazon KMS-Konsole und erstellen Sie einen KMS-Schlüssel, der zur Verschlüsselung der in AWS Secrets Manager gespeicherten Amazon RDS-Anmeldeinformationen verwendet werden kann. | Cloud-Administrator | 
| Erstellen Sie ein AWS Secrets Manager Manager-Geheimnis. | Öffnen Sie die AWS Secrets Manager Manager-Konsole und speichern Sie Ihre Amazon RDS for PostgreSQL PostgreSQL-Datenbankanmeldedaten als geheim. | Cloud-Administrator | 
| Fügen Sie den PostgreSQL-DB-Instances die erforderlichen Tags hinzu. | Öffnen Sie die Amazon RDS-Konsole und fügen Sie Tags zu den PostgreSQL-DB-Instances hinzu, die Sie automatisch sichern möchten. Sie können die Tags aus der Tabelle im Abschnitt *Tools* verwenden. Wenn Sie Backups von mehreren PostgreSQL-Datenbanken innerhalb derselben Amazon RDS-Instance benötigen, verwenden Sie diese `-d test:-d test1` als Wert für das `bkp:pgdumpcommand` Tag. `test`und `test1` sind Datenbanknamen. Stellen Sie sicher, dass nach dem Doppelpunkt (:) kein Leerzeichen steht. | Cloud-Administrator | 
| Überprüfen Sie die Backup-Automatisierung.  | Um die Backup-Automatisierung zu überprüfen, können Sie entweder die Lambda-Funktion aufrufen oder warten, bis der Backup-Zeitplan beginnt. Nachdem der Sicherungsvorgang abgeschlossen ist, überprüfen Sie, ob die DynamoDB-Inventartabelle einen gültigen Backup-Eintrag für Ihre PostgreSQL-DB-Instances enthält. Wenn sie übereinstimmen, ist der Backup-Automatisierungsprozess erfolgreich. | Cloud-Administrator | 

## Zugehörige Ressourcen
<a name="automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch-resources"></a>

**Erstellen Sie eine Inventartabelle in DynamoDB**
+ [Eine Amazon DynamoDB-Tabelle erstellen](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html)

 

**Erstellen Sie ein SNS-Thema für fehlgeschlagene Auftragsereignisse in AWS Batch**
+ [Ein Amazon SNS SNS-Thema erstellen](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-topic.html)
+ [Senden Sie SNS-Benachrichtigungen für fehlgeschlagene Auftragsereignisse in AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/batch_sns_tutorial.html)

 

**Erstellen Sie ein Docker-Image und übertragen Sie es in ein Amazon ECR-Repository**
+ [Erstellen Sie ein Amazon ECR-Repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)    
+ [Schreiben Sie eine Dockerfile, erstellen Sie ein Docker-Image und übertragen Sie es an Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html)

 

**Erstellen Sie die AWS Batch Batch-Komponenten**
+ [Eine AWS Batch Batch-Auftragsdefinition erstellen](https://docs.aws.amazon.com/batch/latest/userguide/Batch_GetStarted.html#first-run-step-1)    
+ [Konfigurieren Sie Ihre Rechenumgebung und die AWS Batch Batch-Job-Warteschlange](https://docs.aws.amazon.com/batch/latest/userguide/Batch_GetStarted.html#first-run-step-2)   
+ [Erstellen Sie eine Auftragswarteschlange in AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/create-job-queue.html)

 

**Erstellen Sie eine Lambda-Funktion**
+ [Erstellen Sie eine Lambda-Funktion und schreiben Sie Code](https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html)
+ [Verwenden Sie Lambda mit DynamoDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html)

 

**Erstellen Sie ein Veranstaltungsereignis CloudWatch **
+ [Erstellen Sie ein zeitbasiertes CloudWatch Veranstaltungsereignis](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-Scheduled-Rule.html)   
+ [Verwenden Sie Cron-Ausdrücke in Cloudwatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html)

 

**Testen Sie die Backup-Automatisierung**
+ [Einen Amazon KMS-Schlüssel erstellen](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)    
+ [Ein Secrets Manager Manager-Geheimnis erstellen](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html)
+ [Hinzufügen von Tags zu einer Amazon RDS-Instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html)

## Zusätzliche Informationen
<a name="automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch-additional"></a>

**Fehlgeschlagenes Auftragsereignis:**

```
{
  "detail-type": [
    "Batch Job State Change"
  ],
  "source": [
    "aws.batch"
  ],
  "detail": {
    "status": [
      "FAILED"
    ]
  }
}
```

**Beispiel für eine Docker-Datei:**

```
FROM alpine:latest
RUN apk --update add py-pip postgresql-client jq bash && \
pip install awscli && \
rm -rf /var/cache/apk/*
ADD entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
```

**Beispieldatei entrypoint.sh:**

```
 #!/bin/bash
set -e
DATETIME=`date +"%Y-%m-%d_%H_%M"`
FILENAME=RDS_PostGres_dump_${RDS_INSTANCE_NAME}
FILE=${FILENAME}_${DATETIME}

aws configure --profile new-profile set role_arn arn:aws:iam::${TargetAccountId}:role/${TargetAccountRoleName}
aws configure --profile new-profile set credential_source EcsContainer

echo "Central Account access provider IAM role is: "
aws sts get-caller-identity

echo "Target Customer Account access provider IAM role is: "
aws sts get-caller-identity --profile new-profile

securestring=$(aws secretsmanager get-secret-value --secret-id $SECRETID --output json --query 'SecretString' --region=$REGION --profile new-profile)

if [[ ${securestring} ]]; then
    echo "successfully accessed secrets manager and got the credentials"
    export PGPASSWORD=$(echo $securestring | jq --raw-output | jq -r '.DB_PASSWORD')
    PGSQL_USER=$(echo $securestring | jq --raw-output | jq -r '.DB_USERNAME')
    echo "Executing pg_dump for the PostGres endpoint ${PGSQL_HOST}"
    # pg_dump -h $PGSQL_HOST -U $PGSQL_USER -n dms_sample | gzip -9 -c  | aws s3 cp - --region=$REGION  --profile new-profile s3://$BUCKET/$FILE
    # in="-n public:-n private"
    IFS=':' list=($EXECUTE_COMMAND);
    for command in "${list[@]}";
      do
        echo $command;
        pg_dump -h $PGSQL_HOST -U $PGSQL_USER ${command} | gzip -9 -c  | aws s3 cp - --region=$REGION --profile new-profile s3://${BUCKET}/${FILE}-${command}".sql.gz"
        echo $?;
        if  [[ $? -ne 0 ]]; then
            echo "Error occurred in database backup process. Exiting now....."
            exit 1
        else
            echo "Postgresql dump was successfully taken for the RDS endpoint ${PGSQL_HOST} and is uploaded to the following S3 location s3://${BUCKET}/${FILE}-${command}.sql.gz"
            #write the details into the inventory table in central account
            echo "Writing to DynamoDB inventory table"
            aws dynamodb put-item --table-name ${RDS_POSTGRES_DUMP_INVENTORY_TABLE} --region=$REGION --item '{ "accountId": { "S": "'"${TargetAccountId}"'" }, "dumpFileUrl": {"S": "'"s3://${BUCKET}/${FILE}-${command}.sql.gz"'" }, "DumpAvailableTime": {"S": "'"`date +"%Y-%m-%d::%H::%M::%S"` UTC"'"}}'
            echo $?
            if  [[ $? -ne 0 ]]; then
                echo "Error occurred while putting item to DynamoDb Inventory Table. Exiting now....."
                exit 1
            else
                echo "Successfully written to DynamoDb Inventory Table ${RDS_POSTGRES_DUMP_INVENTORY_TABLE}"
            fi
        fi
      done;
else
    echo "Something went wrong {$?}"
    exit 1
fi

exec "$@"
```

# Automatisieren Sie die Bereitstellung von Node Termination Handler in Amazon EKS mithilfe einer CI/CD Pipeline
<a name="automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline"></a>

*Sandip Gangapadhyay, Sandeep Gawande, Viyoma Sachdeva, Pragtideep Singh und John Vargas, Amazon Web Services*

## Zusammenfassung
<a name="automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline-summary"></a>

**Hinweis**: AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. [Weitere Informationen](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/)

In der Amazon Web Services (AWS) Cloud können Sie [AWS Node Termination Handler](https://github.com/aws/aws-node-termination-handler), ein Open-Source-Projekt, verwenden, um das Herunterfahren der Amazon Elastic Compute Cloud (Amazon EC2) -Instance innerhalb von Kubernetes problemlos zu handhaben. AWS Node Termination Handler hilft sicherzustellen, dass die Kubernetes-Steuerebene angemessen auf Ereignisse reagiert, die dazu führen können, dass Ihre EC2 Instance nicht mehr verfügbar ist. Zu diesen Ereignissen gehören die folgenden:
+ [EC2 geplante Wartung der Instanz](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html)
+ [Unterbrechungen der Amazon EC2 Spot-Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html)
+ [Auto Scaling Scaling-Gruppenskalierung](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroupLifecycle.html#as-lifecycle-scale-in)
+ [Auto Scaling Scaling-Gruppen-Rebalancing zwischen](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-benefits.html#AutoScalingBehavior.InstanceUsage) Availability Zones
+ EC2 Kündigung der Instanz über die API oder die AWS-Managementkonsole

Wenn ein Ereignis nicht behandelt wird, wird Ihr Anwendungscode möglicherweise nicht ordnungsgemäß beendet. Es kann auch länger dauern, bis die volle Verfügbarkeit wiederhergestellt ist, oder es wird versehentlich die Arbeit an Knoten geplant, die ausfallen. Der `aws-node-termination-handler` (NTH) kann in zwei verschiedenen Modi betrieben werden: Instance Metadata Service (IMDS) oder Queue Processor. Weitere Informationen zu den beiden Modi finden Sie in der [Readme-Datei](https://github.com/aws/aws-node-termination-handler#readme).

Dieses Muster verwendet AWS CodeCommit und automatisiert die Bereitstellung von NTH mithilfe von Queue Processor über eine CI/CD-Pipeline (Continuous Integration and Continuous Delivery).

**Anmerkung**  
Wenn Sie von [EKS verwaltete Knotengruppen verwenden, benötigen](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) Sie die nicht. `aws-node-termination-handler`

## Voraussetzungen und Einschränkungen
<a name="automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Ein Webbrowser, der für die Verwendung mit der AWS-Managementkonsole unterstützt wird. Sehen Sie sich die [Liste der unterstützten Browser](https://aws.amazon.com/premiumsupport/knowledge-center/browsers-management-console/) an.
+ Das AWS Cloud Development Kit (AWS CDK) ist [installiert](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install).
+ `kubectl`[, das Kubernetes-Befehlszeilentool, installiert.](https://kubernetes.io/docs/tasks/tools/)
+ `eksctl`[, die AWS-Befehlszeilenschnittstelle (AWS CLI) für Amazon Elastic Kubernetes Service (Amazon EKS), installiert.](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html)
+ Ein laufender EKS-Cluster mit Version 1.20 oder höher.
+ Eine selbstverwaltete Knotengruppe, die an den EKS-Cluster angehängt ist. Führen Sie den folgenden Befehl aus, um einen Amazon EKS-Cluster mit einer selbstverwalteten Knotengruppe zu erstellen.

  ```
  eksctl create cluster --managed=false --region <region> --name <cluster_name>
  ```

  Weitere Informationen dazu finden Sie in `eksctl` der [eksctl-Dokumentation](https://eksctl.io/usage/creating-and-managing-clusters/).
+ AWS Identity and Access Management (IAM) OpenID Connect (OIDC) -Anbieter für Ihren Cluster. Weitere Informationen finden Sie unter [Einen IAM-OIDC-Anbieter für Ihren Cluster erstellen](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html).

**Einschränkungen**
+ Sie müssen eine AWS-Region verwenden, die den Amazon EKS-Service unterstützt.

**Produktversionen**
+ Kubernetes Version 1.20 oder höher
+ `eksctl`Version 0.107.0 oder höher
+ AWS CDK Version 2.27.0 oder höher

## Architektur
<a name="automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline-architecture"></a>

**Zieltechnologie-Stack**
+ Eine Virtual Private Cloud (VPC)
+ Ein EKS-Cluster
+ Amazon-Simple-Queue-Service (Amazon SQS)
+ IAM
+ Kubernetes

**Zielarchitektur******

Das folgende Diagramm zeigt eine allgemeine Ansicht der end-to-end Schritte, wenn die Knotenbeendigung gestartet wird.

![\[Eine VPC mit einer Auto Scaling Scaling-Gruppe, einem EKS-Cluster mit Node Termination Handler und einer SQS-Warteschlange.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/970dfb73-9526-4942-a974-e8eef6416596/images/9e0125ae-d55b-49dd-ae70-ccaedf03832a.png)


Der im Diagramm dargestellte Arbeitsablauf besteht aus den folgenden allgemeinen Schritten:

1. Das Ereignis EC2 zum Beenden der automatischen Skalierungsinstanz wird an die SQS-Warteschlange gesendet.

1. Der NTH Pod sucht nach neuen Nachrichten in der SQS-Warteschlange.

1. Der NTH-Pod empfängt die neue Nachricht und geht wie folgt vor:
   + Sperrt den Knoten ab, sodass der neue Pod nicht auf dem Knoten ausgeführt wird.
   + Entleert den Knoten, sodass der vorhandene Pod evakuiert wird
   + Sendet ein Lifecycle-Hook-Signal an die Auto Scaling Scaling-Gruppe, sodass der Knoten beendet werden kann.

**Automatisierung und Skalierung**
+ Der Code wird von AWS CDK verwaltet und bereitgestellt, unterstützt durch AWS CloudFormation Nested Stacks.
+ Die [Amazon EKS-Kontrollebene](https://docs.aws.amazon.com/eks/latest/userguide/disaster-recovery-resiliency.html) läuft über mehrere Availability Zones, um eine hohe Verfügbarkeit zu gewährleisten.
+ [Für die [automatische Skalierung](https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html) unterstützt Amazon EKS den Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) und Karpenter.](https://karpenter.sh/)

## Tools
<a name="automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline-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 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.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) hilft Ihnen, Kubernetes auf AWS auszuführen, ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten zu müssen.
+ [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) hilft Ihnen dabei, die Anwendungsverfügbarkeit aufrechtzuerhalten, und ermöglicht es Ihnen, EC2 Amazon-Instances gemäß den von Ihnen definierten Bedingungen automatisch hinzuzufügen oder zu entfernen.
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.

**Andere Tools**
+ [kubectl](https://kubernetes.io/docs/reference/kubectl/kubectl/) ist ein Kubernetes-Befehlszeilentool zum Ausführen von Befehlen für Kubernetes-Cluster. Sie können kubectl verwenden, um Anwendungen bereitzustellen, Clusterressourcen zu überprüfen und zu verwalten und Protokolle anzuzeigen.

**Code**

Der Code für dieses Muster ist im [deploy-nth-to-eks](https://github.com/aws-samples/deploy-nth-to-eks)Repo auf .com verfügbar. GitHub Das Code-Repo enthält die folgenden Dateien und Ordner.
+ `nth folder`— Das Helm-Diagramm, die Wertedateien und die Skripts zum Scannen und Bereitstellen der CloudFormation AWS-Vorlage für Node Termination Handler.
+ `config/config.json`— Die Konfigurationsparameterdatei für die Anwendung. Diese Datei enthält alle Parameter, die für die Bereitstellung von CDK erforderlich sind.
+ `cdk`— AWS-CDK-Quellcode.
+ `setup.sh`— Das Skript, das zur Bereitstellung der AWS CDK-Anwendung verwendet wurde, um die erforderliche CI/CD Pipeline und andere erforderliche Ressourcen zu erstellen.
+ `uninstall.sh`— Das Skript, das zum Bereinigen der Ressourcen verwendet wurde.

Um den Beispielcode zu verwenden, folgen Sie den Anweisungen im Abschnitt *Epics*.

## Best Practices
<a name="automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline-best-practices"></a>

Bewährte Methoden für die Automatisierung von AWS Node Termination Handler finden Sie im Folgenden:
+ [EKS-Leitfäden mit bewährten Methoden](https://aws.github.io/aws-eks-best-practices/)
+ [Node Termination Handler — Konfiguration](https://github.com/aws/aws-node-termination-handler/tree/main/config/helm/aws-node-termination-handler)

## Epen
<a name="automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline-epics"></a>

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


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repo. | Um das Repo mithilfe von SSH (Secure Shell) zu klonen, führen Sie den folgenden Befehl aus.<pre>git clone git@github.com:aws-samples/deploy-nth-to-eks.git</pre>Um das Repo mithilfe von HTTPS zu klonen, führen Sie den folgenden Befehl aus.<pre>git clone https://github.com/aws-samples/deploy-nth-to-eks.git</pre>Beim Klonen des Repos wird ein Ordner mit dem Namen erstellt. `deploy-nth-to-eks`Wechseln Sie zu diesem Verzeichnis.<pre>cd deploy-nth-to-eks</pre> | App-Entwickler, AWS DevOps, DevOps Ingenieur | 
| Stellen Sie die kubeconfig-Datei ein. | Geben Sie Ihre AWS-Anmeldeinformationen in Ihrem Terminal ein und bestätigen Sie, dass Sie berechtigt sind, die Cluster-Rolle zu übernehmen. Sie können den folgenden Beispielcode verwenden.<pre>aws eks update-kubeconfig --name <Cluster_Name> --region <region>--role-arn <Role_ARN></pre> | AWS DevOps, DevOps Ingenieur, App-Entwickler | 

### Stellen Sie die CI/CD Pipeline bereit
<a name="deploy-the-ci-cd-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie die Parameter ein. | Richten Sie in der `config/config.json` Datei die folgenden erforderlichen Parameter ein.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline.html) | App-Entwickler, AWS DevOps, DevOps Ingenieur | 
| Erstellen Sie die CI/CD Pipeline für die Bereitstellung von NTH. | Führen Sie das Skript setup.sh aus.<pre>./setup.sh</pre>Das Skript stellt die AWS-CDK-Anwendung bereit, die das CodeCommit Repo mit Beispielcode, der Pipeline und CodeBuild Projekten auf der Grundlage der Benutzereingabeparameter in `config/config.json` der Datei erstellt.Dieses Skript fragt bei der Installation von npm-Paketen mit dem Befehl sudo nach dem Passwort. | App-Entwickler, AWS DevOps, DevOps Ingenieur | 
| Überprüfen Sie die CI/CD Pipeline. | Öffnen Sie die AWS-Managementkonsole und überprüfen Sie die folgenden Ressourcen, die im Stack erstellt wurden.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline.html)Nachdem die Pipeline erfolgreich ausgeführt wurde, `aws-node-termination-handler` wird die Helm-Version im EKS-Cluster installiert. Außerdem `aws-node-termination-handler` läuft ein Pod mit dem Namen im `kube-system` Namespace im Cluster. | App-Entwickler, AWS DevOps, DevOps Ingenieur | 

### Testen Sie die NTH-Bereitstellung
<a name="test-nth-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Simulieren Sie ein Auto Scaling-Gruppen-Scale-In-Ereignis. | Gehen Sie wie folgt vor, um ein automatisches Skalierungs-Scale-In-Ereignis zu simulieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline.html) |  | 
| Überprüfen Sie die Protokolle. | Während des Scale-In-Ereignisses sperrt der NTH-Pod den entsprechenden Worker-Knoten ab und entleert ihn (die EC2 Instanz, die im Rahmen des Scale-In-Ereignisses beendet wird). *Verwenden Sie den Code im Abschnitt Zusätzliche Informationen, um die Protokolle zu überprüfen.* | App-Entwickler, AWS DevOps, DevOps Ingenieur | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereinigen Sie alle AWS-Ressourcen. | Führen Sie den folgenden Befehl aus, um die nach diesem Muster erstellten Ressourcen zu bereinigen.<pre>./uninstall.sh</pre>Dadurch werden alle in diesem Muster erstellten Ressourcen bereinigt, indem der CloudFormation Stapel gelöscht wird. | DevOps Ingenieur | 

## Fehlerbehebung
<a name="automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die NPM-Registrierung ist nicht richtig eingestellt. | Während der Installation dieser Lösung installiert das Skript npm install, um alle erforderlichen Pakete herunterzuladen. Wenn Sie während der Installation die Meldung „Modul kann nicht gefunden werden“ sehen, ist die npm-Registrierung möglicherweise nicht richtig eingerichtet. Führen Sie den folgenden Befehl aus, um die aktuelle Registrierungseinstellung zu sehen.<pre>npm config get registry</pre>Führen Sie den folgenden Befehl aus`https://registry.npmjs.org/`, um die Registrierung mit einzurichten.<pre>npm config set registry https://registry.npmjs.org</pre> | 
| Verzögern Sie die SQS-Nachrichtenzustellung. | Wenn Sie die SQS-Nachrichtenzustellung an den NTH Pod verzögern möchten, können Sie im Rahmen Ihrer Problembehandlung den Parameter für die Verzögerung der SQS-Zustellung anpassen. Weitere Informationen finden Sie unter [Amazon SQS SQS-Verzögerungswarteschlangen](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html). | 

## Zugehörige Ressourcen
<a name="automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline-resources"></a>
+ [Quellcode für den AWS Node Termination Handler](https://github.com/aws/aws-node-termination-handler)
+ [EC2 Werkstatt](https://ec2spotworkshops.com/using_ec2_spot_instances_with_eks/070_selfmanagednodegroupswithspot/deployhandler.html)
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://aws.amazon.com/eks/)
+ [AWS-Cloud-Entwicklungskit](https://aws.amazon.com/cdk/)
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/)

## Zusätzliche Informationen
<a name="automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline-additional"></a>

1. Suchen Sie den Namen des NTH-Pods.

```
kubectl get pods -n kube-system |grep aws-node-termination-handler
aws-node-termination-handler-65445555-kbqc7   1/1     Running   0          26m
kubectl get pods -n kube-system |grep aws-node-termination-handler
aws-node-termination-handler-65445555-kbqc7   1/1     Running   0          26m
```

2. Überprüfen Sie die Protokolle. Ein Beispielprotokoll sieht wie folgt aus. Es zeigt, dass der Knoten gesperrt und entleert wurde, bevor das Signal zum Abschluss des Auto Scaling Scaling-Gruppenlebenszyklus-Hooks gesendet wurde.

```
kubectl -n kube-system logs aws-node-termination-handler-65445555-kbqc7
022/07/17 20:20:43 INF Adding new event to the event store event={"AutoScalingGroupName":"eksctl-my-cluster-target-nodegroup-ng-10d99c89-NodeGroup-ZME36IGAP7O1","Description":"ASG Lifecycle Termination event received. Instance will be interrupted at 2022-07-17 20:20:42.702 +0000 UTC \n","EndTime":"0001-01-01T00:00:00Z","EventID":"asg-lifecycle-term-33383831316538382d353564362d343332362d613931352d383430666165636334333564","InProgress":false,"InstanceID":"i-0409f2a9d3085b80e","IsManaged":true,"Kind":"SQS_TERMINATE","NodeLabels":null,"NodeName":"ip-192-168-75-60.us-east-2.compute.internal","NodeProcessed":false,"Pods":null,"ProviderID":"aws:///us-east-2c/i-0409f2a9d3085b80e","StartTime":"2022-07-17T20:20:42.702Z","State":""}
2022/07/17 20:20:44 INF Requesting instance drain event-id=asg-lifecycle-term-33383831316538382d353564362d343332362d613931352d383430666165636334333564 instance-id=i-0409f2a9d3085b80e kind=SQS_TERMINATE node-name=ip-192-168-75-60.us-east-2.compute.internal provider-id=aws:///us-east-2c/i-0409f2a9d3085b80e
2022/07/17 20:20:44 INF Pods on node node_name=ip-192-168-75-60.us-east-2.compute.internal pod_names=["aws-node-qchsw","aws-node-termination-handler-65445555-kbqc7","kube-proxy-mz5x5"]
2022/07/17 20:20:44 INF Draining the node
2022/07/17 20:20:44 ??? WARNING: ignoring DaemonSet-managed Pods: kube-system/aws-node-qchsw, kube-system/kube-proxy-mz5x5
2022/07/17 20:20:44 INF Node successfully cordoned and drained node_name=ip-192-168-75-60.us-east-2.compute.internal reason="ASG Lifecycle Termination event received. Instance will be interrupted at 2022-07-17 20:20:42.702 +0000 UTC \n"
2022/07/17 20:20:44 INF Completed ASG Lifecycle Hook (NTH-K8S-TERM-HOOK) for instance i-0409f2a9d3085b80e
```

# Automatisches Erstellen und Bereitstellen einer Java-Anwendung auf Amazon EKS mithilfe einer CI/CD Pipeline
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline"></a>

*MAHESH RAGHUNANDANAN, Jomcy Pappachen und James Radtke, Amazon Web Services*

## Zusammenfassung
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-summary"></a>

Dieses Muster beschreibt, wie Sie eine CI/CD-Pipeline (Continuous Integration and Continuous Delivery) erstellen, die automatisch eine Java-Anwendung mit empfohlenen DevSecOps Vorgehensweisen für einen Amazon Elastic Kubernetes Service (Amazon EKS) -Cluster auf dem erstellt und bereitstellt. AWS Cloud Dieses Muster verwendet eine Begrüßungsanwendung, die mit einem Spring Boot Java-Framework entwickelt wurde und Apache Maven verwendet.

Sie können den Ansatz dieses Musters verwenden, um den Code für eine Java-Anwendung zu erstellen, die Anwendungsartefakte als Docker-Image zu verpacken, das Image sicherheitstechnisch zu scannen und das Image als Workload-Container auf Amazon EKS hochzuladen. Der Ansatz dieses Musters ist nützlich, wenn Sie von einer eng gekoppelten monolithischen Architektur zu einer Microservices-Architektur migrieren möchten. Dieser Ansatz hilft Ihnen auch dabei, den gesamten Lebenszyklus einer Java-Anwendung zu überwachen und zu verwalten, wodurch ein höheres Maß an Automatisierung gewährleistet und Fehler oder Bugs vermieden werden können.

## Voraussetzungen und Einschränkungen
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ AWS Command Line Interface (AWS CLI) Version 2, installiert und konfiguriert. Weitere Informationen dazu finden Sie AWS CLI in der AWS CLI Dokumentation unter [Installation oder Aktualisierung auf die neueste Version von](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).

  AWS CLI Version 2 muss mit derselben AWS Identity and Access Management (IAM-) Rolle konfiguriert werden, die den Amazon EKS-Cluster erstellt, da nur diese Rolle berechtigt ist, dem weitere IAM-Rollen hinzuzufügen. `aws-auth` `ConfigMap` Informationen und Schritte zur Konfiguration AWS CLI finden Sie in [der Dokumentation unter Einstellungen konfigurieren](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html). AWS CLI 
+ IAM-Rollen und -Berechtigungen mit vollem Zugriff auf AWS CloudFormation. Weitere Informationen dazu finden Sie in der Dokumentation unter [Steuern des Zugriffs mit IAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) CloudFormation .
+ Ein vorhandener Amazon EKS-Cluster mit Details zum IAM-Rollennamen und zum Amazon-Ressourcennamen (ARN) der IAM-Rolle für Worker-Knoten im EKS-Cluster.
+ Kubernetes Cluster Autoscaler, installiert und konfiguriert in Ihrem Amazon EKS-Cluster. Weitere Informationen finden Sie unter [Skalieren von Cluster-Berechnungen mit Karpenter und Cluster Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/cluster-autoscaler.html) in der Amazon EKS-Dokumentation. 
+ Zugriff auf Code im Repository. GitHub 

**Wichtig**  
AWS Security Hub CSPM ist als Teil der CloudFormation Vorlagen aktiviert, die im Code für dieses Muster enthalten sind. Standardmäßig wird Security Hub CSPM nach der Aktivierung mit einer kostenlosen 30-Tage-Testversion geliefert. Nach der Testphase fallen hierfür Kosten an. AWS-Service Weitere Informationen zur Preisgestaltung finden Sie unter [AWS Security Hub CSPM  – Preise](https://aws.amazon.com/security-hub/pricing/).

**Produktversionen**
+ Helm Version 3.4.2 oder höher
+ Apache Maven Version 3.6.3 oder höher
+ BridgeCrew Checkov Version 2.2 oder höher
+ Aqua Security Trivy Version 0.37 oder höher

## Architektur
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-architecture"></a>

**Technologie-Stack**
+ AWS CodeBuild
+ AWS CodeCommit
+ Amazon CodeGuru
+ AWS CodePipeline
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon EKS
+ Amazon EventBridge
+ AWS Security Hub CSPM
+ Amazon-Simple-Notification-Service (Amazon-SNS)

**Zielarchitektur**

![\[Workflow für die Bereitstellung einer Java-Anwendung in Amazon EKS.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/95a5b5c2-d7fb-41eb-9089-455318c0d585/images/4f5fd8c2-2b6d-4945-aa64-fcf317521711.png)


Das Diagramm zeigt den folgenden Workflow:

1. Der Entwickler aktualisiert den Java-Anwendungscode im Basiszweig des CodeCommit Repositorys, wodurch eine Pull-Anfrage (PR) erstellt wird.

1. Sobald die PR eingereicht wurde, überprüft Amazon CodeGuru Reviewer den Code automatisch, analysiert ihn auf der Grundlage von Best Practices für Java und gibt dem Entwickler Empfehlungen.

1. Nachdem der PR mit dem Basiszweig zusammengeführt wurde, wird ein EventBridge Amazon-Event erstellt.

1. Das EventBridge Ereignis initiiert die CodePipeline Pipeline, die gestartet wird.

1. CodePipeline führt die CodeSecurity Scan-Phase aus (kontinuierliche Sicherheit).

1. AWS CodeBuild startet den Sicherheitsscan-Prozess, bei dem die Helm-Dateien für die Dockerfile- und Kubernetes-Bereitstellung mithilfe von Checkov gescannt werden und der Quellcode der Anwendung auf der Grundlage inkrementeller Codeänderungen gescannt wird. Der Anwendungsquellcodescan wird vom [CodeGuru Reviewer Command Line Interface (CLI) -Wrapper](https://github.com/aws/aws-codeguru-cli) durchgeführt.
**Anmerkung**  
Ab dem 7. November 2025 können Sie in Amazon CodeGuru Reviewer keine neuen Repository-Verknüpfungen erstellen. Weitere Informationen zu Services mit ähnlichen Funktionen wie CodeGuru Reviewer finden Sie in der [ CodeGuru Reviewer-Dokumentation unter Änderung der Verfügbarkeit von Amazon](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/codeguru-reviewer-availability-change.html) CodeGuru Reviewer. 

1. Wenn die Sicherheitsscan-Phase erfolgreich ist, wird die Build-Phase (kontinuierliche Integration) eingeleitet.

1. In der CodeBuild Build-Phase erstellt das Artefakt, packt das Artefakt in ein Docker-Image, scannt das Image mithilfe von Aqua Security Trivy auf Sicherheitslücken und speichert das Image in Amazon ECR.

1. Die in Schritt 8 erkannten Sicherheitslücken werden zur weiteren Analyse durch Entwickler oder Techniker auf Security Hub CSPM hochgeladen. Security Hub CSPM bietet einen Überblick und Empfehlungen zur Behebung der Sicherheitslücken.

1. E-Mail-Benachrichtigungen über aufeinanderfolgende Phasen innerhalb der CodePipeline Pipeline werden über Amazon SNS gesendet.

1. Nachdem die Phasen der kontinuierlichen Integration abgeschlossen sind, CodePipeline beginnt die Bereitstellungsphase (kontinuierliche Bereitstellung).

1. Das Docker-Image wird mithilfe von Helm-Diagrammen als Container-Workload (Pod) in Amazon EKS bereitgestellt.

1. Der Anwendungs-Pod ist mit dem Amazon CodeGuru Profiler-Agent konfiguriert, der die Profilerstellungsdaten der Anwendung (CPU, Heap-Nutzung und Latenz) an CodeGuru Profiler sendet, sodass Entwickler das Verhalten der Anwendung besser verstehen können.

## Tools
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-tools"></a>

**AWS-Services**
+ [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 regionsübergreifend zu verwalten. AWS-Konten 
+  [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)ist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [Amazon CodeGuru Profiler](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) sammelt Laufzeitleistungsdaten aus Ihren Live-Anwendungen und gibt Empfehlungen, die Ihnen bei der Feinabstimmung Ihrer Anwendungsleistung helfen können.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, der Ihnen hilft, Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen zu verbinden, darunter AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)bietet einen umfassenden Überblick über Ihren Sicherheitsstatus. AWS Es hilft Ihnen auch dabei, Ihre AWS Umgebung anhand von Industriestandards und Best Practices im Bereich Sicherheit zu überprüfen.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Andere Dienste**
+ [Helm](https://helm.sh/docs/) ist ein Open-Source-Paketmanager für Kubernetes.
+ [Apache Maven](https://maven.apache.org/) ist ein Tool für die Verwaltung und Untersuchung von Softwareprojekten.
+ [BridgeCrew Checkov](https://www.checkov.io/1.Welcome/What%20is%20Checkov.html) ist ein statisches Code-Analyse-Tool zum Scannen von IaC-Dateien (Infrastructure as Code) auf Fehlkonfigurationen, die zu Sicherheits- oder Compliance-Problemen führen können.
+ [Aqua Security Trivy](https://github.com/aquasecurity/trivy) ist ein umfassender Scanner für Sicherheitslücken in Container-Images, Dateisystemen und Git-Repositorys sowie für Konfigurationsprobleme.

**Code**

Der Code für dieses Muster ist im Repository verfügbar. GitHub [aws-codepipeline-devsecops-amazoneks](https://github.com/aws-samples/aws-codepipeline-devsecops-amazoneks)

## Best Practices
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-best-practices"></a>
+ Dieses Muster folgt den [bewährten IAM-Sicherheitsmethoden](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html), um das Prinzip der geringsten Rechte für IAM-Entitäten in allen Phasen der Lösung anzuwenden. Wenn Sie die Lösung um zusätzliche Tools AWS-Services oder Tools von Drittanbietern erweitern möchten, empfehlen wir Ihnen, den Abschnitt zur [Anwendung von Berechtigungen mit den geringsten Rechten in der IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) zu lesen.
+ Wenn Sie über mehrere Java-Anwendungen verfügen, empfehlen wir, für jede Anwendung separate CI/CD Pipelines zu erstellen.
+ Wenn Sie eine Monolith-Anwendung haben, empfehlen wir, die Anwendung nach Möglichkeit in Microservices aufzuteilen. Microservices sind flexibler, sie erleichtern die Bereitstellung von Anwendungen als Container und bieten einen besseren Einblick in den gesamten Aufbau und die Bereitstellung der Anwendung.

## Epen
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-epics"></a>

### Richte die Umgebung ein
<a name="set-up-the-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das GitHub Repository. | Führen Sie den folgenden Befehl aus, um das Repository zu klonen.<pre>git clone https://github.com/aws-samples/aws-codepipeline-devsecops-amazoneks</pre> | App-Entwickler, DevOps Ingenieur | 
| Erstellen Sie einen S3-Bucket und laden Sie den Code hoch. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.html) | AWS DevOps, Cloud-Administrator, DevOps Ingenieur | 
| Erstellen Sie einen CloudFormation Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.html) | AWS DevOps, DevOps Ingenieur | 
| Validieren Sie die CloudFormation Stack-Bereitstellung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.html) | AWS DevOps, DevOps Ingenieur | 
| Löschen Sie den S3-Bucket. | Leeren und löschen Sie den S3-Bucket, den Sie zuvor erstellt haben. Weitere Informationen finden Sie unter [Löschen eines Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) in der Amazon S3 S3-Dokumentation. | AWS DevOps, DevOps Ingenieur | 

### Konfigurieren Sie die Helm-Charts
<a name="configure-the-helm-charts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie die Helm-Charts Ihrer Java-Anwendung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.html) | DevOps Ingenieur | 
| Überprüfen Sie Helm-Diagramme auf Syntaxfehler. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.html) | DevOps Ingenieur | 

### Richten Sie die CI/CD Java-Pipeline ein
<a name="set-up-the-java-ci-cd-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die CI/CD Pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.html) | AWS DevOps | 

### Aktivieren Sie die Integration zwischen Security Hub CSPM und Aqua Security
<a name="activate-integration-between-ash-and-aqua-security"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Schalten Sie die Aqua Security-Integration ein. | Dieser Schritt ist erforderlich, um die von Trivy gemeldeten Ergebnisse der Docker-Image-Sicherheitslücke an Security Hub CSPM hochzuladen. Da Security Hub CSPM-Integrationen CloudFormation nicht unterstützt werden, muss dieser Vorgang manuell durchgeführt werden.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.html) | AWS-Administrator, DevOps Ingenieur | 

### Konfigurieren Sie CodeBuild die Konfiguration für die Ausführung von Helm- oder kubectl-Befehlen
<a name="configure-acb-to-run-helm-or-kubectl-commands"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  CodeBuild Erlaubt die Ausführung von Helm- oder kubectl-Befehlen im Amazon EKS-Cluster. |  CodeBuild Um für die Verwendung von Helm oder `kubectl` Befehlen mit dem Amazon EKS-Cluster authentifiziert zu werden, müssen Sie die IAM-Rollen zum hinzufügen. `aws-auth` `ConfigMap` Fügen Sie in diesem Fall den ARN der IAM-Rolle hinzu. Dabei handelt es sich um die IAM-Rolle`EksCodeBuildkubeRoleARN`, die für den CodeBuild Service erstellt wurde, um auf den Amazon EKS-Cluster zuzugreifen und Workloads darauf bereitzustellen. Dies ist eine einmalige Aktivität.Das folgende Verfahren muss vor der Genehmigung der Bereitstellung abgeschlossen sein CodePipeline.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.html)Der `aws_auth` `ConfigMap` ist konfiguriert und der Zugriff ist gewährt.  | DevOps | 

### Überprüfen Sie die CI/CD Pipeline
<a name="validate-the-ci-cd-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie sicher, dass die CI/CD Pipeline automatisch initiiert wird. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.html)Weitere Informationen zum Starten der Pipeline mithilfe CodePipeline von finden Sie in der [Dokumentation unter Starten einer Pipeline in](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-about-starting.html)CodePipeline, [Manuelles Starten einer Pipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-rerun-manually.html) und [Starten einer Pipeline nach einem Zeitplan](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-trigger-source-schedule.html). CodePipeline  | DevOps | 
| Genehmigen Sie die Bereitstellung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.html) | DevOps | 
| Überprüfen Sie die Anwendungsprofilerstellung. | Nachdem die Bereitstellung abgeschlossen und der Anwendungs-Pod in Amazon EKS bereitgestellt wurde, versucht der in der Anwendung konfigurierte Amazon CodeGuru Profiler-Agent, Profilerstellungsdaten der Anwendung (CPU, Heap-Zusammenfassung, Latenz und Engpässe) an Profiler zu senden. CodeGuru Bei der ersten Bereitstellung einer Anwendung benötigt Profiler etwa 15 Minuten, um die CodeGuru Profilerstellungsdaten zu visualisieren. | AWS DevOps | 

## Zugehörige Ressourcen
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-resources"></a>
+ [AWS CodePipeline Dokumentation](https://docs.aws.amazon.com/codepipeline/index.html)
+ [Bilder mit Trivy in einem AWS CodePipeline(AWS Blogbeitrag) scannen](https://aws.amazon.com/blogs/containers/scanning-images-with-trivy-in-an-aws-codepipeline/)
+ [Verbesserung Ihrer Java-Anwendungen mit Amazon CodeGuru Profiler](https://aws.amazon.com/blogs/devops/improving-your-java-applications-using-amazon-codeguru-profiler) (AWS Blogbeitrag)
+ [AWS Syntax des Security Finding Format (ASFF)](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format-syntax.html)
+ [ EventBridge Amazon-Ereignismuster](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)
+ [Helm aufrüsten](https://helm.sh/docs/helm/helm_upgrade/)

## Zusätzliche Informationen
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-additional"></a>
+ CodeGuru Profiler sollte in Bezug auf die Funktionalität nicht mit dem AWS X-Ray Dienst verwechselt werden. Wir empfehlen Ihnen, CodeGuru Profiler zu verwenden, um die teuersten Codezeilen zu identifizieren, die zu Engpässen oder Sicherheitsproblemen führen könnten, und diese zu beheben, bevor sie zu einem potenziellen Risiko werden. Der X-Ray-Dienst dient der Überwachung der Anwendungsleistung.
+ In diesem Muster sind Ereignisregeln dem Standard-Event-Bus zugeordnet. Bei Bedarf können Sie das Muster erweitern, um einen benutzerdefinierten Event-Bus zu verwenden.
+ Dieses Muster verwendet CodeGuru Reviewer als statisches Tool zum Testen der Anwendungssicherheit (SAST) für Anwendungscode. Sie können diese Pipeline auch für andere Tools wie SonarQube Checkmarx verwenden. Sie können die Anweisungen zur Einrichtung des Scans für jedes dieser Tools hinzufügen, `buildspec/buildspec_secscan.yaml` um die CodeGuru Scananweisungen zu ersetzen.
**Anmerkung**  
Ab dem 7. November 2025 können Sie in Amazon CodeGuru Reviewer keine neuen Repository-Verknüpfungen erstellen. Weitere Informationen zu Services mit ähnlichen Funktionen wie CodeGuru Reviewer finden Sie in der [ CodeGuru Reviewer-Dokumentation unter Änderung der Verfügbarkeit von Amazon](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/codeguru-reviewer-availability-change.html) CodeGuru Reviewer.

# Kopieren Sie Amazon ECR-Container-Images zwischen und AWS-Konten AWS-Regionen
<a name="copy-ecr-container-images-across-accounts-regions"></a>

*Faisal Shahdad, Amazon Web Services*

## Zusammenfassung
<a name="copy-ecr-container-images-across-accounts-regions-summary"></a>

Dieses Muster zeigt Ihnen, wie Sie einen serverlosen Ansatz verwenden, um markierte Bilder aus vorhandenen Amazon Elastic Container Registry (Amazon ECR) -Repositorys in andere und zu replizieren. AWS-Konten AWS-Regionen Die Lösung verwaltet AWS Step Functions den Replikationsablauf und bietet AWS Lambda Funktionen zum Kopieren großer Container-Images.

Amazon ECR verwendet native [regionsübergreifende](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-settings-examples.html#registry-settings-examples-crr-single) und [kontoübergreifende Replikationsfunktionen, die Container-Images über Regionen und Konten](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-settings-examples.html#registry-settings-examples-crossaccount) hinweg replizieren. Diese Funktionen replizieren Bilder jedoch erst ab dem Moment, in dem die Replikation aktiviert ist. Es gibt keinen Mechanismus, um vorhandene Images in verschiedenen Regionen und Konten zu replizieren. 

Dieses Muster hilft Teams für künstliche Intelligenz (KI), containerisierte Modelle für maschinelles Lernen (ML), Frameworks (z. B., PyTorch TensorFlow, und Hugging Face) und Abhängigkeiten an andere Konten und Regionen zu verteilen. Dies kann Ihnen helfen, Servicebeschränkungen zu überwinden und GPU-Rechenressourcen zu optimieren. Sie können Amazon ECR-Repositorys auch selektiv von bestimmten Quellkonten und Regionen replizieren. Weitere Informationen finden Sie unter [Regionsübergreifende Replikation in Amazon ECR ist gelandet](https://aws.amazon.com/blogs/containers/cross-region-replication-in-amazon-ecr-has-landed/).

## Voraussetzungen und Einschränkungen
<a name="copy-ecr-container-images-across-accounts-regions-prereqs"></a>

**Voraussetzungen**
+ Zwei oder mehr aktive Konten AWS-Konten (mindestens ein Quellkonto und ein Zielkonto)
+ Entsprechende AWS Identity and Access Management (IAM-) Berechtigungen in allen Konten
+ Docker zum Erstellen des Lambda-Container-Images
+ AWS Command Line Interface (AWS CLI) für alle Konten konfiguriert

**Einschränkungen**
+ **Ausschluss von Bildern ohne Tags —** Die Lösung kopiert nur Container-Images mit expliziten Tags. Bilder ohne Tags, die mit Digests existieren, werden übersprungen. `SHA256`
+ **Einschränkungen des Lambda-Ausführungstimeouts —** AWS Lambda ist auf ein maximales Ausführungstimeout von 15 Minuten begrenzt, das möglicherweise nicht ausreicht, um große Container-Images oder Repositorys zu kopieren.
+ **Manuelles Container-Image-Management —** Für den `crane-app.py` Python-Code muss das Lambda-Container-Image neu erstellt und bereitgestellt werden.
+ **Begrenzte Kapazität für die parallel Verarbeitung —** Die `MaxConcurrency` Statuseinstellung begrenzt, wie viele Repositorys Sie gleichzeitig kopieren können. Sie können diese Einstellung jedoch in der AWS CloudFormation Vorlage des Quellkontos ändern. Beachten Sie, dass höhere Parallelitätswerte dazu führen können, dass Sie die Serviceratenlimits und Lambda-Ausführungskontingente auf Kontoebene überschreiten.

## Architektur
<a name="copy-ecr-container-images-across-accounts-regions-architecture"></a>

**Zielstapel**

Das Muster besteht aus vier Hauptkomponenten:
+ **Infrastruktur des Quellkontos —** CloudFormation Vorlage, die die Orchestrierungskomponenten erstellt
+ **Infrastruktur des Zielkontos —** CloudFormation Vorlage, die kontenübergreifende Zugriffsrollen erstellt
+ **Lambda-Funktion —** Python-basierte Funktion, die Crane für effizientes Kopieren von Bildern verwendet
+ **Container-Image —** Docker-Container, der die Lambda-Funktion mit den erforderlichen Tools verpackt

**Zielarchitektur**

![\[alt text not found\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/787185e7-664b-4ed8-b30f-1d9507f13377/images/cc7d9823-3dc8-4090-a203-910b1ac4447c.png)


**Arbeitsablauf für Step Functions**

Die Step Functions Functions-Zustandsmaschine orchestriert Folgendes, wie in der folgenden Abbildung dargestellt:
+ `PopulateRepositoryList`**—** Scannt Amazon ECR-Repositorys und füllt Amazon DynamoDB
+ `GetRepositoryList`**—** Ruft eine eindeutige Repository-Liste von DynamoDB ab
+ `DeduplicateRepositories`**—** Stellt sicher, dass keine doppelte Verarbeitung erfolgt
+ `CopyRepositories`**— Verwaltet** das parallel Kopieren von Repositorys
+ `NotifySuccess`/`NotifyFailure`**—** Amazon Simple Notification Service (Amazon SNS) -Benachrichtigungen basierend auf dem Ausführungsergebnis

![\[alt text not found\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/787185e7-664b-4ed8-b30f-1d9507f13377/images/1b740084-ba2b-4956-aa12-ebbf52be5e7d.png)


## Tools
<a name="copy-ecr-container-images-across-accounts-regions-tools"></a>

**Amazon-Tools**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es 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 Lambda-Funktionen und andere Funktionen kombinieren können, um geschäftskritische Anwendungen AWS-Services zu erstellen.

**Andere Tools**
+ [Crane](https://michaelsauter.github.io/crane/index.html) ist ein Docker-Orchestrierungstool. Es ähnelt Docker Compose, bietet jedoch zusätzliche Funktionen.
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.

**Code-Repository**
+ Der Code für dieses Muster ist im GitHub [sample-ecr-copy Repository](https://github.com/aws-samples/sample-ecr-copy) verfügbar. Sie können die CloudFormation Vorlage aus dem Repository verwenden, um die zugrunde liegenden Ressourcen zu erstellen.

## Best Practices
<a name="copy-ecr-container-images-across-accounts-regions-best-practices"></a>

Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).

## Epen
<a name="copy-ecr-container-images-across-accounts-regions-epics"></a>

### Vorbereitung Ihrer Umgebung
<a name="prepare-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  AWS CLI Profile konfigurieren. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps Ingenieur, Dateningenieur, ML-Ingenieur | 
| Sammeln Sie die erforderlichen Informationen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps Ingenieur, Dateningenieur, ML-Ingenieur | 
| Klonen Sie das Repository | Klonen Sie das Repository des Patterns auf Ihre lokale Workstation:<pre>git clone https://github.com/aws-samples/sample-ecr-copy</pre> | DevOps Ingenieur, Dateningenieur, ML-Ingenieur | 

### Stellen Sie die Infrastruktur für das Zielkonto bereit
<a name="deploy-infrastructure-for-the-destination-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bestätigen Sie die Vorlage. | Validieren Sie die CloudFormation Vorlage:<pre>aws cloudformation validate-template \<br />  --template-body file://"Destination Account cf_template.yml" \<br />  --profile destination-account</pre> | DevOps Ingenieur, ML-Ingenieur, Dateningenieur | 
| Stellen Sie die Zielinfrastruktur bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Dateningenieur, ML-Ingenieur, DevOps Ingenieur | 
| Überprüfen Sie die Bereitstellung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps Ingenieur, ML-Ingenieur, Dateningenieur | 

### Das Lambda-Container-Image erstellen und bereitstellen
<a name="build-and-deploy-the-lam-container-image"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereiten Sie den Container-Build vor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Dateningenieur, ML-Ingenieur, DevOps Ingenieur | 
| Erstellen Sie das Container-Image. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Dateningenieur, ML-Ingenieur, DevOps Ingenieur | 
| Erstellen Sie ein Repository und laden Sie das Bild hoch. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Dateningenieur, ML-Ingenieur, DevOps Ingenieur | 
| Überprüfen Sie das Bild. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Dateningenieur, ML-Ingenieur, DevOps Ingenieur | 

### Stellen Sie die Infrastruktur des Quellkontos bereit
<a name="deploy-the-source-account-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereiten Sie die Bereitstellungsparameter vor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Dateningenieur, DevOps Ingenieur, ML-Ingenieur | 
| Überprüfen Sie die Quellvorlage. | Validieren Sie die CloudFormation Quellvorlage:<pre>aws cloudformation validate-template \<br />  --template-body file://"Source Account Cf template.yml" \<br />  --profile source-account</pre> | Dateningenieur, ML-Ingenieur, DevOps Ingenieur | 
| Stellen Sie die Quellinfrastruktur bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Dateningenieur, ML-Ingenieur, DevOps Ingenieur | 
| Überprüfen Sie die Bereitstellung und sammeln Sie die Ergebnisse. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps Ingenieur, ML-Ingenieur, Dateningenieur | 
| Bestätigen Sie Ihr E-Mail-Abonnement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Dateningenieur, ML-Ingenieur, DevOps Ingenieur | 

### Führen Sie den Kopiervorgang aus und überwachen Sie ihn
<a name="run-and-monitor-the-copy-process"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie den Kopiervorgang aus und überwachen Sie ihn. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps Ingenieur, ML-Ingenieur, Dateningenieur | 
| Führen Sie die Step-Funktion aus. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps Ingenieur, ML-Ingenieur, Dateningenieur | 
| Überwachen Sie den Fortschritt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps Ingenieur, ML-Ingenieur, Dateningenieur | 
| Überprüfen Sie die Ergebnisse. | Warten Sie, bis der Vorgang abgeschlossen ist (wird alle 30 Sekunden aktualisiert):<pre>while true; do<br />  STATUS=$(aws stepfunctions describe-execution \<br />    --execution-arn $EXECUTION_ARN \<br />    --profile source-account \<br />    --region $SOURCE_REGION \<br />    --query 'status' \<br />    --output text)<br />  <br />  echo "Current status: $STATUS"<br />  <br />  if [[ "$STATUS" == "SUCCEEDED" || "$STATUS" == "FAILED" || "$STATUS" == "TIMED_OUT" || "$STATUS" == "ABORTED" ]]; then<br />    break<br />  fi<br />  <br />  sleep 30<br />done<br /><br />echo "Final execution status: $STATUS"</pre> | DevOps Ingenieur, ML-Ingenieur, Dateningenieur | 
| Überprüfen Sie die Bilder. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps Ingenieur, Dateningenieur, ML-Ingenieur | 

## Fehlerbehebung
<a name="copy-ecr-container-images-across-accounts-regions-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Step-Funktionen können nicht ausgeführt werden. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | 

## Zugehörige Ressourcen
<a name="copy-ecr-container-images-across-accounts-regions-resources"></a>
+ [Dokumentation zum Kran](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md)
+ [Was ist Amazon Elastic Container Registry?](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
+ [Was ist AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Was ist Step Functions?](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)

## Zusätzliche Informationen
<a name="copy-ecr-container-images-across-accounts-regions-additional"></a>

**Konfigurationsparameter**


| 
| 
| Parameter | Description | Beispiel | 
| --- |--- |--- |
| `SourceAccountId` |  AWS-Konto Quell-ID | `11111111111` | 
| `DestinationAccountId` |  AWS-Konto Ziel-ID | `22222222222` | 
| `DestinationRegion` | Ziel AWS-Region | `us-east-2` | 
| `SourceRegion` | Quelle AWS-Region | `us-east-1` | 
| `NotificationEmail` | E-Mail für Benachrichtigungen | `abc@xyz.com` | 
| `RepositoryList` | Zu kopierende Repositorien | `repo1,repo2,repo3` | 
| `LambdaImageUri` | Lambda-Container-Image-URI | `${ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com/ecr-copy-lambda:latest` | 

# Erstellen Sie eine Amazon ECS-Aufgabendefinition und mounten Sie mithilfe von Amazon EFS ein Dateisystem auf EC2 Instances
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs"></a>

*Durga Prasad Cheepuri, Amazon Web Services*

## Zusammenfassung
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-summary"></a>

Dieses Muster enthält Codebeispiele und Schritte zum Erstellen einer Amazon Elastic Container Service (Amazon ECS) -Aufgabendefinition, die auf Amazon Elastic Compute Cloud (Amazon EC2) -Instances in der Amazon Web Services (AWS) -Cloud ausgeführt wird, während Amazon Elastic File System (Amazon EFS) zum Mounten eines Dateisystems auf diesen EC2 Instances verwendet wird. Amazon ECS-Aufgaben, die Amazon EFS verwenden, mounten automatisch die Dateisysteme, die Sie in der Aufgabendefinition angeben, und stellen diese Dateisysteme den Containern der Aufgabe in allen Availability Zones in einer AWS-Region zur Verfügung.

Um Ihre Anforderungen an persistenten Speicher und gemeinsam genutzten Speicher zu erfüllen, können Sie Amazon ECS und Amazon EFS zusammen verwenden. Sie können Amazon EFS beispielsweise verwenden, um persistente Benutzerdaten und Anwendungsdaten für Ihre Anwendungen mit aktiven und Standby-ECS-Containerpaaren zu speichern, die in verschiedenen Availability Zones laufen, um eine hohe Verfügbarkeit zu gewährleisten. Sie können Amazon EFS auch verwenden, um gemeinsam genutzte Daten zu speichern, auf die parallel von ECS-Containern und verteilten Job-Workloads zugegriffen werden kann.

Um Amazon EFS mit Amazon ECS zu verwenden, können Sie einer Aufgabendefinition eine oder mehrere Volume-Definitionen hinzufügen. Eine Volume-Definition umfasst eine Amazon EFS-Dateisystem-ID, eine Zugriffspunkt-ID und eine Konfiguration für die AWS Identity and Access Management (IAM) -Autorisierung oder die Transport Layer Security (TLS) -Verschlüsselung bei der Übertragung. Sie können Containerdefinitionen innerhalb von Aufgabendefinitionen verwenden, um die Aufgabendefinitionsvolumes anzugeben, die bei der Ausführung des Containers bereitgestellt werden. Wenn eine Aufgabe ausgeführt wird, die ein Amazon EFS-Dateisystem verwendet, stellt Amazon ECS sicher, dass das Dateisystem bereitgestellt ist und für die Container verfügbar ist, die Zugriff darauf benötigen.

## Voraussetzungen und Einschränkungen
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Eine Virtual Private Cloud (VPC) mit einem Virtual Private Network (VPN) -Endpunkt oder einem Router
+ (Empfohlen) [Amazon ECS-Container-Agent 1.38.0 oder höher](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-versions.html) aus Gründen der Kompatibilität mit Amazon EFS-Zugriffspunkten und IAM-Autorisierungsfunktionen (Weitere Informationen finden Sie im AWS-Blogbeitrag [Neu für Amazon EFS — IAM-Autorisierung und](https://aws.amazon.com/blogs/aws/new-for-amazon-efs-iam-authorization-and-access-points/) Zugriffspunkte.)

**Einschränkungen**
+ Amazon ECS-Container-Agent-Versionen vor 1.35.0 unterstützen keine Amazon EFS-Dateisysteme für Aufgaben, die den EC2 Starttyp verwenden.

## Architektur
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-architecture"></a>

Das folgende Diagramm zeigt ein Beispiel für eine Anwendung, die Amazon ECS verwendet, um eine Aufgabendefinition zu erstellen und ein Amazon EFS-Dateisystem auf EC2 Instances in ECS-Containern zu mounten.

![\[Amazon ECS architecture with task definition, ECS service, containers, and EFS file system integration.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/090a3f03-a4c6-47e3-b1ae-b0eb5c5b269c/images/343e0f1d-44ee-4ec2-8392-aeddc0e48b83.png)


Das Diagramm zeigt den folgenden Workflow:

1. Erstellen Sie ein Amazon EFS-Dateisystem.

1. Erstellen Sie eine Aufgabendefinition mit einem Container.

1. Konfigurieren Sie die Container-Instances für das Mounten des Amazon EFS-Dateisystems. Die Aufgabendefinition verweist auf die Volume-Mounts, sodass die Container-Instance das Amazon EFS-Dateisystem verwenden kann. ECS-Aufgaben haben Zugriff auf dasselbe Amazon EFS-Dateisystem, unabhängig davon, auf welcher Container-Instance diese Aufgaben erstellt werden.

1. Erstellen Sie einen Amazon ECS-Service mit drei Instanzen der Aufgabendefinition.

**Technologie-Stack**
+ Amazon EC2
+ Amazon ECS
+ Amazon EFS

## Tools
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-tools"></a>
+ [Amazon EC2](https://docs.aws.amazon.com/ec2/?id=docs_gateway) — Amazon Elastic Compute Cloud (Amazon EC2) bietet skalierbare Rechenkapazität in der AWS-Cloud. Sie können Amazon verwenden EC2 , um so viele oder so wenige virtuelle Server zu starten, wie Sie benötigen, und Sie können nach oben oder unten skalieren.
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) — Amazon Elastic Container Service (Amazon ECS) ist ein hoch skalierbarer, schneller Container-Management-Service zum Ausführen, Stoppen und Verwalten von Containern in einem Cluster. Sie können Ihre Aufgaben und Services auf einer serverlosen Infrastruktur ausführen, die von AWS Fargate verwaltet wird. Um mehr Kontrolle über Ihre Infrastruktur zu erhalten, können Sie Ihre Aufgaben und Dienste alternativ auf einem Cluster von EC2 Instances ausführen, die Sie verwalten.
+ [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) — Amazon Elastic File System (Amazon EFS) bietet ein einfaches, skalierbares, vollständig verwaltetes elastisches NFS-Dateisystem zur Verwendung mit AWS-Cloud-Services und lokalen Ressourcen.
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) — Die AWS-Befehlszeilenschnittstelle (AWS CLI) ist ein Open-Source-Tool für die Interaktion mit AWS-Services über Befehle in Ihrer Befehlszeilen-Shell. Mit minimaler Konfiguration können Sie AWS-CLI-Befehle, die Funktionen implementieren, die denen entsprechen, die von der browserbasierten AWS-Managementkonsole bereitgestellt werden, von einer Befehlszeile aus ausführen.

## Epen
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-epics"></a>

### Erstellen eines Amazon EFS-Dateisystems
<a name="create-an-amazon-efs-file-system"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie mithilfe der AWS-Managementkonsole ein Amazon EFS-Dateisystem. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs.html) | AWS DevOps | 

### Erstellen Sie eine Amazon ECS-Aufgabendefinition, indem Sie entweder ein Amazon EFS-Dateisystem oder die AWS-CLI CLI
<a name="create-an-amazon-ecs-task-definition-by-using-either-an-amazon-efs-file-system-or-the-aws-cli"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Aufgabendefinition mit einem Amazon EFS-Dateisystem. | Erstellen Sie eine Aufgabendefinition mithilfe der [neuen Amazon ECS-Konsole](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html) oder der [klassischen Amazon ECS-Konsole](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition-classic.html) mit den folgenden Konfigurationen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs.html) | AWS DevOps | 
| Erstellen Sie mit der AWS-CLI eine Aufgabendefinition. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs.html) | AWS DevOps | 

## Zugehörige Ressourcen
<a name="create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs-resources"></a>
+ [Amazon ECS-Aufgabendefinitionen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)
+ [Amazon EFS-Volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html)

## Anlagen
<a name="attachments-090a3f03-a4c6-47e3-b1ae-b0eb5c5b269c"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/090a3f03-a4c6-47e3-b1ae-b0eb5c5b269c/attachments/attachment.zip)

# Stellen Sie Lambda-Funktionen mit Container-Images bereit
<a name="deploy-lambda-functions-with-container-images"></a>

*Ram Kandaswamy, Amazon Web Services*

## Zusammenfassung
<a name="deploy-lambda-functions-with-container-images-summary"></a>

AWS Lambda unterstützt Container-Images als Bereitstellungsmodell. Dieses Muster zeigt, wie Lambda-Funktionen über Container-Images bereitgestellt werden. 

Lambda ist ein serverloser, ereignisgesteuerter Rechendienst, mit dem Sie Code für praktisch jede Art von Anwendung oder Backend-Service ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Mit der Container-Image-Unterstützung für Lambda-Funktionen profitieren Sie von bis zu 10 GB Speicherplatz für Ihr Anwendungsartefakt und können vertraute Container-Image-Entwicklungstools verwenden.

Das Beispiel in diesem Muster verwendet Python als zugrunde liegende Programmiersprache, aber Sie können auch andere Sprachen wie Java, Node.js oder Go verwenden. Ziehen Sie als Quelle ein Git-basiertes System wie GitHub,, oder Bitbucket in Betracht GitLab, oder verwenden Sie Amazon Simple Storage Service (Amazon S3).

## Voraussetzungen und Einschränkungen
<a name="deploy-lambda-functions-with-container-images-prereqs"></a>

**Voraussetzungen**
+ Amazon Elastic Container Registry (Amazon ECR) aktiviert
+ Anwendungscode
+ Docker-Images mit dem Runtime-Interface-Client und der neuesten Version von Python
+ Grundkenntnisse in Git

**Einschränkungen**
+ Die maximal unterstützte Bildgröße beträgt 10 GB.
+ Die maximale Laufzeit für eine Lambda-basierte Container-Bereitstellung beträgt 15 Minuten.

## Architektur
<a name="deploy-lambda-functions-with-container-images-architecture"></a>

**Zielarchitektur**

![\[Vierstufiger Prozess zur Erstellung der Lambda-Funktion.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e421cc58-d33e-493d-b0bb-c3ffe39c2eb9/images/7f36d3d8-d161-497a-b036-26d886a16c69.png)


 

1. Sie erstellen ein Git-Repository und übertragen den Anwendungscode in das Repository.

1. Das AWS CodeBuild Projekt wird durch Commit-Änderungen ausgelöst.

1. Das CodeBuild Projekt erstellt das Docker-Image und veröffentlicht das erstellte Image in Amazon ECR.

1. Sie erstellen die Lambda-Funktion mithilfe des Images in Amazon ECR.

**Automatisierung und Skalierung**

Dieses Muster kann mithilfe von AWS CloudFormation AWS Cloud Development Kit (AWS CDK), oder API-Operationen aus einem SDK automatisiert werden. Lambda kann automatisch auf der Grundlage der Anzahl der Anfragen skaliert werden, und Sie können es mithilfe der Parallelitätsparameter optimieren. Weitere Informationen finden Sie in der [Lambda-Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/lambda-concurrency.html).

## Tools
<a name="deploy-lambda-functions-with-container-images-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)Mit AWS richten CloudFormationhelps Sie AWS Ressourcen ein, stellen sie schnell und konsistent bereit und verwalten sie während ihres gesamten Lebenszyklus über AWS-Konten und AWS-Regionen. Dieses Muster verwendet [AWS CloudFormation Application Composer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/app-composer-for-cloudformation.html), mit dem Sie CloudFormation Vorlagen visuell 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.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten 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.

**Andere Tools**
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.
+ [GitHub](https://docs.github.com/en/repositories/creating-and-managing-repositories/quickstart-for-repositories), [GitLab](https://docs.gitlab.com/ee/user/get_started/get_started_projects.html), und [Bitbucket](https://support.atlassian.com/bitbucket-cloud/docs/tutorial-learn-bitbucket-with-git/) sind einige der am häufigsten verwendeten Git-basierten Quellcodeverwaltungssysteme, um Quellcodeänderungen zu verfolgen.

## Best Practices
<a name="deploy-lambda-functions-with-container-images-best-practices"></a>
+ Mache deine Funktion so effizient und klein wie möglich, um zu vermeiden, dass unnötige Dateien geladen werden.
+ Bemühen Sie sich, statische Ebenen in Ihrer Docker-Dateiliste weiter oben zu platzieren, und platzieren Sie Ebenen, die sich häufiger ändern, weiter unten. Dadurch wird das Caching verbessert, was die Leistung verbessert.
+ Der Image-Besitzer ist für die Aktualisierung und das Patchen des Images verantwortlich. Fügen Sie diesen Aktualisierungsrhythmus zu Ihren betrieblichen Abläufen hinzu. Weitere Informationen finden Sie in der [AWS Lambda -Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html#function-code).

## Epen
<a name="deploy-lambda-functions-with-container-images-epics"></a>

### Erstellen Sie ein Projekt in CodeBuild
<a name="create-a-project-in-codebuild"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Git-Repository. | Erstellen Sie ein Git-Repository, das den Quellcode der Anwendung, das Dockerfile und die `buildspec.yaml` Datei enthält.  | Developer | 
| Erstellen Sie ein Projekt CodeBuild . | Gehen Sie wie folgt vor, um ein CodeBuild Projekt zum Erstellen des benutzerdefinierten Lambda-Images zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-lambda-functions-with-container-images.html) | Developer | 
| Bearbeiten Sie das Dockerfile. | Das Dockerfile sollte sich im Verzeichnis der obersten Ebene befinden, in dem Sie die Anwendung entwickeln. Der Python-Code sollte sich im `src` Ordner befinden.Verwenden Sie bei der Erstellung des Images die [offiziellen von Lambda unterstützten Images](https://gallery.ecr.aws/lambda?page=1). Andernfalls tritt ein Bootstrap-Fehler auf, der den Packvorgang erschwert.Einzelheiten finden Sie im Abschnitt [Zusätzliche Informationen](#deploy-lambda-functions-with-container-images-additional). | Developer | 
| Erstellen Sie ein Repository in Amazon ECR. | Erstellen Sie ein Container-Repository in Amazon ECR. Im folgenden Beispielbefehl lautet der Name des erstellten Repositorys: `cf-demo`<pre>aws ecr create-repository --cf-demo </pre>Das Repository wird in der `buildspec.yaml` Datei referenziert. | AWS-Administrator, Entwickler | 
| Verschieben Sie das Image zu Amazon ECR. | Sie können es verwenden CodeBuild , um den Image-Build-Prozess durchzuführen. CodeBuild benötigt die Erlaubnis, mit Amazon ECR zu interagieren und mit S3 zu arbeiten. Im Rahmen des Prozesses wird das Docker-Image erstellt und in die Amazon ECR-Registrierung übertragen. Einzelheiten zur Vorlage und zum Code finden Sie im Abschnitt [Zusätzliche Informationen](#deploy-lambda-functions-with-container-images-additional). | Developer | 
| Stellen Sie sicher, dass sich das Bild im Repository befindet. | Um zu überprüfen, ob sich das Bild im Repository befindet, wählen Sie in der Amazon ECR-Konsole **Repositories** aus. Das Bild sollte mit Tags und den Ergebnissen eines Schwachstellenscanberichts aufgeführt werden, wenn diese Funktion in den Amazon ECR-Einstellungen aktiviert war.  Weitere Informationen finden Sie in der [AWS-Dokumentation](https://docs.aws.amazon.com/cli/latest/reference/ecr/put-registry-scanning-configuration.html). | Developer | 

### Erstellen Sie die Lambda-Funktion, um das Image auszuführen
<a name="create-the-lambda-function-to-run-the-image"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| So erstellen Sie die Lambda-Funktion: | Wählen Sie in der Lambda-Konsole **Create function** und dann **Container image** aus. Geben Sie den Funktionsnamen und die URI für das Bild ein, das sich im Amazon ECR-Repository befindet, und wählen Sie dann **Funktion erstellen**. Weitere Informationen finden Sie in der [AWS Lambda Lambda-Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/API_CreateFunction.html). | App-Developer | 
| Testen Sie die Lambda-Funktion. | **Um die Funktion aufzurufen und zu testen, wählen Sie Test.** Weitere Informationen finden Sie in der [AWS Lambda Lambda-Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/testing-functions.html). | App-Developer | 

## Fehlerbehebung
<a name="deploy-lambda-functions-with-container-images-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Der Build ist nicht erfolgreich. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-lambda-functions-with-container-images.html) | 

## Zugehörige Ressourcen
<a name="deploy-lambda-functions-with-container-images-resources"></a>
+ [Basisbilder für Lambda](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-images.html)
+ [Docker-Beispiel für CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-docker.html)
+ [Übergeben Sie temporäre Anmeldeinformationen](https://aws.amazon.com/premiumsupport/knowledge-center/codebuild-temporary-credentials-docker/)

## Zusätzliche Informationen
<a name="deploy-lambda-functions-with-container-images-additional"></a>

**Bearbeiten Sie das Dockerfile**

Der folgende Code zeigt die Befehle, die Sie im Dockerfile bearbeiten:

```
FROM public.ecr.aws/lambda/python:3.xx

# Copy function code
COPY app.py ${LAMBDA_TASK_ROOT} 
COPY requirements.txt  ${LAMBDA_TASK_ROOT} 

# install dependencies
RUN pip3 install --user -r requirements.txt

# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD [ "app.lambda_handler" ]
```

Verwenden Sie im `FROM` Befehl den entsprechenden Wert für die Python-Version, die von Lambda unterstützt wird (z. B.`3.12`). Dies wird das Basis-Image sein, das im öffentlichen Amazon ECR-Image-Repository verfügbar ist. 

Der `COPY app.py ${LAMBDA_TASK_ROOT}` Befehl kopiert den Code in das Stammverzeichnis der Aufgabe, das von der Lambda-Funktion verwendet wird. Dieser Befehl verwendet die Umgebungsvariable, sodass wir uns keine Gedanken über den tatsächlichen Pfad machen müssen. Die auszuführende Funktion wird als Argument an den `CMD [ "app.lambda_handler" ]` Befehl übergeben.

Der `COPY requirements.txt` Befehl erfasst die für den Code erforderlichen Abhängigkeiten. 

Der `RUN pip install --user -r requirements.txt` Befehl installiert die Abhängigkeiten im lokalen Benutzerverzeichnis. 

Führen Sie den folgenden Befehl aus, um Ihr Image zu erstellen.

```
docker build -t <image name> .
```

**Fügen Sie das Bild in Amazon ECR hinzu**

Ersetzen Sie den Code im folgenden Code `aws_account_id` durch die Kontonummer und ersetzen Sie ihn, `us-east-1` wenn Sie eine andere Region verwenden. Die `buildspec` Datei verwendet die CodeBuild Buildnummer, um Image-Versionen eindeutig als Tag-Wert zu identifizieren. Sie können dies an Ihre Anforderungen anpassen.

*Der benutzerdefinierte Buildspec-Code*

```
phases:
  install:
    runtime-versions:
       python: 3.xx
  pre_build:
    commands:
      - python3 --version
      - pip3 install --upgrade pip
      - pip3 install --upgrade awscli
      - sudo docker info
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...
      - ls
      - cd app
      - docker build -t cf-demo:$CODEBUILD_BUILD_NUMBER .
      - docker container ls
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker image...
      - aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.us-east-1.amazonaws.com
      - docker tag cf-demo:$CODEBUILD_BUILD_NUMBER aws_account_id.dkr.ecr.us-east-1.amazonaws.com/cf-demo:$CODEBUILD_BUILD_NUMBER
      - docker push aws_account_id.dkr.ecr.us-east-1.amazonaws.com/cf-demo:$CODEBUILD_BUILD_NUMBER
```

# Bereitstellen von Java-Microservices auf Amazon ECS mithilfe von AWS Fargate
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate"></a>

*Vijay Thompson und Sandeep Bondugula, Amazon Web Services*

## Zusammenfassung
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-summary"></a>

Dieses Muster bietet Anleitungen für die Bereitstellung containerisierter Java-Mikroservices auf Amazon Elastic Container Service (Amazon ECS) mithilfe von AWS Fargate. Das Muster verwendet Amazon Elastic Container Registry (Amazon ECR) nicht für die Containerverwaltung. Stattdessen werden Docker-Images von einem Docker-Hub abgerufen. 

## Voraussetzungen und Einschränkungen
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-prereqs"></a>

**Voraussetzungen**
+ Eine bestehende Java-Microservices-Anwendung auf einem Docker-Hub
+ Ein öffentliches Docker-Repository
+ Ein aktives AWS-Konto
+ Vertrautheit mit AWS-Services, einschließlich Amazon ECS und Fargate
+ Docker-, Java- und Spring Boot-Framework
+ Amazon Relational Database Service (Amazon RDS) ist betriebsbereit (optional)
+ Eine virtuelle private Cloud (VPC), wenn für die Anwendung Amazon RDS erforderlich ist (optional)

## Architektur
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-architecture"></a>

**Quelltechnologie-Stack**
+ Java-Mikroservices (z. B. in Spring Boot implementiert) und auf Docker bereitgestellt

**Quellarchitektur**

![\[Quellarchitektur für Java-Microservices, die auf Docker bereitgestellt werden\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/65185957-2b8b-43a6-964c-95ce0a45ba17/images/0a946ca8-fe37-4ede-85cb-a80a1c36105d.png)


**Zieltechnologie-Stack**
+ Ein Amazon ECS-Cluster, der jeden Microservice mithilfe von Fargate hostet
+ Ein VPC-Netzwerk zum Hosten des Amazon ECS-Clusters und der zugehörigen Sicherheitsgruppen 
+ Eine cluster/task Definition für jeden Microservice, der Container mithilfe von Fargate hochfährt

**Zielarchitektur**

![\[Zielarchitektur auf Java-Mikroservices auf Amazon ECS\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/65185957-2b8b-43a6-964c-95ce0a45ba17/images/b21349ea-21fc-4688-b76a-1bde479858aa.png)


## Tools
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-tools"></a>

**Tools**
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) macht es überflüssig, Ihre eigene Container-Orchestrierungssoftware zu installieren und zu betreiben, einen Cluster von virtuellen Maschinen zu verwalten und zu skalieren oder Container auf diesen virtuellen Maschinen zu planen. 
+ Mit [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html) können Sie Container ausführen, ohne Server oder Amazon Elastic Compute Cloud (Amazon EC2) -Instances verwalten zu müssen. Es wird in Verbindung mit Amazon Elastic Container Service (Amazon ECS) verwendet.
+ [Docker](https://www.docker.com/) ist eine Softwareplattform, mit der Sie Anwendungen schnell erstellen, testen und bereitstellen können. Docker packt Software in standardisierte Einheiten, sogenannte *Container*, die alles enthalten, was die Software zum Ausführen benötigt, einschließlich Bibliotheken, Systemtools, Code und Laufzeit. 

**Docker-Code**

Das folgende Dockerfile gibt die verwendete Version des Java Development Kit (JDK) an, in der die Java-Archivdatei (JAR) vorhanden ist, die Portnummer, die verfügbar gemacht wird, und den Einstiegspunkt für die Anwendung.

```
FROM openjdk:11
ADD target/Spring-docker.jar Spring-docker.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","Spring-docker.jar"]
```

## Epen
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-epics"></a>

### Neue Aufgabendefinitionen erstellen
<a name="create-new-task-definitions"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Aufgabendefinition. | Für die Ausführung eines Docker-Containers in Amazon ECS ist eine Aufgabendefinition erforderlich. Öffnen Sie die Amazon ECS-Konsole unter [https://console.aws.amazon.com/ecs/](https://console.aws.amazon.com/ecs/), wählen Sie **Aufgabendefinitionen** und erstellen Sie dann eine neue Aufgabendefinition. Weitere Informationen finden Sie in der [Amazon ECS-Dokumentation](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html). | AWS-Systemadministrator, App-Entwickler | 
| Wählen Sie den Starttyp. | Wählen Sie **Fargate** als Starttyp. | AWS-Systemadministrator, App-Entwickler | 
| Konfigurieren Sie die Aufgabe. | Definieren Sie einen Aufgabennamen und konfigurieren Sie die Anwendung mit der entsprechenden Menge an Aufgabenspeicher und CPU. | AWS-Systemadministrator, App-Entwickler | 
| Definieren Sie den Container. | Geben Sie den Namen des Containers an. Geben Sie für das Image den Namen der Docker-Site, den Repository-Namen und den Tag-Namen des Docker-Images ein ()`docker.io/sample-repo/sample-application:sample-tag-name`. Legen Sie Speicherlimits für die Anwendung und Portzuordnungen (`8080, 80`) für die zulässigen Ports fest. | AWS-Systemadministrator, App-Entwickler | 
| Erstellen Sie die Aufgabe. | Wenn die Aufgaben- und Containerkonfigurationen vorhanden sind, erstellen Sie die Aufgabe. Detaillierte Anweisungen finden Sie unter den Links im Abschnitt *Verwandte Ressourcen*. | AWS-Systemadministrator, App-Entwickler | 

### Konfigurieren des Clusters
<a name="configure-the-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen und konfigurieren Sie einen Cluster. | Wählen Sie als Clustertyp **nur Networking** aus, konfigurieren Sie den Namen und erstellen Sie dann den Cluster oder verwenden Sie einen vorhandenen Cluster, falls verfügbar. Weitere Informationen finden Sie in der [Amazon ECS-Dokumentation](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html). | AWS-Systemadministrator, App-Entwickler | 

### Aufgabe konfigurieren
<a name="configure-task"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine -Aufgabe. | Wählen Sie im Cluster die Option **Neue Aufgabe ausführen aus**. | AWS-Systemadministrator, App-Entwickler | 
| Wählen Sie den Starttyp. | Wählen Sie **Fargate** als Starttyp. | AWS-Systemadministrator, App-Entwickler | 
| Wählen Sie Aufgabendefinition, Revision und Plattformversion. | Wählen Sie die Aufgabe, die Sie ausführen möchten, die Version der Aufgabendefinition und die Plattformversion aus. | AWS-Systemadministrator, App-Entwickler | 
| Wählen Sie den -Cluster. | Wählen Sie den Cluster aus, von dem aus Sie die Aufgabe ausführen möchten. | AWS-Systemadministrator, App-Entwickler | 
| Geben Sie die Anzahl der Aufgaben an. | Konfigurieren Sie die Anzahl der Aufgaben, die ausgeführt werden sollen. Wenn Sie mit zwei oder mehr Aufgaben starten, ist ein Load Balancer erforderlich, um den Datenverkehr auf die Aufgaben zu verteilen. | AWS-Systemadministrator, App-Entwickler | 
| Geben Sie die Aufgabengruppe an. | (Optional) Geben Sie einen Aufgabengruppennamen an, um eine Gruppe verwandter Aufgaben als Aufgabengruppe zu identifizieren. | AWS-Systemadministrator, App-Entwickler | 
| Konfigurieren Sie die Cluster-VPC, die Subnetze und die Sicherheitsgruppen. | Konfigurieren Sie die Cluster-VPC und die Subnetze, in denen Sie die Anwendung bereitstellen möchten. Erstellen oder aktualisieren Sie Sicherheitsgruppen (HTTP, HTTPS und Port 8080), um den Zugriff auf eingehende und ausgehende Verbindungen zu ermöglichen. | AWS-Systemadministrator, App-Entwickler | 
| Konfigurieren Sie öffentliche IP-Einstellungen. | Aktivieren oder deaktivieren Sie die öffentliche IP, je nachdem, ob Sie eine öffentliche IP-Adresse für Fargate-Aufgaben verwenden möchten. Die empfohlene Standardoption ist **Aktiviert**. | AWS-Systemadministrator, App-Entwickler | 
| Überprüfen Sie die Einstellungen und erstellen Sie die Aufgabe | Überprüfen Sie Ihre Einstellungen und wählen Sie dann **Task ausführen**. | AWS-Systemadministrator, App-Entwickler | 

### Überschneiden
<a name="cut-over"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Kopieren Sie die Anwendungs-URL. | Wenn der Aufgabenstatus auf Wird *ausgeführt* aktualisiert wurde, wählen Sie die Aufgabe aus. Kopieren Sie im Bereich Netzwerk die öffentliche IP. | AWS-Systemadministrator, App-Entwickler | 
| Testen Sie Ihre Anwendung. | Geben Sie in Ihrem Browser die öffentliche IP ein, um die Anwendung zu testen. | AWS-Systemadministrator, App-Entwickler | 

## Zugehörige Ressourcen
<a name="deploy-java-microservices-on-amazon-ecs-using-aws-fargate-resources"></a>
+ [Docker-Grundlagen für Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html) (Amazon ECS-Dokumentation)
+ [Amazon ECS auf AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) (Amazon ECS-Dokumentation)
+ [Eine Aufgabendefinition erstellen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html) (Amazon ECS-Dokumentation)
+ [Einen Cluster erstellen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html) (Amazon ECS-Dokumentation)
+ [Konfiguration grundlegender Serviceparameter](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/basic-service-params.html) (Amazon ECS-Dokumentation)
+ [Konfiguration eines Netzwerks](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-configure-network.html) (Amazon ECS-Dokumentation)
+ [Bereitstellung von Java-Microservices auf Amazon ECS](https://aws.amazon.com/blogs/compute/deploying-java-microservices-on-amazon-ec2-container-service/) (Blogbeitrag)

# Stellen Sie Kubernetes-Ressourcen und -Pakete mithilfe von Amazon EKS und einem Helm-Chart-Repository in Amazon S3 bereit
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3"></a>

*Sagar Panigrahi, Amazon Web Services*

## Zusammenfassung
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-summary"></a>

Dieses Muster hilft Ihnen, Kubernetes-Anwendungen unabhängig von ihrer Komplexität effizient zu verwalten. Das Muster integriert Helm in Ihre bestehenden CI/CD-Pipelines (Continuous Integration and Continuous Delivery), um Anwendungen in einem Kubernetes-Cluster bereitzustellen. Helm ist ein Kubernetes-Paketmanager, der Sie bei der Verwaltung von Kubernetes-Anwendungen unterstützt. Helm-Diagramme helfen bei der Definition, Installation und Aktualisierung komplexer Kubernetes-Anwendungen. Diagramme können versioniert und in Helm-Repositorys gespeichert werden, wodurch die mittlere Wiederherstellungszeit (MTTR) bei Ausfällen verbessert wird. 

Dieses Muster verwendet Amazon Elastic Kubernetes Service (Amazon EKS) für den Kubernetes-Cluster. Es verwendet Amazon Simple Storage Service (Amazon S3) als Helm-Diagramm-Repository, sodass die Diagramme zentral verwaltet und von Entwicklern im gesamten Unternehmen abgerufen werden können.

## Voraussetzungen und Einschränkungen
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Amazon Web Services (AWS) -Konto mit einer Virtual Private Cloud (VPC)
+ Ein Amazon-EKS-Cluster 
+ Worker-Knoten, die innerhalb des Amazon EKS-Clusters eingerichtet sind und bereit sind, Workloads aufzunehmen
+ Kubectl für die Konfiguration der Amazon EKS kubeconfig-Datei für den Zielcluster auf dem Client-Computer
+ Zugriff auf AWS Identity and Access Management (IAM) zur Erstellung des S3-Buckets
+ IAM-Zugriff (programmatischer oder Rollenzugriff) auf Amazon S3 vom Client-Computer
+ Quellcodeverwaltung und eine Pipeline CI/CD 

**Einschränkungen**
+ Derzeit wird das Aktualisieren, Löschen oder Verwalten von benutzerdefinierten Ressourcendefinitionen (CRDs) nicht unterstützt.
+ Wenn Sie eine Ressource verwenden, die auf eine CRD verweist, muss die CRD separat installiert werden (außerhalb des Diagramms).

**Produktversionen**
+ Helm v3.6.3

## Architektur
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon EKS
+ Amazon VPC
+ Amazon S3
+ Verwaltung des Quellcodes
+ Helm
+ Kubectl

**Zielarchitektur**

![\[Client Helm und Kubectl stellen ein Helm-Chart-Repo in Amazon S3 für Amazon EKS-Cluster bereit.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/d3f993e6-4d96-4cb9-a075-c4debe431fd7/images/2f09f7bb-440a-4c4b-b29f-08d136d1ada4.png)


 

**Automatisierung und Skalierung**
+ AWS CloudFormation kann verwendet werden, um die Erstellung der Infrastruktur zu automatisieren. Weitere Informationen finden Sie unter [Erstellen von Amazon EKS-Ressourcen mit AWS CloudFormation](https://docs.aws.amazon.com/eks/latest/userguide/creating-resources-with-cloudformation.html) in der Amazon EKS-Dokumentation.
+ Helm soll in Ihr vorhandenes CI/CD Automatisierungstool integriert werden, um die Paketierung und Versionierung von Helm-Diagrammen zu automatisieren (außerhalb des Geltungsbereichs dieses Musters).
+ GitVersion oder Jenkins-Build-Nummern können verwendet werden, um die Versionierung von Diagrammen zu automatisieren.

## Tools
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-tools"></a>

**Tools**
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) — Amazon Elastic Kubernetes Service (Amazon EKS) ist ein verwalteter Service für die Ausführung von Kubernetes auf AWS, ohne dass Sie Ihre eigene Kubernetes-Steuerebene einrichten oder verwalten müssen. Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Anwendungen in Containern.
+ [Helm — Helm](https://helm.sh/docs/) ist ein Paketmanager für Kubernetes, der Sie bei der Installation und Verwaltung von Anwendungen auf Ihrem Kubernetes-Cluster unterstützt.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html) — Amazon Simple Storage Service (Amazon S3) ist Speicher für das Internet. Mit Amazon S3 können Sie jederzeit beliebige Mengen von Daten von überall aus im Internet speichern und aufrufen.
+ [Kubectl — Kubectl](https://kubernetes.io/docs/reference/kubectl/overview/) ist ein Befehlszeilenprogramm zum Ausführen von Befehlen für Kubernetes-Cluster.

**Code**

Der Beispielcode ist angehängt.

## Epen
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-epics"></a>

### Helm konfigurieren und initialisieren
<a name="configure-and-initialize-helm"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie den Helm-Client. | Verwenden Sie den folgenden Befehl, um den Helm-Client herunterzuladen und auf Ihrem lokalen System zu installieren. <pre>sudo curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash</pre> | DevOps Ingenieur | 
| Validieren Sie die Helm-Installation. | Um zu überprüfen, ob Helm mit dem Kubernetes-API-Server innerhalb des Amazon EKS-Clusters kommunizieren kann, führen Sie folgenden Befehl aus. `helm version` | DevOps Ingenieur | 

### Erstellen und installieren Sie ein Helm-Diagramm im Amazon EKS-Cluster
<a name="create-and-install-a-helm-chart-in-the-amazon-eks-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Helm-Diagramm für NGINX. | Führen Sie den Befehl aus, um ein Helmdiagramm mit dem Namen `my-nginx` auf dem Client-Computer zu erstellen. `helm create my-nginx` | DevOps Ingenieur | 
| Überprüfen Sie die Struktur des Diagramms. | Um die Struktur des Diagramms zu überprüfen, führen Sie den Befehl tree aus`tree my-nginx/`. | DevOps Ingenieur | 
| Deaktivieren Sie die Erstellung eines Dienstkontos im Diagramm. | Stellen Sie unter dem `serviceAccount` Abschnitt den `create` Schlüssel auf ein`false`. `values.yaml` Dies ist deaktiviert, da für dieses Muster kein Dienstkonto erstellt werden muss. | DevOps Ingenieur | 
| Überprüfe (linte) das geänderte Diagramm auf syntaktische Fehler. | Führen Sie den folgenden Befehl aus, um das Diagramm vor der Installation im Zielcluster auf syntaktische Fehler zu überprüfen. `helm lint my-nginx/` | DevOps Ingenieur | 
| Installieren Sie das Diagramm, um Kubernetes-Ressourcen bereitzustellen. | Verwenden Sie den folgenden Befehl, um die Helm-Chart-Installation auszuführen. <pre>helm install --name my-nginx-release --debug my-nginx/ --namespace helm-space </pre>Das optionale `debug` Flag gibt alle Debug-Meldungen während der Installation aus. Das `namespace` Flag gibt den Namespace an, in dem der Ressourcenteil dieses Diagramms erstellt wird. | DevOps Ingenieur | 
| Überprüfen Sie die Ressourcen im Amazon EKS-Cluster. | Verwenden Sie den folgenden Befehl, um die Ressourcen zu überprüfen, die als Teil des Helm-Diagramms im `helm-space` Namespace erstellt wurden. <pre>kubectl get all -n helm-space</pre> | DevOps Ingenieur | 

### Führen Sie einen Rollback zu einer früheren Version einer Kubernetes-Anwendung durch
<a name="roll-back-to-a-previous-version-of-a-kubernetes-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ändern und aktualisieren Sie die Version. | Um das Diagramm zu ändern`values.yaml`, ändern Sie den `replicaCount` Wert in`2`. Aktualisieren Sie dann die bereits installierte Version, indem Sie den folgenden Befehl ausführen.<pre>helm upgrade my-nginx-release my-nginx/ --namespace helm-space</pre> | DevOps Ingenieur | 
| Sehen Sie sich die Geschichte der Helm-Version an. | Führen Sie den folgenden Befehl aus, um alle Versionen für eine bestimmte Version aufzulisten, die mit Helm installiert wurden. <pre>helm history my-nginx-release</pre> | DevOps Ingenieur | 
| Überprüfen Sie die Details für eine bestimmte Version. | Bevor Sie zu einer funktionierenden Version wechseln oder ein Rollback durchführen und für eine zusätzliche Überprüfungsebene vor der Installation einer Revision, sollten Sie mit dem folgenden Befehl überprüfen, welche Werte an die einzelnen Versionen übergeben wurden.<pre>helm get --revision=2 my-nginx-release</pre> | DevOps Ingenieur | 
| Gehen Sie zurück zu einer früheren Version. | Verwenden Sie den folgenden Befehl, um zu einer früheren Version zurückzukehren. <pre>helm rollback my-nginx-release 1 </pre>In diesem Beispiel wird auf Version 1 zurückgesetzt. | DevOps Ingenieur | 

### Initialisieren Sie einen S3-Bucket als Helm-Repository
<a name="initialize-an-s3-bucket-as-a-helm-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen S3-Bucket für Helm-Charts. | Erstellen Sie einen eindeutigen S3-Bucket. Erstellen Sie im Bucket einen Ordner mit dem Namen`charts`. Das Beispiel in diesem Muster verwendet `s3://my-helm-charts/charts` als Zieldiagramm-Repository. | Cloud-Administrator | 
| Installieren Sie das Helm-Plugin für Amazon S3. | Verwenden Sie den folgenden Befehl, um das Helm-S3-Plugin auf Ihrem Client-Computer zu installieren. <pre>helm plugin install https://github.com/hypnoglow/helm-s3.git --version 0.10.0</pre>Hinweis: Helm V3-Unterstützung ist mit der Plugin-Version 0.9.0 und höher verfügbar. | DevOps Ingenieur | 
| Initialisieren Sie das Amazon S3 Helm-Repository.  | Verwenden Sie den folgenden Befehl, um den Zielordner als Helm-Repository zu initialisieren. <pre>helm S3 init s3://my-helm-charts/charts </pre>Der Befehl erstellt eine `index.yaml` Datei im Ziel, um alle Diagramminformationen zu verfolgen, die an diesem Speicherort gespeichert sind. | DevOps Ingenieur | 
| Fügen Sie das Amazon S3 S3-Repository zu Helm hinzu. | Verwenden Sie den folgenden Befehl, um das Repository auf dem Client-Computer hinzuzufügen.<pre>helm repo add my-helm-charts s3://my-helm-charts/charts </pre>Dieser Befehl fügt dem Ziel-Repository auf dem Helm-Client-Computer einen Alias hinzu. | DevOps Ingenieur | 
| Überprüfen Sie die Repository-Liste. | Führen `helm repo list` Sie den Befehl aus, um die Liste der Repositorys auf dem Helm-Client-Computer anzuzeigen. | DevOps Ingenieur | 

### Package und Speichern von Diagrammen im Amazon S3 Helm-Repository
<a name="package-and-store-charts-in-the-amazon-s3-helm-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Verpacken Sie die Karte. | Führen Sie den Befehl aus, um das von Ihnen erstellte `my-nginx` Diagramm zu verpacken`helm package ./my-nginx/`. Der Befehl packt den gesamten Inhalt des `my-nginx` Diagrammordners in eine Archivdatei, die anhand der Versionsnummer benannt wird, die in der `Chart.yaml` Datei angegeben ist. | DevOps Ingenieur | 
| Speichern Sie das Paket im Amazon S3 Helm-Repository. | Um das Paket in das Helm-Repository in Amazon S3 hochzuladen, führen Sie den folgenden Befehl aus und verwenden Sie dabei den richtigen Namen der `.tgz` Datei.<pre>helm s3 push ./my-nginx-0.1.0.tgz my-helm-charts</pre> | DevOps Ingenieur | 
| Suchen Sie nach der Helm-Karte. | Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das Diagramm sowohl lokal als auch im Helm-Repository in Amazon S3 angezeigt wird.<pre>helm search repo my-nginx</pre> | DevOps Ingenieur | 

### Ein Diagramm ändern, versionieren und verpacken
<a name="modify-version-and-package-a-chart"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ändern und verpacken Sie das Diagramm. | Stellen Sie in `values.yaml` den `replicaCount` Wert auf ein`1`. Verpacken Sie dann das Diagramm`helm package ./my-nginx/`, indem Sie es ausführen und diesmal die Version in `Chart.yaml` ändern`0.1.1`. Die Versionierung wird idealerweise durch Automatisierung mithilfe von Tools wie GitVersion Jenkins Build Numbers in einer Pipeline aktualisiert. CI/CD Die Automatisierung der Versionsnummer ist für dieses Muster nicht vorgesehen. | DevOps Ingenieur | 
| Pushen Sie die neue Version in das Helm-Repository in Amazon S3. | Führen Sie den folgenden Befehl aus, um das neue Paket mit Version 0.1.1 in das `my-helm-charts` Helm-Repository in Amazon S3 zu übertragen.<pre>helm s3 push ./my-nginx-0.1.1.tgz my-helm-charts</pre> | DevOps Ingenieur | 

### Suchen und installieren Sie ein Diagramm aus dem Amazon S3 Helm-Repository
<a name="search-for-and-install-a-chart-from-the-amazon-s3-helm-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Suchen Sie nach allen Versionen des my-nginx-Diagramms. | Um alle verfügbaren Versionen eines Diagramms anzuzeigen, führen Sie den folgenden Befehl mit der Markierung aus. `--versions`<pre>helm search repo my-nginx --versions</pre>Ohne die Markierung zeigt Helm standardmäßig die zuletzt hochgeladene Version eines Diagramms an. | DevOps Ingenieur | 
| Installieren Sie ein Diagramm aus dem Amazon S3 Helm-Repository. | Die Suchergebnisse der vorherigen Aufgabe zeigen die verschiedenen Versionen des `my-nginx` Diagramms. Verwenden Sie den folgenden Befehl, um die neue Version (0.1.1) aus dem Amazon S3 Helm-Repository zu installieren.<pre>helm upgrade my-nginx-release my-helm-charts/my-nginx --version 0.1.1 --namespace helm-space</pre> | DevOps Ingenieur | 

## Zugehörige Ressourcen
<a name="deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3-resources"></a>
+ [HELM-Dokumentation](https://helm.sh/docs/)
+ [helm-S3-Plugin (MIT-Lizenz)](https://github.com/hypnoglow/helm-s3.git)
+ [BINÄRDATEI FÜR HELM-Cli](https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3)
+ [Amazon EKS-Dokumentation](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)

## Anlagen
<a name="attachments-d3f993e6-4d96-4cb9-a075-c4debe431fd7"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/d3f993e6-4d96-4cb9-a075-c4debe431fd7/attachments/attachment.zip)

# Stellen Sie mithilfe von Terraform einen CockroachDB-Cluster in Amazon EKS bereit
<a name="deploy-cockroachdb-on-eks-using-terraform"></a>

*Sandip Gangapadhyay und Kalyan Senthilnathan, Amazon Web Services*

## Zusammenfassung
<a name="deploy-cockroachdb-on-eks-using-terraform-summary"></a>

[Dieses Muster bietet ein HashiCorp Terraform-Modul für die Bereitstellung eines [CockroachDB-Clusters mit mehreren Knoten auf Amazon Elastic Kubernetes Service (Amazon EKS) mithilfe des CockroachDB-Operators](https://www.cockroachlabs.com/docs/stable/).](https://www.cockroachlabs.com/docs/v25.4/cockroachdb-operator-overview) CockroachDB ist eine verteilte SQL-Datenbank, die automatisches horizontales Sharding, hohe Verfügbarkeit und konsistente Leistung über geografisch verteilte Cluster hinweg bietet. Dieses Muster verwendet Amazon EKS als verwaltete Kubernetes-Plattform und implementiert [Cert-Manager](https://cert-manager.io/docs/) für TLS-gesicherte Knotenkommunikation. Es verwendet auch einen [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) für die Verteilung des Datenverkehrs und erstellt CockroachDB [StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)mit Pods, die Daten aus Gründen der Fehlertoleranz und Leistung automatisch replizieren.

**Zielpublikum**

Um dieses Muster zu implementieren, empfehlen wir, dass Sie mit den folgenden Informationen vertraut sind:
+ HashiCorp Terraform-Konzepte und IaC-Praktiken (Infrastructure-as-Code)
+ AWS-Services, insbesondere Amazon EKS
+ Grundlagen von Kubernetes StatefulSets, einschließlich Betreiber und Servicekonfigurationen
+ Verteilte SQL-Datenbanken
+ Sicherheitskonzepte wie die Verwaltung von TLS-Zertifikaten.
+ DevOps Praktiken, CI/CD Workflows und Infrastrukturautomatisierung

## Voraussetzungen und Einschränkungen
<a name="deploy-cockroachdb-on-eks-using-terraform-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Berechtigungen zur Bereitstellung von Ressourcen in einem Amazon EKS-Cluster
+ Ein Amazon EKS-Cluster, Version v1.23 oder höher, mit beschrifteten Knoten `node=cockroachdb`
+ [Amazon Elastic Block Store Container Storage Interface (CSI) -Treiberversion](https://github.com/kubernetes-sigs/aws-ebs-csi-driver) 1.19.0 oder höher, installiert im Amazon EKS-Cluster
+ [Terraform CLI Version 1.0.0 oder höher, installiert](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ [kubectl, installiert](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)
+ Git, [installiert](https://git-scm.com/install/)
+ AWS Command Line Interface [(AWS CLI) Version 2.9.18 oder höher, [installiert und konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**Einschränkungen**
+ Der CockroachDB-Kubernetes-Operator unterstützt nicht mehrere Kubernetes-Cluster für Bereitstellungen in mehreren Regionen. [Weitere Einschränkungen finden Sie unter [CockroachDB über mehrere Kubernetes-Cluster orchestrieren (CockroachDB-Dokumentation) und CockroachDB Kubernetes Operator ()](https://www.cockroachlabs.com/docs/stable/orchestrate-cockroachdb-with-kubernetes-multi-cluster.html#eks).](https://github.com/cockroachdb/cockroach-operator) GitHub
+ Das automatische Löschen persistenter Volumenansprüche () ist derzeit standardmäßig deaktiviert. PVCs Das bedeutet, dass der Betreiber nach der Außerbetriebnahme und Entfernung eines Nodes das persistente Volume, das auf seinem Pod installiert war, nicht entfernt. Weitere Informationen finden Sie unter [Automatisches Beschneiden von PVC](https://www.cockroachlabs.com/docs/stable/scale-cockroachdb-kubernetes.html#automatic-pvc-pruning) in der CockroachDB-Dokumentation.

**Produktversionen**
+ CockroachDB Version 22.2.2

## Architektur
<a name="deploy-cockroachdb-on-eks-using-terraform-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm zeigt eine hochverfügbare CockroachDB-Bereitstellung in drei AWS Availability Zones innerhalb einer Virtual Private Cloud (VPC). Die CockroachDB-Pods werden über Amazon EKS verwaltet. Die Architektur veranschaulicht, wie Benutzer über einen Network Load Balancer auf die Datenbank zugreifen, der den Datenverkehr auf die CockroachDB-Pods verteilt. Die Pods werden auf Amazon Elastic Compute Cloud (Amazon EC2) -Instances in jeder Availability Zone ausgeführt, was Stabilität und Fehlertoleranz bietet.

![\[Eine hochverfügbare CockroachDB-Bereitstellung in drei AWS-Verfügbarkeitszonen innerhalb einer VPC.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e22d81ab-b85c-4709-8579-4c9cdb4afdb6/images/4b163abf-6fdc-4310-840c-bda621ab25dd.png)


**Ressourcen erstellt**

Durch die Bereitstellung des in diesem Muster verwendeten Terraform-Moduls werden die folgenden Ressourcen erstellt:

1. **Network Load Balancer** — Diese Ressource dient als Einstiegspunkt für Client-Anfragen und verteilt den Verkehr gleichmäßig auf die CockroachDB-Instanzen.

1. **CockroachDB StatefulSet** — StatefulSet Definiert den gewünschten Status der CockroachDB-Bereitstellung innerhalb des Amazon EKS-Clusters. Es verwaltet die geordnete Bereitstellung, Skalierung und Aktualisierung von CockroachDB-Pods.

1. **CockroachDB-Pods — Diese Pods sind Instanzen von CockroachDB**, die als Container innerhalb von Kubernetes-Pods ausgeführt werden. Diese Pods speichern und verwalten die Daten im gesamten verteilten Cluster.

1. **CockroachDB-Datenbank** — Dies ist die verteilte Datenbank, die von CockroachDB verwaltet wird und sich über mehrere Pods erstreckt. Sie repliziert Daten für hohe Verfügbarkeit, Fehlertoleranz und Leistung.

## Tools
<a name="deploy-cockroachdb-on-eks-using-terraform-tools"></a>

**AWS-Services**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.

**Andere Tools**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist ein Infrastructure-as-Code-Tool (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/) ist eine Befehlszeilenschnittstelle, mit der Sie Befehle für Kubernetes-Cluster ausführen können.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [Deploy a CockroachDB in Amazon EKS using](https://github.com/aws-samples/crdb-cluster-eks-terraform) Terraform verfügbar. Das Code-Repository enthält die folgenden Dateien und Ordner für Terraform:
+ `modules`Ordner — Dieser Ordner enthält das Terraform-Modul für CockroachDB
+ `main`Ordner — Dieser Ordner enthält das Root-Modul, das das untergeordnete CockroachDB-Modul aufruft, um den CockroachDB-Datenbankcluster zu erstellen.

## Best Practices
<a name="deploy-cockroachdb-on-eks-using-terraform-best-practices"></a>
+ Skalieren Sie nicht auf weniger als drei Knoten herunter. Dies wird auf CockroachDB als Anti-Pattern angesehen und kann zu Fehlern führen. Weitere Informationen finden Sie unter [Cluster Scaling](https://www.cockroachlabs.com/docs/stable/scale-cockroachdb-kubernetes.html) in der CockroachDB-Dokumentation.
+ Implementieren Sie Amazon EKS-Autoscaling mithilfe von Karpernter oder Cluster Autoscaler. Dadurch kann der CockroachDB-Cluster horizontal skaliert und neue Knoten automatisch hinzugefügt werden. Weitere Informationen finden Sie unter [Skalieren von Cluster-Berechnungen mit Karpenter und Cluster Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html) in der Amazon EKS-Dokumentation.
**Anmerkung**  
Aufgrund der `podAntiAffinity` Kubernetes-Planungsregel kann nur ein CockroachDB-Pod in einem Amazon EKS-Knoten geplant werden.
+ Bewährte Sicherheitsmethoden für Amazon EKS finden Sie unter [Bewährte Sicherheitsmethoden](https://docs.aws.amazon.com/eks/latest/best-practices/security.html) in der Amazon EKS-Dokumentation.
+ Bewährte Methoden zur SQL-Leistung für CockroachDB finden Sie unter [Bewährte Methoden zur SQL-Leistung](https://www.cockroachlabs.com/docs/stable/performance-best-practices-overview.html) in der CockroachDB-Dokumentation.
+ Weitere Informationen zur Einrichtung eines Amazon Simple Storage Service (Amazon S3) -Remote-Backends für die Terraform-Statusdatei finden Sie unter [Amazon S3](https://developer.hashicorp.com/terraform/language/backend/s3) in der Terraform-Dokumentation.

## Epen
<a name="deploy-cockroachdb-on-eks-using-terraform-epics"></a>

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


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Code-Repository. | Geben Sie den folgenden Befehl ein, um das Repository zu klonen:<pre>git clone https://github.com/aws-samples/crdb-cluster-eks-terraform.git</pre> | DevOps Ingenieur, Git | 
| Aktualisieren Sie die Terraform-Variablen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps Ingenieur, Terraform | 

### Stellen Sie die Ressourcen bereit
<a name="deploy-the-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die Infrastruktur bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps Ingenieur, Terraform | 

### Überprüfen der Bereitstellung
<a name="verify-the-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die Erstellung von Ressourcen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps Ingenieur | 
| (Optional) Skalieren Sie nach oben oder unten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | DevOps Ingenieur, Terraform | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie die Infrastruktur. | Durch die Skalierung der Knoten auf `0` werden die Rechenkosten gesenkt. Es fallen jedoch weiterhin Gebühren für die persistenten Amazon EBS-Volumes an, die mit diesem Modul erstellt wurden. Um Speicherkosten zu vermeiden, gehen Sie wie folgt vor, um alle Volumes zu löschen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | Terraform | 

## Fehlerbehebung
<a name="deploy-cockroachdb-on-eks-using-terraform-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Fehler beim Überprüfen der Anbieteranmeldedaten | Wenn Sie den Terraform `apply` - oder `destroy` Befehl ausführen, tritt möglicherweise der folgende Fehler auf:`Error: configuring Terraform AWS Provider: error validating provider  credentials: error calling sts:GetCallerIdentity: operation error STS: GetCallerIdentity, https response error StatusCode: 403, RequestID: 123456a9-fbc1-40ed-b8d8-513d0133ba7f, api error InvalidClientTokenId: The security token included in the request is invalid.`Dieser Fehler wird durch den Ablauf des Sicherheitstokens für die in der Konfiguration Ihres lokalen Computers verwendeten Anmeldeinformationen verursacht. Anweisungen zur Behebung des Fehlers finden Sie in der AWS CLI Dokumentation unter [Konfigurationseinstellungen einrichten und anzeigen](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods). | 
| CockroachDB-Pods befinden sich im Status „Ausstehend“ | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cockroachdb-on-eks-using-terraform.html) | 

## Zugehörige Ressourcen
<a name="deploy-cockroachdb-on-eks-using-terraform-resources"></a>
+ [Stellen Sie CockroachDB in einem einzigen Kubernetes-Cluster](https://www.cockroachlabs.com/docs/dev/deploy-cockroachdb-with-kubernetes.html) bereit (CockroachDB-Dokumentation)
+ [Orchestrieren](https://www.cockroachlabs.com/docs/dev/orchestrate-cockroachdb-with-kubernetes-multi-cluster.html) Sie CockroachDB über mehrere Kubernetes-Cluster hinweg (CockroachDB-Dokumentation)
+ [AWS Anbieter](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (Terraform-Dokumentation)

## Anlagen
<a name="attachments-e22d81ab-b85c-4709-8579-4c9cdb4afdb6"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/e22d81ab-b85c-4709-8579-4c9cdb4afdb6/attachments/attachment.zip)

# Stellen Sie einen Beispiel-Java-Microservice auf Amazon EKS bereit und machen Sie den Microservice mithilfe eines Application Load Balancer verfügbar
<a name="deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer"></a>

*Vijay Thompson und Akkamahadevi Hiremath, Amazon Web Services*

## Zusammenfassung
<a name="deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-summary"></a>

Dieses Muster beschreibt, wie ein Java-Microservice als containerisierte Anwendung auf Amazon Elastic Kubernetes Service (Amazon EKS) mithilfe des `eksctl` Befehlszeilenprogramms und Amazon Elastic Container Registry (Amazon ECR) bereitgestellt wird. Sie können einen Application Load Balancer für den Lastenausgleich des Anwendungsdatenverkehrs verwenden.

## Voraussetzungen und Einschränkungen
<a name="deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Die AWS-Befehlszeilenschnittstelle (AWS CLI) Version 1.7 oder höher, installiert und konfiguriert auf macOS, Linux oder Windows
+ Ein laufender [Docker-Daemon](https://docs.docker.com/config/daemon/)
+ Das `eksctl` Befehlszeilenprogramm, installiert und konfiguriert auf macOS, Linux oder Windows (Weitere Informationen finden Sie unter [Erste Schritte mit Amazon EKS — eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) in der Amazon EKS-Dokumentation.)
+ Das `kubectl` Befehlszeilenprogramm, installiert und konfiguriert unter macOS, Linux oder Windows (Weitere Informationen finden Sie unter [Installation oder Aktualisierung von kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) in der Amazon EKS-Dokumentation.)

**Einschränkungen**
+ Dieses Muster deckt die Installation eines SSL-Zertifikats für den Application Load Balancer nicht ab.

## Architektur
<a name="deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon ECR
+ Amazon EKS
+ Elastic Load Balancing

**Zielarchitektur**

Das folgende Diagramm zeigt eine Architektur für die Containerisierung eines Java-Microservices auf Amazon EKS.

![\[Ein Java-Microservice, der als containerisierte Anwendung auf Amazon EKS bereitgestellt wird.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e1dd8ab0-9e1e-4d2b-b7af-89d3e583e57c/images/aaca4fd9-5aaa-4df5-aebd-02a2ed881c3b.png)


## Tools
<a name="deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-tools"></a>
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) hilft Ihnen dabei, Kubernetes auf AWS auszuführen, ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten zu müssen.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) verteilt Ihren eingehenden Traffic automatisch auf mehrere Ziele, wie Amazon Elastic Compute Cloud (Amazon EC2) -Instances, Container und IP-Adressen, in einer oder mehreren Availability Zones.
+ [eksctl](https://eksctl.io/) hilft Ihnen bei der Erstellung von Clustern auf Amazon EKS.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) ermöglicht die Ausführung von Befehlen für Kubernetes-Cluster.
+ [Docker](https://www.docker.com/) hilft Ihnen beim Erstellen, Testen und Bereitstellen von Anwendungen in Paketen, die als Container bezeichnet werden.

## Epen
<a name="deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-epics"></a>

### Erstellen Sie einen Amazon EKS-Cluster mithilfe von eksctl
<a name="create-an-amazon-eks-cluster-by-using-eksctl"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Amazon-EKS-Cluster.  | Um einen Amazon EKS-Cluster zu erstellen, der zwei t2.small EC2 Amazon-Instances als Knoten verwendet, führen Sie den folgenden Befehl aus:<pre>eksctl create cluster --name <your-cluster-name> --version <version-number> --nodes=1 --node-type=t2.small</pre>Der Vorgang kann zwischen 15 und 20 Minuten dauern. Nachdem der Cluster erstellt wurde, wird die entsprechende Kubernetes-Konfiguration zu Ihrer [kubeconfig-Datei](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) hinzugefügt. Sie können die `kubeconfig` Datei mit verwenden, `kubectl`**** um die Anwendung in späteren Schritten bereitzustellen. | Entwickler, Systemadministrator | 
| Überprüfen Sie den Amazon EKS-Cluster. | Um zu überprüfen, ob der Cluster erstellt wurde und Sie eine Verbindung zu ihm herstellen können, führen Sie den `kubectl get nodes` Befehl aus. | Entwickler, Systemadministrator | 

### Erstellen Sie ein Amazon ECR-Repository und übertragen Sie das Docker-Image.
<a name="create-an-amazon-ecr-repository-and-push-the-docker-image"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Amazon-ECR-Repository. | Folgen Sie den Anweisungen unter [Erstellen eines privaten Repositorys](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) in der Amazon ECR-Dokumentation. | Entwickler, Systemadministrator | 
| Erstellen Sie eine POM-XML-Datei. | Erstellen Sie eine `pom.xml` Datei, die auf dem *POM-Beispieldateicode* im Abschnitt [Zusätzliche Informationen](#deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-additional) dieses Musters basiert. | Entwickler, Systemadministrator | 
| Erstellen Sie eine Quelldatei. | Erstellen Sie anhand des folgenden `HelloWorld.java` Beispiels eine Quelldatei mit dem Namen im `src/main/java/eksExample` Pfad:<pre>package eksExample;<br />import static spark.Spark.get;<br /><br />public class HelloWorld {<br />    public static void main(String[] args) {<br />        get("/", (req, res) -> {<br />            return "Hello World!";<br />        });<br />    }<br />}</pre>Achten Sie darauf, die folgende Verzeichnisstruktur zu verwenden:<pre>├── Dockerfile<br />├── deployment.yaml<br />├── ingress.yaml<br />├── pom.xml<br />├── service.yaml<br />└── src<br />    └── main<br />        └── java<br />            └── eksExample<br />                └── HelloWorld.java</pre> |  | 
| Erstellen Sie eine Docker-Datei. | Erstellen Sie einen auf dem *Dockerfile-Beispiel `Dockerfile`* basierenden Code im Abschnitt [Zusätzliche Informationen](#deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-additional) dieses Musters. | Entwickler, Systemadministrator | 
| Erstellen Sie das Docker-Image und übertragen Sie es. | Führen Sie in dem Verzeichnis, in dem Sie das Image erstellen, taggen und an Amazon ECR übertragen möchten, die folgenden Befehle aus: `Dockerfile`<pre>aws ecr get-login-password --region <region>| docker login --username <username> --password-stdin <account_number>.dkr.ecr.<region>.amazonaws.com<br />docker buildx build --platform linux/amd64 -t hello-world-java:v1 .<br />docker tag hello-world-java:v1 <account_number>.dkr.ecr.<region>.amazonaws.com/<repository_name>:v1<br />docker push <account_number>.dkr.ecr.<region>.amazonaws.com/<repository_name>:v1</pre>Ändern Sie die AWS-Region, die Kontonummer und die Repository-Details in den vorherigen Befehlen. Notieren Sie sich unbedingt die Bild-URL für die spätere Verwendung.Ein macOS-System mit einem M1-Chip hat ein Problem beim Erstellen eines Images, das mit Amazon EKS kompatibel ist, das auf einer AMD64 Plattform ausgeführt wird. Um dieses Problem zu beheben, verwenden Sie [docker buildx](https://docs.docker.com/engine/reference/commandline/buildx/), um ein Docker-Image zu erstellen, das auf Amazon EKS funktioniert. |  | 

### Stellen Sie die Java-Microservices bereit
<a name="deploy-the-java-microservices"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Bereitstellungsdatei.  | Erstellen Sie eine YAML-Datei, die `deployment.yaml` auf dem Code der *Beispiel-Bereitstellungsdatei* im Abschnitt [Zusätzliche Informationen](#deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-additional) dieses Musters basiert.Verwenden Sie die Bild-URL, die Sie zuvor kopiert haben, als Pfad der Bilddatei für das Amazon ECR-Repository. | Entwickler, Systemadministrator | 
| Stellen Sie die Java-Microservices auf dem Amazon EKS-Cluster bereit.  | Führen Sie den `kubectl apply -f deployment.yaml` Befehl aus, um eine Bereitstellung in Ihrem Amazon EKS-Cluster zu erstellen. | Entwickler, Systemadministrator | 
| Überprüfen Sie den Status der Pods. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer.html) | Entwickler, Systemadministrator | 
| Erstellen Sie einen Service. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer.html) | Entwickler, Systemadministrator | 
| Installieren Sie das AWS Load Balancer Controller-Add-on. | Folgen Sie den Anweisungen unter [Installation des AWS Load Balancer Controller-Add-ons](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html) in der Amazon EKS-Dokumentation.Sie müssen das Add-on installiert haben, um einen Application Load Balancer oder Network Load Balancer für einen Kubernetes-Dienst zu erstellen. | Entwickler, Systemadministrator | 
| Erstellen Sie eine Eingangsressource. | Erstellen Sie eine YAML-Datei, die auf der `ingress.yaml` Grundlage des *Beispielcodes für eine Ingress-Ressourcendatei* im Abschnitt [Zusätzliche Informationen dieses Musters](#deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-additional) aufgerufen wird. | Entwickler, Systemadministrator | 
| Erstellen Sie einen Application Load Balancer. | Führen Sie den Befehl aus, um die Eingangsressource bereitzustellen und einen Application Load Balancer zu erstellen. `kubectl apply -f ingress.yaml` | Entwickler, Systemadministrator | 

### Testen der Anwendung
<a name="test-the-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen und verifizieren Sie die Anwendung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer.html) | Entwickler, Systemadministrator | 

## Zugehörige Ressourcen
<a name="deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-resources"></a>
+ [Ein privates Repository erstellen](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) (Amazon ECR-Dokumentation)
+ [Ein Docker-Image pushen](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) (Amazon ECR-Dokumentation)
+ [Eingangscontroller](https://www.eksworkshop.com/beginner/130_exposing-service/ingress_controller_alb/) (Amazon EKS-Workshop)
+ [Docker buildx (Docker-Dokumente](https://docs.docker.com/engine/reference/commandline/buildx/))

## Zusätzliche Informationen
<a name="deploy-a-sample-java-microservice-on-amazon-eks-and-expose-the-microservice-using-an-application-load-balancer-additional"></a>

**Beispiel für eine POM-Datei**

```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>


  <groupId>helloWorld</groupId>
  <artifactId>helloWorld</artifactId>
  <version>1.0-SNAPSHOT</version>


  <dependencies>
    <dependency>
      <groupId>com.sparkjava</groupId><artifactId>spark-core</artifactId><version>2.0.0</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>2.4</version>
        <configuration><finalName>eksExample</finalName><archive><manifest>
              <addClasspath>true</addClasspath><mainClass>eksExample.HelloWorld</mainClass><classpathPrefix>dependency-jars/</classpathPrefix>
            </manifest></archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version>
        <configuration><source>1.8</source><target>1.8</target></configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <goals><goal>attached</goal></goals><phase>package</phase>
            <configuration>
              <finalName>eksExample</finalName>
              <descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs>
              <archive><manifest><mainClass>eksExample.HelloWorld</mainClass></manifest></archive>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
```

**Beispiel Dockerfile**

```
FROM bellsoft/liberica-openjdk-alpine-musl:17

RUN apk add maven
WORKDIR /code

# Prepare by downloading dependencies
ADD pom.xml /code/pom.xml
RUN ["mvn", "dependency:resolve"]
RUN ["mvn", "verify"]

# Adding source, compile and package into a fat jar
ADD src /code/src
RUN ["mvn", "package"]

EXPOSE 4567
CMD ["java", "-jar", "target/eksExample-jar-with-dependencies.jar"]
```

**Beispiel für eine Bereitstellungsdatei**

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: microservice-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app.kubernetes.io/name: java-microservice
  template:
    metadata:
      labels:
        app.kubernetes.io/name: java-microservice
    spec:
      containers:
      - name: java-microservice-container
        image: .dkr.ecr.amazonaws.com/:
        ports:
        - containerPort: 4567
```

**Beispiel für eine Servicedatei**

```
apiVersion: v1
kind: Service
metadata:
  name: "service-java-microservice"
spec:
  ports:
    - port: 80
      targetPort: 4567
      protocol: TCP
  type: NodePort
  selector:
    app.kubernetes.io/name: java-microservice
```

**Beispiel für eine Ingress-Ressourcendatei**

```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: "java-microservice-ingress"
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/load-balancer-name: apg2
    alb.ingress.kubernetes.io/target-type: ip
  labels:
    app: java-microservice
spec:
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: "service-java-microservice"
                port:
                  number: 80
```

# Stellen Sie eine GRPC-basierte Anwendung auf einem Amazon EKS-Cluster bereit und greifen Sie mit einem Application Load Balancer darauf zu
<a name="deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer"></a>

*Kirankumar Chandrashekar und Huy Nguyen, Amazon Web Services*

## Zusammenfassung
<a name="deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer-summary"></a>

Dieses Muster beschreibt, wie Sie eine GRPC-basierte Anwendung auf einem Amazon Elastic Kubernetes Service (Amazon EKS) -Cluster hosten und über einen Application Load Balancer sicher darauf zugreifen.

[gRPC](https://grpc.io/) ist ein Open-Source-RPC-Framework (Remote Procedure Call), das in jeder Umgebung ausgeführt werden kann. Sie können es für Microservice-Integrationen und Client-Server-Kommunikation verwenden. Weitere Informationen zu gRPC finden Sie im AWS-Blogbeitrag [Application Load Balancer Balancer-Unterstützung für end-to-end HTTP/2](https://aws.amazon.com/blogs/aws/new-application-load-balancer-support-for-end-to-end-http-2-and-grpc/) und gRPC.

Dieses Muster zeigt Ihnen, wie Sie eine GRPC-basierte Anwendung hosten, die auf Kubernetes-Pods auf Amazon EKS ausgeführt wird. Der gRPC-Client stellt über das HTTP/2-Protokoll mit einer verschlüsselten Verbindung eine Verbindung zu einem SSL/TLS Application Load Balancer her. Der Application Load Balancer leitet den Datenverkehr an die gRPC-Anwendung weiter, die auf Amazon EKS-Pods ausgeführt wird. Die Anzahl der gRPC-Pods kann mithilfe des [Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/horizontal-pod-autoscaler.html) Horizontal Pod Autoscaler automatisch auf der Grundlage des Datenverkehrs skaliert werden. Die Zielgruppe des Application Load Balancers führt Integritätsprüfungen an den Amazon EKS-Knoten durch, bewertet, ob das Ziel fehlerfrei ist, und leitet den Datenverkehr nur an fehlerfreie Knoten weiter.

## Voraussetzungen und Einschränkungen
<a name="deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ [Docker](https://www.docker.com/), installiert und konfiguriert unter Linux, MacOS oder Windows.
+ [AWS-Befehlszeilenschnittstelle (AWS CLI) Version 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html), installiert und konfiguriert unter Linux, macOS oder Windows.
+ [eksctl](https://github.com/eksctl-io/eksctl#installation), installiert und konfiguriert unter Linux, MacOS oder Windows.
+ `kubectl`, installiert und konfiguriert für den Zugriff auf Ressourcen in Ihrem Amazon EKS-Cluster. Weitere Informationen finden Sie unter [Installation oder Aktualisierung von kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) in der Amazon EKS-Dokumentation. 
+ [g RPCurl](https://github.com/fullstorydev/grpcurl), installiert und konfiguriert.
+ Ein neuer oder vorhandener Amazon EKS-Cluster. Weitere Informationen finden Sie unter [Erste Schritte mit Amazon EKS.](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)
+ Ihr Computerterminal ist für den Zugriff auf den Amazon EKS-Cluster konfiguriert. Weitere Informationen finden [Sie in der Amazon EKS-Dokumentation unter Konfiguration Ihres Computers für die Kommunikation mit Ihrem Cluster](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html#eks-configure-kubectl).
+ [AWS Load Balancer Controller](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html), bereitgestellt im Amazon EKS-Cluster.
+ Ein vorhandener DNS-Hostname mit einem gültigen SSL oder SSL/TLS Zertifikat. Sie können ein Zertifikat für Ihre Domain erhalten, indem Sie AWS Certificate Manager (ACM) verwenden oder ein vorhandenes Zertifikat auf ACM hochladen. Weitere Informationen zu diesen beiden Optionen finden Sie unter [Anfordern eines öffentlichen Zertifikats und Importieren von Zertifikaten](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) [in AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) in der ACM-Dokumentation.

## Architektur
<a name="deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer-architecture"></a>

Das folgende Diagramm zeigt die durch dieses Muster implementierte Architektur.

![\[Architektur für GRPC-basierte Anwendungen auf Amazon EKS\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/abf727c1-ff8b-43a7-923f-bce825d1b459/images/281936fa-bc43-4b4e-a343-ba1eab97df38.png)


 

Das folgende Diagramm zeigt einen Workflow, bei dem SSL/TLS Datenverkehr von einem gRPC-Client empfangen wird, der auf einen Application Load Balancer auslagert. Der Datenverkehr wird im Klartext an den gRPC-Server weitergeleitet, da er aus einer Virtual Private Cloud (VPC) stammt.

![\[Workflow zum Senden von SSL/TLS Datenverkehr an einen gRPC-Server\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/abf727c1-ff8b-43a7-923f-bce825d1b459/images/09e0c3f6-0c39-40b7-908f-8c4c693a5f02.png)


## Tools
<a name="deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer-tools"></a>

**AWS-Services**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) verteilt den eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele. Sie können beispielsweise den Datenverkehr auf Amazon Elastic Compute Cloud (Amazon EC2) -Instances, Container und IP-Adressen in einer oder mehreren Availability Zones verteilen.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist. 
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) hilft Ihnen, Kubernetes auf AWS auszuführen, ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten zu müssen.  

**Tools**
+ [eksctl](https://eksctl.io/) ist ein einfaches CLI-Tool zum Erstellen von Clustern auf Amazon EKS.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) ist ein Befehlszeilenprogramm zum Ausführen von Befehlen für Kubernetes-Cluster.
+ [AWS Load Balancer Controller](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html) unterstützt Sie bei der Verwaltung von AWS Elastic Load Balancers für einen Kubernetes-Cluster.
+ [g RPCurl](https://github.com/fullstorydev/grpcurl) ist ein Befehlszeilentool, mit dem Sie mit gRPC-Diensten interagieren können.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [grpc-traffic-on-alb-to-eks-Repository](https://github.com/aws-samples/grpc-traffic-on-alb-to-eks.git) verfügbar.

## Epen
<a name="deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer-epics"></a>

### Erstellen Sie das Docker-Image des gRPC-Servers und übertragen Sie es auf Amazon ECR
<a name="build-and-push-the-grpc-serverrsquor-s-docker-image-to-amazon-ecr"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Amazon-ECR-Repository. | Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die [Amazon ECR-Konsole](https://console.aws.amazon.com/ecr/) und erstellen Sie dann ein Amazon ECR-Repository. Weitere Informationen finden Sie unter [Erstellen eines Repositorys](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) in der Amazon ECR-Dokumentation. Stellen Sie sicher, dass Sie die URL des Amazon ECR-Repositorys aufzeichnen.Sie können auch ein Amazon ECR-Repository mit AWS CLI erstellen, indem Sie den folgenden Befehl ausführen:<pre>aws ecr create-repository --repository-name helloworld-grpc</pre> | Cloud-Administrator | 
| Erstellen Sie das Docker-Image.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer.html) | DevOps Ingenieur | 
| Senden Sie das Docker-Image an Amazon ECR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer.html) | DevOps Ingenieur | 

### Stellen Sie die Kubernetes-Manifeste im Amazon EKS-Cluster bereit
<a name="deploy-the-kubernetes-manifests-to-the-amazon-eks-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ändern Sie die Werte in der Kubernetes-Manifestdatei. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer.html) | DevOps Ingenieur | 
| Stellen Sie die Kubernetes-Manifestdatei bereit.  | Stellen Sie die `grpc-sample.yaml` Datei im Amazon EKS-Cluster bereit, indem Sie den folgenden `kubectl` Befehl ausführen: <pre>kubectl apply -f ./kubernetes/grpc-sample.yaml</pre> | DevOps Ingenieur | 

### Erstellen Sie den DNS-Eintrag für den FQDN des Application Load Balancers
<a name="create-the-dns-record-for-the-application-load-balancerapos-s-fqdn"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Notieren Sie den FQDN für den Application Load Balancer. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer.html) | DevOps Ingenieur | 

### Testen der Lösung
<a name="test-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie den gRPC-Server.  | Verwenden Sie gRPCurl , um den Endpunkt zu testen, indem Sie den folgenden Befehl ausführen:<pre>grpcurl grpc.example.com:443 list <br />grpc.reflection.v1alpha.ServerReflection<br />helloworld.helloworld</pre>Ersetze es `grpc.example.com` durch deinen DNS-Namen. | DevOps Ingenieur | 
| Testen Sie den gRPC-Server mit einem gRPC-Client.  | Ersetzen Sie im `helloworld_client_ssl.py` gRPC-Beispielclient den Hostnamen von `grpc.example.com` durch den Hostnamen, der für den gRPC-Server verwendet wird.  Das folgende Codebeispiel zeigt die Antwort des gRPC-Servers auf die Anfrage des Clients:<pre>python ./app/helloworld_client_ssl.py<br />message: "Hello to gRPC server from Client"<br /><br />message: "Thanks for talking to gRPC server!! Welcome to hello world. Received message is \"Hello to gRPC server from Client\""<br />received: true</pre>Dies zeigt, dass der Client mit dem Server kommunizieren kann und dass die Verbindung erfolgreich ist. | DevOps Ingenieur | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Entfernen Sie den DNS-Eintrag. | Entfernen Sie den DNS-Eintrag, der auf den zuvor erstellten FQDN des Application Load Balancers verweist.  | Cloud-Administrator | 
| Entfernen Sie den Load Balancer. | Wählen Sie auf der [Amazon EC2 EC2-Konsole](https://console.aws.amazon.com/ec2/) **Load Balancers** und entfernen Sie dann den Load Balancer, den der Kubernetes-Controller für Ihre Eingangsressource erstellt hat. | Cloud-Administrator | 
| Löschen Sie den Amazon EKS-Cluster. | Löschen Sie den Amazon EKS-Cluster mithilfe von`eksctl`:<pre>eksctl delete cluster -f ./eks.yaml</pre> | AWS DevOps | 

## Zugehörige Ressourcen
<a name="deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer-resources"></a>
+ [Network Load Balancing in Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html)
+ [Zielgruppen für Ihre Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-group-protocol-version)

## Zusätzliche Informationen
<a name="deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer-additional"></a>

**Beispiel für eine Ingress-Ressource:**

```
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
    alb.ingress.kubernetes.io/ssl-redirect: "443"
    alb.ingress.kubernetes.io/backend-protocol-version: "GRPC"
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:<AWS-Region>:<AccountId>:certificate/<certificate_ID>
  labels:
    app: grpcserver
    environment: dev
  name: grpcserver
  namespace: grpcserver
spec:
  ingressClassName: alb
  rules:
  - host: grpc.example.com # <----- replace this as per your host name for which the SSL certtficate is available in ACM
    http:
      paths:
      - backend:
          service:
            name: grpcserver
            port:
              number: 9000
        path: /
        pathType: Prefix
```

**Beispiel für eine Bereitstellungsressource:**

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: grpcserver
  namespace: grpcserver
spec:
  selector:
    matchLabels:
      app: grpcserver
  replicas: 1
  template:
    metadata:
      labels:
        app: grpcserver
    spec:
      containers:
      - name: grpc-demo
        image: <your_aws_account_id>.dkr.ecr.us-east-1.amazonaws.com/helloworld-grpc:1.0   #<------- Change to the URI that the Docker image is pushed to
        imagePullPolicy: Always
        ports:
        - name: grpc-api
          containerPort: 9000
        env:
        - name: POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
      restartPolicy: Always
```

**Beispielausgabe:**

```
NAME             CLASS           HOSTS                          Address                PORTS          AGE
 grpcserver      <none>      <DNS-HostName>                  <ELB-address>              80            27d
```

# Stellen Sie containerisierte Anwendungen bereit, wenn AWS IoT Greengrass V2 sie als Docker-Container ausgeführt werden
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container"></a>

*Salih Bakir, Giuseppe Di Bella und Gustav Svalander, Amazon Web Services*

## Zusammenfassung
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-summary"></a>

AWS IoT Greengrass Version 2, wenn es als Docker-Container bereitgestellt wird, unterstützt es nicht nativ das Ausführen von Docker-Anwendungscontainern. Dieses Muster zeigt Ihnen, wie Sie ein benutzerdefiniertes Container-Image erstellen, das auf der neuesten Version basiert und AWS IoT Greengrass V2 die Funktionalität Docker-in-Docker (DinD) aktiviert. Mit DinD können Sie containerisierte Anwendungen in der Umgebung ausführen. AWS IoT Greengrass V2 

Sie können dieses Muster als eigenständige Lösung einsetzen oder es in Container-Orchestrierungsplattformen wie Amazon ECS Anywhere integrieren. In beiden Bereitstellungsmodellen behalten Sie den vollen AWS IoT Greengrass V2 Funktionsumfang, einschließlich der AWS IoT SiteWise Edge-Verarbeitungsfunktionen, bei und ermöglichen gleichzeitig skalierbare, containerbasierte Bereitstellungen. 

## Voraussetzungen und Einschränkungen
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver. AWS-Konto
+ Allgemeine AWS IoT Greengrass Version 2 Voraussetzungen finden Sie in der AWS IoT Greengrass Version 2 Dokumentation unter [Voraussetzungen](https://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started-prerequisites.html). 
+ Docker Engine, installiert und konfiguriert unter Linux, macOS oder Windows.
+ Docker Compose (wenn Sie die Docker Compose-Befehlszeilenschnittstelle (CLI) zum Ausführen von Docker-Images verwenden).
+ Ein Linux-Betriebssystem.
+ Ein Hypervisor mit einem Hostserver, der Virtualisierung unterstützt.
+ Systemanforderungen:
  + 2 GB RAM (mindestens)
  + 5 GB verfügbarer Festplattenspeicher (mindestens)
  + Für AWS IoT SiteWise Edge eine x86\$164-Quad-Core-CPU mit 16 GB RAM und 50 GB verfügbarem Festplattenspeicher. Weitere Informationen AWS IoT SiteWise zur Datenverarbeitung finden Sie in der Dokumentation unter Anforderungen an das [Datenverarbeitungspaket](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-gateway-ggv2.html#w2aac17c19c13b7). AWS IoT SiteWise 

**Produktversionen**
+ AWS IoT Greengrass Version 2 Version 2.5.3 oder höher
+ Docker-in-Docker Version 1.0.0 oder höher
+ Docker Compose Version 1.22 oder höher
+ Docker Engine Version 20.10.12 oder höher

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen verfügbar. AWS-Regionen Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-architecture"></a>

**Zieltechnologie-Stack**
+ **Datenquellen** — IoT-Geräte, Sensoren oder Industrieanlagen, die Daten für die Verarbeitung generieren
+ **AWS IoT Greengrass V2**— Läuft als Docker-Container mit D-in-D Funktionen und wird auf Edge-Infrastrukturen bereitgestellt
+ **Containerisierte Anwendungen — Benutzerdefinierte Anwendungen**, die in der AWS IoT Greengrass V2 Umgebung als verschachtelte Docker-Container ausgeführt werden
+ **(Optional) Amazon ECS Anywhere** — Container-Orchestrierung, die die AWS IoT Greengrass V2 Container-Bereitstellung verwaltet
+ **Andere AWS-Services** — AWS IoT Core AWS IoT SiteWise, und andere AWS-Services für die Datenverarbeitung und -verwaltung

**Zielarchitektur**

Das folgende Diagramm zeigt ein Beispiel für eine Zielbereitstellungsarchitektur, die Amazon ECS Anywhere, ein Container-Management-Tool, verwendet.

![\[Bereitstellungsarchitektur mit Amazon ECS Anywhere.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/2ecf5354-40e0-4fd9-9798-086719059784/images/5ed2652e-9604-4809-8962-b167e1991658.png)


Das Diagramm zeigt den folgenden Workflow:

**1: Container-Image-Speicher** — Amazon ECR speichert die AWS IoT Greengrass Container-Images und alle benutzerdefinierten Anwendungscontainer, die für die Edge-Verarbeitung benötigt werden.

**2** und **3: Container-Bereitstellung** — Amazon ECS Anywhere stellt das AWS IoT Greengrass Container-Image von Amazon ECR am Edge-Standort bereit und verwaltet so den Container-Lebenszyklus und den Bereitstellungsprozess.

**4: Bereitstellung von Komponenten** — Der bereitgestellte AWS IoT Greengrass Core stellt seine relevanten Komponenten automatisch auf der Grundlage seiner Konfiguration bereit. Zu den Komponenten gehören AWS IoT SiteWise Edge und andere notwendige Edge-Verarbeitungskomponenten innerhalb der containerisierten Umgebung.

**5: Datenaufnahme** — Nach der vollständigen Konfiguration AWS IoT Greengrass beginnt die Erfassung von Telemetrie- und Sensordaten aus verschiedenen IoT-Datenquellen am Edge-Standort.

**6: Datenverarbeitung und Cloud-Integration** — Der containerisierte AWS IoT Greengrass Kern verarbeitet Daten lokal mithilfe der eingesetzten Komponenten (einschließlich AWS IoT SiteWise Edge für industrielle Daten). Anschließend werden die verarbeiteten Daten zur weiteren Analyse und Speicherung an AWS Cloud Dienste gesendet.

## Tools
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-tools"></a>

**AWS-Services**
+ [Amazon ECS Anywhere](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch-type-external.html) unterstützt Sie bei der Bereitstellung, Verwendung und Verwaltung von Amazon ECS-Aufgaben und -Services in Ihrer eigenen Infrastruktur.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) bietet skalierbare Rechenkapazität in der AWS Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html)ist ein Open-Source-Edge-Runtime- und Cloud-Dienst für das Internet der Dinge (IoT), mit dem Sie IoT-Anwendungen auf Ihren Geräten erstellen, bereitstellen und verwalten können.
+ [AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html)hilft Ihnen dabei, Daten von Industrieanlagen in großem Maßstab zu sammeln, zu modellieren, zu analysieren und zu visualisieren.

**Andere Tools**
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.
+ [Docker Compose](https://docs.docker.com/compose/) ist ein Tool zum Definieren und Ausführen von Multi-Container-Anwendungen.
+ [Docker Engine](https://docs.docker.com/engine/) ist eine Open-Source-Containerisierungstechnologie zum Erstellen und Containerisieren von Anwendungen.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [AWS IoT Greengrass Docker-in-Dockerv2-Repository](https://github.com/aws-samples/aws-iot-greengrass-docker-in-docker) verfügbar.

## Epen
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-epics"></a>

### Baue das Bild AWS IoT Greengrass V2 Docker-in-Docker
<a name="build-the-gg2-docker-in-docker-image"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie und navigieren Sie zum Repository. | Verwenden Sie den folgenden Befehl, um das Repository zu klonen: `git clone https://github.com/aws-samples/aws-iot-greengrass-v2-docker-in-docker.git`Verwenden Sie den folgenden Befehl, um zu dem `docker` Verzeichnis zu navigieren:`cd aws-iot-greengrass-v2-docker-in-docker/docker` | DevOps Ingenieur, AWS DevOps | 
| Erstellen Sie das Docker-Image. | Führen Sie den folgenden Befehl aus, um das Docker-Image mit der (neuesten) Standardversion zu erstellen:`docker build -t x86_64/aws-iot-greengrass:latest .`Oder führen Sie den folgenden Befehl aus, um das Docker-Image mit einer bestimmten Version zu erstellen:`docker build --build-arg GREENGRASS_RELEASE_VERSION=2.12.0 -t x86_64/aws-iot-greengrass:2.12.0 .`Führen Sie den folgenden Befehl aus, um den Build zu überprüfen:`docker images \| grep aws-iot-greengrass`  | AWS DevOps, DevOps Ingenieur, App-Entwickler | 
| (Optional) Push zu Amazon ECR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | App-Entwickler, AWS DevOps, DevOps Ingenieur | 

### AWS Anmeldeinformationen konfigurieren
<a name="configure-aws-credentials"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Wählen Sie die Authentifizierungsmethode aus. | Wählen Sie eine der folgenden Optionen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | AWS-Administrator | 
| Konfigurieren Sie die Authentifizierungsmethode. | Verwenden Sie für die von Ihnen gewählte Authentifizierungsmethode die folgenden Konfigurationsanweisungen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | AWS-Administrator | 

### Mit Docker Compose ausführen
<a name="run-with-docker-compose"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfiguration `docker-compose.yml`. | Aktualisieren Sie die `docker-compose.yml` Datei wie folgt mit Umgebungsvariablen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps Ingenieur | 
| Container starten und verifizieren. | Führen Sie den folgenden Befehl aus, um im Vordergrund zu starten:`docker-compose up --build`Oder führen Sie den folgenden Befehl aus, um im Hintergrund zu starten:`docker-compose up --build -d`Führen Sie den folgenden Befehl aus, um den Status zu überprüfen:`docker-compose ps`Führen Sie den folgenden Befehl aus, um Protokolle zu überwachen:`docker-compose logs -f` | DevOps Ingenieur | 

### Mit Docker CLI ausführen
<a name="run-with-docker-cli"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie den Container mit Docker CLI aus. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps Ingenieur | 
| Behälter verifizieren. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps Ingenieur | 

### Container-Anwendungen verwalten
<a name="manage-containerized-applications"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie Anwendungen bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | App-Developer | 
| Zugreifen und testen Docker-in-Docker. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps Ingenieur | 

### (Optional) Integration mit Amazon ECS Anywhere
<a name="optional-integrate-with-ecs-anywhere"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie den Amazon ECS-Cluster ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | AWS-Administrator | 
| Stellen Sie die Amazon ECS-Aufgabe bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | AWS-Administrator | 

### Stoppen und aufräumen
<a name="stop-and-cleanup"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Behälter anhalten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps Ingenieur | 

## Fehlerbehebung
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Der Container kann mit Berechtigungsfehlern nicht gestartet werden. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)`--privileged`gewährt dem Container erweiterte Rechte. | 
| Die Bereitstellung schlägt mit Fehlern bei den Anmeldeinformationen fehl. | Gehen Sie wie folgt vor, um zu überprüfen, ob die Anmeldeinformationen korrekt konfiguriert sind:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Stellen Sie sicher, dass die IAM-Berechtigungen`iot:CreateThing`,`iot:CreatePolicy`, `iot:AttachPolicy``iam:CreateRole`, und `iam:AttachRolePolicy` enthalten. | 
| Es kann keine Verbindung zum Docker-Daemon im Container hergestellt werden. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | 
| Der Container hat nicht mehr genügend Speicherplatz. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Stellen Sie sicher, dass der Festplattenspeicher mindestens 5 GB für Basisoperationen und 50 GB für AWS IoT SiteWise Edge beträgt | 
| Probleme beim Erstellen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | 
| Probleme mit der Netzwerkverbindung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Stellen Sie sicher, dass die Firewall ausgehenden HTTPS- (443) und MQTT- (8883) -Verkehr zulässt. | 
| Greengrass-Komponenten können nicht bereitgestellt werden. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Überprüfen Sie die komponentenspezifischen Protokolle im `/greengrass/v2/logs/` Verzeichnis. | 
| Der Container wird sofort nach dem Start beendet. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Stellen Sie sicher, dass alle erforderlichen Umgebungsvariablen korrekt gesetzt sind, wenn`PROVISION=true`. Stellen Sie sicher, dass das `--init` Flag beim Starten des Containers verwendet wird. | 

## Zugehörige Ressourcen
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-resources"></a>

**AWS Ressourcen**
+ [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)
+ [Konfigurieren Sie die Edge-Datenverarbeitung für AWS IoT SiteWise Modelle und Anlagen](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/edge-processing.html)
+ [Was ist AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html)

**Sonstige Ressourcen**
+ [Docker-Dokumentation](https://docs.docker.com/)

## Zusätzliche Informationen
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-additional"></a>
+ Für die AWS IoT SiteWise Edge-Datenverarbeitung muss Docker in der AWS IoT Greengrass Umgebung verfügbar sein.
+ Um einen verschachtelten Container auszuführen, müssen Sie den AWS IoT Greengrass Container mit Anmeldeinformationen auf Administratorebene ausführen.

# Container mithilfe von Elastic Beanstalk bereitstellen
<a name="deploy-containers-by-using-elastic-beanstalk"></a>

*Thomas Scott und Jean-Baptiste Guillois, Amazon Web Services*

## Zusammenfassung
<a name="deploy-containers-by-using-elastic-beanstalk-summary"></a>

In der Amazon Web Services (AWS) Cloud unterstützt AWS Elastic Beanstalk Docker als verfügbare Plattform, sodass Container mit der erstellten Umgebung ausgeführt werden können. Dieses Muster zeigt, wie Container mithilfe des Elastic Beanstalk-Service bereitgestellt werden. Bei der Bereitstellung dieses Musters wird die auf der Docker-Plattform basierende Webserver-Umgebung verwendet.

Um Elastic Beanstalk für die Bereitstellung und Skalierung von Webanwendungen und Services zu verwenden, laden Sie Ihren Code hoch und die Bereitstellung erfolgt automatisch. Kapazitätsbereitstellung, Lastenausgleich, automatische Skalierung und Überwachung des Anwendungszustands sind ebenfalls enthalten. Wenn Sie Elastic Beanstalk verwenden, können Sie die volle Kontrolle über die AWS-Ressourcen übernehmen, die Elastic Beanstalk in Ihrem Namen erstellt. Für die Nutzung von Elastic Beanstalk fallen keine zusätzlichen Gebühren an. Sie zahlen nur für die AWS-Ressourcen, die zum Speichern und Ausführen Ihrer Anwendungen verwendet werden.

Dieses Muster enthält Anweisungen für die Bereitstellung mithilfe der [AWS Elastic Beanstalk Command Line Interface (EB CLI)](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install-advanced.html) und der AWS-Managementkonsole.

**Anwendungsfälle**

Zu den Anwendungsfällen für Elastic Beanstalk gehören die folgenden: 
+ Stellen Sie eine Prototypumgebung bereit, um eine Frontend-Anwendung zu demonstrieren. (Dieses Muster verwendet ein Dockerfile**** als Beispiel.)
+ Stellen Sie eine API bereit, um API-Anfragen für eine bestimmte Domain zu bearbeiten.
+ Stellen Sie eine Orchestrierungslösung mithilfe von Docker-Compose bereit (`docker-compose.yml`wird in diesem Muster**** nicht als praktisches Beispiel verwendet).

## Voraussetzungen und Einschränkungen
<a name="deploy-containers-by-using-elastic-beanstalk-prereqs"></a>

**Voraussetzungen**
+ Ein AWS-Konto
+ AWS EB CLI lokal installiert
+ Docker ist auf einem lokalen Computer installiert

**Einschränkungen**
+ Im kostenlosen Tarif gibt es ein Docker-Pull-Limit von 100 Pulls pro 6 Stunden pro IP-Adresse.

## Architektur
<a name="deploy-containers-by-using-elastic-beanstalk-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon Elastic Compute Cloud (Amazon EC2) -Instanzen
+ Sicherheitsgruppe
+ Application Load Balancer
+ Auto Scaling-Gruppe

**Zielarchitektur**

![\[Architektur für die Bereitstellung von Containern mit Elastic Beanstalk.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/dfabcdc2-747f-40e2-a603-08ea31ba71d3/images/1d17ff09-1aea-4c72-adb5-eaf741601428.png)


**Automatisierung und Skalierung**

AWS Elastic Beanstalk kann automatisch auf der Grundlage der Anzahl der gestellten Anfragen skalieren. Zu den für eine Umgebung erstellten AWS-Ressourcen gehören ein Application Load Balancer, eine Auto Scaling Scaling-Gruppe und eine oder mehrere EC2 Amazon-Instances. 

Der Load Balancer befindet sich vor den EC2 Amazon-Instances, die Teil der Auto Scaling Scaling-Gruppe sind. Amazon EC2 Auto Scaling startet automatisch zusätzliche EC2 Amazon-Instances, um der zunehmenden Belastung Ihrer Anwendung Rechnung zu tragen. Wenn die Auslastung Ihrer Anwendung abnimmt, stoppt Amazon EC2 Auto Scaling Instances, hält aber mindestens eine Instance am Laufen.

**Automatische Skalierung löst aus**

Die Auto Scaling Scaling-Gruppe in Ihrer Elastic Beanstalk Beanstalk-Umgebung verwendet zwei CloudWatch Amazon-Alarme, um Skalierungsvorgänge einzuleiten. Mit den Standardauslösern wird die Skalierung durchgeführt, wenn der durchschnittliche ausgehende Netzwerkdatenverkehr von der jeweiligen Instance innerhalb von 5 Minuten 6 MB über- oder 2 MB unterschreitet. Um Amazon EC2 Auto Scaling effektiv zu nutzen, konfigurieren Sie Trigger, die für Ihre Anwendung, Ihren Instance-Typ und Ihre Serviceanforderungen geeignet sind. Sie können die Skalierung anhand unterschiedlicher Statistiken wie Latenz, Festplatten-I/O-Vorgänge, CPU-Auslastung und Anforderungsanzahl ausführen. Weitere Informationen finden Sie unter [Auto Scaling-Trigger](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-autoscaling-triggers.html).

## Tools
<a name="deploy-containers-by-using-elastic-beanstalk-tools"></a>

**AWS-Services**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [AWS EB Command Line Interface (EB CLI)](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html) ist ein Befehlszeilenclient, mit dem Sie Elastic Beanstalk Beanstalk-Umgebungen erstellen, konfigurieren und verwalten können.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) verteilt den eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele. Sie können beispielsweise den Traffic auf Amazon Elastic Compute Cloud (Amazon EC2) -Instances, Container und IP-Adressen in einer oder mehreren Availability Zones verteilen.

**Andere Dienste**
+ [Docker](https://www.docker.com/) packt Software in standardisierte Einheiten, sogenannte Container, die Bibliotheken, Systemtools, Code und Laufzeit enthalten.

**Code**

Der Code für dieses Muster ist im GitHub [Cluster Sample Application](https://github.com/aws-samples/cluster-sample-app) Repository verfügbar.

## Epen
<a name="deploy-containers-by-using-elastic-beanstalk-epics"></a>

### Mit einem Dockerfile erstellen
<a name="build-with-a-dockerfile"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Remote-Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containers-by-using-elastic-beanstalk.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Initialisieren Sie das Elastic Beanstalk Docker-Projekt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containers-by-using-elastic-beanstalk.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Testen Sie das Projekt lokal. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containers-by-using-elastic-beanstalk.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 

### Mit EB CLI bereitstellen
<a name="deploy-using-eb-cli"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie den Bereitstellungsbefehl aus | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containers-by-using-elastic-beanstalk.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Greifen Sie auf die bereitgestellte Version zu. | Nachdem der Bereitstellungsbefehl abgeschlossen ist, greifen Sie mit dem `eb open` Befehl auf das Projekt zu. | App-Entwickler, AWS-Administrator, AWS DevOps | 

### Mit der Konsole bereitstellen
<a name="deploy-using-the-console"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die Anwendung mithilfe des Browsers bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-containers-by-using-elastic-beanstalk.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Greifen Sie auf die bereitgestellte Version zu. | Greifen Sie nach der Bereitstellung auf die bereitgestellte Anwendung zu und wählen Sie die angegebene URL aus. | App-Entwickler, AWS-Administrator, AWS DevOps | 

## Zugehörige Ressourcen
<a name="deploy-containers-by-using-elastic-beanstalk-resources"></a>
+ [Webserver-Umgebungen](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts-webserver.html)
+ [Installieren Sie die EB CLI auf macOS](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install-osx.html)
+ [Manuelles Installieren der EB-CLI](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install-advanced.html)

## Zusätzliche Informationen
<a name="deploy-containers-by-using-elastic-beanstalk-additional"></a>

**Vorteile der Verwendung von Elastic Beanstalk**
+ Automatische Bereitstellung der Infrastruktur
+ Automatische Verwaltung der zugrunde liegenden Plattform
+ Automatisches Patchen und Updates zur Unterstützung der Anwendung
+ Automatische Skalierung der Anwendung
+ Möglichkeit, die Anzahl der Knoten anzupassen
+ Möglichkeit, bei Bedarf auf die Infrastrukturkomponenten zuzugreifen
+ Einfache Bereitstellung im Vergleich zu anderen Container-Bereitstellungslösungen

# Generieren Sie eine statische ausgehende IP-Adresse mithilfe einer Lambda-Funktion, Amazon VPC und einer serverlosen Architektur
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture"></a>

*Thomas Scott, Amazon Web Services*

## Zusammenfassung
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-summary"></a>

Dieses Muster beschreibt, wie eine statische ausgehende IP-Adresse in der Amazon Web Services (AWS) -Cloud mithilfe einer serverlosen Architektur generiert wird. Ihr Unternehmen kann von diesem Ansatz profitieren, wenn es Dateien mithilfe des Secure File Transfer Protocol (SFTP) an eine separate Geschäftseinheit senden möchte. Das bedeutet, dass die Geschäftseinheit Zugriff auf eine IP-Adresse haben muss, über die Dateien ihre Firewall passieren können. 

Der Ansatz des Musters hilft Ihnen bei der Erstellung einer AWS Lambda Lambda-Funktion, die eine [Elastic IP-Adresse](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) als ausgehende IP-Adresse verwendet. Wenn Sie die Schritte in diesem Muster befolgen, können Sie eine Lambda-Funktion und eine Virtual Private Cloud (VPC) erstellen, die ausgehenden Datenverkehr über ein Internet-Gateway mit einer statischen IP-Adresse weiterleitet. Um die statische IP-Adresse zu verwenden, fügen Sie die Lambda-Funktion der VPC und ihren Subnetzen hinzu. 

## Voraussetzungen und Einschränkungen
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto. 
+ AWS Identity and Access Management (IAM) -Berechtigungen zum Erstellen und Bereitstellen einer Lambda-Funktion sowie zum Erstellen einer VPC und ihrer Subnetze. Weitere Informationen dazu finden Sie unter [Ausführungsrolle und Benutzerberechtigungen](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-permissions) in der AWS Lambda Lambda-Dokumentation.
+ Wenn Sie den Ansatz dieses Musters mithilfe von Infrastructure as Code (IaC) implementieren möchten, benötigen Sie eine integrierte Entwicklungsumgebung (IDE) wie AWS Cloud9. Weitere Informationen dazu finden Sie unter [Was ist AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html)? in der AWS Cloud9 Cloud9-Dokumentation.

## Architektur
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-architecture"></a>

Das folgende Diagramm zeigt die serverlose Architektur für dieses Muster.

![\[AWS Cloud VPC architecture with two availability zones, public and private subnets, NAT gateways, and a Lambda function.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/eb1d0b05-df33-45ae-b27e-36090055b300/images/c15cc6da-ce4e-4ea0-9feb-de1c845d3ce8.png)


Das Diagramm zeigt den folgenden Workflow:

1. Ausgehender Verkehr geht `NAT gateway 1` rein. `Public subnet 1`

1. Ausgehender Verkehr geht `NAT gateway 2` rein. `Public subnet 2`

1. Die Lambda-Funktion kann in `Private subnet 1` oder `Private subnet 2` ausgeführt werden.

1. `Private subnet 1`und leitet `Private subnet 2` den Verkehr zu den NAT-Gateways in den öffentlichen Subnetzen weiter.

1. Die NAT-Gateways senden ausgehenden Datenverkehr von den öffentlichen Subnetzen an das Internet-Gateway.

1. Ausgehende Daten werden vom Internet-Gateway zum externen Server übertragen.



**Technologie-Stack**
+ Lambda
+ Amazon Virtual Private Cloud (Amazon VPC)

 

**Automatisierung und Skalierung**

Sie können Hochverfügbarkeit (HA) sicherstellen, indem Sie zwei öffentliche und zwei private Subnetze in unterschiedlichen Availability Zones verwenden. Selbst wenn eine Availability Zone nicht mehr verfügbar ist, funktioniert die Pattern-Lösung weiterhin.

## Tools
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-tools"></a>
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) — AWS Lambda ist ein Rechenservice, der die Ausführung von Code unterstützt, ohne Server bereitzustellen oder zu verwalten. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde. Sie bezahlen nur für die Datenverarbeitungszeit, die Sie wirklich nutzen und es werden keine Gebühren in Rechnung gestellt, wenn Ihr Code nicht ausgeführt wird.
+ [Amazon VPC](https://docs.aws.amazon.com/vpc/) — Amazon Virtual Private Cloud (Amazon VPC) stellt einen logisch isolierten Bereich der AWS-Cloud bereit, in dem Sie AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk starten können. Dieses virtuelle Netzwerk entspricht weitgehend einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben, kann jedoch die Vorzüge der skalierbaren Infrastruktur von AWS nutzen.

## Epen
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-epics"></a>

### Erstellen einer neuen VPC
<a name="create-a-new-vpc"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen einer neuen VPC. | Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die Amazon VPC-Konsole und erstellen Sie dann eine VPC mit `Lambda VPC` dem Namen `10.0.0.0/25` ** IPv4 **CIDR-Bereich.Weitere Informationen zum Erstellen einer VPC finden Sie unter [Erste Schritte mit Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html#getting-started-create-vpc) in der Amazon VPC-Dokumentation.  | AWS-Administrator | 

### Erstellen Sie zwei öffentliche Subnetze
<a name="create-two-public-subnets"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie das erste öffentliche Subnetz. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 
| Erstellen Sie das zweite öffentliche Subnetz. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 

### Erstellen Sie zwei private Subnetze
<a name="create-two-private-subnets"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie das erste private Subnetz. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 
| Erstellen Sie das zweite private Subnetz. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 

### Erstellen Sie zwei Elastic IP-Adressen für Ihre NAT-Gateways
<a name="create-two-elastic-ip-addresses-for-your-nat-gateways"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  Erstellen Sie die erste Elastic IP-Adresse. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html)Diese Elastic IP-Adresse wird für Ihr erstes NAT-Gateway verwendet.  | AWS-Administrator | 
| Erstellen Sie die zweite Elastic IP-Adresse. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html)Diese Elastic IP-Adresse wird für Ihr zweites NAT-Gateway verwendet. | AWS-Administrator | 

### Ein Internet-Gateway erstellen
<a name="create-an-internet-gateway"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen eines Internet-Gateways | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 
| Verbinden Sie das Internet-Gateway mit der VPC. | Wählen Sie zuerst das Internet-Gateway aus, das Sie eben erstellt haben, und anschließend **Actions, Attach to VPC (Aktionen, An VPC anfügen)**. | AWS-Administrator | 

### Erstellen Sie zwei NAT-Gateways
<a name="create-two-nat-gateways"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie das erste NAT-Gateway. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 
| Erstellen Sie das zweite NAT-Gateway. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 

### Erstellen Sie Routentabellen für Ihre öffentlichen und privaten Subnetze
<a name="create-route-tables-for-your-public-and-private-subnets"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Routing-Tabelle für das öffentliche Subnetz. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 
| Erstellen Sie die Routing-Tabelle für das Public-Two-Subnetz. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 
| Erstellen Sie die Routing-Tabelle für das private One-Subnetz. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 
| Erstellen Sie die Routing-Tabelle für das Private-Two-Subnetz. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 

### Erstellen Sie die Lambda-Funktion, fügen Sie sie der VPC hinzu und testen Sie die Lösung
<a name="create-the-lambda-function-add-it-to-the-vpc-and-test-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine neue Lambda-Funktion. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 
| Fügen Sie die Lambda-Funktion zu Ihrer VPC hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 
| Schreiben Sie Code, um einen externen Service aufzurufen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture.html) | AWS-Administrator | 

## Zugehörige Ressourcen
<a name="generate-a-static-outbound-ip-address-using-a-lambda-function-amazon-vpc-and-a-serverless-architecture-resources"></a>
+ [Konfigurieren einer Lambda-Funktion für den Zugriff auf Ressourcen in einer VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html)

# Automatische Identifizierung doppelter Container-Images bei der Migration zu einem Amazon ECR-Repository
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository"></a>

*Rishabh Yadav und Rishi Singla, Amazon Web Services*

## Zusammenfassung
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-summary"></a>

Das Muster bietet eine automatisierte Lösung zur Identifizierung, ob es sich bei Bildern, die in verschiedenen Container-Repositorys gespeichert sind, um Duplikate handelt. Diese Prüfung ist nützlich, wenn Sie planen, Bilder aus anderen Container-Repositorys zu Amazon Elastic Container Registry (Amazon ECR) zu migrieren.

Für grundlegende Informationen beschreibt das Muster auch die Komponenten eines Container-Images, wie z. B. den Image-Digest, das Manifest und die Tags. Wenn Sie eine Migration zu Amazon ECR planen, entscheiden Sie sich möglicherweise dafür, Ihre Container-Images zwischen den Container-Registern zu synchronisieren, indem Sie die Digests der Images vergleichen. Bevor Sie Ihre Container-Images migrieren, müssen Sie überprüfen, ob diese Images bereits im Amazon ECR-Repository vorhanden sind, um Duplikate zu vermeiden. Es kann jedoch schwierig sein, Duplikate durch den Vergleich von Image-Digests zu erkennen, und dies kann zu Problemen in der ersten Migrationsphase führen.  Dieses Muster vergleicht die Digests zweier ähnlicher Bilder, die in unterschiedlichen Container-Registern gespeichert sind, und erklärt, warum die Digests variieren, damit Sie Bilder genau vergleichen können.

## Voraussetzungen und Einschränkungen
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-prereqs"></a>
+ Ein aktiver AWS-Konto
+ Zugriff auf das [öffentliche Amazon ECR-Register](https://gallery.ecr.aws/)
+ Vertrautheit mit den folgenden Themen: AWS-Services
  + [AWS CodeCommit](https://aws.amazon.com/codecommit/)
  + [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
  + [AWS CodeBuild](https://aws.amazon.com/codebuild/)
  + [AWS Identity and Access Management (ICH BIN)](https://aws.amazon.com/iam/)
  + [Amazon Simple Storage Service (Amazon-S3)](https://aws.amazon.com/s3/)
+ Konfigurierte CodeCommit Anmeldeinformationen (siehe [Anweisungen](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html))

## Architektur
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-architecture"></a>

**Container-Image-Komponenten**

Das folgende Diagramm zeigt einige der Komponenten eines Container-Images. Diese Komponenten werden im Anschluss an das Diagramm beschrieben.

![\[Manifest, Konfiguration, Dateisystemschichten und Digests.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/7db5020c-6f5b-4e91-b91a-5b8ae844be1b/images/71b99c67-a934-4f94-8af8-2a8431fb91f5.png)


**Begriffe und Definitionen**

Die folgenden Begriffe sind in der [Image Specification der Open Container Initiative (OCI)](https://github.com/opencontainers/image-spec/blob/main/spec.md) definiert.
+ **Registry:** Ein Dienst für die Speicherung und Verwaltung von Bildern.
+ **Client:** Ein Tool, das mit Registern kommuniziert und mit lokalen Bildern arbeitet.
+ **Push:** Der Prozess zum Hochladen von Bildern in eine Registry.
+ **Pull:** Der Prozess zum Herunterladen von Bildern aus einer Registry.
+ **Blob:** Die binäre Form von Inhalten, die in einer Registry gespeichert werden und mit einem Digest adressiert werden können.
+ **Index:** Ein Konstrukt, das mehrere Image-Manifeste für verschiedene Computerplattformen (wie x86-64 oder ARM 64-Bit) oder Medientypen identifiziert. Weitere Informationen finden Sie in der [OCI Image Index Specification](https://github.com/opencontainers/image-spec/blob/main/image-index.md).
+ **Manifest:** Ein JSON-Dokument, das ein Bild oder Artefakt definiert, das über den Endpunkt des Manifests hochgeladen wird. Ein Manifest kann mithilfe von Deskriptoren auf andere Blobs in einem Repository verweisen. Weitere Informationen finden Sie in der [OCI](https://github.com/opencontainers/image-spec/blob/main/manifest.md) Image Manifest Specification.
+ **Dateisystemebene:** Systembibliotheken und andere Abhängigkeiten für ein Bild.
+ **Konfiguration:** Ein Blob, der Artefakt-Metadaten enthält und auf den im Manifest verwiesen wird. Weitere Informationen finden Sie in der [OCI-Image-Konfigurationsspezifikation](https://github.com/opencontainers/image-spec/blob/main/config.md).
+ **Objekt oder Artefakt:** Ein konzeptionelles Inhaltselement, das als Blob gespeichert und einem zugehörigen Manifest mit einer Konfiguration zugeordnet ist.
+ **Zusammenfassung:** Eine eindeutige Kennung, die aus einem kryptografischen Hash des Inhalts eines Manifests erstellt wird. Der Image-Digest hilft dabei, ein unveränderliches Container-Image eindeutig zu identifizieren. Wenn Sie ein Image mithilfe des zugehörigen Digest abrufen, laden Sie jedes Mal dasselbe Image auf ein beliebiges Betriebssystem oder eine beliebige Architektur herunter. Weitere Informationen finden Sie in der [OCI-Image-Spezifikation](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests).
+ **Tag:** Ein für Menschen lesbarer Manifestbezeichner. Im Vergleich zu Image-Digests, die unveränderlich sind, sind Tags dynamisch. Ein Tag, der auf ein Bild verweist, kann sich ändern und von einem Bild zum anderen verschoben werden, obwohl der zugrunde liegende Bildauszug derselbe bleibt.

**Zielarchitektur**

Das folgende Diagramm zeigt die allgemeine Architektur der Lösung, die durch dieses Muster bereitgestellt wird, um doppelte Container-Images zu identifizieren, indem Bilder verglichen werden, die in Amazon ECR und privaten Repositorys gespeichert sind.

![\[Automatische Erkennung von Duplikaten mit und. CodePipeline CodeBuild\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/7db5020c-6f5b-4e91-b91a-5b8ae844be1b/images/5ee62bc8-db8d-48a3-9e79-f3392b6e9bf7.png)


## Tools
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-tools"></a>

**AWS-Services**
+ [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 regionsübergreifend AWS-Konten zu verwalten.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)ist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.

**Kode**

Der Code für dieses Muster ist im GitHub Repository verfügbar.**** [Automatisierte Lösung zur Identifizierung doppelter Container-Images zwischen Repositorys](https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories/).

## Best Practices
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-best-practices"></a>
+ [CloudFormation bewährte Verfahren](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html)
+ [AWS CodePipeline bewährte Verfahren](https://docs.aws.amazon.com/codepipeline/latest/userguide/best-practices.html)

## Epen
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-epics"></a>

### Container-Images aus öffentlichen und privaten Amazon ECR-Repositorys abrufen
<a name="pull-container-images-from-ecr-public-and-private-repositories"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Rufen Sie ein Bild aus dem öffentlichen Amazon ECR-Repository ab. | Führen Sie im Terminal den folgenden Befehl aus, um das Bild `amazonlinux` aus dem öffentlichen Amazon ECR-Repository abzurufen.<pre>$~ % docker pull public.ecr.aws/amazonlinux/amazonlinux:2018.03 </pre>Wenn das Bild auf Ihren lokalen Computer abgerufen wurde, sehen Sie den folgenden Pull-Digest, der den Bildindex darstellt.<pre>2018.03: Pulling from amazonlinux/amazonlinux<br />4ddc0f8d367f: Pull complete <br /><br />Digest: sha256:f972d24199508c52de7ad37a298bda35d8a1bd7df158149b381c03f6c6e363b5<br /><br />Status: Downloaded newer image for public.ecr.aws/amazonlinux/amazonlinux:2018.03<br />public.ecr.aws/amazonlinux/amazonlinux:2018.03</pre> | App-Entwickler, AWS DevOps, AWS-Administrator | 
| Pushen Sie das Bild in ein privates Amazon ECR-Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | AWS-Administrator, AWS DevOps, App-Entwickler | 
| Rufen Sie dasselbe Bild aus dem privaten Amazon ECR-Repository ab. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | App-Entwickler, AWS DevOps, AWS-Administrator | 

### Vergleichen Sie die Image-Manifeste
<a name="compare-the-image-manifests"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Suchen Sie das Manifest des Bilds, das im öffentlichen Amazon ECR-Repository gespeichert ist. | Führen Sie im Terminal den folgenden Befehl aus, um das Manifest des Images `public.ecr.aws/amazonlinux/amazonlinux:2018.03` aus dem öffentlichen Amazon ECR-Repository abzurufen.<pre>$~ % docker manifest inspect public.ecr.aws/amazonlinux/amazonlinux:2018.03<br />{<br />   "schemaVersion": 2,<br />   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",<br />   "manifests": [<br />      {<br />         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",<br />         "size": 529,<br />         "digest": "sha256:52db9000073d93b9bdee6a7246a68c35a741aaade05a8f4febba0bf795cdac02",<br />         "platform": {<br />            "architecture": "amd64",<br />            "os": "linux"<br />         }<br />      }<br />   ]<br />}</pre> | AWS-Administrator, AWS DevOps, App-Entwickler | 
| Suchen Sie das Manifest des Images, das im privaten Amazon ECR-Repository gespeichert ist. | Führen Sie im Terminal den folgenden Befehl aus, um das Manifest des Images `<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest` aus dem privaten Amazon ECR-Repository abzurufen.<pre>$~ % docker manifest inspect <account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest                                          <br />{<br />	"schemaVersion": 2,<br />	"mediaType": "application/vnd.docker.distribution.manifest.v2+json",<br />	"config": {<br />		"mediaType": "application/vnd.docker.container.image.v1+json",<br />		"size": 1477,<br />		"digest": "sha256:f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68"<br />	},<br />	"layers": [<br />		{<br />			"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",<br />			"size": 62267075,<br />			"digest": "sha256:4ddc0f8d367f424871a060e2067749f32bd36a91085e714dcb159952f2d71453"<br />		}<br />	]<br />}</pre> | AWS DevOps, AWS-Systemadministrator, App-Entwickler | 
| Vergleichen Sie den von Docker abgerufenen Digest mit dem Manifest-Digest für das Image im privaten Amazon ECR-Repository. | Eine weitere Frage ist, warum sich der vom Befehl **docker pull** bereitgestellte Digest vom Digest des Manifests für das Image unterscheidet. `<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest`Der für **Docker Pull** verwendete Digest stellt den Digest des Image-Manifests dar, das in einer Registrierung gespeichert ist. Dieser Digest wird als Stamm einer Hash-Kette betrachtet, da das Manifest den Hash des Inhalts enthält, der heruntergeladen und in Docker importiert wird.Die in Docker verwendete Image-ID finden Sie in diesem Manifest als. `config.digest` Dies stellt die Image-Konfiguration dar, die Docker verwendet. Man könnte also sagen, dass das Manifest der Umschlag ist und das Bild der Inhalt des Umschlags. Der Manifest-Digest unterscheidet sich immer von der Bild-ID. Ein bestimmtes Manifest sollte jedoch immer dieselbe Image-ID erzeugen. Da es sich bei dem Manifest-Digest um eine Hash-Kette handelt, können wir nicht garantieren, dass sie für eine bestimmte Image-ID immer dieselbe ist. In den meisten Fällen erzeugt es denselben Digest, obwohl Docker dies nicht garantieren kann. Der mögliche Unterschied im Manifest-Digest ist darauf zurückzuführen, dass Docker die mit gzip komprimierten Blobs nicht lokal speichert. Daher kann das Exportieren von Ebenen zu einem anderen Digest führen, obwohl der unkomprimierte Inhalt derselbe bleibt. Die Bild-ID überprüft, ob der unkomprimierte Inhalt identisch ist. Das heißt, die Bild-ID ist jetzt eine inhaltsadressierbare Kennung (). `chainID`Um diese Informationen zu bestätigen, können Sie die Ausgabe des Befehls **docker inspect** in den öffentlichen und privaten Repositorys von Amazon ECR vergleichen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)Die Ergebnisse bestätigen, dass beide Bilder denselben Bild-ID-Digest und Ebenen-Digest haben.ID: `f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68`Schichten: `d5655967c2c4e8d68f8ec7cf753218938669e6c16ac1324303c073c736a2e2a2`Darüber hinaus basieren die Digests auf den Bytes des Objekts, das lokal verwaltet wird (die lokale Datei ist ein Tar der Container-Image-Ebene), oder des Blobs, der an den Registrierungsserver übertragen wird. Wenn Sie das Blob jedoch in eine Registrierung übertragen, wird das Tar komprimiert und der Digest wird in der komprimierten TAR-Datei berechnet. Daher ist der Unterschied im **Docker Pull** Digest-Wert auf die Komprimierung zurückzuführen, die auf Registrierungsebene (Amazon ECR privat oder öffentlich) angewendet wird.Diese Erklärung bezieht sich speziell auf die Verwendung eines Docker-Clients. Sie werden dieses Verhalten bei anderen Clients wie **nerdctl** oder **Finch** nicht feststellen, da sie das Bild bei Push- und Pull-Vorgängen nicht automatisch komprimieren. | AWS DevOps, AWS-Systemadministrator, App-Entwickler | 

### Identifizieren Sie automatisch doppelte Bilder zwischen öffentlichen und privaten Amazon ECR-Repositorys
<a name="automatically-identify-duplicate-images-between-ecr-public-and-private-repositories"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Klonen Sie das Github-Repository für dieses Muster in einen lokalen Ordner:<pre>$git clone https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories</pre> | AWS-Administrator, AWS DevOps | 
| Richten Sie eine CI/CD Pipeline ein. | Das GitHub Repository enthält eine `.yaml` Datei, die einen CloudFormation Stack erstellt, in dem eine Pipeline eingerichtet werden kann AWS CodePipeline.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)Die Pipeline wird in zwei Schritten (CodeCommit und CodeBuild, wie im Architekturdiagramm dargestellt) eingerichtet, um Bilder im privaten Repository zu identifizieren, die auch im öffentlichen Repository vorhanden sind. Die Pipeline ist mit den folgenden Ressourcen konfiguriert:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | AWS-Administrator, AWS DevOps | 
| Füllen Sie das CodeCommit Repository aus. | Gehen Sie wie folgt vor, um das CodeCommit Repository zu füllen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | AWS-Administrator, AWS DevOps | 
| Bereinigen Sie. | Um future Gebühren zu vermeiden, löschen Sie die Ressourcen, indem Sie die folgenden Schritte ausführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | AWS-Administrator | 

## Fehlerbehebung
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Wenn Sie versuchen, ein CodeCommit Repository über das Terminal oder die Befehlszeile zu pushen, abzurufen oder auf andere Weise mit ihm zu interagieren, werden Sie aufgefordert, einen Benutzernamen und ein Passwort einzugeben, und Sie müssen die Git-Anmeldeinformationen für Ihren IAM-Benutzer angeben. | Die häufigsten Ursachen für diesen Fehler sind die folgenden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html)Je nach Ihrem Betriebssystem und der lokalen Umgebung müssen Sie möglicherweise einen Anmeldeinformationsmanager installieren, den in Ihr Betriebssystem integrierten Anmeldeinformationsmanager konfigurieren oder Ihre lokale Umgebung so anpassen, dass Anmeldeinformationen gespeichert werden. Wenn auf Ihrem Computer beispielsweise macOS ausgeführt wird, können Sie das Keychain Access-Hilfsprogramm verwenden, um Ihre Anmeldeinformationen zu speichern. Wenn Sie einen Windows-Computer nutzen, können Sie das Git-Dienstprogramm zur Verwaltung von Anmeldeinformationen (Git Credential Manager) verwenden, das zusammen mit Git für Windows installiert wird. Weitere Informationen finden Sie in der CodeCommit Dokumentation unter [Einrichtung für HTTPS-Benutzer mit Git-Anmeldeinformationen](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) und unter [Credential Storage](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage) in der Git-Dokumentation. | 
| Wenn Sie ein Bild in das Amazon ECR-Repository übertragen, treten Fehler vom Typ HTTP 403 oder „no basic auth credentials“ auf. | **Diese Fehlermeldungen können beim Befehl **docker push oder docker** **pull** auftreten, auch wenn Sie sich erfolgreich mit dem Befehl aws ecr bei Docker authentifiziert haben. get-login-password** Bekannte Ursachen sind:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.html) | 

## Zugehörige Ressourcen
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-resources"></a>
+ [Automatisierte Lösung zur Identifizierung doppelter Container-Images zwischen Repositorys](https://github.com/aws-samples/automated-solution-to-identify-duplicate-container-images-between-repositories/) (GitHub Repository)
+ [Öffentliche Galerie Amazon ECR](https://gallery.ecr.aws/)
+ [Private Bilder in Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/images.html) (Amazon ECR-Dokumentation)
+ [AWS::CodePipeline::Pipeline Ressource (Dokumentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html))CloudFormation 
+ [Spezifikation des OCI-Bildformats](https://github.com/opencontainers/image-spec/blob/main/spec.md)

## Zusätzliche Informationen
<a name="identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository-additional"></a>

**Ausgabe der Docker-Inspektion für Bilder im öffentlichen Amazon ECR-Repository**

```
[
    {
        "Id": "sha256:f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68",
        "RepoTags": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest",
            "public.ecr.aws/amazonlinux/amazonlinux:2018.03"
        ],
        "RepoDigests": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository@sha256:52db9000073d93b9bdee6a7246a68c35a741aaade05a8f4febba0bf795cdac02",
            "public.ecr.aws/amazonlinux/amazonlinux@sha256:f972d24199508c52de7ad37a298bda35d8a1bd7df158149b381c03f6c6e363b5"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2023-02-23T06:20:11.575053226Z",
        "Container": "ec7f2fc7d2b6a382384061247ef603e7d647d65f5cd4fa397a3ccbba9278367c",
        "ContainerConfig": {
            "Hostname": "ec7f2fc7d2b6",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"/bin/bash\"]"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "20.10.17",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 167436755,
        "VirtualSize": 167436755,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/merged",
                "UpperDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/diff",
                "WorkDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:d5655967c2c4e8d68f8ec7cf753218938669e6c16ac1324303c073c736a2e2a2"
            ]
        },
        "Metadata": {
            "LastTagTime": "2023-03-02T10:28:47.142155987Z"
        }
    }
]
```

**Ausgabe der Docker-Inspektion für Bilder im privaten Amazon ECR-Repository**

```
[
    {
        "Id": "sha256:f7cee5e1af28ad4e147589c474d399b12d9b551ef4c3e11e02d982fce5eebc68",
        "RepoTags": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository:latest",
            "public.ecr.aws/amazonlinux/amazonlinux:2018.03"
        ],
        "RepoDigests": [
            "<account-id>.dkr.ecr.us-east-1.amazonaws.com/test_ecr_repository@sha256:52db9000073d93b9bdee6a7246a68c35a741aaade05a8f4febba0bf795cdac02",
            "public.ecr.aws/amazonlinux/amazonlinux@sha256:f972d24199508c52de7ad37a298bda35d8a1bd7df158149b381c03f6c6e363b5"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2023-02-23T06:20:11.575053226Z",
        "Container": "ec7f2fc7d2b6a382384061247ef603e7d647d65f5cd4fa397a3ccbba9278367c",
        "ContainerConfig": {
            "Hostname": "ec7f2fc7d2b6",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"/bin/bash\"]"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "20.10.17",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "sha256:c1bced1b5a65681e1e0e52d0a6ad17aaf76606149492ca0bf519a466ecb21e51",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 167436755,
        "VirtualSize": 167436755,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/merged",
                "UpperDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/diff",
                "WorkDir": "/var/lib/docker/overlay2/c2c2351a82b26cbdf7782507500e5adb5c2b3a2875bdbba79788a4b27cd6a913/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:d5655967c2c4e8d68f8ec7cf753218938669e6c16ac1324303c073c736a2e2a2"
            ]
        },
        "Metadata": {
            "LastTagTime": "2023-03-02T10:28:47.142155987Z"
        }
    }
]
```

# Installieren Sie SSM Agent mithilfe von Kubernetes auf Amazon EKS-Worker-Knoten DaemonSet
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset"></a>

*Mahendra Revanasiddappa, Amazon Web Services*

## Zusammenfassung
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-summary"></a>

**Hinweis, September 2021: Mit** der neuesten für Amazon EKS optimierten Version wird der SSM-Agent automatisch AMIs installiert. Weitere Informationen finden Sie in den [Versionshinweisen](https://github.com/awslabs/amazon-eks-ami/releases/tag/v20210621) für Juni 2021 AMIs.

In Amazon Elastic Kubernetes Service (Amazon EKS) sind Worker-Knoten aufgrund von Sicherheitsrichtlinien nicht mit Secure Shell (SSH) -Schlüsselpaaren verknüpft. Dieses Muster zeigt, wie Sie den DaemonSet Kubernetes-Ressourcentyp verwenden können, um den AWS Systems Manager Agent (SSM Agent) auf allen Worker-Knoten zu installieren, anstatt ihn manuell zu installieren oder das Amazon Machine Image (AMI) für die Knoten zu ersetzen. DaemonSet verwendet einen Cron-Job auf dem Worker-Knoten, um die Installation des SSM-Agenten zu planen. Sie können dieses Muster auch verwenden, um andere Pakete auf Worker-Knoten zu installieren.

Wenn Sie Probleme im Cluster beheben, können Sie durch die Installation von SSM Agent on Demand ohne SSH-Schlüsselpaare eine SSH-Sitzung mit dem Worker-Knoten einrichten, Protokolle sammeln oder die Instanzkonfiguration überprüfen.

## Voraussetzungen und Einschränkungen
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-prereqs"></a>

**Voraussetzungen**
+ Ein vorhandener Amazon EKS-Cluster mit Amazon Elastic Compute Cloud (Amazon EC2) -Worker-Knoten.
+ Container-Instances sollten über die erforderlichen Berechtigungen für die Kommunikation mit dem SSM-Service verfügen. Die von AWS Identity and Access Management (IAM) verwaltete Rolle **Amazon SSMManaged InstanceCore** stellt die erforderlichen Berechtigungen bereit, damit der SSM-Agent auf EC2 Instances ausgeführt werden kann. Weitere Informationen finden Sie in der [Dokumentation zu AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html).

**Einschränkungen**
+ Dieses Muster gilt nicht für AWS Fargate, da es auf der Fargate-Plattform DaemonSets nicht unterstützt wird.
+ Dieses Muster gilt nur für Linux-basierte Worker-Knoten.
+ Die DaemonSet Pods werden im privilegierten Modus ausgeführt. Wenn der Amazon EKS-Cluster über einen Webhook verfügt, der Pods im privilegierten Modus blockiert, wird der SSM-Agent nicht installiert.

## Architektur
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-architecture"></a>

Das folgende Diagramm veranschaulicht die Architektur für dieses Muster.

![\[Verwenden von Kubernetes DaemonSet zur Installation des SSM-Agenten auf Amazon EKS-Worker-Knoten.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/016d53f3-45c1-4913-b542-67124e1462b8/images/3a6dfd00-e54b-44d5-843a-4c26ce9826c9.png)


## Tools
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-tools"></a>

**Tools**
+ [kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) ist ein Befehlszeilenprogramm, das für die Interaktion mit einem Amazon EKS-Cluster verwendet wird. Dieses Muster wird verwendet`kubectl`, um einen DaemonSet auf dem Amazon EKS-Cluster bereitzustellen, der den SSM-Agent auf allen Worker-Knoten installiert.
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) macht es Ihnen leicht, Kubernetes auf AWS auszuführen, ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren, betreiben und warten zu müssen. Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Anwendungen in Containern.
+ Mit [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) können Sie Ihre EC2 Instances, lokalen Instances und virtuellen Maschinen (VMs) über eine interaktive, browserbasierte Shell mit einem Klick oder über die AWS-Befehlszeilenschnittstelle (AWS CLI) verwalten.

**Code**

Verwenden Sie den folgenden Code, um eine DaemonSet Konfigurationsdatei zu erstellen, mit der der SSM-Agent auf dem Amazon EKS-Cluster installiert wird. Folgen Sie den Anweisungen im Abschnitt [Epics](#install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-epics).

```
cat << EOF > ssm_daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    k8s-app: ssm-installer
  name: ssm-installer
  namespace: kube-system
spec:
  selector:
    matchLabels:
      k8s-app: ssm-installer
  template:
    metadata:
      labels:
        k8s-app: ssm-installer
    spec:
      containers:
      - name: sleeper
        image: busybox
        command: ['sh', '-c', 'echo I keep things running! && sleep 3600']
      initContainers:
      - image: amazonlinux
        imagePullPolicy: Always
        name: ssm
        command: ["/bin/bash"]
        args: ["-c","echo '* * * * * root yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm & rm -rf /etc/cron.d/ssmstart' > /etc/cron.d/ssmstart"]
        securityContext:
          allowPrivilegeEscalation: true
        volumeMounts:
        - mountPath: /etc/cron.d
          name: cronfile
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      volumes:
      - name: cronfile
        hostPath:
          path: /etc/cron.d
          type: Directory
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      terminationGracePeriodSeconds: 30
EOF
```

## Epen
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-epics"></a>

### Richten Sie kubectl ein
<a name="set-up-kubectl"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren und konfigurieren Sie kubectl für den Zugriff auf den EKS-Cluster. | Falls es noch `kubectl` nicht installiert und für den Zugriff auf den Amazon EKS-Cluster konfiguriert ist, finden Sie weitere Informationen unter [Installation von kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) in der Amazon EKS-Dokumentation. | DevOps | 

### Stellen Sie das bereit DaemonSet
<a name="deploy-the-daemonset"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die DaemonSet Konfigurationsdatei. | Verwenden Sie den Code im Abschnitt [Code](#install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-tools) weiter oben in diesem Muster, um eine DaemonSet Konfigurationsdatei namens zu erstellen`ssm_daemonset.yaml`, die im Amazon EKS-Cluster bereitgestellt wird. Der von gestartete Pod DaemonSet hat einen Hauptcontainer und einen `init` Container. Der Hauptcontainer hat einen `sleep` Befehl. Der `init` Container enthält einen `command` Abschnitt, der eine Cron-Job-Datei zur Installation des SSM-Agenten im Pfad erstellt. `/etc/cron.d/` Der Cron-Job wird nur einmal ausgeführt, und die von ihm erstellte Datei wird nach Abschluss des Jobs automatisch gelöscht. Wenn der Init-Container fertig ist, wartet der Hauptcontainer 60 Minuten, bevor er beendet wird. Nach 60 Minuten wird ein neuer Pod gestartet. Dieser Pod installiert den SSM-Agent, falls er fehlt, oder aktualisiert den SSM-Agenten auf die neueste Version.Bei Bedarf können Sie den `sleep` Befehl so ändern, dass der Pod einmal täglich neu gestartet oder häufiger ausgeführt wird.  | DevOps | 
| Stellen Sie den DaemonSet auf dem Amazon EKS-Cluster bereit. | Verwenden Sie den folgenden Befehl, um die DaemonSet Konfigurationsdatei, die Sie im vorherigen Schritt erstellt haben, auf dem Amazon EKS-Cluster bereitzustellen:<pre>kubectl apply -f ssm_daemonset.yaml </pre>Dieser Befehl erstellt einen DaemonSet , um die Pods auf Worker-Knoten auszuführen, um den SSM-Agent zu installieren. | DevOps | 

## Zugehörige Ressourcen
<a name="install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset-resources"></a>
+ [Installation von kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) (Amazon EKS-Dokumentation)
+ [Session Manager einrichten](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) (AWS Systems Manager Manager-Dokumentation)

# Installieren Sie den SSM-Agent und den CloudWatch Agenten auf Amazon EKS-Worker-Knoten mit preBootstrapCommands
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands"></a>

*Akkamahadevi Hiremath, Amazon Web Services*

## Zusammenfassung
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-summary"></a>

Dieses Muster enthält Codebeispiele und Schritte zur Installation des AWS Systems Manager Agent (SSM Agent) und des Amazon-Agenten auf Amazon CloudWatch Elastic Kubernetes Service (Amazon EKS) -Worker-Knoten in der Amazon Web Services (AWS) -Cloud während der Amazon EKS-Clustererstellung. Sie können den SSM-Agent und CloudWatch den SSM-Agenten installieren, indem Sie die `preBootstrapCommands` Eigenschaft aus dem `eksctl` [Konfigurationsdateischema](https://eksctl.io/usage/schema/) (Weaveworks-Dokumentation) verwenden. Anschließend können Sie den SSM-Agent verwenden, um eine Verbindung zu Ihren Worker-Knoten herzustellen, ohne ein Amazon Elastic Compute Cloud (Amazon EC2) -Schlüsselpaar zu verwenden. Darüber hinaus können Sie den CloudWatch Agenten verwenden, um die Speicher- und Festplattenauslastung auf Ihren Amazon EKS-Worker-Knoten zu überwachen.

## Voraussetzungen und Einschränkungen
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Das [Befehlszeilenprogramm eksctl](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html), installiert und konfiguriert auf macOS, Linux oder Windows
+ Das [kubectl-Befehlszeilenprogramm](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html), installiert und konfiguriert auf macOS, Linux oder Windows

**Einschränkungen**
+ Wir empfehlen, das Hinzufügen von Skripten mit langer Laufzeit zur `preBootstrapCommands`**** Eigenschaft zu vermeiden, da dies den Knoten daran hindert, dem Amazon EKS-Cluster während der Skalierungsaktivitäten beizutreten. Wir empfehlen Ihnen, stattdessen ein [benutzerdefiniertes Amazon Machine Image (AMI)](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customenv.html) zu erstellen.
+ Dieses Muster gilt nur für Amazon EC2 Linux-Instances.

## Architektur
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-architecture"></a>

**Technologie-Stack**
+ Amazon CloudWatch
+ Amazon Elastic Kubernetes Service (Amazon EKS)
+ AWS Systems Manager Parameter Store

**Zielarchitektur**

Das folgende Diagramm zeigt ein Beispiel für einen Benutzer, der mithilfe des SSM-Agenten, der mit dem installiert wurde, eine Verbindung zu Amazon EKS-Worker-Knoten herstellt. `preBootstrapCommands`

![\[User connecting to Amazon EKS worker nodes via Systems Manager, with SSM Agent and CloudWatch agent on each node.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/b37a3cdb-204f-4014-8317-3600a793dac7/images/9a5760af-23bb-4616-97b0-b401a9d080cf.png)


Das Diagramm zeigt den folgenden Workflow:

1. Der Benutzer erstellt mithilfe der `eksctl` Konfigurationsdatei mit der `preBootstrapCommands` Eigenschaft, die den SSM-Agenten und CloudWatch den Agenten installiert, einen Amazon EKS-Cluster.

1. Alle neuen Instances, die dem Cluster aufgrund von Skalierungsaktivitäten später beitreten, werden mit dem vorinstallierten SSM-Agenten und -Agenten erstellt. CloudWatch 

1. Der Benutzer stellt EC2 mithilfe des SSM-Agenten eine Verbindung zu Amazon her und überwacht dann mithilfe des CloudWatch Agenten die Speicher- und Festplattenauslastung.

## Tools
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-tools"></a>
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Metriken Ihrer AWS-Ressourcen und der Anwendungen, die Sie auf AWS ausführen, in Echtzeit zu überwachen.
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) hilft Ihnen, Kubernetes auf AWS auszuführen, ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten zu müssen.
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) bietet sicheren, hierarchischen Speicher für die Verwaltung von Konfigurationsdaten und Geheimnissen.
+ [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) unterstützt Sie bei der Verwaltung Ihrer EC2 Instances, lokalen Instances und virtuellen Maschinen über eine interaktive, browserbasierte Shell mit einem Klick oder über die AWS-Befehlszeilenschnittstelle (AWS CLI).
+ [eksctl](https://eksctl.io/usage/schema/) ist ein Befehlszeilenprogramm zum Erstellen und Verwalten von Kubernetes-Clustern auf Amazon EKS.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) ist ein Befehlszeilenprogramm für die Kommunikation mit dem Cluster-API-Server.

## Epen
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-epics"></a>

### Amazon-EKS-Cluster erstellen
<a name="create-an-amazon-eks-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Speichern Sie die CloudWatch Agenten-Konfigurationsdatei. | Speichern Sie die CloudWatch Agentenkonfigurationsdatei im [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) in der AWS-Region, in der Sie Ihren Amazon EKS-Cluster erstellen möchten. [Erstellen Sie dazu einen Parameter](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html) im AWS Systems Manager Parameter Store und notieren Sie sich den Namen des Parameters (z. B.`AmazonCloudwatch-linux`).Weitere Informationen finden Sie im *Beispielcode der CloudWatch Agenten-Konfigurationsdatei* im Abschnitt [Zusätzliche Informationen](#install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-additional) dieses Musters. | DevOps Ingenieur | 
| Erstellen Sie die eksctl-Konfigurationsdatei und den Cluster.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands.html) | AWS DevOps | 

### Stellen Sie sicher, dass der SSM-Agent und der CloudWatch SSM-Agent funktionieren
<a name="verify-that-the-ssm-agent-and-cloudwatch-agent-work"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie den SSM-Agenten. | Verwenden Sie SSH, um eine Verbindung zu Ihren Amazon EKS-Clusterknoten herzustellen, indem Sie [eine der Methoden verwenden, die in der AWS Systems Manager Manager-Dokumentation unter Sitzung starten](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#start-ec2-console%20%20or%20https:%2F%2Fdocs.aws.amazon.com%2Fsystems-manager%2Flatest%2Fuserguide%2Fsession-manager-working-with-sessions-start.html%23sessions-start-cli) beschrieben werden. | AWS DevOps | 
| Testen Sie den CloudWatch Agenten. | Verwenden Sie die CloudWatch Konsole, um den CloudWatch Agenten zu validieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands.html) | AWS DevOps | 

## Zugehörige Ressourcen
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-resources"></a>
+ [Installation und Ausführung des CloudWatch Agenten auf Ihren Servern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html) ( CloudWatch Amazon-Dokumentation)
+ [Einen Systems Manager Manager-Parameter erstellen (Konsole)](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html) (AWS Systems Manager Manager-Dokumentation)
+ [Erstellen Sie die CloudWatch Agenten-Konfigurationsdatei](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html) ( CloudWatch Amazon-Dokumentation)
+ [Starten einer Sitzung (AWS CLI)](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#sessions-start-cli) (AWS Systems Manager Manager-Dokumentation)
+ [Starten einer Sitzung ( EC2 Amazon-Konsole)](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#start-ec2-console) (AWS Systems Manager Manager-Dokumentation)

## Zusätzliche Informationen
<a name="install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands-additional"></a>

**Beispiel für eine CloudWatch Agenten-Konfigurationsdatei**

Im folgenden Beispiel ist der CloudWatch Agent so konfiguriert, dass er die Festplatten- und Speicherauslastung auf Amazon Linux-Instances überwacht:

```
{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "cwagent"
    },
    "metrics": {
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "disk": {
                "measurement": [
                    "used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    }
}
```

**Beispiel für eine eksctl-Konfigurationsdatei**

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: test
  region: us-east-2
  version: "1.24"
managedNodeGroups:
  - name: test
    minSize: 2
    maxSize: 4
    desiredCapacity: 2
    volumeSize: 20
    instanceType: t3.medium
    preBootstrapCommands:
    - sudo yum install amazon-ssm-agent -y
    - sudo systemctl enable amazon-ssm-agent
    - sudo systemctl start amazon-ssm-agent
    - sudo yum install amazon-cloudwatch-agent -y
    - sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudwatch-linux
    iam:
      attachPolicyARNs:
        - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
        - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
        - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
        - arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
        - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
```

**Zusätzliche Codedetails**
+ In der letzten Zeile der `preBootstrapCommands` Eigenschaft `AmazonCloudwatch-linux` steht der Name des Parameters, der im AWS System Manager Parameter Store erstellt wurde. Sie müssen `AmazonCloudwatch-linux` in Parameter Store in derselben AWS-Region angeben, in der Sie den Amazon EKS-Cluster erstellt haben. Sie können auch einen Dateipfad angeben, wir empfehlen jedoch, Systems Manager zu verwenden, um die Automatisierung und Wiederverwendbarkeit zu vereinfachen.
+ Wenn Sie `preBootstrapCommands` in der `eksctl` Konfigurationsdatei verwenden, werden in der AWS-Managementkonsole zwei Startvorlagen angezeigt. Die erste Startvorlage enthält die unter angegebenen Befehle`preBootstrapCommands`. Die zweite Vorlage enthält die in den Amazon EKS-Benutzerdaten angegebenen Befehle `preBootstrapCommands` und die standardmäßigen Amazon EKS-Benutzerdaten. Diese Daten sind erforderlich, damit die Knoten dem Cluster beitreten können. Die Auto Scaling Scaling-Gruppe der Knotengruppe verwendet diese Benutzerdaten, um neue Instances hochzufahren.
+ Wenn Sie das `iam` Attribut in der `eksctl` Konfigurationsdatei verwenden, müssen Sie die standardmäßigen Amazon EKS-Richtlinien mit allen zusätzlichen Richtlinien auflisten, die in Ihren angehängten AWS Identity and Access Management (IAM) -Richtlinien erforderlich sind. Im Codeausschnitt aus dem Schritt „*Eksctl-Konfigurationsdatei und Cluster erstellen*“ wurden zusätzliche Richtlinien hinzugefügt, um sicherzustellen, dass der CloudWatch Agent `CloudWatchAgentServerPolicy` und `AmazonSSMMangedInstanceCore` der SSM-Agent wie erwartet funktionieren. Die`AmazonEKSWorkerNodePolicy`,`AmazonEKS_CNI_Policy`, `AmazonEC2ContainerRegistryReadOnly` Richtlinien sind verbindliche Richtlinien, die erforderlich sind, damit der Amazon EKS-Cluster ordnungsgemäß funktioniert.

# Migrieren Sie NGINX Ingress Controller, wenn Sie den Amazon EKS Auto Mode aktivieren
<a name="migrate-nginx-ingress-controller-eks-auto-mode"></a>

*Olawale Olaleye und Shamanth Devagari, Amazon Web Services*

## Zusammenfassung
<a name="migrate-nginx-ingress-controller-eks-auto-mode-summary"></a>

[Der automatische EKS-Modus](https://docs.aws.amazon.com/eks/latest/userguide/automode.html) für Amazon Elastic Kubernetes Service (Amazon EKS) kann den Betriebsaufwand für die Ausführung Ihrer Workloads auf Kubernetes-Clustern reduzieren. In diesem Modus können Sie auch AWS die Infrastruktur in Ihrem Namen einrichten und verwalten. Wenn Sie den EKS-Automatikmodus auf einem vorhandenen Cluster aktivieren, müssen Sie die Migration der [NGINX Ingress](https://docs.nginx.com/nginx-ingress-controller/overview/about/) Controller-Konfigurationen sorgfältig planen. Dies liegt daran, dass die direkte Übertragung von Network Load Balancers nicht möglich ist.

Sie können eine blue/green Bereitstellungsstrategie verwenden, um eine NGINX Ingress Controller-Instance zu migrieren, wenn Sie den EKS-Automatikmodus in einem vorhandenen Amazon EKS-Cluster aktivieren.

## Voraussetzungen und Einschränkungen
<a name="migrate-nginx-ingress-controller-eks-auto-mode-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Ein [Amazon EKS-Cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html), auf dem Kubernetes Version 1.29 oder höher ausgeführt wird
+ Amazon EKS-Add-Ons mit [Mindestversionen](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html#auto-addons-required)
+ Aktuelle Version von [kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html#kubectl-install-update)
+ Eine bestehende [NGINX](https://kubernetes.github.io/ingress-nginx/deploy/#aws) Ingress Controller-Instanz
+ (Optional) Eine [gehostete Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-working-with.html) in Amazon Route 53 für DNS-basierte Verkehrsverlagerung

## Architektur
<a name="migrate-nginx-ingress-controller-eks-auto-mode-architecture"></a>

Eine *blaue/grüne Bereitstellung ist eine Bereitstellungsstrategie*, bei der Sie zwei separate, aber identische Umgebungen erstellen. Blue/green Bereitstellungen bieten Release-und Rollback-Funktionen nahezu ohne Ausfallzeiten. Die Grundidee besteht darin, den Datenverkehr zwischen zwei identischen Umgebungen zu verlagern, in denen unterschiedliche Versionen Ihrer Anwendung ausgeführt werden.

Die folgende Abbildung zeigt die Migration von Network Load Balancers von zwei verschiedenen NGINX Ingress Controller-Instanzen, wenn der EKS-Automatikmodus aktiviert wird. Sie verwenden eine blue/green Bereitstellung, um den Verkehr zwischen den beiden Network Load Balancers zu verlagern.

![\[Verwenden einer blue/green Bereitstellungsstrategie zur Migration von NGINX Ingress Controller-Instanzen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/57e8c14f-cb50-4027-8ef6-ce8ea3f2db25/images/211a029a-90d8-4c92-8200-19e54062f936.png)


*Der ursprüngliche Namespace ist der blaue Namespace.* Hier werden der ursprüngliche NGINX Ingress Controller-Dienst und die ursprüngliche Instanz ausgeführt, bevor Sie den EKS Auto Mode aktivieren. Der ursprüngliche Dienst und die ursprüngliche Instanz stellen eine Verbindung zu einem Network Load Balancer her, dessen DNS-Name in Route 53 konfiguriert ist. Der [Load AWS Balancer Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.11/) hat diesen Network Load Balancer in der Ziel-Virtual Private Cloud (VPC) bereitgestellt.

Das Diagramm zeigt den folgenden Workflow zum Einrichten einer Umgebung für eine Bereitstellung: blue/green 

1. *Installieren und konfigurieren Sie eine weitere NGINX Ingress Controller-Instanz in einem anderen Namespace, einem grünen Namespace.*

1. Konfigurieren Sie in Route 53 einen DNS-Namen für einen neuen Network Load Balancer.

## Tools
<a name="migrate-nginx-ingress-controller-eks-auto-mode-tools"></a>

**AWS-Services**
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) verteilt den eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele. Sie können beispielsweise den Traffic auf Amazon Elastic Compute Cloud (Amazon EC2) -Instances, Container und IP-Adressen in einer oder mehreren Availability Zones verteilen.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS.

**Andere Tools**
+ [Helm](https://helm.sh/) ist ein Open-Source-Paketmanager für Kubernetes, der Sie bei der Installation und Verwaltung von Anwendungen auf Ihrem Kubernetes-Cluster unterstützt.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) ist eine Befehlszeilenschnittstelle, mit der Sie Befehle für Kubernetes-Cluster ausführen können.
+ Der [NGINX Ingress Controller](https://docs.nginx.com/nginx-ingress-controller/overview/about/) verbindet Kubernetes-Apps und -Dienste mit Anforderungsbearbeitung, Authentifizierung, benutzerdefinierten Self-Service-Ressourcen und Debugging.

## Epen
<a name="migrate-nginx-ingress-controller-eks-auto-mode-epics"></a>

### Überprüfen Sie die bestehende Umgebung
<a name="review-the-existing-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Vergewissern Sie sich, dass die ursprüngliche NGINX Ingress Controller-Instanz betriebsbereit ist. | Geben Sie den folgenden Befehl ein, um zu überprüfen, ob die Ressourcen im `ingress-nginx` Namespace betriebsbereit sind. Wenn Sie den NGINX Ingress Controller in einem anderen Namespace bereitgestellt haben, aktualisieren Sie den Namespace-Namen in diesem Befehl.<pre>kubectl get all -n ingress-nginx</pre>Vergewissern Sie sich in der Ausgabe, dass sich die NGINX Ingress Controller-Pods im laufenden Zustand befinden. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:<pre>NAME                                           READY   STATUS      RESTARTS      AGE<br />pod/ingress-nginx-admission-create-xqn9d       0/1     Completed   0             88m<br />pod/ingress-nginx-admission-patch-lhk4j        0/1     Completed   1             88m<br />pod/ingress-nginx-controller-68f68f859-xrz74   1/1     Running     2 (10m ago)   72m<br /><br />NAME                                         TYPE           CLUSTER-IP       EXTERNAL-IP                                                                     PORT(S)                      AGE<br />service/ingress-nginx-controller             LoadBalancer   10.100.67.255    k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com   80:30330/TCP,443:31462/TCP   88m<br />service/ingress-nginx-controller-admission   ClusterIP      10.100.201.176   <none>                                                                          443/TCP                      88m<br /><br />NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE<br />deployment.apps/ingress-nginx-controller   1/1     1            1           88m<br /><br />NAME                                                 DESIRED   CURRENT   READY   AGE<br />replicaset.apps/ingress-nginx-controller-68f68f859   1         1         1       72m<br />replicaset.apps/ingress-nginx-controller-d8c96cf68   0         0         0       88m<br /><br />NAME                                       STATUS     COMPLETIONS   DURATION   AGE<br />job.batch/ingress-nginx-admission-create   Complete   1/1           4s         88m<br />job.batch/ingress-nginx-admission-patch    Complete   1/1           5s         88m</pre> | DevOps Ingenieur | 

### Stellen Sie einen HTTPd Beispiel-Workload bereit, um den NGINX Ingress Controller zu verwenden
<a name="deploy-a-sample-httpd-workload-to-use-the-nginx-ingress-controller"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Kubernetes-Ressourcen. | Geben Sie die folgenden Befehle ein, um ein Beispiel für eine Kubernetes-Bereitstellung, einen Service und einen Ingress zu erstellen:<pre>kubectl create deployment demo --image=httpd --port=80</pre><pre>kubectl expose deployment demo</pre><pre> kubectl create ingress demo --class=nginx \<br />  --rule nginxautomode.local.dev/=demo:80</pre> | DevOps Ingenieur | 
| Überprüfen Sie die eingesetzten Ressourcen. | Geben Sie den folgenden Befehl ein, um eine Liste der bereitgestellten Ressourcen anzuzeigen:<pre>kubectl get all,ingress</pre>Vergewissern Sie sich in der Ausgabe, dass sich der HTTPd Beispiel-Pod im laufenden Zustand befindet. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:<pre>NAME                        READY   STATUS    RESTARTS   AGE<br />pod/demo-7d94f8cb4f-q68wc   1/1     Running   0          59m<br /><br />NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE<br />service/demo         ClusterIP   10.100.78.155   <none>        80/TCP    59m<br />service/kubernetes   ClusterIP   10.100.0.1      <none>        443/TCP   117m<br /><br />NAME                   READY   UP-TO-DATE   AVAILABLE   AGE<br />deployment.apps/demo   1/1     1            1           59m<br /><br />NAME                              DESIRED   CURRENT   READY   AGE<br />replicaset.apps/demo-7d94f8cb4f   1         1         1       59m<br /><br />NAME                             CLASS   HOSTS                                  ADDRESS                                                                         PORTS   AGE<br />ingress.networking.k8s.io/demo   nginx   nginxautomode.local.dev                k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com                 80      56m</pre> | DevOps Ingenieur | 
| Bestätigen Sie, dass der Dienst erreichbar ist. | Geben Sie den folgenden Befehl ein, um zu bestätigen, dass der Dienst über den DNS-Namen des Network Load Balancer erreichbar ist:<pre>curl -H "Host: nginxautomode.local.dev" http://k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com</pre>Folgendes ist die erwartete Ausgabe:<pre><html><body><h1>It works!</h1></body></html></pre> | DevOps Ingenieur | 
| (Optional) Erstellen Sie einen DNS-Eintrag. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | DevOps Ingenieur, AWS DevOps | 

### Aktivieren Sie den automatischen EKS-Modus auf dem vorhandenen Cluster
<a name="enable-eks-auto-mode-on-the-existing-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktivieren Sie den EKS-Automatikmodus. | Folgen Sie den Anweisungen unter [Aktivieren des automatischen EKS-Modus auf einem vorhandenen Cluster](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html) (Amazon EKS-Dokumentation). | AWS DevOps | 

### Installieren Sie einen neuen NGINX Ingress Controller
<a name="install-a-new-nginx-ingress-controller"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie eine neue NGINX Ingress Controller-Instanz. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | DevOps Ingenieur | 
| Stellen Sie die neue NGINX Instance Controller-Instanz bereit. | Geben Sie den folgenden Befehl ein, um die geänderte Manifestdatei anzuwenden:<pre>kubectl apply -f deploy.yaml</pre> | DevOps Ingenieur | 
| Bestätigen Sie die erfolgreiche Bereitstellung. | Geben Sie den folgenden Befehl ein, um zu überprüfen, ob die Ressourcen im `ingress-nginx-v2` Namespace betriebsbereit sind:<pre>kubectl get all -n ingress-nginx-v2</pre>Vergewissern Sie sich in der Ausgabe, dass sich die NGINX Ingress Controller-Pods im laufenden Zustand befinden. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:<pre>NAME                                            READY   STATUS      RESTARTS   AGE<br />pod/ingress-nginx-admission-create-7shrj        0/1     Completed   0          24s<br />pod/ingress-nginx-admission-patch-vkxr5         0/1     Completed   1          24s<br />pod/ingress-nginx-controller-757bfcbc6d-4fw52   1/1     Running     0          24s<br /><br />NAME                                         TYPE           CLUSTER-IP       EXTERNAL-IP                                                                     PORT(S)                      AGE<br />service/ingress-nginx-controller             LoadBalancer   10.100.208.114   k8s-ingressn-ingressn-2e5e37fab6-848337cd9c9d520f.elb.eu-west-1.amazonaws.com   80:31469/TCP,443:30658/TCP   24s<br />service/ingress-nginx-controller-admission   ClusterIP      10.100.150.114   <none>                                                                          443/TCP                      24s<br /><br />NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE<br />deployment.apps/ingress-nginx-controller   1/1     1            1           24s<br /><br />NAME                                                  DESIRED   CURRENT   READY   AGE<br />replicaset.apps/ingress-nginx-controller-757bfcbc6d   1         1         1       24s<br /><br />NAME                                       STATUS     COMPLETIONS   DURATION   AGE<br />job.batch/ingress-nginx-admission-create   Complete   1/1           4s         24s<br />job.batch/ingress-nginx-admission-patch    Complete   1/1           5s         24s</pre> | DevOps Ingenieur | 
| Erstellen Sie einen neuen Ingress für den HTTPd Beispiel-Workload. | Geben Sie den folgenden Befehl ein, um einen neuen Ingress für den vorhandenen HTTPd Beispiel-Workload zu erstellen:<pre>kubectl create ingress demo-new --class=nginx-v2 \<br />  --rule nginxautomode.local.dev/=demo:80</pre> | DevOps Ingenieur | 
| Vergewissern Sie sich, dass der neue Ingress funktioniert. | Geben Sie den folgenden Befehl ein, um zu bestätigen, dass der neue Eingang funktioniert:<pre>curl -H "Host: nginxautomode.local.dev" k8s-ingressn-ingressn-2e5e37fab6-848337cd9c9d520f.elb.eu-west-1.amazonaws.com</pre>Das Folgende ist die erwartete Ausgabe:<pre><html><body><h1>It works!</h1></body></html></pre> | DevOps Ingenieur | 

### Überschneiden
<a name="cut-over"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Wechseln Sie zum neuen Namespace. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-nginx-ingress-controller-eks-auto-mode.html) | AWS DevOps, DevOps Ingenieur | 
| Überprüfe die beiden Eingänge. | Geben Sie den folgenden Befehl ein, um die beiden Ingresses zu überprüfen, die für den HTTPd Beispiel-Workload erstellt wurden:<pre>kubectl get ingress</pre>Im Folgenden finden Sie ein Beispiel für eine Ausgabe:<pre>NAME       CLASS      HOSTS                                  ADDRESS                                                                         PORTS   AGE<br />demo       nginx      nginxautomode.local.dev   k8s-ingressn-ingressn-abcdefg-12345.elb.eu-west-1.amazonaws.com                              80      95m<br />demo-new   nginx-v2   nginxautomode.local.dev   k8s-ingressn-ingressn-2e5e37fab6-848337cd9c9d520f.elb.eu-west-1.amazonaws.com                80      33s</pre> | DevOps Ingenieur | 

## Zugehörige Ressourcen
<a name="migrate-nginx-ingress-controller-eks-auto-mode-resources"></a>
+ [Aktivieren Sie den automatischen EKS-Modus auf einem vorhandenen Cluster](https://docs.aws.amazon.com/eks/latest/userguide/auto-enable-existing.html) (Amazon EKS-Dokumentation)
+ [Fehlerbehebung bei Load Balancers, die vom Kubernetes Service Controller in Amazon EKS erstellt wurden](https://repost.aws/knowledge-center/eks-load-balancers-troubleshooting) (AWS re:POST Knowledge Center)
+ NGINX Ingress Controller ([NGINX-Dokumentation](https://docs.nginx.com/nginx-ingress-controller/))

# Migrieren Sie Ihre Container-Workloads von Azure Red Hat OpenShift (ARO) zu Red Hat OpenShift Service in AWS (ROSA)
<a name="migrate-container-workloads-from-aro-to-rosa"></a>

*Naveen Ramasamy, Srikanth Rangavajhala und Gireesh Sreekantan, Amazon Web Services*

## Zusammenfassung
<a name="migrate-container-workloads-from-aro-to-rosa-summary"></a>

[Dieses Muster enthält step-by-step Anweisungen für die Migration von Container-Workloads von Azure Red Hat (ARO) nach (ROSA). OpenShift Red Hat OpenShift Service in AWS](https://aws.amazon.com/rosa/) ROSA ist ein verwalteter Kubernetes-Dienst, der von Red Hat in Zusammenarbeit mit bereitgestellt wird. AWS Er unterstützt Sie bei der Bereitstellung, Verwaltung und Skalierung Ihrer containerisierten Anwendungen mithilfe der Kubernetes-Plattform und profitiert von der Expertise von Red Hat in Bezug auf Kubernetes und die Infrastruktur. AWS Cloud 

Die Migration von Container-Workloads von ARO, aus anderen Clouds oder von lokalen Umgebungen zu ROSA beinhaltet die Übertragung von Anwendungen, Konfigurationen und Daten von einer Plattform auf eine andere. Dieses Muster trägt dazu bei, einen reibungslosen Übergang zu gewährleisten und gleichzeitig AWS Cloud Services, Sicherheit und Kosteneffizienz zu optimieren. Es umfasst zwei Methoden für die Migration Ihrer Workloads zu ROSA-Clustern: CI/CD und das Migration Toolkit for Containers (MTC).

Dieses Muster deckt beide Methoden ab. Welche Methode Sie wählen, hängt von der Komplexität und Sicherheit Ihres Migrationsprozesses ab. Wenn Sie die volle Kontrolle über den Status Ihrer Anwendung haben und über eine Pipeline eine konsistente Einrichtung gewährleisten können, empfehlen wir Ihnen, diese CI/CD Methode zu verwenden. Wenn Ihr Anwendungsstatus jedoch Unsicherheiten, unvorhergesehene Änderungen oder ein komplexes Ökosystem beinhaltet, empfehlen wir Ihnen, MTC als zuverlässigen und kontrollierten Weg für die Migration Ihrer Anwendung und ihrer Daten auf einen neuen Cluster zu verwenden. Einen detaillierten Vergleich der beiden Methoden finden Sie im Abschnitt [Zusätzliche](#migrate-container-workloads-from-aro-to-rosa-additional) Informationen.

Vorteile der Migration zu ROSA:
+ ROSA lässt sich nahtlos AWS als systemeigener Service integrieren. Es ist leicht zugänglich über das AWS-Managementkonsole und wird über einen einzigen AWS-Konto abgerechnet. Es bietet volle Kompatibilität mit anderen Anbietern AWS-Services und bietet gemeinsamen Support sowohl AWS von RedHat als auch von RedHat.
+ ROSA unterstützt Hybrid- und Multi-Cloud-Implementierungen. Es ermöglicht die konsistente Ausführung von Anwendungen in lokalen Rechenzentren und mehreren Cloud-Umgebungen.
+ ROSA profitiert vom Sicherheitsfokus von Red Hat und bietet Funktionen wie rollenbasierte Zugriffskontrolle (RBAC), Image-Scanning und Schwachstellenanalysen, um eine sichere Container-Umgebung zu gewährleisten.
+ ROSA wurde für die einfache Skalierung von Anwendungen entwickelt und bietet Optionen für hohe Verfügbarkeit. Dadurch können Anwendungen nach Bedarf wachsen und gleichzeitig die Zuverlässigkeit beibehalten.
+ ROSA automatisiert und vereinfacht die Bereitstellung eines Kubernetes-Clusters im Vergleich zu manuellen Einrichtungs- und Verwaltungsmethoden. Dies beschleunigt den Entwicklungs- und Bereitstellungsprozess.
+ ROSA profitiert von AWS Cloud Services und bietet eine nahtlose Integration mit AWS Angeboten wie Datenbankdiensten, Speicherlösungen und Sicherheitsdiensten.

## Voraussetzungen und Einschränkungen
<a name="migrate-container-workloads-from-aro-to-rosa-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ Berechtigungen AWS-Services , die für diese Funktion konfiguriert sind, auf die ROSA angewiesen ist, um Funktionen bereitzustellen. Weitere Informationen finden Sie in der ROSA-Dokumentation unter [Voraussetzungen](https://docs.aws.amazon.com/rosa/latest/userguide/set-up.html).
+ ROSA ist auf der [ROSA-Konsole](https://console.aws.amazon.com/rosa) aktiviert. Anweisungen finden Sie in der [ROSA-Dokumentation](https://docs.aws.amazon.com/rosa/latest/userguide/set-up.html#enable-rosa).
+ Der ROSA-Cluster wurde installiert und konfiguriert. Weitere Informationen finden [Sie unter Erste Schritte mit ROSA](https://docs.aws.amazon.com/rosa/latest/userguide/getting-started.html) in der ROSA-Dokumentation. Informationen zu den verschiedenen Methoden zur Einrichtung eines ROSA-Clusters finden Sie im AWS Prescriptive Guidance Guide zu [ROSA-Implementierungsstrategien](https://docs.aws.amazon.com/prescriptive-guidance/latest/red-hat-openshift-on-aws-implementation/).
+ [Netzwerkkonnektivität, die vom lokalen Netzwerk AWS über das Netzwerk [AWS Direct Connect](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/aws-direct-connect.html)(bevorzugt) oder AWS Virtual Private Network () hergestellt wird.Site-to-Site VPN](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)
+ Eine Amazon Elastic Compute Cloud (Amazon EC2) -Instance oder ein anderer virtueller Server zur Installation von Tools wie `aws client` OpenShift CLI (`oc`) -Client, ROSA-Client und Git-Binärdatei.

Zusätzliche Voraussetzungen für die CI/CD Methode:
+ Zugriff auf den lokalen Jenkins-Server mit Berechtigungen zum Erstellen einer neuen Pipeline, zum Hinzufügen von Stages, zum Hinzufügen von OpenShift Clustern und zum Ausführen von Builds.
+ Zugriff auf das Git-Repository, in dem der Quellcode der Anwendung verwaltet wird, mit der Berechtigung, einen neuen Git-Branch zu erstellen und Commits für den neuen Branch durchzuführen.

Zusätzliche Voraussetzungen für die MTC-Methode:
+ Ein Amazon Simple Storage Service (Amazon S3) -Bucket, der als Replikationsrepository verwendet wird.
+ Administratorzugriff auf den ARO-Quell-Cluster. Dies ist erforderlich, um die MTC-Verbindung einzurichten.

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie auf der Seite [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="migrate-container-workloads-from-aro-to-rosa-architecture"></a>

ROSA bietet drei Netzwerkbereitstellungsmuster: öffentlich, privat und. [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) PrivateLinkermöglicht es den Teams von Red Hat Site Reliability Engineering (SRE), den Cluster mithilfe eines privaten Subnetzes zu verwalten, das mit dem PrivateLink Endpunkt des Clusters in einer vorhandenen VPC verbunden ist.

Die Wahl der PrivateLink Option bietet die sicherste Konfiguration. Aus diesem Grund empfehlen wir sie für sensible Workloads oder strenge Compliance-Anforderungen. Informationen zu den Bereitstellungsoptionen für öffentliche und private Netzwerke finden Sie in der [Red OpenShift Hat-Dokumentation](https://docs.openshift.com/rosa/architecture/rosa-architecture-models.html#rosa-hcp-architecture_rosa-architecture-models).

**Wichtig**  
Sie können einen PrivateLink Cluster nur bei der Installation erstellen. Sie können einen zu verwendenden Cluster PrivateLink nach der Installation nicht ändern.

Das folgende Diagramm zeigt die PrivateLink Architektur für einen ROSA-Cluster, der für die Verbindung Direct Connect zu lokalen Umgebungen und ARO-Umgebungen verwendet wird.

![\[ROSA-Cluster, der AWS Direct Connect und AWS verwendet PrivateLink.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/527cedfb-ec21-42be-bf21-d4e4e4f9db51/images/eff9b017-6fc7-4874-b610-849a42071ef4.png)


**AWS Berechtigungen für ROSA**

Für AWS Berechtigungen für ROSA empfehlen wir, AWS -Security-Token-Service (AWS STS) mit kurzlebigen, dynamischen Tokens zu verwenden. Diese Methode verwendet vordefinierte Rollen und Richtlinien mit den geringsten Rechten, um ROSA minimale Berechtigungen für den Betrieb in der ROSA-Installations- AWS-Konto, Steuerungsebene- und Rechenfunktionen zu gewähren, und unterstützt die ROSA-Funktionalität.

**Neuverteilung der CI/CD-Pipeline**

CI/CD pipeline redeployment is the recommended method for users who have a mature CI/CDPipeline. Wenn Sie diese Option wählen, können Sie eine beliebige [DevOps Bereitstellungsstrategie](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/deployment-strategies.html) verwenden, um Ihre Anwendungslast schrittweise auf Bereitstellungen auf ROSA zu verlagern.

**Anmerkung**  
Dieses Muster geht von einem häufigen Anwendungsfall aus, bei dem Sie eine lokale Git-, JFrog Artifactory- und Jenkins-Pipeline haben. [Dieser Ansatz erfordert, dass Sie die Netzwerkkonnektivität von Ihrem lokalen Netzwerk bis AWS hin zum Through herstellen und dass Sie den ROSA-Cluster einrichten Direct Connect, bevor Sie den Anweisungen im Abschnitt Epics folgen.](#migrate-container-workloads-from-aro-to-rosa-epics) Einzelheiten finden Sie im Abschnitt [Voraussetzungen](#migrate-container-workloads-from-aro-to-rosa-prereqs).

Das folgende Diagramm zeigt den Arbeitsablauf für diese Methode.

![\[Migrieren von Containern von ARO zu ROSA mithilfe der CI/CD Methode.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/527cedfb-ec21-42be-bf21-d4e4e4f9db51/images/f658590e-fbd9-4297-a02c-0b516694d436.png)


**MTC-Methode**

Sie können das [Migration Toolkit for Containers (MTC)](https://docs.openshift.com/container-platform/4.13/migration_toolkit_for_containers/about-mtc.html) verwenden,**** um Ihre containerisierten Workloads zwischen verschiedenen Kubernetes-Umgebungen zu migrieren, z. B. von ARO zu ROSA. MTC vereinfacht den Migrationsprozess, indem es mehrere wichtige Aufgaben automatisiert und ein umfassendes Framework für die Verwaltung des Migrationslebenszyklus bereitstellt.

Das folgende Diagramm zeigt den Arbeitsablauf für diese Methode.

![\[Migrieren von Containern von ARO zu ROSA mithilfe der MTC-Methode.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/527cedfb-ec21-42be-bf21-d4e4e4f9db51/images/979bbc7b-2e39-4dd1-b4f0-ea1032880a38.png)


## Tools
<a name="migrate-container-workloads-from-aro-to-rosa-tools"></a>

**AWS-Services**
+ [AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html)ist ein Online-Datenübertragungs- und Erkennungsdienst, mit dem Sie Dateien oder Objektdaten zu, von und zwischen AWS Speicherdiensten verschieben können.
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)verbindet Ihr internes Netzwerk über ein Standard-Ethernet-Glasfaserkabel mit einem Direct Connect Standort. Mit dieser Verbindung können Sie virtuelle Schnittstellen direkt zur Öffentlichkeit einrichten AWS-Services und dabei Internetdienstanbieter in Ihrem Netzwerkpfad umgehen.
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)hilft Ihnen dabei, unidirektionale, private Verbindungen von Ihren virtuellen privaten Clouds (VPCs) zu Diensten außerhalb der VPC herzustellen.
+ [Red Hat OpenShift Service in AWS (ROSA)](https://docs.aws.amazon.com/rosa/latest/userguide/what-is-rosa.html) ist ein verwalteter Service, der OpenShift Benutzern von Red Hat dabei hilft, containerisierte Anwendungen zu erstellen, zu skalieren und zu verwalten. AWS
+ [AWS -Security-Token-Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) hilft Ihnen dabei, temporäre Zugangsdaten mit eingeschränkten Rechten für Benutzer anzufordern.

**Andere Tools**
+ Das [Migration Toolkit for Containers (MTC)](https://docs.openshift.com/container-platform/4.13/migration_toolkit_for_containers/about-mtc.html) bietet eine Konsole und eine API für die Migration von containerisierten Anwendungen von ARO zu ROSA.

## Best Practices
<a name="migrate-container-workloads-from-aro-to-rosa-best-practices"></a>
+ Aus Gründen der [Ausfallsicherheit](https://docs.aws.amazon.com/ROSA/latest/userguide/disaster-recovery-resiliency.html) und wenn Sie über Workloads zur Einhaltung der Sicherheitsbestimmungen verfügen, richten Sie einen Multi-AZ-ROSA-Cluster ein, der Folgendes verwendet: PrivateLink Weitere Informationen finden Sie in der [ROSA-Dokumentation](https://docs.aws.amazon.com/rosa/latest/userguide/getting-started-classic-private-link.html).
**Anmerkung**  
PrivateLink kann nach der Installation nicht konfiguriert werden.
+ Der S3-Bucket, den Sie für das Replikationsrepository verwenden, sollte nicht öffentlich sein. Verwenden Sie die entsprechenden S3-Bucket-Richtlinien, um den Zugriff einzuschränken.
+ Wenn Sie sich für die MTC-Methode entscheiden, verwenden Sie die Option **Stage-Migration**, um das Ausfallzeitfenster während der Umstellung zu reduzieren.
+ Überprüfen Sie Ihre Servicekontingenten vor und nach der Bereitstellung des ROSA-Clusters. Fordern Sie bei Bedarf eine Erhöhung des Kontingents entsprechend Ihren Anforderungen an. Weitere Informationen finden Sie in der [Dokumentation zu Servicekontingenten](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html).
+ Lesen Sie die [ROSA-Sicherheitsrichtlinien](https://docs.aws.amazon.com/ROSA/latest/userguide/security.html) und implementieren Sie bewährte Sicherheitsmethoden.
+ Wir empfehlen, den Standard-Clusteradministrator nach der Installation zu entfernen. Weitere Informationen finden Sie in der [Red OpenShift Hat-Dokumentation](https://docs.openshift.com/container-platform/4.13/post_installation_configuration/cluster-tasks.html).
+ Verwenden Sie die automatische Skalierung von Maschinenpools, um ungenutzte Worker-Knoten im ROSA-Cluster herunterzufahren und so die Kosten zu optimieren. Weitere Informationen finden Sie im [ROSA-Workshop](https://catalog.workshops.aws/aws-openshift-workshop/en-US/5-nodes-storage/3-autoscale-machine-pool).
+ Nutzen Sie den Red Hat Cost Management Service für OpenShift Container Platform, um die Kosten für Clouds und Container besser zu verstehen und nachzuverfolgen. Weitere Informationen finden Sie im [ROSA-Workshop](https://catalog.workshops.aws/aws-openshift-workshop/en-US/10-cost-management).
+ Überwachen und prüfen Sie die Infrastrukturdienste und -anwendungen des ROSA-Clusters mithilfe von AWS-Services. Weitere Informationen finden Sie im [ROSA-Workshop](https://catalog.workshops.aws/aws-openshift-workshop/en-US/8-observability).

## Epen
<a name="migrate-container-workloads-from-aro-to-rosa-epics"></a>

### Option 1: Verwenden Sie eine Pipeline CI/CD
<a name="option-1-use-a-ci-cd-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie den neuen ROSA-Cluster zu Jenkins hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-container-workloads-from-aro-to-rosa.html) | AWS-Administrator, AWS-Systemadministrator, AWS DevOps | 
| Fügen Sie den `oc` Client zu Ihren Jenkins-Knoten hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-container-workloads-from-aro-to-rosa.html) | AWS-Administrator, AWS-Systemadministrator, AWS DevOps | 
| Erstelle einen neuen Git-Branch. | Erstellen Sie einen neuen Branch in Ihrem Git-Repository für`rosa-dev`. Dieser Zweig trennt die Code- oder Konfigurationsparameteränderungen für ROSA von Ihrer bestehenden Pipeline. | AWS DevOps | 
| Tag-Bilder für ROSA. | Verwenden Sie in Ihrer Erstellungsphase ein anderes Tag, um die Bilder zu identifizieren, die aus der ROSA-Pipeline erstellt wurden. | AWS-Administrator, AWS-Systemadministrator, AWS DevOps | 
| Erstellen Sie eine Pipeline. | Erstellen Sie eine neue Jenkins-Pipeline, die Ihrer bestehenden Pipeline ähnelt. Verwenden Sie für diese Pipeline den `rosa-dev` Git-Branch, den Sie zuvor erstellt haben, und stellen Sie sicher, dass die Git-Checkout-, Codescan- und Build-Phasen enthalten sind, die mit Ihrer vorhandenen Pipeline identisch sind. | AWS-Administrator, AWS-Systemadministrator, AWS DevOps | 
| Fügen Sie eine ROSA-Bereitstellungsphase hinzu. | Fügen Sie in der neuen Pipeline eine Phase hinzu, die im ROSA-Cluster bereitgestellt werden soll, und verweisen Sie auf den ROSA-Cluster, den Sie der globalen Jenkins-Konfiguration hinzugefügt haben. | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 
| Starten Sie einen neuen Build. | Wählen Sie in Jenkins Ihre Pipeline aus und wählen Sie **Jetzt erstellen** oder starten Sie einen neuen Build, indem Sie eine Änderung an dem `rosa-dev` Branch in Git festschreiben. | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 
| Überprüfen Sie die Bereitstellung. | Verwenden Sie den Befehl **oc** oder die [ROSA-Konsole](https://console.aws.amazon.com/rosa), um zu überprüfen, ob die Anwendung auf Ihrem ROSA-Zielcluster bereitgestellt wurde. | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 
| Kopieren Sie Daten in den Zielcluster. | Kopieren Sie für statusbehaftete Workloads die Daten vom Quellcluster in den Zielcluster, indem Sie Open-Source-Dienstprogramme wie **rsync** verwenden AWS DataSync , oder Sie können die MTC-Methode verwenden. Weitere Informationen finden Sie in der [AWS DataSync -Dokumentation](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html). | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 
| Testen Sie Ihre Anwendung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-container-workloads-from-aro-to-rosa.html) | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 
| Überschneiden. | Wenn Ihre Tests erfolgreich sind, verwenden Sie die entsprechende Amazon Route 53-Richtlinie, um den Datenverkehr von der ARO-gehosteten Anwendung zur ROSA-gehosteten Anwendung zu verlagern. Wenn Sie diesen Schritt abgeschlossen haben, wird die Arbeitslast Ihrer Anwendung vollständig auf den ROSA-Cluster übertragen. | AWS-Administrator, AWS-Systemadministrator | 

### Option 2: Verwenden Sie MTC
<a name="option-2-use-mtc"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie den MTC-Operator. | Installieren Sie den MTC-Operator sowohl auf ARO- als auch auf ROSA-Clustern:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-container-workloads-from-aro-to-rosa.html) | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 
| Konfigurieren Sie den Netzwerkverkehr zum Replikationsrepository. | Wenn Sie einen Proxyserver verwenden, konfigurieren Sie ihn so, dass Netzwerkverkehr zwischen dem Replikationsrepository und den Clustern zugelassen wird. Das Replikationsrepository ist ein Zwischenspeicherobjekt, das MTC zur Datenmigration verwendet. Die Quell- und Zielcluster müssen während der Migration Netzwerkzugriff auf das Replikationsrepository haben. | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 
| Fügen Sie den Quellcluster zu MTC hinzu. | Fügen Sie auf der MTC-Webkonsole den ARO-Quellcluster hinzu. | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 
| Fügen Sie Amazon S3 als Ihr Replikationsrepository hinzu. | Fügen Sie auf der MTC-Webkonsole den Amazon S3 S3-Bucket (siehe [Voraussetzungen](#migrate-container-workloads-from-aro-to-rosa-prereqs)) als Replikations-Repository hinzu. | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 
| Erstellen Sie einen Migrationsplan. | Erstellen Sie auf der MTC-Webkonsole einen Migrationsplan und geben Sie als Datenübertragungstyp **Kopieren** an. Dadurch wird MTC angewiesen, die Daten vom Quellcluster (ARO) in den S3-Bucket und vom Bucket in den Zielcluster (ROSA) zu kopieren. | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 
| Führen Sie den Migrationsplan aus. | Führen Sie den Migrationsplan mithilfe der Option **Stage** oder **Cutover aus**:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-container-workloads-from-aro-to-rosa.html) | AWS-Administrator, AWS DevOps, AWS-Systemadministrator | 

## Fehlerbehebung
<a name="migrate-container-workloads-from-aro-to-rosa-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Probleme mit der Verbindung | Wenn Sie Ihre Container-Workloads von ARO zu ROSA migrieren, können Verbindungsprobleme auftreten, die gelöst werden sollten, um eine erfolgreiche Migration sicherzustellen. Um diese Konnektivitätsprobleme (in dieser Tabelle aufgeführt) während der Migration zu beheben, sind eine sorgfältige Planung, Abstimmung mit Ihren Netzwerk- und Sicherheitsteams sowie gründliche Tests unerlässlich. Die Implementierung einer schrittweisen Migrationsstrategie und die Überprüfung der Konnektivität bei jedem Schritt tragen dazu bei, potenzielle Störungen zu minimieren und einen reibungslosen Übergang von ARO zu ROSA sicherzustellen. | 
| Unterschiede in der Netzwerkkonfiguration | ARO und ROSA können unterschiedliche Netzwerkkonfigurationen aufweisen, z. B. virtuelle Netzwerkeinstellungen (VNet), Subnetze und Netzwerkrichtlinien. Stellen Sie für eine korrekte Kommunikation zwischen den Diensten sicher, dass die Netzwerkeinstellungen auf den beiden Plattformen übereinstimmen. | 
| Sicherheitsgruppen- und Firewallregeln | ROSA und ARO haben möglicherweise unterschiedliche Standardeinstellungen für Sicherheitsgruppen und Firewalls. Stellen Sie sicher, dass Sie diese Regeln anpassen und aktualisieren, damit der erforderliche Datenverkehr zur Aufrechterhaltung der Konnektivität zwischen Containern und Diensten während der Migration gewährleistet ist.  | 
| Änderungen der IP-Adresse und des DNS | Wenn Sie Workloads migrieren, können sich IP-Adressen und DNS-Namen ändern. Konfigurieren Sie Anwendungen neu, die auf statischen IPs oder spezifischen DNS-Namen basieren.  | 
| Zugriff auf externe Dienste | Wenn Ihre Anwendung von externen Diensten wie Datenbanken oder abhängig ist APIs, müssen Sie möglicherweise deren Verbindungseinstellungen aktualisieren, um sicherzustellen, dass sie mit den neuen Diensten von ROSA kommunizieren können. | 
| Konfiguration von Azure Private Link | Wenn Sie Azure Private Link oder private Endpunktdienste in ARO verwenden, müssen Sie die entsprechende Funktionalität in ROSA einrichten, um die private Konnektivität zwischen Ressourcen sicherzustellen. | 
| Site-to-Site VPN oder Direct Connect einrichten  | Wenn zwischen Ihrem lokalen Netzwerk und ARO bereits Direct Connect Verbindungen bestehen Site-to-Site VPN oder Verbindungen bestehen, müssen Sie ähnliche Verbindungen mit ROSA herstellen, um eine unterbrechungsfreie Kommunikation mit Ihren lokalen Ressourcen zu gewährleisten. | 
| Einstellungen für Ingress und Load Balancer | Die Konfigurationen für Ingress-Controller und Load Balancer können sich zwischen ARO und ROSA unterscheiden. Konfigurieren Sie diese Einstellungen neu, um den externen Zugriff auf Ihre Dienste aufrechtzuerhalten. | 
| Umgang mit Zertifikaten und TLS | Wenn Ihre Anwendungen SSL-Zertifikate oder TLS verwenden, stellen Sie sicher, dass die Zertifikate gültig und in ROSA korrekt konfiguriert sind. | 
| Zugriff auf die Container-Registrierung | Wenn Ihre Container in einer externen Container-Registry gehostet werden, richten Sie die entsprechenden Authentifizierungs- und Zugriffsberechtigungen für ROSA ein. | 
| Überwachung und Protokollierung | Aktualisieren Sie die Überwachungs- und Protokollierungskonfigurationen entsprechend der neuen Infrastruktur auf ROSA, sodass Sie den Zustand und die Leistung Ihrer Container weiterhin effektiv überwachen können. | 

## Zugehörige Ressourcen
<a name="migrate-container-workloads-from-aro-to-rosa-resources"></a>

**AWS****Verweise**
+ [Was ist Red Hat OpenShift Service in AWS?](https://docs.aws.amazon.com/ROSA/latest/userguide/what-is-rosa.html) (ROSA-Dokumentation)
+ [Erste Schritte mit ROSA](https://docs.aws.amazon.com/ROSA/latest/userguide/getting-started.html) (ROSA-Dokumentation)
+ [Red Hat OpenShift Service in AWS Umsetzungsstrategien](https://docs.aws.amazon.com/prescriptive-guidance/latest/red-hat-openshift-on-aws-implementation/) (AWS Prescriptive Guidance)
+ [Red Hat OpenShift Service in AWS Jetzt GA](https://aws.amazon.com/blogs/aws/red-hat-openshift-service-on-aws-now-generally-availably/) (AWS Blogbeitrag)
+ [ROSA-Werkstatt](https://catalog.workshops.aws/aws-openshift-workshop/en-US/0-introduction)
+ [HÄUFIG GESTELLTE FRAGEN ZU ROSA](https://aws.amazon.com/rosa/faqs/)
+ [Häufig gestellte Fragen zum ROSA-Workshop](https://www.rosaworkshop.io/rosa/14-faq/)
+ [ROSA-Preisgestaltung](https://aws.amazon.com/rosa/pricing/)

** OpenShift Dokumentation zu Red Hat**
+ [Schnelles Installieren eines Clusters auf AWS](https://docs.openshift.com/container-platform/4.13/installing/installing_aws/installing-aws-default.html)
+ [Installation eines Clusters AWS in einem eingeschränkten Netzwerk](https://docs.openshift.com/container-platform/4.13/installing/installing_aws/installing-restricted-networks-aws-installer-provisioned.html)
+ [Installation eines Clusters AWS in einer vorhandenen VPC](https://docs.openshift.com/container-platform/4.13/installing/installing_aws/installing-aws-vpc.html)
+ [Installation eines Clusters auf einer vom Benutzer bereitgestellten Infrastruktur mithilfe von Vorlagen AWS CloudFormation ](https://docs.openshift.com/container-platform/4.13/installing/installing_aws/installing-aws-user-infra.html)
+ [Installation eines Clusters AWS in einem eingeschränkten Netzwerk mit einer vom Benutzer bereitgestellten Infrastruktur](https://docs.openshift.com/container-platform/4.13/installing/installing_aws/installing-restricted-networks-aws.html)
+ [Installation eines Clusters auf AWS einem mit Anpassungen](https://docs.openshift.com/container-platform/4.13/installing/installing_aws/installing-aws-customizations.html)
+ [Erste Schritte mit der OpenShift CLI](https://docs.openshift.com/container-platform/4.13/cli_reference/openshift_cli/getting-started-cli.html)

## Zusätzliche Informationen
<a name="migrate-container-workloads-from-aro-to-rosa-additional"></a>

**Wählen Sie zwischen MTC- und CI/CD Pipeline-Redeployment-Optionen**

Die Migration von Anwendungen von einem OpenShift Cluster auf einen anderen erfordert sorgfältige Überlegungen. Idealerweise wünschen Sie sich einen reibungslosen Übergang, indem Sie eine CI/CD Pipeline verwenden, um die Anwendung erneut bereitzustellen und die Migration persistenter Volume-Daten abzuwickeln. In der Praxis ist eine auf einem Cluster ausgeführte Anwendung jedoch anfällig für unvorhergesehene Änderungen im Laufe der Zeit. Diese Änderungen können dazu führen, dass die Anwendung allmählich von ihrem ursprünglichen Bereitstellungsstatus abweicht. MTC bietet eine Lösung für Szenarien, in denen der genaue Inhalt eines Namespaces ungewiss ist und eine nahtlose Migration aller Anwendungskomponenten auf einen neuen Cluster wichtig ist.

Um die richtige Wahl zu treffen, müssen Sie Ihr spezifisches Szenario bewerten und die Vorteile der einzelnen Ansätze abwägen. Auf diese Weise können Sie eine erfolgreiche und reibungslose Migration sicherstellen, die Ihren Bedürfnissen und Prioritäten entspricht. Im Folgenden finden Sie zusätzliche Richtlinien für die Auswahl zwischen den beiden Optionen.

**Neuverteilung der CI/CD-Pipeline**

Die CI/CD Pipeline-Methode ist der empfohlene Ansatz, wenn Ihre Anwendung mithilfe einer Pipeline problemlos erneut bereitgestellt werden kann. Dadurch wird sichergestellt, dass die Migration kontrolliert und vorhersehbar ist und auf Ihre bestehenden Bereitstellungspraktiken abgestimmt ist. Wenn Sie sich für diese Methode entscheiden, können Sie die [Bereitstellungsstrategien blau/grün](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/bluegreen-deployments.html) oder kanarisch nutzen, um die Last schrittweise auf Bereitstellungen auf ROSA zu verlagern. Für dieses Szenario geht dieses Muster davon aus, dass Jenkins Anwendungsbereitstellungen von der lokalen Umgebung aus orchestriert.

Vorteile:
+ Sie benötigen keinen Administratorzugriff auf den ARO-Quell-Cluster und müssen keine Operatoren auf dem Quell- oder Zielcluster bereitstellen.
+ Dieser Ansatz hilft Ihnen, den Verkehr mithilfe einer DevOps Strategie schrittweise umzustellen.

Nachteile:
+ Es erfordert mehr Aufwand, die Funktionalität Ihrer Anwendung zu testen.
+ Wenn Ihre Anwendung persistente Daten enthält, sind zusätzliche Schritte erforderlich, um die Daten mithilfe von AWS DataSync oder anderen Tools zu kopieren.

**MTC-Migration**

In der Praxis können laufende Anwendungen unvorhergesehene Änderungen erfahren, die dazu führen, dass sie von der ursprünglichen Bereitstellung abweichen. Wählen Sie die MTC-Option, wenn Sie sich über den aktuellen Status Ihrer Anwendung auf dem Quell-Cluster nicht sicher sind. Wenn Ihr Anwendungsökosystem beispielsweise verschiedene Komponenten, Konfigurationen und Datenspeichervolumen umfasst, empfehlen wir Ihnen, MTC zu wählen, um eine vollständige Migration sicherzustellen, die die Anwendung und ihre gesamte Umgebung abdeckt.

Vorteile:
+ MTC bietet eine vollständige Sicherung und Wiederherstellung des Workloads.
+ Es kopiert die persistenten Daten von der Quelle zum Ziel, während der Workload migriert wird.
+ Es ist kein Zugriff auf das Quellcode-Repository erforderlich.

Nachteile:
+ Sie benötigen Administratorrechte, um den MTC-Operator auf den Quell- und Zielclustern zu installieren.
+ Das DevOps Team benötigt eine Schulung, um das MTC-Tool verwenden und Migrationen durchführen zu können. 

# Führen Sie Amazon ECS-Aufgaben auf Amazon WorkSpaces mit Amazon ECS Anywhere aus
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere"></a>

*Akash Kumar, Amazon Web Services*

## Zusammenfassung
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-summary"></a>

Amazon Elastic Container Service (Amazon ECS) Anywhere unterstützt die Bereitstellung von Amazon ECS-Aufgaben in jeder Umgebung, einschließlich der von Amazon Web Services (AWS) verwalteten Infrastruktur und der vom Kunden verwalteten Infrastruktur. Sie können dies tun, während Sie eine vollständig von AWS verwaltete Kontrollebene verwenden, die in der Cloud läuft und immer auf dem neuesten Stand ist. 

Unternehmen nutzen Amazon häufig WorkSpaces für die Entwicklung containerbasierter Anwendungen. Dies erforderte Amazon Elastic Compute Cloud (Amazon EC2) oder AWS Fargate mit einem Amazon ECS-Cluster, um ECS-Aufgaben zu testen und auszuführen. Mit Amazon ECS Anywhere können Sie Amazon jetzt WorkSpaces als externe Instances direkt zu einem ECS-Cluster hinzufügen und Ihre Aufgaben direkt ausführen. Dies reduziert Ihre Entwicklungszeit, da Sie Ihren Container mit einem ECS-Cluster lokal auf Amazon testen können WorkSpaces. Sie können sich auch die Kosten für die Nutzung unserer EC2 Fargate-Instances zum Testen Ihrer Containeranwendungen sparen.

Dieses Muster zeigt, wie ECS-Aufgaben auf Amazon WorkSpaces mit Amazon ECS Anywhere bereitgestellt werden. Es richtet den ECS-Cluster ein und verwendet AWS Directory Service Simple AD, um den zu starten WorkSpaces. Dann startet die ECS-Beispielaufgabe NGINX in der. WorkSpaces

## Voraussetzungen und Einschränkungen
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-prereqs"></a>
+ Ein aktives AWS-Konto
+ AWS-Befehlszeilenschnittstelle (AWS Command Line Interface, AWS CLI)
+ [Auf Ihrem Computer konfigurierte](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) AWS-Anmeldeinformationen

## Architektur
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-architecture"></a>

**Zieltechnologie-Stack**
+ Eine Virtual Private Cloud (VPC)
+ Ein Amazon ECS-Cluster
+ Amazon WorkSpaces
+ AWS Directory Service mit Simple AD

**Zielarchitektur**

![\[ECS Anywhere richtet den ECS-Cluster ein und verwendet Simple AD zum Starten WorkSpaces.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/da8b2249-3423-485c-9fef-6f902025e969/images/fd354d14-f29b-4b9e-8f1a-c3cb7ed4d6bf.png)


 

Die Architektur umfasst die folgenden Dienste und Ressourcen:
+ Ein ECS-Cluster mit öffentlichen und privaten Subnetzen in einer benutzerdefinierten VPC
+ Simple AD in der VPC, um Benutzern Zugriff auf Amazon zu gewähren WorkSpaces
+ Amazon wird in der VPC mit Simple AD WorkSpaces bereitgestellt
+ AWS Systems Manager wurde für das Hinzufügen von Amazon WorkSpaces als verwaltete Instances aktiviert
+ Mithilfe von Amazon ECS und AWS Systems Manager Agent (SSM Agent) WorkSpaces fügte Amazon Systems Manager und dem ECS-Cluster hinzu
+ Ein Beispiel für eine ECS-Aufgabe zur Ausführung WorkSpaces im ECS-Cluster

## Tools
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-tools"></a>
+ [AWS Directory Service Simple Active Directory (Simple AD)](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_simple_ad.html) ist ein eigenständiges verwaltetes Verzeichnis, das von einem Samba 4 Active Directory-kompatiblen Server betrieben wird. Simple AD bietet einen Teil der Funktionen von AWS Managed Microsoft AD, einschließlich der Möglichkeit, Benutzer zu verwalten und eine sichere Verbindung zu EC2 Amazon-Instances herzustellen.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) ist ein hoch skalierbarer, schneller Container-Management-Service, der das Ausführen, Beenden und Verwalten von Containern in einem Cluster vereinfacht.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS-Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) unterstützt Sie bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der AWS-Cloud ausgeführt werden. Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS-Ressourcen sicher und skalierbar zu verwalten.
+ [Amazon WorkSpaces](https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces.html) unterstützt Sie bei der Bereitstellung virtueller, Cloud-basierter Microsoft Windows- oder Amazon Linux-Desktops für Ihre Benutzer, bekannt als *WorkSpaces*. WorkSpaces macht die Beschaffung und Bereitstellung von Hardware oder die Installation komplexer Software überflüssig.

## Epen
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-epics"></a>

### Richten Sie den ECS-Cluster ein
<a name="set-up-the-ecs-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen und konfigurieren Sie den ECS-Cluster. | Um den ECS-Cluster zu erstellen, folgen Sie den Anweisungen in der [AWS-Dokumentation](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html), einschließlich der folgenden Schritte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere.html) | Cloud-Architekt | 

### Starten Sie Amazon WorkSpaces
<a name="launch-amazon-workspaces"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie Simple AD ein und starten Sie Amazon WorkSpaces. | Folgen Sie den Anweisungen in der [AWS-Dokumentation](https://docs.aws.amazon.com/workspaces/latest/adminguide/launch-workspace-simple-ad.html), um ein Simple AD AD-Verzeichnis für Ihre neu erstellte VPC bereitzustellen und Amazon WorkSpaces zu starten. | Cloud-Architekt | 

### AWS Systems Manager für eine Hybridumgebung einrichten
<a name="set-up-aws-systems-manager-for-a-hybrid-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie die angehängten Skripte herunter. | Laden Sie auf Ihrem lokalen Computer die `ssm-activation.json` Dateien `ssm-trust-policy.json` und herunter, die sich im Bereich *Anlagen* befinden. | Cloud-Architekt | 
| Fügen Sie die IAM-Rolle hinzu. | Fügen Sie Umgebungsvariablen hinzu, die auf Ihren Geschäftsanforderungen basieren.<pre>export AWS_DEFAULT_REGION=${AWS_REGION_ID}<br />export ROLE_NAME=${ECS_TASK_ROLE}<br />export CLUSTER_NAME=${ECS_CLUSTER_NAME}<br />export SERVICE_NAME=${ECS_CLUSTER_SERVICE_NAME}</pre>Führen Sie den folgenden Befehl aus.<pre>aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://ssm-trust-policy.json</pre> | Cloud-Architekt | 
| Fügen Sie die SSMManaged InstanceCore Amazon-Richtlinie zur IAM-Rolle hinzu. | Führen Sie den folgenden Befehl aus.<pre>aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore</pre> | Cloud-Architekt | 
| Fügen Sie die EC2 ContainerServicefor EC2 Amazon-Rollenrichtlinie zur IAM-Rolle hinzu. | Führen Sie den folgenden Befehl aus.<pre>aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role</pre> | Cloud-Architekt | 
| Überprüfen Sie die IAM-Rolle. | Führen Sie den folgenden Befehl aus, um die IAM-Rolle zu überprüfen.<pre>aws iam list-attached-role-policies --role-name $ROLE_NAME</pre> | Cloud-Architekt | 
| Aktivieren Sie den Systems Manager. | Führen Sie den folgenden Befehl aus.<pre>aws ssm create-activation --iam-role $ROLE_NAME | tee ssm-activation.json</pre> | Cloud-Architekt | 

### WorkSpaces Zum ECS-Cluster hinzufügen
<a name="add-workspaces-to-the-ecs-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  Connect dich mit deinem WorkSpaces. | Folgen Sie den Anweisungen in der [AWS-Dokumentation](https://docs.aws.amazon.com/workspaces/latest/userguide/workspaces-user-getting-started.html), um eine Verbindung zu Ihren Workspaces herzustellen und diese einzurichten. | App-Developer | 
| Laden Sie das ECS-Anywhere-Installationsskript herunter. | Führen Sie an der Eingabeaufforderung den folgenden Befehl aus.<pre>curl -o "ecs-anywhere-install.sh" "https://amazon-ecs-agent-packages-preview.s3.us-east-1.amazonaws.com/ecs-anywhere-install.sh" && sudo chmod +x ecs-anywhere-install.sh</pre> | App-Developer | 
| Überprüfen Sie die Integrität des Shell-Skripts. | (Optional) Führen Sie den folgenden Befehl aus.<pre>curl -o "ecs-anywhere-install.sh.sha256" "https://amazon-ecs-agent-packages-preview.s3.us-east-1.amazonaws.com/ecs-anywhere-install.sh.sha256" && sha256sum -c ecs-anywhere-install.sh.sha256<br /><br /><br /></pre> | App-Developer | 
| Fügen Sie ein EPEL-Repository auf Amazon Linux hinzu. | Um ein EPEL-Repository (Extra Packages for Enterprise Linux) hinzuzufügen, führen Sie den Befehl aus. `sudo amazon-linux-extras install epel -y` | App-Developer | 
| Installieren Sie Amazon ECS Anywhere. | Verwenden Sie den folgenden Befehl, um das Installationsskript auszuführen.<pre>sudo ./ecs-anywhere-install.sh --cluster $CLUSTER_NAME --activation-id $ACTIVATION_ID --activation-code $ACTIVATION_CODE --region $AWS_REGION<br /><br /><br /></pre> |  | 
| Überprüfen Sie die Instanzinformationen aus dem ECS-Cluster. | Führen Sie den folgenden Befehl auf Ihrem lokalen Computer aus, um die Informationen zu Systems Manager- und ECS-Clusterinstanzen zu überprüfen und zu überprüfen, ob sie dem Cluster hinzugefügt WorkSpaces wurden.<pre>aws ssm describe-instance-information" && "aws ecs list-container-instances --cluster $CLUSTER_NAME</pre> | App-Developer | 

### Fügen Sie eine ECS-Aufgabe hinzu für WorkSpaces
<a name="add-an-ecs-task-for-the-workspaces"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine IAM-Rolle für die Aufgabenausführung. | Laden Sie `task-execution-assume-role.json` und `external-task-definition.json` aus dem Bereich *Anlagen* herunter. Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus.<pre>aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json</pre> | Cloud-Architekt | 
| Fügen Sie die Richtlinie der Ausführungsrolle hinzu. | Führen Sie den folgenden Befehl aus.<pre>aws iam --region $AWS_DEFAULT_REGION attach-role-policy --role-name $ECS_TASK_EXECUTION_ROLE --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy</pre> | Cloud-Architekt | 
| Erstellen Sie eine Aufgabenrolle. | Führen Sie den folgenden Befehl aus.<pre>aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json<br /><br /><br /></pre> | Cloud-Architekt | 
| Registrieren Sie die Aufgabendefinition im Cluster. | Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus.<pre>aws ecs register-task-definition --cli-input-json file://external-task-definition.json</pre> | Cloud-Architekt | 
| Führen Sie die Aufgabe aus. | Führen Sie auf Ihrem lokalen Computer den folgenden Befehl aus.<pre>aws ecs run-task --cluster $CLUSTER_NAME --launch-type EXTERNAL --task-definition nginx</pre> | Cloud-Architekt | 
| Überprüfen Sie den Status, in dem die Aufgabe ausgeführt wird. | Führen Sie den folgenden Befehl aus, um die Aufgaben-ID abzurufen.<pre>export TEST_TASKID=$(aws ecs list-tasks --cluster $CLUSTER_NAME | jq -r '.taskArns[0]')</pre>Führen Sie mit der Task-ID den folgenden Befehl aus.<pre>aws ecs describe-tasks --cluster $CLUSTER_NAME --tasks ${TEST_TASKID}</pre> | Cloud-Architekt | 
| Überprüfen Sie die Aufgabe auf dem WorkSpace. | Um zu überprüfen, ob NGINX auf dem läuft WorkSpace, führen Sie den Befehl aus. ` curl http://localhost:8080` | App-Developer | 

## Zugehörige Ressourcen
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-resources"></a>
+ [ECS-Cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html)
+ [Einrichtung einer Hybridumgebung](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html)
+ [Amazon WorkSpaces](https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces.html)
+ [Simple AD](https://docs.aws.amazon.com/workspaces/latest/adminguide/launch-workspace-simple-ad.html)

## Anlagen
<a name="attachments-da8b2249-3423-485c-9fef-6f902025e969"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/da8b2249-3423-485c-9fef-6f902025e969/attachments/attachment.zip)

# Führen Sie einen ASP.NET Core-Web-API-Docker-Container auf einer Amazon EC2 Linux-Instance aus
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance"></a>

*Vijai Anand Ramalingam und Sreelaxmi Pai, Amazon Web Services*

## Zusammenfassung
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-summary"></a>

Dieses Muster ist für Benutzer gedacht, die damit beginnen, ihre Anwendungen in der Amazon Web Services (AWS) Cloud zu containerisieren. Wenn Sie beginnen, Apps in der Cloud zu containerisieren, sind in der Regel keine Container-Orchestrierungsplattformen eingerichtet. Mit diesem Muster können Sie schnell eine Infrastruktur auf AWS einrichten, um Ihre containerisierten Anwendungen zu testen, ohne dass eine aufwändige Container-Orchestrierungsinfrastruktur erforderlich ist.

Der erste Schritt auf dem Weg zur Modernisierung besteht darin, die Anwendung zu transformieren. Wenn es sich um eine ältere .NET Framework-Anwendung handelt, müssen Sie zuerst die Laufzeit auf ASP.NET Core ändern. Führen Sie dann die folgenden Schritte aus:
+ Erstellen Sie das Docker-Container-Image
+ Führen Sie den Docker-Container mit dem erstellten Image aus
+ Überprüfen Sie die Anwendung, bevor Sie sie auf einer beliebigen Container-Orchestrierungsplattform wie Amazon Elastic Container Service (Amazon ECS) oder Amazon Elastic Kubernetes Service (Amazon EKS) bereitstellen. 

Dieses Muster behandelt die Aspekte der Erstellung, Ausführung und Validierung der modernen Anwendungsentwicklung auf einer Amazon Elastic Compute Cloud (Amazon EC2) Linux-Instance.

## Voraussetzungen und Einschränkungen
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-prereqs"></a>

**Voraussetzungen**
+ Ein aktives [Amazon Web Services (AWS) -Konto](https://aws.amazon.com/account/)
+ Eine [AWS Identity and Access Management (IAM) -Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) mit ausreichendem Zugriff, um AWS-Ressourcen für dieses Muster zu erstellen 
+ [Visual Studio Community 2022](https://visualstudio.microsoft.com/downloads/) oder höher wurde heruntergeladen und installiert
+ Ein auf ASP.NET Core modernisiertes .NET Framework-Projekt
+ Ein Repositorium GitHub 

**Produktversionen**
+ Visual Studio Community 2022 oder höher

## Architektur
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-architecture"></a>

**Zielarchitektur**

Dieses Muster verwendet eine [ CloudFormation AWS-Vorlage](https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?stackName=SSM-SSH-Demo&templateURL=https://aws-quickstart.s3.amazonaws.com/quickstart-examples/samples/session-manager-ssh/session-manager-example.yaml), um die im folgenden Diagramm gezeigte Architektur mit hoher Verfügbarkeit zu erstellen. Eine Amazon EC2 Linux-Instance wird in einem privaten Subnetz gestartet. AWS Systems Manager Session Manager wird verwendet, um auf die private Amazon EC2 Linux-Instance zuzugreifen und die API zu testen, die im Docker-Container läuft.

![\[Ein Benutzer, der auf die Amazon EC2 Linux-Instance zugreift und die im Docker-Container ausgeführte API testet.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/512e61b2-10ba-43be-bbd8-2bdc597c3de3/images/9c5206f6-32b1-47be-9037-360c0bff713c.png)


1. Zugriff auf die Linux-Instance über Session Manager

## Tools
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-tools"></a>

**AWS-Services**
+ [AWS-Befehlszeilenschnittstelle](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) — AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool für die Interaktion mit AWS-Services über Befehle in Ihrer Befehlszeilen-Shell. Mit minimaler Konfiguration können Sie AWS-CLI-Befehle ausführen, die Funktionen implementieren, die denen der browserbasierten AWS-Managementkonsole entsprechen.
+ [AWS-Managementkonsole](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/learn-whats-new.html) — Die AWS-Managementkonsole ist eine Webanwendung, die eine breite Sammlung von Servicekonsolen für die Verwaltung von AWS-Ressourcen umfasst und sich auf diese bezieht. Wenn Sie sich zum ersten Mal anmelden, sehen Sie die Startseite der Konsole. Die Startseite bietet Zugriff auf jede Servicekonsole und bietet einen zentralen Ort, an dem Sie auf die Informationen zugreifen können, die Sie zur Ausführung Ihrer AWS-bezogenen Aufgaben benötigen.
+ [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) — Session Manager ist eine vollständig verwaltete Funktion von AWS Systems Manager. Mit Session Manager können Sie Ihre Amazon Elastic Compute Cloud (Amazon EC2) -Instances verwalten. Session Manager bietet eine sichere und überprüfbare Knotenverwaltung, ohne dass eingehende Ports geöffnet, Bastion-Hosts verwaltet oder SSH-Schlüssel verwaltet werden müssen.

**Andere Tools**
+ [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/) — Visual Studio 2022 ist eine integrierte Entwicklungsumgebung (IDE).
+ [Docker](https://www.docker.com/) — Docker ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.

**Code**

```
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
 WORKDIR /app
EXPOSE 80
EXPOSE 443
 
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["DemoNetCoreWebAPI/DemoNetCoreWebAPI.csproj", "DemoNetCoreWebAPI/"]
RUN dotnet restore "DemoNetCoreWebAPI/DemoNetCoreWebAPI.csproj"
COPY . .
WORKDIR "/src/DemoNetCoreWebAPI"
RUN dotnet build "DemoNetCoreWebAPI.csproj" -c Release -o /app/build
 
FROM build AS publish
RUN dotnet publish "DemoNetCoreWebAPI.csproj" -c Release -o /app/publish
 
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DemoNetCoreWebAPI.dll"]
```

## Epen
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-epics"></a>

### Entwickeln Sie die ASP.NET Core-Web-API
<a name="develop-the-asp-net-core-web-api"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie mit Visual Studio ein Beispiel für eine ASP.NET Core-Web-API. | Gehen Sie wie folgt vor, um ein Beispiel für eine ASP.NET Core-Web-API zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) | App-Developer | 
| Erstellen Sie eine Docker-Datei. | Gehen Sie wie folgt vor, um ein Dockerfile zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html)Führen Sie den folgenden Befehl aus, um die Änderungen in Ihr GitHub Repository zu übertragen.<pre>git add --all<br />git commit -m "Dockerfile added"<br />git push</pre> | App-Developer | 

### Richten Sie die Amazon EC2 Linux-Instance ein
<a name="set-up-the-amazon-ec2-linux-instance"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie die Infrastruktur ein. | Starten Sie die [ CloudFormation AWS-Vorlage](https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?stackName=SSM-SSH-Demo&templateURL=https://aws-quickstart.s3.amazonaws.com/quickstart-examples/samples/session-manager-ssh/session-manager-example.yaml), um die Infrastruktur zu erstellen, die Folgendes umfasst: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html)Weitere Informationen zum Zugriff auf eine private EC2 Amazon-Instance mit Session Manager, ohne dass ein Bastion-Host erforderlich ist, finden Sie im Blogbeitrag [Toward a bastion-less world](https://aws.amazon.com/blogs/infrastructure-and-automation/toward-a-bastion-less-world/). | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Melden Sie sich bei der Amazon EC2 Linux-Instance an. | Gehen Sie wie folgt vor, um eine Verbindung zur Amazon EC2 Linux-Instance im privaten Subnetz herzustellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) | App-Developer | 
| Installieren und starten Sie Docker. | Gehen Sie wie folgt vor, um Docker in der Amazon EC2 Linux-Instance zu installieren und zu starten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Installiere Git und klone das Repository. | Gehen Sie wie folgt vor, um Git auf der Amazon EC2 Linux-Instance zu installieren und das Repository von GitHub zu klonen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Erstellen Sie den Docker-Container und führen Sie ihn aus. | Gehen Sie wie folgt vor, um das Docker-Image zu erstellen und den Container in der Amazon EC2 Linux-Instance auszuführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 

### Testen Sie die Web-API
<a name="test-the-web-api"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie die Web-API mit dem Befehl curl. | Führen Sie den folgenden Befehl aus, um die Web-API zu testen.<pre>curl -X GET "http://localhost/WeatherForecast" -H  "accept: text/plain"</pre>Überprüfen Sie die API-Antwort.Sie können die curl-Befehle für jeden Endpunkt von Swagger abrufen, wenn Sie ihn lokal ausführen. | App-Developer | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie alle Ressourcen. | Löschen Sie den Stapel, um alle Ressourcen zu entfernen. Dadurch wird sichergestellt, dass Ihnen keine Dienste in Rechnung gestellt werden, die Sie nicht nutzen. | AWS-Administrator, AWS DevOps | 

## Zugehörige Ressourcen
<a name="run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance-resources"></a>
+ [Stellen Sie mithilfe von PuTTY von Windows aus eine Connect zu Ihrer Linux-Instance her](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)
+ [Erstellen Sie eine Web-API mit ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-5.0&tabs=visual-studio)
+ [Auf dem Weg zu einer Welt ohne Bastionen](https://aws.amazon.com/blogs/infrastructure-and-automation/toward-a-bastion-less-world/)

# Führen Sie statusbehaftete Workloads mit persistentem Datenspeicher aus, indem Sie Amazon EFS auf Amazon EKS mit AWS Fargate verwenden
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate"></a>

*Ricardo Morais, Rodrigo Bersa und Lucio Pereira, Amazon Web Services*

## Zusammenfassung
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-summary"></a>

Dieses Muster bietet Anleitungen zur Aktivierung von Amazon Elastic File System (Amazon EFS) als Speichergerät für Container, die auf Amazon Elastic Kubernetes Service (Amazon EKS) ausgeführt werden, indem Sie AWS Fargate zur Bereitstellung Ihrer Rechenressourcen verwenden.

Das in diesem Muster beschriebene Setup folgt bewährten Sicherheitsmethoden und bietet standardmäßig Sicherheit im Ruhezustand und Sicherheit bei der Übertragung. Um Ihr Amazon EFS-Dateisystem zu verschlüsseln, verwendet es einen AWS Key Management Service (AWS KMS) -Schlüssel, aber Sie können auch einen Schlüsselalias angeben, der den Prozess der Erstellung eines KMS-Schlüssels auslöst.

Sie können den Schritten in diesem Muster folgen, um einen Namespace und ein Fargate-Profil für eine proof-of-concept (PoC-) Anwendung zu erstellen, den Amazon EFS Container Storage Interface (CSI) -Treiber zu installieren, der für die Integration des Kubernetes-Clusters in Amazon EFS verwendet wird, die Speicherklasse zu konfigurieren und die PoC-Anwendung bereitzustellen. Diese Schritte führen zu einem Amazon EFS-Dateisystem, das von mehreren Kubernetes-Workloads gemeinsam genutzt wird und über Fargate ausgeführt wird. Das Muster wird von Skripten begleitet, die diese Schritte automatisieren.

Sie können dieses Muster verwenden, wenn Sie Datenpersistenz in Ihren containerisierten Anwendungen wünschen und Datenverluste bei Skalierungsvorgängen vermeiden möchten. Beispiel:
+ **DevOps Tools** — Ein gängiges Szenario ist die Entwicklung eines Tools für kontinuierliche Integration und kontinuierliche Bereitstellung (Continuous Delivery). CI/CD) strategy. In this case, you can use Amazon EFS as a shared file system to store configurations among different instances of the CI/CD tool or to store a cache (for example, an Apache Maven repository) for pipeline stages among different instances of the CI/CD
+ **Webserver** — Ein gängiges Szenario ist die Verwendung von Apache als HTTP-Webserver. Sie können Amazon EFS als gemeinsam genutztes Dateisystem verwenden, um statische Dateien zu speichern, die von verschiedenen Instanzen des Webservers gemeinsam genutzt werden. In diesem Beispielszenario werden Änderungen direkt auf das Dateisystem angewendet, anstatt statische Dateien in ein Docker-Image zu integrieren.

## Voraussetzungen und Einschränkungen
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Ein vorhandener Amazon EKS-Cluster mit Kubernetes Version 1.17 oder höher (getestet bis Version 1.27)
+ Ein vorhandenes Amazon EFS-Dateisystem zum Binden von Kubernetes StorageClass und zum dynamischen Bereitstellen von Dateisystemen
+ Berechtigungen für die Clusterverwaltung
+ Kontext, der so konfiguriert ist, dass er auf den gewünschten Amazon EKS-Cluster verweist

**Einschränkungen**
+ Bei der Verwendung von Amazon EKS mit Fargate sind einige Einschränkungen zu beachten. Beispielsweise wird die Verwendung einiger Kubernetes-Konstrukte, wie z. B. DaemonSets privilegierte Container, nicht unterstützt. Weitere Informationen zu den Einschränkungen von Fargate finden Sie in den [Überlegungen zu AWS Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html#fargate-considerations) in der Amazon EKS-Dokumentation.
+ Der mit diesem Muster bereitgestellte Code unterstützt Workstations, auf denen Linux oder macOS ausgeführt wird.

**Produktversionen**
+ AWS-Befehlszeilenschnittstelle (AWS CLI) Version 2 oder höher
+ Amazon EFS CSI-Treiber Version 1.0 oder höher (getestet bis Version 2.4.8)
+ eksctl Version 0.24.0 oder höher (getestet bis Version 0.158.0)
+ jq Version 1.6 oder höher
+ kubectl Version 1.17 oder höher (getestet bis Version 1.27)
+ Kubernetes Version 1.17 oder höher (getestet bis Version 1.27)

## Architektur
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-architecture"></a>

![\[Architekturdiagramm der Ausführung von statusbehafteten Workloads mit persistentem Datenspeicher mithilfe von Amazon EFS\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/2487e285-269b-415b-a270-877f973e3aaf/images/ec8de63c-3307-4010-9e03-2bd7b9881fff.png)


Die Zielarchitektur besteht aus der folgenden Infrastruktur:
+ Eine Virtual Private Cloud (VPC)
+ Zwei Verfügbarkeitszonen
+ Ein öffentliches Subnetz mit einem NAT-Gateway, das Internetzugang bietet
+ Ein privates Subnetz mit einem Amazon EKS-Cluster und Amazon EFS-Mount-Zielen (auch bekannt als *Mount-Points*)
+ Amazon EFS auf VPC-Ebene

Im Folgenden finden Sie die Umgebungsinfrastruktur für den Amazon EKS-Cluster:
+ AWS Fargate-Profile, die die Kubernetes-Konstrukte auf Namespace-Ebene berücksichtigen
+ Ein Kubernetes-Namespace mit:
  + Zwei Anwendungs-Pods, die über Availability Zones verteilt sind
  + Ein persistenter Volume Claim (PVC), der an ein persistentes Volume (PV) auf Clusterebene gebunden ist
+ Ein clusterweiter PV, der an das PVC im Namespace gebunden ist und auf die Amazon EFS-Mount-Ziele im privaten Subnetz außerhalb des Clusters verweist

## Tools
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-tools"></a>

**AWS-Services**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über die Befehlszeile mit AWS-Services interagieren können.
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) unterstützt Sie bei der Erstellung und Konfiguration gemeinsam genutzter Dateisysteme in der AWS-Cloud. In diesem Muster bietet es ein einfaches, skalierbares, vollständig verwaltetes und gemeinsam genutztes Dateisystem für die Verwendung mit Amazon EKS.
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) hilft Ihnen, Kubernetes auf AWS auszuführen, ohne Ihre eigenen Cluster installieren oder betreiben zu müssen.
+ [AWS Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html) ist eine serverlose Rechen-Engine für Amazon EKS. Sie erstellt und verwaltet Rechenressourcen für Ihre Kubernetes-Anwendungen.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) unterstützt Sie bei der Erstellung und Kontrolle kryptografischer Schlüssel, um Ihre Daten zu schützen.

**Andere Tools**
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.
+ [eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) ist ein Befehlszeilenprogramm zum Erstellen und Verwalten von Kubernetes-Clustern auf Amazon EKS.
+ [kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) ist eine Befehlszeilenschnittstelle, mit der Sie Befehle für Kubernetes-Cluster ausführen können.
+ [jq ist ein Befehlszeilentool](https://stedolan.github.io/jq/download/) zum Parsen von JSON.

**Code**

Der Code für dieses Muster wird in der GitHub [Persistenzkonfiguration mit Amazon EFS auf Amazon EKS mithilfe des AWS Fargate-Repos](https://github.com/aws-samples/eks-efs-share-within-fargate) bereitgestellt. Die Skripts sind nach Epic in den Ordnern `epic01` bis angeordnet`epic06`, entsprechend der Reihenfolge im Abschnitt [Epics](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-epics) in diesem Muster.

## Best Practices
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-best-practices"></a>

Die Zielarchitektur umfasst die folgenden Services und Komponenten und entspricht den Best Practices von [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/):
+ Amazon EFS, das ein einfaches, skalierbares, vollständig verwaltetes elastisches NFS-Dateisystem bietet. Dies wird als gemeinsam genutztes Dateisystem für alle Replikationen der PoC-Anwendung verwendet, die in Pods ausgeführt werden, die in den privaten Subnetzen des ausgewählten Amazon EKS-Clusters verteilt sind.
+ Ein Amazon EFS-Mount-Ziel für jedes private Subnetz. Dies bietet Redundanz pro Availability Zone innerhalb der Virtual Private Cloud (VPC) des Clusters.
+ Amazon EKS, das die Kubernetes-Workloads ausführt. Sie müssen einen Amazon EKS-Cluster bereitstellen, bevor Sie dieses Muster verwenden können, wie im Abschnitt [Voraussetzungen](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-prereqs) beschrieben.
+ AWS KMS bietet Verschlüsselung im Ruhezustand für den Inhalt, der im Amazon EFS-Dateisystem gespeichert ist.
+ Fargate, das die Rechenressourcen für die Container verwaltet, sodass Sie sich auf die Geschäftsanforderungen konzentrieren können, anstatt die Infrastruktur zu belasten. Das Fargate-Profil wird für alle privaten Subnetze erstellt. Es bietet Redundanz pro Availability Zone innerhalb der Virtual Private Cloud (VPC) des Clusters.
+ Kubernetes-Pods, mit denen überprüft wird, ob Inhalte von verschiedenen Instanzen einer Anwendung gemeinsam genutzt, genutzt und geschrieben werden können.

## Epen
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-epics"></a>

### Bereitstellen eines Amazon EKS-Clusters (optional)
<a name="provision-an-amazon-eks-cluster-optional"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Amazon-EKS-Cluster. | Wenn Sie bereits einen Cluster bereitgestellt haben, fahren Sie mit dem nächsten Epic fort. Erstellen Sie einen Amazon EKS-Cluster in Ihrem bestehenden AWS-Konto. Verwenden Sie im [GitHub Verzeichnis](https://github.com/aws-samples/eks-efs-share-within-fargate/tree/master/bootstrap) eines der Muster, um einen Amazon EKS-Cluster mithilfe von Terraform oder eksctl bereitzustellen. Weitere Informationen finden Sie unter [Erstellen eines Amazon EKS-Clusters](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) in der Amazon EKS-Dokumentation. Das Terraform-Muster enthält auch Beispiele, die zeigen, wie Sie: Fargate-Profile mit Ihrem Amazon EKS-Cluster verknüpfen, ein Amazon EFS-Dateisystem erstellen und den Amazon EFS-CSI-Treiber in Ihrem Amazon EKS-Cluster bereitstellen können. | AWS-Administrator, Terraform- oder eksctl-Administrator, Kubernetes-Administrator | 
| Exportieren Sie Umgebungsvariablen. | Führen Sie das Skript env.sh aus. Es enthält die Informationen, die für die nächsten Schritte erforderlich sind.<pre>source ./scripts/env.sh<br />Inform the AWS Account ID:<br /><13-digit-account-id><br />Inform your AWS Region:<br /><aws-Region-code><br />Inform your Amazon EKS Cluster Name:<br /><amazon-eks-cluster-name><br />Inform the Amazon EFS Creation Token:<br /><self-genereated-uuid></pre>Falls noch nicht angegeben, können Sie alle oben angeforderten Informationen mit den folgenden CLI-Befehlen abrufen.<pre># ACCOUNT ID<br />aws sts get-caller-identity --query "Account" --output text</pre><pre># REGION CODE<br />aws configure get region</pre><pre># CLUSTER EKS NAME<br />aws eks list-clusters --query "clusters" --output text</pre><pre># GENERATE EFS TOKEN<br />uuidgen</pre> | AWS-Systemadministrator | 

### Erstellen Sie einen Kubernetes-Namespace und ein verknüpftes Fargate-Profil
<a name="create-a-kubernetes-namespace-and-a-linked-fargate-profile"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Kubernetes-Namespace und ein Fargate-Profil für Anwendungsworkloads. | Erstellen Sie einen Namespace für den Empfang der Anwendungs-Workloads, die mit Amazon EFS interagieren. Führen Sie das `create-k8s-ns-and-linked-fargate-profile.sh`-Skript aus. Sie können wählen, ob Sie einen benutzerdefinierten Namespace-Namen oder den standardmäßig bereitgestellten Namespace verwenden möchten. `poc-efs-eks-fargate`**Mit einem benutzerdefinierten Anwendungs-Namespace-Namen:**<pre>export $APP_NAMESPACE=<CUSTOM_NAME><br />./scripts/epic01/create-k8s-ns-and-linked-fargate-profile.sh \<br />-c "$CLUSTER_NAME" -n "$APP_NAMESPACE"</pre>**Ohne einen benutzerdefinierten Anwendungs-Namespace-Namen:**<pre>./scripts/epic01/create-k8s-ns-and-linked-fargate-profile.sh \<br />    -c "$CLUSTER_NAME"</pre>wo `$CLUSTER_NAME` ist der Name Ihres Amazon EKS-Clusters. Der `-n <NAMESPACE>` Parameter ist optional. Wenn Sie nicht darüber informiert werden, wird ein standardmäßig generierter Namespace-Name bereitgestellt. | Kubernetes-Benutzer mit erteilten Berechtigungen | 

### Erstellen eines Amazon EFS-Dateisystems
<a name="create-an-amazon-efs-file-system"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Generieren Sie ein eindeutiges Token. | Amazon EFS benötigt ein Erstellungstoken, um einen idempotenten Vorgang sicherzustellen (der Aufruf des Vorgangs mit demselben Erstellungstoken hat keine Auswirkung). Um diese Anforderung zu erfüllen, müssen Sie mithilfe einer verfügbaren Technik ein eindeutiges Token generieren. Sie können beispielsweise einen Universally Unique Identifier (UUID) generieren, um ihn als Erstellungstoken zu verwenden. | AWS-Systemadministrator | 
| Erstellen Sie ein Amazon EFS-Dateisystem. | Erstellen Sie das Dateisystem für den Empfang der Datendateien, die von den Anwendungsworkloads gelesen und geschrieben werden. Sie können ein verschlüsseltes oder ein unverschlüsseltes Dateisystem erstellen. (Es hat sich bewährt, dass der Code für dieses Muster ein verschlüsseltes System erstellt, sodass die Verschlüsselung im Ruhezustand standardmäßig aktiviert ist.) Sie können einen eindeutigen, symmetrischen AWS-KMS-Schlüssel verwenden, um Ihr Dateisystem zu verschlüsseln. Wenn kein benutzerdefinierter Schlüssel angegeben ist, wird ein von AWS verwalteter Schlüssel verwendet.Verwenden Sie das Skript create-efs.sh, um ein verschlüsseltes oder unverschlüsseltes Amazon EFS-Dateisystem zu erstellen, nachdem Sie ein eindeutiges Token für Amazon EFS generiert haben.**Mit Verschlüsselung im Ruhezustand, ohne KMS-Schlüssel:**<pre>./scripts/epic02/create-efs.sh \<br />    -c "$CLUSTER_NAME" \<br />    -t "$EFS_CREATION_TOKEN"</pre>wo `$CLUSTER_NAME` ist der Name Ihres Amazon EKS-Clusters und `$EFS_CREATION_TOKEN` ist ein eindeutiges Erstellungstoken für das Dateisystem.**Mit Verschlüsselung im Ruhezustand, mit einem KMS-Schlüssel:**<pre>./scripts/epic02/create-efs.sh \<br />    -c "$CLUSTER_NAME" \<br />    -t "$EFS_CREATION_TOKEN" \<br />    -k "$KMS_KEY_ALIAS"</pre>wobei `$CLUSTER_NAME` der Name Ihres Amazon EKS-Clusters, `$EFS_CREATION_TOKEN` ein eindeutiges Erstellungstoken für das Dateisystem und der Alias für den KMS-Schlüssel `$KMS_KEY_ALIAS` ist.**Ohne Verschlüsselung:**<pre>./scripts/epic02/create-efs.sh -d \<br />    -c "$CLUSTER_NAME" \<br />    -t "$EFS_CREATION_TOKEN"</pre>wobei `$CLUSTER_NAME` der Name Ihres Amazon EKS-Clusters `$EFS_CREATION_TOKEN` steht, ein eindeutiges Erstellungstoken für das Dateisystem ist und die Verschlüsselung im Ruhezustand `–d` deaktiviert. | AWS-Systemadministrator | 
| Erstellen einer Sicherheitsgruppe. | Erstellen Sie eine Sicherheitsgruppe, um dem Amazon EKS-Cluster den Zugriff auf das Amazon EFS-Dateisystem zu ermöglichen. | AWS-Systemadministrator | 
| Aktualisieren Sie die Regel für eingehende Nachrichten für die Sicherheitsgruppe. | Aktualisieren Sie die Regeln für eingehenden Datenverkehr der Sicherheitsgruppe, um eingehenden Datenverkehr für die folgenden Einstellungen zuzulassen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate.html) | AWS-Systemadministrator | 
| Fügen Sie für jedes private Subnetz ein Mount-Ziel hinzu. | Erstellen Sie für jedes private Subnetz des Kubernetes-Clusters ein Mount-Ziel für das Dateisystem und die Sicherheitsgruppe. | AWS-Systemadministrator | 

### Installieren Sie Amazon EFS-Komponenten im Kubernetes-Cluster
<a name="install-amazon-efs-components-into-the-kubernetes-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie den Amazon EFS CSI-Treiber bereit. | Stellen Sie den Amazon EFS CSI-Treiber im Cluster bereit. Der Treiber stellt Speicher entsprechend den von Anwendungen generierten persistenten Volume-Ansprüchen bereit. Führen Sie das `create-k8s-efs-csi-sc.sh` Skript aus, um den Amazon EFS CSI-Treiber und die Speicherklasse im Cluster bereitzustellen.<pre>./scripts/epic03/create-k8s-efs-csi-sc.sh</pre>Dieses Skript verwendet das `kubectl` Hilfsprogramm. Stellen Sie also sicher, dass der Kontext konfiguriert wurde, und verweisen Sie auf den gewünschten Amazon EKS-Cluster. | Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Stellen Sie die Speicherklasse bereit. | Stellen Sie die Speicherklasse im Cluster für den Amazon EFS-Provisioner bereit (efs.csi.aws.com). | Kubernetes-Benutzer mit erteilten Berechtigungen | 

### Installieren Sie die PoC-Anwendung im Kubernetes-Cluster
<a name="install-the-poc-application-into-the-kubernetes-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie das persistente Volume bereit. | Stellen Sie das persistente Volume bereit und verknüpfen Sie es mit der erstellten Speicherklasse und der ID des Amazon EFS-Dateisystems. Die Anwendung verwendet das persistente Volume zum Lesen und Schreiben von Inhalten. Sie können eine beliebige Größe für das persistente Volumen im Speicherfeld angeben. Kubernetes erfordert dieses Feld, aber da Amazon EFS ein elastisches Dateisystem ist, erzwingt es keine Dateisystemkapazität. Sie können das persistente Volume mit oder ohne Verschlüsselung bereitstellen. (Der Amazon EFS CSI-Treiber aktiviert standardmäßig die Verschlüsselung als bewährte Methode.) Führen Sie das `deploy-poc-app.sh` Skript aus, um das persistente Volume, den Anspruch auf persistente Volumes und die beiden Workloads bereitzustellen.**Bei Verschlüsselung während der Übertragung:**<pre>./scripts/epic04/deploy-poc-app.sh \<br />    -t "$EFS_CREATION_TOKEN"</pre>wo `$EFS_CREATION_TOKEN` ist das eindeutige Erstellungstoken für das Dateisystem.**Ohne Verschlüsselung bei der Übertragung:**<pre>./scripts/epic04/deploy-poc-app.sh -d \<br />    -t "$EFS_CREATION_TOKEN"</pre>wo `$EFS_CREATION_TOKEN` ist das eindeutige Erstellungstoken für das Dateisystem und `–d` deaktiviert die Verschlüsselung bei der Übertragung. | Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Stellen Sie den von der Anwendung angeforderten Anspruch auf persistentes Volumen bereit. | Stellen Sie den von der Anwendung angeforderten Anspruch auf beständiges Volumen bereit und verknüpfen Sie ihn mit der Speicherklasse. Verwenden Sie denselben Zugriffsmodus wie das persistente Volume, das Sie zuvor erstellt haben. Sie können im Speicherfeld eine beliebige Größe für den Anspruch auf persistentes Volumen angeben. Kubernetes erfordert dieses Feld, aber da Amazon EFS ein elastisches Dateisystem ist, erzwingt es keine Dateisystemkapazität. | Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Stellen Sie Workload 1 bereit. | Stellen Sie den Pod bereit, der Workload 1 der Anwendung darstellt. Dieser Workload schreibt Inhalt in die Datei`/data/out1.txt`. | Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Stellen Sie Workload 2 bereit. | Stellen Sie den Pod bereit, der Workload 2 der Anwendung darstellt. Dieser Workload schreibt Inhalt in die Datei`/data/out2.txt`. | Kubernetes-Benutzer mit erteilten Berechtigungen | 

### Überprüfen Sie die Persistenz, Haltbarkeit und gemeinsame Nutzung des Dateisystems
<a name="validate-file-system-persistence-durability-and-shareability"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie den Status von`PersistentVolume`. | Geben Sie den folgenden Befehl ein, um den Status von zu überprüfen`PersistentVolume`.<pre>kubectl get pv</pre>Eine Beispielausgabe finden Sie im Abschnitt [Zusätzliche Informationen](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-additional). | Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Überprüfen Sie den Status von. `PersistentVolumeClaim` | Geben Sie den folgenden Befehl ein, um den Status von zu überprüfen`PersistentVolumeClaim`.<pre>kubectl -n poc-efs-eks-fargate get pvc</pre>Eine Beispielausgabe finden Sie im Abschnitt [Zusätzliche Informationen](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-additional). | Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Stellen Sie sicher, dass Workload 1 in das Dateisystem schreiben kann. | Geben Sie den folgenden Befehl ein, um zu überprüfen, ob Workload 1 schreibt`/data/out1.txt`.<pre>kubectl exec -ti poc-app1 -n poc-efs-eks-fargate -- tail -f /data/out1.txt</pre>Die Ergebnisse ähneln den folgenden:<pre>...<br />Thu Sep  3 15:25:07 UTC 2023 - PoC APP 1<br />Thu Sep  3 15:25:12 UTC 2023 - PoC APP 1<br />Thu Sep  3 15:25:17 UTC 2023 - PoC APP 1<br />...</pre> | Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Stellen Sie sicher, dass Workload 2 in das Dateisystem schreiben kann. | Geben Sie den folgenden Befehl ein, um zu überprüfen, ob Workload 2 schreibt`/data/out2.txt`.<pre>kubectl -n $APP_NAMESPACE exec -ti poc-app2 -- tail -f /data/out2.txt</pre>Die Ergebnisse ähneln den folgenden:<pre>...<br />Thu Sep  3 15:26:48 UTC 2023 - PoC APP 2<br />Thu Sep  3 15:26:53 UTC 2023 - PoC APP 2<br />Thu Sep  3 15:26:58 UTC 2023 - PoC APP 2<br />...</pre> | Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Stellen Sie sicher, dass Workload 1 die von Workload 2 geschriebene Datei lesen kann. | Geben Sie den folgenden Befehl ein, um zu überprüfen, ob Workload 1 die von Workload 2 geschriebene `/data/out2.txt` Datei lesen kann.<pre>kubectl exec -ti poc-app1 -n poc-efs-eks-fargate -- tail -n 3 /data/out2.txt</pre>Die Ergebnisse ähneln den folgenden:<pre>...<br />Thu Sep  3 15:26:48 UTC 2023 - PoC APP 2<br />Thu Sep  3 15:26:53 UTC 2023 - PoC APP 2<br />Thu Sep  3 15:26:58 UTC 2023 - PoC APP 2<br />...</pre> | Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Stellen Sie sicher, dass Workload 2 die von Workload 1 geschriebene Datei lesen kann. | Geben Sie den folgenden Befehl ein, um zu überprüfen, ob Workload 2 die von Workload 1 geschriebene `/data/out1.txt` Datei lesen kann.<pre>kubectl -n $APP_NAMESPACE exec -ti poc-app2 -- tail -n 3 /data/out1.txt</pre>Die Ergebnisse ähneln den folgenden:<pre>...<br />Thu Sep  3 15:29:22 UTC 2023 - PoC APP 1<br />Thu Sep  3 15:29:27 UTC 2023 - PoC APP 1<br />Thu Sep  3 15:29:32 UTC 2023 - PoC APP 1<br />...</pre> | Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Stellen Sie sicher, dass Dateien nach dem Entfernen von Anwendungskomponenten beibehalten werden. | Als Nächstes verwenden Sie ein Skript, um die Anwendungskomponenten (persistentes Volume, Persistentes Volume Claim und Pods) zu entfernen und zu überprüfen, ob die Dateien `/data/out1.txt` im Dateisystem aufbewahrt `/data/out2.txt` werden. Führen Sie das Skript `validate-efs-content.sh` mit dem folgenden Befehl aus.<pre>./scripts/epic05/validate-efs-content.sh \<br />    -t "$EFS_CREATION_TOKEN"</pre>wo `$EFS_CREATION_TOKEN` ist das eindeutige Erstellungstoken für das Dateisystem.Die Ergebnisse ähneln den folgenden:<pre>pod/poc-app-validation created<br />Waiting for pod get Running state...<br />Waiting for pod get Running state...<br />Waiting for pod get Running state...<br />Results from execution of 'find /data' on validation process pod:<br />/data<br />/data/out2.txt<br />/data/out1.txt</pre> | Kubernetes-Benutzer mit erteilten Berechtigungen, Systemadministrator | 

### Überwachen Sie den Betrieb
<a name="monitor-operations"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überwachen Sie Anwendungsprotokolle. | Senden Sie die Anwendungsprotokolle im Rahmen eines Vorgangs am zweiten Tag CloudWatch zur Überwachung an Amazon. | AWS-Systemadministrator, Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Überwachen Sie Amazon EKS- und Kubernetes-Container mit Container Insights. | Überwachen Sie im Rahmen eines Vorgangs am zweiten Tag die Amazon EKS- und Kubernetes-Systeme mithilfe von Amazon CloudWatch Container Insights. Dieses Tool sammelt, aggregiert und fasst Metriken aus containerisierten Anwendungen auf verschiedenen Ebenen und Dimensionen zusammen. [Weitere Informationen finden Sie im Abschnitt Verwandte Ressourcen.](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-resources) | AWS-Systemadministrator, Kubernetes-Benutzer mit erteilten Berechtigungen | 
| Überwachen Sie Amazon EFS mit CloudWatch. | Überwachen Sie im Rahmen eines Vorgangs am zweiten Tag die Dateisysteme mithilfe von Amazon CloudWatch, das Rohdaten von Amazon EFS sammelt und zu lesbaren Metriken nahezu in Echtzeit verarbeitet. Weitere Informationen finden Sie im Abschnitt [Verwandte Ressourcen](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-resources). | AWS-Systemadministrator | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereinigen Sie alle erstellten Ressourcen für das Muster. | Nachdem Sie dieses Muster abgeschlossen haben, bereinigen Sie alle Ressourcen, um zu vermeiden, dass AWS-Gebühren anfallen. Führen Sie das `clean-up-resources.sh` Skript aus, um alle Ressourcen zu entfernen, nachdem Sie die PoC-Anwendung nicht mehr verwendet haben. Füllen Sie eine der folgenden Optionen aus.**Mit Verschlüsselung im Ruhezustand, mit einem KMS-Schlüssel:**<pre>./scripts/epic06/clean-up-resources.sh \<br />    -c "$CLUSTER_NAME" \<br />    -t "$EFS_CREATION_TOKEN" \<br />    -k "$KMS_KEY_ALIAS"</pre>wobei `$CLUSTER_NAME` der Name Ihres Amazon EKS-Clusters, `$EFS_CREATION_TOKEN` das Erstellungstoken für das Dateisystem und der Alias für den KMS-Schlüssel `$KMS_KEY_ALIAS` ist.**Ohne Verschlüsselung im Ruhezustand:**<pre>./scripts/epic06/clean-up-resources.sh \<br />    -c "$CLUSTER_NAME" \<br />    -t "$EFS_CREATION_TOKEN"</pre>wobei `$CLUSTER_NAME` der Name Ihres Amazon EKS-Clusters und das Erstellungstoken für das Dateisystem `$EFS_CREATION_TOKEN` ist. | Kubernetes-Benutzer mit erteilten Berechtigungen, Systemadministrator | 

## Zugehörige Ressourcen
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-resources"></a>

**Referenzen**
+ [AWS Fargate für Amazon EKS unterstützt jetzt Amazon EFS](https://aws.amazon.com/blogs/aws/new-aws-fargate-for-amazon-eks-now-supports-amazon-efs/) (Ankündigung)
+ [So erfassen Sie Anwendungsprotokolle bei der Verwendung von Amazon EKS auf AWS Fargate](https://aws.amazon.com/blogs/containers/how-to-capture-application-logs-when-using-amazon-eks-on-aws-fargate/) (Blogbeitrag)
+ [Verwenden von Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html) ( CloudWatch Amazon-Dokumentation)
+ [Container Insights auf Amazon EKS und Kubernetes einrichten](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/deploy-container-insights-EKS.html) ( CloudWatch Amazon-Dokumentation)
+ [Kennzahlen zu Amazon EKS und Kubernetes Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-EKS.html) ( CloudWatch Amazon-Dokumentation)
+ [Überwachung von Amazon EFS mit Amazon CloudWatch](https://docs.aws.amazon.com/efs/latest/ug/monitoring-cloudwatch.html) (Amazon EFS-Dokumentation)

**GitHub Tutorials und Beispiele**
+ [Statische Bereitstellung](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/static_provisioning/README.md)
+ [Verschlüsselung während der Übertragung](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/encryption_in_transit/README.md)
+ [Zugriff auf das Dateisystem von mehreren Pods aus](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/multiple_pods/README.md)
+ [Nutzung von Amazon EFS in StatefulSets](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/statefulset/README.md)
+ [Unterpfade werden eingebunden](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/volume_path/README.md)
+ [Verwenden von Amazon EFS-Zugriffspunkten](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/access_points/README.md)
+ [Amazon EKS Blueprints für Terraform](https://aws-ia.github.io/terraform-aws-eks-blueprints/)

**Erforderliche Tools**
+ [Installation der AWS-CLI Version 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)
+ [Installation von eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html)
+ [Kubectl wird installiert](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)
+ [jq installieren](https://stedolan.github.io/jq/download/)

## Zusätzliche Informationen
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-additional"></a>

Im Folgenden finden Sie ein Beispiel für die Ausgabe des `kubectl get pv` Befehls.

```
NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                             STORAGECLASS   REASON   AGE
poc-app-pv   1Mi        RWX            Retain           Bound    poc-efs-eks-fargate/poc-app-pvc   efs-sc                  3m56s
```

Im Folgenden finden Sie ein Beispiel für die Ausgabe des `kubectl -n poc-efs-eks-fargate get pvc` Befehls.

```
NAME          STATUS   VOLUME       CAPACITY   ACCESS MODES   STORAGECLASS   AGE
poc-app-pvc   Bound    poc-app-pv   1Mi        RWX            efs-sc         4m34s
```

# Richten Sie ereignisgesteuertes Auto Scaling in Amazon EKS mithilfe von Amazon EKS Pod Identity und KEDA ein
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda"></a>

*Dipen Desai, Abhay Diwan, Kamal Joshi und Mahendra Revanasiddappa, Amazon Web Services*

## Zusammenfassung
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-summary"></a>

Orchestrierungsplattformen wie [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) haben das Lebenszyklusmanagement containerbasierter Anwendungen optimiert. Dies hilft Unternehmen, sich auf die Entwicklung, Sicherung, den Betrieb und die Wartung containerbasierter Anwendungen zu konzentrieren. Da ereignisgesteuerte Bereitstellungen immer häufiger vorkommen, skalieren Unternehmen Kubernetes-Bereitstellungen immer häufiger auf der Grundlage verschiedener Ereignisquellen. Diese Methode kann in Kombination mit Auto Scaling zu erheblichen Kosteneinsparungen führen, da Rechenressourcen auf Abruf und eine effiziente Skalierung bereitgestellt werden, die auf die Anwendungslogik zugeschnitten ist.

[KEDA](https://keda.sh/) ist ein auf Kubernetes basierender ereignisgesteuerter Autoscaler. KEDA hilft Ihnen dabei, jeden Container in Kubernetes auf der Grundlage der Anzahl der Ereignisse, die verarbeitet werden müssen, zu skalieren. Es ist leicht und lässt sich in jeden Kubernetes-Cluster integrieren. Es funktioniert auch mit Standard-Kubernetes-Komponenten wie [Horizontal Pod Autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) (HPA). KEDA bietet auch eine Funktion [TriggerAuthentication](https://keda.sh/docs/2.14/concepts/authentication/#re-use-credentials-and-delegate-auth-with-triggerauthentication), mit der Sie die Authentifizierung delegieren können. Es ermöglicht Ihnen, Authentifizierungsparameter zu beschreiben, die von den Containern ScaledObject und den Bereitstellungscontainern getrennt sind.

AWS bietet AWS Identity and Access Management (IAM) -Rollen, die verschiedene Kubernetes-Bereitstellungsoptionen unterstützen, darunter Amazon EKS, Amazon EKS Anywhere Red Hat OpenShift Service in AWS (ROSA) und selbstverwaltete Kubernetes-Cluster auf Amazon Elastic Compute Cloud (Amazon). EC2 Diese Rollen verwenden IAM-Konstrukte wie OpenID Connect (OIDC) -Identitätsanbieter und IAM-Vertrauensrichtlinien, um in verschiedenen Umgebungen zu arbeiten, ohne sich direkt auf Amazon EKS-Services oder verlassen zu müssen. APIs Weitere Informationen finden Sie unter [IAM-Rollen für Dienstkonten](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) in der Amazon EKS-Dokumentation.

[Amazon EKS Pod Identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html) vereinfacht den Prozess, bei dem Kubernetes-Servicekonten IAM-Rollen übernehmen können, ohne dass OIDC-Anbieter erforderlich sind. Es bietet die Möglichkeit, Anmeldeinformationen für Ihre Anwendungen zu verwalten. Anstatt Ihre AWS Anmeldeinformationen zu erstellen und an die Container zu verteilen oder die Rolle der EC2 Amazon-Instance zu verwenden, verknüpfen Sie eine IAM-Rolle mit einem Kubernetes-Dienstkonto und konfigurieren Ihre Pods so, dass sie das Dienstkonto verwenden. Dies hilft Ihnen, eine IAM-Rolle in mehreren Clustern zu verwenden, und vereinfacht die Richtlinienverwaltung, indem die Wiederverwendung von Berechtigungsrichtlinien für alle IAM-Rollen ermöglicht wird.

Durch die Implementierung von KEDA mit Amazon EKS Pod Identity können Unternehmen eine effiziente ereignisgesteuerte auto Skalierung und eine vereinfachte Verwaltung von Anmeldeinformationen erreichen. Anwendungen werden je nach Bedarf skaliert, wodurch die Ressourcennutzung optimiert und die Kosten gesenkt werden.

Dieses Muster hilft Ihnen bei der Integration von Amazon EKS Pod Identity in KEDA. Es zeigt, wie Sie das `keda-operator` Dienstkonto verwenden und die Authentifizierung delegieren können. `TriggerAuthentication` Außerdem wird beschrieben, wie eine Vertrauensbeziehung zwischen einer IAM-Rolle für den KEDA-Operator und einer IAM-Rolle für die Anwendung eingerichtet wird. Diese Vertrauensbeziehung ermöglicht es KEDA, Nachrichten in den Ereigniswarteschlangen zu überwachen und die Skalierung für die Kubernetes-Zielobjekte anzupassen.

## Voraussetzungen und Einschränkungen
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-prereqs"></a>

**Voraussetzungen**
+ AWS Command Line Interface [(AWS CLI) Version 2.13.17 oder höher, installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ [Python-Version 3.11.5 oder höher, installiert](https://www.python.org/downloads/)
+ AWS SDK für Python (Boto3) [Version 1.34.135 oder höher, installiert](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)
+ [Helm Version 3.12.3 oder höher, installiert](https://helm.sh/docs/intro/install/)
+ [kubectl Version 1.25.1 oder höher, installiert](https://kubernetes.io/docs/tasks/tools/)
+ [Docker Engine Version 26.1.1 oder höher, installiert](https://docs.docker.com/engine/install/)
+ [Ein Amazon EKS-Cluster Version 1.24 oder höher, erstellt](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)
+ Voraussetzungen für die Erstellung des Amazon EKS Pod Identity-Agenten, [erfüllt](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html#pod-id-agent-add-on-create)

**Einschränkungen**
+ Es ist erforderlich, dass Sie eine Vertrauensbeziehung zwischen der `keda-operator` Rolle und der `keda-identity` Rolle einrichten. Anweisungen finden Sie im Abschnitt [Epen](#event-driven-auto-scaling-with-eks-pod-identity-and-keda-epics) dieses Musters.

## Architektur
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-architecture"></a>

In diesem Muster erstellen Sie die folgenden AWS Ressourcen:
+ **Amazon Elastic Container Registry (Amazon ECR) -Repository** — In diesem Muster wird dieses Repo benannt. `keda-pod-identity-registry` Dieses private Repo wird zum Speichern von Docker-Images der Beispielanwendung verwendet.
+ **Amazon Simple Queue Service (Amazon SQS) -Warteschlange** — In diesem Muster wird diese Warteschlange benannt`event-messages-queue`. Die Warteschlange fungiert als Nachrichtenpuffer, der eingehende Nachrichten sammelt und speichert. KEDA überwacht die Warteschlangenmetriken, z. B. die Anzahl der Nachrichten oder die Länge der Warteschlange, und skaliert die Anwendung automatisch auf der Grundlage dieser Messwerte.
+ **IAM-Rolle für die Anwendung** — In diesem Muster wird diese Rolle benannt. `keda-identity` Die `keda-operator` Rolle übernimmt diese Rolle. Diese Rolle ermöglicht den Zugriff auf die Amazon SQS SQS-Warteschlange.
+ **IAM-Rolle für den KEDA-Operator** — In diesem Muster wird diese Rolle benannt. `keda-operator` Der KEDA-Operator verwendet diese Rolle, um die erforderlichen AWS API-Aufrufe durchzuführen. Diese Rolle ist berechtigt, die `keda-identity` Rolle zu übernehmen. Aufgrund der Vertrauensstellung zwischen den Rollen `keda-operator` und den `keda-identity` Rollen verfügt die `keda-operator` Rolle über Amazon SQS SQS-Berechtigungen.

Über die benutzerdefinierten Ressourcen `TriggerAuthentication` und `ScaledObject` Kubernetes verwendet der Operator die `keda-identity` Rolle, um eine Verbindung mit einer Amazon SQS SQS-Warteschlange herzustellen. Basierend auf der Größe der Warteschlange skaliert KEDA die Anwendungsbereitstellung automatisch. Es fügt 1 Pod für jeweils 5 ungelesene Nachrichten in der Warteschlange hinzu. Wenn sich in der Standardkonfiguration keine ungelesenen Nachrichten in der Amazon SQS SQS-Warteschlange befinden, wird die Anwendung auf 0 Pods herunterskaliert. Der KEDA-Operator überwacht die Warteschlange in einem von Ihnen festgelegten Intervall.

 

Die folgende Abbildung zeigt, wie Sie Amazon EKS Pod Identity verwenden, um der `keda-operator` Rolle sicheren Zugriff auf die Amazon SQS SQS-Warteschlange zu gewähren.

![\[Verwendung von KEDA und Amazon EKS Pod Identity zur automatischen Skalierung einer Kubernetes-basierten Anwendung.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/56f7506d-e8d3-43e5-bec6-42267fedd0ae/images/05bdbd09-9eb8-4c0b-8c0d-efe38aecb683.png)


Das Diagramm zeigt den folgenden Workflow:

1. Sie installieren den Amazon EKS Pod Identity-Agenten im Amazon EKS-Cluster.

1. Sie stellen den KEDA-Operator im KEDA-Namespace im Amazon EKS-Cluster bereit.

1. Sie erstellen die Rollen `keda-operator` und `keda-identity` IAM im Ziel. AWS-Konto

1. Sie stellen eine Vertrauensbeziehung zwischen den IAM-Rollen her.

1. Sie stellen die Anwendung im `security` Namespace bereit.

1. Der KEDA-Operator fragt Nachrichten in einer Amazon SQS SQS-Warteschlange ab.

1. KEDA initiiert HPA, wodurch die Anwendung automatisch auf der Grundlage der Warteschlangengröße skaliert wird.

## Tools
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-tools"></a>

**AWS-Services**
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.

**Andere Tools**
+ [KEDA](https://keda.sh/) ist ein auf Kubernetes basierender ereignisgesteuerter Autoscaler.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [Event-Driven Auto Scaling using EKS Pod Identity and KEDA](https://github.com/aws-samples/event-driven-autoscaling-using-podidentity-and-keda/tree/main) Repository verfügbar.

## Best Practices
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-best-practices"></a>

Wir empfehlen Ihnen, die ACM bewährte Methode für zu befolgen.
+ [Bewährte Methoden für Amazon EKS](https://docs.aws.amazon.com/eks/latest/best-practices/introduction.html)
+ [Bewährte Methoden für die Sicherheit in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)
+ [Bewährte Methoden für Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-best-practices.html)

## Epen
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-epics"></a>

### Ressourcen erstellen AWS
<a name="create-aws-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die IAM-Rolle für den KEDA-Operator. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | AWS-Administrator | 
| Erstellen Sie die IAM-Rolle für die Beispielanwendung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | AWS-Administrator | 
| Erstellen einer Amazon SQS-Warteschlange | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | Allgemeines AWS | 
| Erstellen Sie ein Amazon-ECR-Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | Allgemeines AWS | 

### Den Amazon EKS-Cluster einrichten
<a name="set-up-the-eks-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie den Amazon EKS Pod Identity-Agenten bereit. | Richten Sie für den Amazon EKS-Zielcluster den Amazon EKS Pod Identity-Agenten ein. Folgen Sie den Anweisungen unter [Amazon EKS Pod Identity Agent einrichten](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html#pod-id-agent-add-on-create) in der Amazon EKS-Dokumentation. | AWS DevOps | 
| Stellen Sie KEDA bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps Ingenieur | 
| Weisen Sie dem Kubernetes-Dienstkonto die IAM-Rolle zu. | Folgen Sie den Anweisungen unter [Zuweisen einer IAM-Rolle zu einem Kubernetes-Servicekonto](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-association.html) in der Amazon EKS-Dokumentation. Verwenden Sie die folgenden Werte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | AWS DevOps | 
| Erstellen Sie einen -Namespace. | Geben Sie den folgenden Befehl ein, um einen `security` Namespace im Amazon EKS-Zielcluster zu erstellen:<pre>kubectl create ns security</pre> | DevOps Ingenieur | 

### Bereitstellen der Beispielanwendung
<a name="deploy-the-sample-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie die Anwendungsdateien. | Geben Sie den folgenden Befehl ein, um die [ereignisgesteuerte auto Skalierung mithilfe von EKS Pod Identity und dem KEDA-Repository](https://github.com/aws-samples/event-driven-autoscaling-using-podidentity-and-keda/tree/main) von zu klonen: GitHub<pre>git clone https://github.com/aws-samples/event-driven-autoscaling-using-podidentity-and-keda.git</pre> | DevOps Ingenieur | 
| Erstellen Sie das Docker-Image. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps Ingenieur | 
| Senden Sie das Docker-Image an Amazon ECR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html)Sie finden Push-Befehle, indem Sie zur Amazon ECR-Repository-Seite navigieren und dann **Push-Befehle anzeigen** wählen. | DevOps Ingenieur | 
| Stellen Sie die Beispielanwendung bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps Ingenieur | 
| Weisen Sie dem Anwendungsdienstkonto die IAM-Rolle zu. | Gehen Sie wie folgt vor, um die `keda-identity` IAM-Rolle dem Dienstkonto für die Beispielanwendung zuzuordnen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps Ingenieur | 
| Bereitstellen `ScaledObject` und`TriggerAuthentication`. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps Ingenieur | 

### Testen Sie die auto Skalierung
<a name="test-auto-scaling"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Senden Sie Nachrichten an die Amazon SQS SQS-Warteschlange. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps Ingenieur | 
| Überwachen Sie die Anwendungs-Pods. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | DevOps Ingenieur | 

## Fehlerbehebung
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Der KEDA-Operator kann die Anwendung nicht skalieren. | Geben Sie den folgenden Befehl ein, um die Protokolle der `keda-operator` IAM-Rolle zu überprüfen:<pre>kubectl logs -n keda -l app=keda-operator -c keda-operator</pre> Wenn es einen `HTTP 403` Antwortcode gibt, verfügen die Anwendung und der KEDA-Scaler nicht über ausreichende Berechtigungen, um auf die Amazon SQS SQS-Warteschlange zuzugreifen. Führen Sie folgende Schritte aus:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html)Wenn ein `Assume-Role` Fehler auftritt, kann eine [Amazon EKS-Knoten-IAM-Rolle](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) die IAM-Rolle, für die definiert ist, nicht übernehmen. `TriggerAuthentication` Führen Sie folgende Schritte aus:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/event-driven-auto-scaling-with-eks-pod-identity-and-keda.html) | 

## Zugehörige Ressourcen
<a name="event-driven-auto-scaling-with-eks-pod-identity-and-keda-resources"></a>
+ [Den Amazon EKS Pod Identity Agent einrichten](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html) (Amazon EKS-Dokumentation)
+ [Bereitstellung von KEDA](https://keda.sh/docs/2.14/deploy/) (KEDA-Dokumentation)
+ [ScaledObject Spezifikation](https://keda.sh/docs/2.16/reference/scaledobject-spec/) (KEDA-Dokumentation)
+ [Authentifizierung mit TriggerAuthentication](https://keda.sh/docs/2.14/concepts/authentication/) (KEDA-Dokumentation)

# Optimieren Sie PostgreSQL-Bereitstellungen auf Amazon EKS mithilfe von PGO
<a name="streamline-postgresql-deployments-amazon-eks-pgo"></a>

*Shalaka Dengale, Amazon Web Services*

## Zusammenfassung
<a name="streamline-postgresql-deployments-amazon-eks-pgo-summary"></a>

Dieses Muster integriert den Postgres-Operator von Crunchy Data (PGO) mit Amazon Elastic Kubernetes Service (Amazon EKS), um PostgreSQL-Bereitstellungen in cloudnativen Umgebungen zu optimieren. PGO bietet Automatisierung und Skalierbarkeit für die Verwaltung von PostgreSQL-Datenbanken in Kubernetes. Wenn Sie PGO mit Amazon EKS kombinieren, bildet es eine robuste Plattform für die effiziente Bereitstellung, Verwaltung und Skalierung von PostgreSQL-Datenbanken.

Diese Integration bietet die folgenden Hauptvorteile:
+ Automatisierte Bereitstellung: Vereinfacht die Bereitstellung und Verwaltung von PostgreSQL-Clustern.
+ Benutzerdefinierte Ressourcendefinitionen (CRDs):**** Verwendet Kubernetes-Primitive für das PostgreSQL-Management.
+ Hohe Verfügbarkeit: Unterstützt automatisches Failover und synchrone Replikation.
+ Automatisierte Backups und Wiederherstellungen:**** Optimiert Sicherungs- und Wiederherstellungsprozesse.
+ Horizontale Skalierung:**** Ermöglicht die dynamische Skalierung von PostgreSQL-Clustern.
+ Versionsupgrades: Ermöglicht fortlaufende Upgrades mit minimalen Ausfallzeiten.
+ Sicherheit: Erzwingt Verschlüsselungs-, Zugriffskontrollen und Authentifizierungsmechanismen.

## Voraussetzungen und Einschränkungen
<a name="streamline-postgresql-deployments-amazon-eks-pgo-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ [AWS-Befehlszeilenschnittstelle (AWS CLI) Version 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html), installiert und konfiguriert unter Linux, macOS oder Windows.
+ [AWS CLI Config](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html), um AWS Ressourcen über die Befehlszeile zu verbinden.
+ [eksctl](https://github.com/eksctl-io/eksctl#installation), installiert und konfiguriert unter Linux, MacOS oder Windows.
+ `kubectl`, installiert und konfiguriert für den Zugriff auf Ressourcen in Ihrem Amazon EKS-Cluster. Weitere Informationen finden Sie unter [Kubectl und eksctl einrichten in der Amazon EKS-Dokumentation](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html). 
+ Ihr Computerterminal ist für den Zugriff auf den Amazon EKS-Cluster konfiguriert. Weitere Informationen finden [Sie in der Amazon EKS-Dokumentation unter Konfiguration Ihres Computers für die Kommunikation mit Ihrem Cluster](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html#eks-configure-kubectl).

**Produktversionen**
+ [Kubernetes-Versionen 1.21—1.24 oder höher (siehe PGO-Dokumentation).](https://access.crunchydata.com/documentation/postgres-operator/5.2.5/)
+ PostgreSQL Version 10 oder höher. Dieses Muster verwendet PostgreSQL Version 16.

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen verfügbar. AWS-Regionen Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie auf der Seite [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="streamline-postgresql-deployments-amazon-eks-pgo-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon EKS
+ Amazon Virtual Private Cloud (Amazon VPC)
+ Amazon Elastic Compute Cloud (Amazon EC2)

**Zielarchitektur**

![\[Architektur für die Verwendung von PGO mit drei Availability Zones und zwei Replikaten sowie PgBouncer PGO-Operator.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/4c164012-7527-4ebe-b6a7-c129600328d6/images/26a5572b-405b-4634-b96a-91254c3ea2c1.png)


Dieses Muster erstellt eine Architektur, die einen Amazon EKS-Cluster mit drei Knoten enthält. Jeder Knoten läuft auf einer Reihe von EC2 Instances im Backend. Dieses PostgreSQL-Setup folgt einer primären Replikatarchitektur, die besonders für leseintensive Anwendungsfälle effektiv ist. Die Architektur umfasst die folgenden Komponenten:
+ Der **primäre Datenbankcontainer (pg-primary)** hostet die PostgreSQL-Hauptinstanz, an die alle Schreibvorgänge gerichtet sind.
+ **Sekundäre Replikatcontainer (pg-replica)** hosten die PostgreSQL-Instanzen, die die Daten aus der Primärdatenbank replizieren und Lesevorgänge abwickeln.
+ **PgBouncer**ist ein leichter Verbindungspooler für PostgreSQL-Datenbanken, der in PGO enthalten ist. Es befindet sich zwischen dem Client und dem PostgreSQL-Server und fungiert als Vermittler für Datenbankverbindungen.
+ **PGO** automatisiert die Bereitstellung und Verwaltung von PostgreSQL-Clustern in dieser Kubernetes-Umgebung.
+ **Patroni** ist ein Open-Source-Tool, das Hochverfügbarkeitskonfigurationen für PostgreSQL verwaltet und automatisiert. Es ist in PGO enthalten. Wenn Sie Patroni mit PGO in Kubernetes verwenden, spielt dies eine entscheidende Rolle bei der Sicherstellung der Widerstandsfähigkeit und Fehlertoleranz eines PostgreSQL-Clusters. [Weitere Informationen finden Sie in der Patroni-Dokumentation.](https://patroni.readthedocs.io/en/latest/)

Der Workflow umfasst die folgenden Schritte:
+ **Stellen Sie den PGO-Operator** bereit. Sie stellen den PGO-Operator auf Ihrem Kubernetes-Cluster bereit, der auf Amazon EKS läuft. Dies kann mithilfe von Kubernetes-Manifesten oder Helm-Diagrammen erfolgen. Dieses Muster verwendet Kubernetes-Manifeste.
+ **Definieren Sie PostgreSQL-Instanzen**. Wenn der Operator ausgeführt wird, erstellen Sie benutzerdefinierte Ressourcen (CRs), um den gewünschten Status von PostgreSQL-Instanzen anzugeben. Dazu gehören Konfigurationen wie Speicher-, Replikations- und Hochverfügbarkeitseinstellungen.
+ **Betreiberverwaltung**. Sie interagieren mit dem Operator über Kubernetes-API-Objekte, z. B. CRs um PostgreSQL-Instanzen zu erstellen, zu aktualisieren oder zu löschen.
+ **Überwachung und Wartung.** Sie können den Zustand und die Leistung der PostgreSQL-Instances überwachen, die auf Amazon EKS ausgeführt werden. Betreiber stellen häufig Metriken und Protokollierung zu Überwachungszwecken bereit. Sie können bei Bedarf routinemäßige Wartungsaufgaben wie Upgrades und Patches durchführen. Weitere Informationen finden Sie unter [Überwachen der Cluster-Leistung und Anzeigen von Protokollen](https://docs.aws.amazon.com/eks/latest/userguide/eks-observe.html) in der Amazon EKS-Dokumentation.
+ **Skalierung und Backup**: Sie können die vom Betreiber bereitgestellten Funktionen verwenden, um PostgreSQL-Instanzen zu skalieren und Backups zu verwalten.

Dieses Muster deckt keine Überwachungs-, Wartungs- und Sicherungsvorgänge ab.

**Automatisierung und Skalierung**
+ Sie können es verwenden CloudFormation , um die Erstellung der Infrastruktur zu automatisieren. Weitere Informationen finden Sie unter [Amazon EKS-Ressourcen erstellen mit CloudFormation](https://docs.aws.amazon.com/eks/latest/userguide/creating-resources-with-cloudformation.html) in der Amazon EKS-Dokumentation.
+ Sie können Build Numbers GitVersion oder Jenkins verwenden, um die Bereitstellung von Datenbank-Instances zu automatisieren.

## Tools
<a name="streamline-postgresql-deployments-amazon-eks-pgo-tools"></a>

**AWS-Services**
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.  
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell interagieren AWS-Services können.

**Andere Tools**
+ [eksctl](https://eksctl.io/) ist ein einfaches Befehlszeilentool zum Erstellen von Clustern auf Amazon EKS.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) ist ein Befehlszeilenprogramm zum Ausführen von Befehlen für Kubernetes-Cluster.
+ [PGO](https://github.com/CrunchyData/postgres-operator) automatisiert und skaliert die Verwaltung von PostgreSQL-Datenbanken in Kubernetes.

## Best Practices
<a name="streamline-postgresql-deployments-amazon-eks-pgo-best-practices"></a>

Folgen Sie diesen Best Practices, um eine reibungslose und effiziente Bereitstellung zu gewährleisten:
+ **Schützen Sie Ihren EKS-Cluster**. Implementieren Sie bewährte Sicherheitsmethoden für Ihren EKS-Cluster, z. B. die Verwendung von AWS Identity and Access Management (IAM-) Rollen für Dienstkonten (IRSA), Netzwerkrichtlinien und VPC-Sicherheitsgruppen. Beschränken Sie den Zugriff auf den EKS-Cluster-API-Server und verschlüsseln Sie die Kommunikation zwischen den Knoten und dem API-Server mithilfe von TLS.
+ **Stellen Sie die Versionskompatibilität** zwischen PGO und Kubernetes sicher, die auf Amazon EKS ausgeführt werden. Einige PGO-Funktionen erfordern möglicherweise bestimmte Kubernetes-Versionen oder führen zu Kompatibilitätseinschränkungen. Weitere Informationen finden Sie in der PGO-Dokumentation unter [Komponenten und Kompatibilität](https://access.crunchydata.com/documentation/postgres-operator/5.2.5/references/components/).
+ **Planen Sie die Ressourcenzuweisung** für Ihre PGO-Bereitstellung, einschließlich CPU, Arbeitsspeicher und Speicher. Berücksichtigen Sie die Ressourcenanforderungen sowohl von PGO als auch der von ihr verwalteten PostgreSQL-Instanzen. Überwachen Sie die Ressourcennutzung und skalieren Sie die Ressourcen nach Bedarf.
+ **Design für hohe Verfügbarkeit**. Gestalten Sie Ihre PGO-Bereitstellung für hohe Verfügbarkeit, um Ausfallzeiten zu minimieren und die Zuverlässigkeit zu gewährleisten. Stellen Sie aus Gründen der Fehlertoleranz mehrere PGO-Repliken in mehreren Availability Zones bereit.
+ **Implementieren Sie Sicherungs- und Wiederherstellungsverfahren** für Ihre von PGO verwalteten PostgreSQL-Datenbanken. Verwenden Sie Funktionen von PGO oder Backup-Lösungen von Drittanbietern, die mit Kubernetes und Amazon EKS kompatibel sind.
+ **Richten Sie die Überwachung und Protokollierung** für Ihre PGO-Bereitstellung ein, um Leistung, Zustand und Ereignisse zu verfolgen. Verwenden Sie Tools wie Prometheus für die Überwachung von Metriken und Grafana für die Visualisierung. Konfigurieren Sie die Protokollierung, um PGO-Protokolle zur Fehlerbehebung und Prüfung zu erfassen.
+ **Konfigurieren Sie das Netzwerk** ordnungsgemäß, um die Kommunikation zwischen PGO, PostgreSQL-Instanzen und anderen Diensten in Ihrem Kubernetes-Cluster zu ermöglichen. Verwenden Sie Amazon VPC-Netzwerkfunktionen und Kubernetes-Netzwerk-Plugins wie Calico oder [Amazon VPC CNI](https://github.com/aws/amazon-vpc-cni-k8s) für die Durchsetzung von Netzwerkrichtlinien und die Isolierung des Datenverkehrs.
+ **Wählen Sie geeignete Speicheroptionen** für Ihre PostgreSQL-Datenbanken aus und berücksichtigen Sie dabei Faktoren wie Leistung, Haltbarkeit und Skalierbarkeit. Verwenden Sie Amazon Elastic Block Store (Amazon EBS) -Volumes oder AWS verwaltete Speicherdienste für persistenten Speicher. Weitere Informationen finden Sie unter [Speichern von Kubernetes-Volumes mit Amazon EBS in der Amazon EKS-Dokumentation](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html).
+ **Verwenden Sie Infrastructure-as-Code-Tools (IaC)** CloudFormation , um beispielsweise die Bereitstellung und Konfiguration von PGO auf Amazon EKS zu automatisieren. Definieren Sie Infrastrukturkomponenten — einschließlich des EKS-Clusters, der Netzwerk- und PGO-Ressourcen — als Code, um Konsistenz, Wiederholbarkeit und Versionskontrolle zu gewährleisten.

## Epen
<a name="streamline-postgresql-deployments-amazon-eks-pgo-epics"></a>

### Erstellen einer IAM-Rolle
<a name="create-an-iam-role"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine IAM-Rolle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-postgresql-deployments-amazon-eks-pgo.html) | AWS-Administrator | 

### Amazon-EKS-Cluster erstellen
<a name="create-an-eks-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Amazon-EKS-Cluster. | Wenn Sie bereits einen Cluster bereitgestellt haben, überspringen Sie diesen Schritt. Andernfalls stellen Sie einen Amazon EKS-Cluster in Ihrem aktuellen mithilfe AWS-Konto `eksctl` von Terraform oder bereit. CloudFormation Dieses Muster wird `eksctl` für die Cluster-Bereitstellung verwendet.Dieses Muster verwendet Amazon EC2 als Knotengruppe für Amazon EKS. Wenn Sie es verwenden möchten AWS Fargate, sehen Sie sich die `managedNodeGroups` Konfiguration in der [eksctl-Dokumentation](https://eksctl.io/usage/schema/#managedNodeGroups) an.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-postgresql-deployments-amazon-eks-pgo.html) | AWS-Administrator, Terraform- oder eksctl-Administrator, Kubernetes-Administrator | 
| Überprüfen Sie den Status des Clusters. | Führen Sie den folgenden Befehl aus, um den aktuellen Status der Knoten im Cluster zu überprüfen:<pre>kubectl get nodes</pre>Wenn Sie auf Fehler stoßen, lesen Sie den [Abschnitt zur Fehlerbehebung](https://docs.aws.amazon.com/eks/latest/userguide/troubleshooting.html) in der Amazon EKS-Dokumentation. | AWS-Administrator, Terraform- oder eksctl-Administrator, Kubernetes-Administrator | 

### Erstellen Sie einen OIDC-Identitätsanbieter
<a name="create-an-oidc-identity-provider"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktivieren Sie den IAM OIDC-Anbieter. | Als Voraussetzung für den Amazon EBS Container Storage Interface (CSI) -Treiber benötigen Sie einen vorhandenen IAM OpenID Connect (OIDC) -Anbieter für Ihren Cluster.Aktivieren Sie den IAM OIDC-Anbieter mit dem folgenden Befehl:<pre>eksctl utils associate-iam-oidc-provider --region={region} --cluster={YourClusterNameHere} --approve</pre>Weitere Informationen zu diesem Schritt finden Sie in der [Amazon EKS-Dokumentation](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html). | AWS-Administrator | 
| Erstellen Sie eine IAM-Rolle für den Amazon EBS CSI-Treiber. | Verwenden Sie den folgenden `eksctl` Befehl, um die IAM-Rolle für den CSI-Treiber zu erstellen:<pre>eksctl create iamserviceaccount \<br />  --region {RegionName} \<br />  --name ebs-csi-controller-sa \<br />  --namespace kube-system \<br />  --cluster {YourClusterNameHere} \<br />  --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \<br />  --approve \<br />  --role-only \<br />  --role-name AmazonEKS_EBS_CSI_DriverRole</pre>Wenn Sie verschlüsselte Amazon EBS-Laufwerke verwenden, müssen Sie die Richtlinie weiter konfigurieren. Anweisungen finden Sie in der [Amazon EBS SCI-Treiberdokumentation](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/docs/install.md#installation-1). | AWS-Administrator | 
| Fügen Sie den Amazon EBS CSI-Treiber hinzu. | Verwenden Sie den folgenden `eksctl` Befehl, um den Amazon EBS CSI-Treiber hinzuzufügen:<pre>eksctl create addon \<br />  --name aws-ebs-csi-driver \<br />  --cluster <YourClusterName> service-account-role-arn arn:aws:iam::$(aws sts get-caller-identity \<br />  --query Account \<br />  --output text):role/AmazonEKS_EBS_CSI_DriverRole \<br />  --force</pre> | AWS-Administrator | 

### Installieren Sie PGO
<a name="install-pgo"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das PGO-Repository. | Klonen Sie das GitHub Repository für PGO:<pre>git clone https://github.com/CrunchyData/postgres-operator-examples.git </pre> | AWS DevOps | 
| Geben Sie die Rollendetails für die Erstellung des Dienstkontos an. | Um dem Amazon EKS-Cluster Zugriff auf die erforderlichen AWS Ressourcen zu gewähren, geben Sie den Amazon-Ressourcennamen (ARN) der OIDC-Rolle an, die Sie zuvor in der `service_account.yaml` Datei erstellt haben. Diese Datei befindet sich im [Namespace-Ordner des Repositorys](https://github.com/CrunchyData/postgres-operator-examples/tree/main/kustomize/install/rbac/namespace). <pre>cd postgres-operator-examples</pre><pre>---<br />metadata:<br />  annotations:<br />    eks.amazonaws.com/role-arn: arn:aws:iam::<accountId>:role/<role_name> # Update the OIDC role ARN created earlier</pre> | AWS-Administrator, Kubernetes-Administrator | 
| Erstellen Sie den Namespace und die PGO-Voraussetzungen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-postgresql-deployments-amazon-eks-pgo.html) | Kunernetes-Administrator | 
| Überprüfen Sie die Erstellung von Pods. | Stellen Sie sicher, dass der Namespace und die Standardkonfiguration erstellt wurden:<pre>kubectl get pods -n postgres-operator</pre> | AWS-Administrator, Kubernetes-Administrator | 
| Verifizieren. PVCs | Verwenden Sie den folgenden Befehl, um Ansprüche auf persistente Volumes (PVCs) zu überprüfen:<pre>kubectl describe pvc -n postgres-operator</pre> | AWS-Administrator, Kubernetes-Administrator | 

### Erstellen Sie einen Operator und stellen Sie ihn bereit
<a name="create-and-deploy-an-operator"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Operator. | Überarbeiten Sie den Inhalt der Datei unter`/kustomize/postgres/postgres.yaml`, sodass er den folgenden Kriterien entspricht:<pre>spec:<br />  instances:<br />    - name: pg-1<br />      replicas: 3<br />  patroni:<br />    dynamicConfiguration:<br />      postgresql:<br />      pg_hba:<br />        - "host all all 0.0.0.0/0 trust" # this line enabled logical replication with programmatic access<br />        - "host all postgres 127.0.0.1/32 md5"<br />      synchronous_mode: true<br />  users:<br />  - name: replicator<br />    databases:<br />      - testdb<br />    options: "REPLICATION"</pre>Diese Updates bewirken Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-postgresql-deployments-amazon-eks-pgo.html) | AWS-Administrator, DBA, Kubernetes-Administrator | 
| Stellen Sie den Operator bereit. | Stellen Sie den PGO-Operator bereit, um die Verwaltung und den Betrieb von PostgreSQL-Datenbanken in Kubernetes-Umgebungen zu optimieren:<pre>kubectl apply -k kustomize/postgres</pre> | AWS-Administrator, DBA, Kubernetes-Administrator | 
| Überprüfen Sie die Bereitstellung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-postgresql-deployments-amazon-eks-pgo.html)Notieren Sie sich in der Befehlsausgabe das primäre Replikat (`primary_pod_name`) und das Lesereplikat (`read_pod_name`). Sie werden diese in den nächsten Schritten verwenden. | AWS-Administrator, DBA, Kubernetes-Administrator | 

### Überprüfen Sie die Streaming-Replikation
<a name="verify-streaming-replication"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Schreiben Sie Daten in das primäre Replikat. | Verwenden Sie die folgenden Befehle, um eine Verbindung zum primären PostgreSQL-Replikat herzustellen und Daten in die Datenbank zu schreiben:<pre>kubectl exec -it <primary_pod_name> bash -n postgres-operator</pre><pre>psql</pre><pre>CREATE TABLE customers (firstname text, customer_id serial, date_created timestamp);<br />\dt</pre> | AWS-Administrator, Kubernetes-Administrator | 
| Vergewissern Sie sich, dass die Read Replica dieselben Daten enthält. | Connect zur PostgreSQL-Read Replica her und überprüfen Sie, ob die Streaming-Replikation ordnungsgemäß funktioniert:<pre>kubectl exec -it {read_pod_name} bash -n postgres-operator</pre><pre>psql</pre><pre>\dt</pre>Die Read Replica sollte die Tabelle enthalten, die Sie im vorherigen Schritt im primären Replikat erstellt haben. | AWS-Administrator, Kubernetes-Administrator | 

## Fehlerbehebung
<a name="streamline-postgresql-deployments-amazon-eks-pgo-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Der Pod startet nicht. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-postgresql-deployments-amazon-eks-pgo.html) | 
| Replikate liegen deutlich hinter der Primärdatenbank zurück. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-postgresql-deployments-amazon-eks-pgo.html) | 
| Sie haben keinen Einblick in die Leistung und den Zustand des PostgreSQL-Clusters. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-postgresql-deployments-amazon-eks-pgo.html) | 
| Die Replikation funktioniert nicht. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-postgresql-deployments-amazon-eks-pgo.html) | 

## Zugehörige Ressourcen
<a name="streamline-postgresql-deployments-amazon-eks-pgo-resources"></a>
+ [Amazon Elastic Kubernetes Service](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/amazon-elastic-kubernetes-service.html) (*Überblick über Bereitstellungsoptionen auf AWS-Whitepaper*)
+  [CloudFormation](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/aws-cloudformation.html)(*Whitepaper über die Bereitstellungsoptionen auf AWS*)
+ [Erste Schritte mit Amazon EKS — eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) (*Amazon EKS-Benutzerhandbuch*)
+ [Kubectl und eksctl einrichten (*Amazon* EKS-Benutzerhandbuch](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html))
+ [Eine Rolle für den OpenID Connect-Verbund erstellen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html) (*IAM-Benutzerhandbuch*)
+ [Konfiguration der Einstellungen für das AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) (*AWS CLI Benutzerhandbuch*)
+ [Dokumentation zu Crunchy Postgres für Kubernetes](https://access.crunchydata.com/documentation/postgres-operator/latest)
+ [Crunch & Learn: Crunchy Postgres für Kubernetes 5.0 (Video](https://www.youtube-nocookie.com/embed/IIf9WZO3K50))

# Vereinfachen Sie die Anwendungsauthentifizierung mit gegenseitigem TLS in Amazon ECS mithilfe von Application Load Balancer
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs"></a>

*Olawale Olaleye und Shamanth Devagari, Amazon Web Services*

## Zusammenfassung
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-summary"></a>

Dieses Muster hilft Ihnen dabei, Ihre Anwendungsauthentifizierung zu vereinfachen und Sicherheitsbelastungen mit gegenseitigem TLS in Amazon Elastic Container Service (Amazon ECS) mithilfe von [Application Load Balancer (](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/mutual-authentication.html)ALB) zu entlasten. Mit ALB können Sie X.509-Client-Zertifikate von authentifizieren. AWS Private Certificate Authority Diese leistungsstarke Kombination trägt zu einer sicheren Kommunikation zwischen Ihren Diensten bei und reduziert so den Bedarf an komplexen Authentifizierungsmechanismen innerhalb Ihrer Anwendungen. Darüber hinaus verwendet das Muster Amazon Elastic Container Registry (Amazon ECR) zum Speichern von Container-Images.

Das Beispiel in diesem Muster verwendet Docker-Bilder aus einer öffentlichen Galerie, um die Beispiel-Workloads zunächst zu erstellen. Anschließend werden neue Docker-Images für die Speicherung in Amazon ECR erstellt. Ziehen Sie als Quelle ein Git-basiertes System wie GitHub, oder Bitbucket in Betracht GitLab, oder verwenden Sie Amazon Simple Storage Service Amazon S3 (Amazon S3). Für die Erstellung der Docker-Images sollten Sie die Verwendung AWS CodeBuild für die nachfolgenden Images in Betracht ziehen.

## Voraussetzungen und Einschränkungen
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-prereqs"></a>

**Voraussetzungen**
+ Ein Aktiv AWS-Konto mit Zugriff auf die Bereitstellung von AWS CloudFormation Stacks. Stellen Sie sicher, dass Sie über AWS Identity and Access Management (IAM-) [Benutzer- oder Rollenberechtigungen für die Bereitstellung verfügen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/control-access-with-iam.html). CloudFormation
+ AWS Command Line Interface (AWS CLI) [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). [Konfigurieren Sie](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) Ihre AWS Anmeldeinformationen auf Ihrem lokalen Computer oder in Ihrer Umgebung, indem Sie entweder die AWS CLI oder verwenden, indem Sie die Umgebungsvariablen in der `~/.aws/credentials` Datei festlegen.
+ OpenSSL [installiert](https://www.openssl.org/).
+ [Docker installiert.](https://www.docker.com/get-started/)
+ [Vertrautheit mit den AWS-Services unter Tools beschriebenen Funktionen.](#simplify-application-authentication-with-mutual-tls-in-amazon-ecs-tools)
+ Kenntnisse von Docker und NGINX.

**Einschränkungen**
+ Mutual TLS für Application Load Balancer unterstützt nur X.509v3-Clientzertifikate. X.509v1-Clientzertifikate werden nicht unterstützt.
+ Die CloudFormation Vorlage, die im Code-Repository dieses Musters bereitgestellt wird, beinhaltet nicht die Bereitstellung eines CodeBuild Projekts als Teil des Stacks.
+ Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**
+ Docker-Version 27.3.1 oder höher
+ AWS CLI Version 2.14.5 oder höher

## Architektur
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-architecture"></a>

Das folgende Diagramm zeigt die Architekturkomponenten für dieses Muster.

![\[Workflow zur Authentifizierung mit Mutual TLS mithilfe von Application Load Balancer.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a343fa4e-097f-416b-9c83-01a28eb57dc3/images/e1371297-b987-4487-9b13-8120933c921f.png)


 Das Diagramm zeigt den folgenden Workflow:

1. Erstellen Sie ein Git-Repository und übertragen Sie den Anwendungscode in das Repository.

1. Erstellen Sie eine private Zertifizierungsstelle (CA) in AWS Private CA.

1. Erstellen Sie ein CodeBuild Projekt. Das CodeBuildproject wird durch Commit-Änderungen ausgelöst und erstellt das Docker-Image und veröffentlicht das erstellte Image in Amazon ECR.

1. Kopieren Sie die Zertifikatskette und den Zertifikatshauptteil von der CA und laden Sie das Zertifikatspaket auf Amazon S3 hoch.

1. Erstellen Sie einen Trust Store mit dem CA-Bundle, das Sie auf Amazon S3 hochgeladen haben. Ordnen Sie den Trust Store den gegenseitigen TLS-Listenern auf dem Application Load Balancer (ALB) zu.

1. Verwenden Sie die private CA, um Client-Zertifikate für die Container-Workloads auszustellen. Erstellen Sie auch ein privates TLS-Zertifikat mit AWS Private CA.

1. Importieren Sie das private TLS-Zertifikat in AWS Certificate Manager (ACM) und verwenden Sie es mit dem ALB.

1. Der Container-Workload in `ServiceTwo` verwendet das ausgestellte Client-Zertifikat, um sich bei der ALB zu authentifizieren, wenn er mit dem Container-Workload in kommuniziert. `ServiceOne`

1. Der Container-Workload in `ServiceOne` verwendet das ausgestellte Client-Zertifikat zur Authentifizierung bei der ALB, wenn er mit dem Container-Workload in kommuniziert. `ServiceTwo`

**Automatisierung und Skalierung**

Dieses Muster kann vollständig automatisiert werden CloudFormation, indem AWS Cloud Development Kit (AWS CDK) , oder API-Operationen aus einem SDK zur Bereitstellung der AWS Ressourcen verwendet werden.

Sie können AWS CodePipeline damit eine CI/CD-Pipeline (Continuous Integration and Continuous Deployment) implementieren, CodeBuild um den Prozess der Container-Image-Erstellung zu automatisieren und neue Versionen für die Amazon ECS-Cluster-Services bereitzustellen.

## Tools
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-tools"></a>

**AWS-Services **
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) unterstützt Sie bei der Erstellung, Speicherung und Erneuerung öffentlicher und privater SSL/TLS X.509-Zertifikate und -Schlüssel, die Ihre AWS Websites und Anwendungen schützen.
+ [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 AWS-Konten Lebenszyklus über und zu verwalten. AWS-Regionen
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) ist ein hoch skalierbarer, schneller Container-Management-Service zum Ausführen, Stoppen und Verwalten von Containern in einem Cluster. Sie können Ihre Aufgaben und Dienste auf einer serverlosen Infrastruktur ausführen, die von AWS Fargate verwaltet wird. Für mehr Kontrolle über Ihre Infrastruktur können Sie Ihre Aufgaben und Dienste alternativ auf einem Cluster von Amazon Elastic Compute Cloud (Amazon EC2) -Instances ausführen, die Sie verwalten.
+ [Amazon ECS Exec](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html) ermöglicht Ihnen die direkte Interaktion mit Containern, ohne zuerst mit dem Host-Container-Betriebssystem interagieren, eingehende Ports öffnen oder SSH-Schlüssel verwalten zu müssen. Sie können ECS Exec verwenden, um Befehle in einem Container auszuführen oder eine Shell für einen Container zu erhalten, der auf einer EC2 Amazon-Instance oder auf AWS Fargate einem läuft.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) verteilt eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele. Sie können beispielsweise den Traffic auf EC2 Amazon-Instances, Container und IP-Adressen in einer oder mehreren Availability Zones verteilen. ELB überwacht den Zustand seiner registrierten Ziele und leitet den Datenverkehr nur an die fehlerfreien Ziele weiter. ELB skaliert Ihren Load Balancer, wenn sich Ihr eingehender Datenverkehr im Laufe der Zeit ändert. Es kann automatisch auf die meisten Workloads skaliert werden.
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html)hilft Ihnen beim Betrieb von Containern, ohne Server oder EC2 Amazon-Instances verwalten zu müssen. Fargate ist sowohl mit Amazon ECS als auch mit Amazon Elastic Kubernetes Service (Amazon EKS) kompatibel. Sie können Ihre Amazon ECS-Aufgaben und -Services mit dem Starttyp Fargate oder einem Fargate-Kapazitätsanbieter ausführen. Verpacken Sie dazu Ihre Anwendung in Containern, geben Sie die CPU- und Speicheranforderungen an, definieren Sie Netzwerk- und IAM-Richtlinien und starten Sie die Anwendung. Jede Fargate-Aufgabe hat ihre eigene Isolationsgrenze und teilt den zugrunde liegenden Kernel, die CPU-Ressourcen, Speicherressourcen oder die elastic network interface nicht mit einer anderen Aufgabe.
+ [AWS Private Certificate Authority](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)ermöglicht die Erstellung von privaten Zertifizierungsstellenhierarchien (CA), einschließlich Stamm- und untergeordneter Zertifizierungsstellen CAs, ohne dass die Investitions- und Wartungskosten für den Betrieb einer lokalen Zertifizierungsstelle anfallen.

**Andere Tools******
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.
+ [GitHub](https://docs.github.com/en/repositories/creating-and-managing-repositories/quickstart-for-repositories), [GitLab](https://docs.gitlab.com/ee/user/get_started/get_started_projects.html), und [Bitbucket](https://support.atlassian.com/bitbucket-cloud/docs/tutorial-learn-bitbucket-with-git/) sind einige der am häufigsten verwendeten Git-basierten Quellcodeverwaltungssysteme, um Quellcodeänderungen zu verfolgen.
+ [NGINX Open Source](https://nginx.org/en/docs/?_ga=2.187509224.1322712425.1699399865-405102969.1699399865) ist ein Open-Source-Loadbalancer, ein Inhalts-Cache und ein Webserver. Dieses Muster verwendet es als Webserver.
+ [OpenSSL](https://www.openssl.org/) ist eine Open-Source-Bibliothek, die Dienste bereitstellt, die von den OpenSSL-Implementierungen von TLS und CMS verwendet werden. 

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [MTLS-with-Application-Load-Balancer-In-Amazon-ECS](https://github.com/aws-samples/mTLS-with-Application-Load-Balancer-in-Amazon-ECS) verfügbar.

## Best Practices
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-best-practices"></a>
+ Verwenden Sie Amazon ECS Exec, um Befehle auszuführen oder eine Shell für einen Container abzurufen, der auf Fargate läuft. Sie können ECS Exec auch verwenden, um Diagnoseinformationen für das Debuggen zu sammeln.
+ Verwenden Sie Sicherheitsgruppen und Netzwerkzugriffskontrolllisten (ACLs), um den eingehenden und ausgehenden Verkehr zwischen den Diensten zu kontrollieren. Fargate-Aufgaben erhalten eine IP-Adresse aus dem konfigurierten Subnetz in Ihrer Virtual Private Cloud (VPC).

## Epen
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-epics"></a>

### Erstellen Sie das Repository
<a name="create-the-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie den Quellcode herunter. | Um den Quellcode dieses Patterns herunterzuladen, forken oder klonen Sie das GitHub [MTLS-with-Application-Load-Balancer-In-Amazon-ECS-Repository](https://github.com/aws-samples/mTLS-with-Application-Load-Balancer-in-Amazon-ECS). | DevOps Ingenieur | 
| Erstellen Sie ein Git-Repository. | Gehen Sie wie folgt vor, um ein Git-Repository zu erstellen, das das Dockerfile und die `buildspec.yaml` Dateien enthält:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html)`git clone https://github.com/aws-samples/mTLS-with-Application-Load-Balancer-in-Amazon-ECS.git` | DevOps Ingenieur | 

### CA erstellen und Zertifikate generieren
<a name="create-ca-and-generate-certificates"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine private CA in AWS Private CA. | Um eine private Zertifizierungsstelle (CA) zu erstellen, führen Sie die folgenden Befehle in Ihrem Terminal aus. Ersetzen Sie die Werte in den Beispielvariablen durch Ihre eigenen Werte. <pre>export AWS_DEFAULT_REGION="us-west-2"<br />export SERVICES_DOMAIN="www.example.com"<br /><br />export ROOT_CA_ARN=`aws acm-pca create-certificate-authority \<br />    --certificate-authority-type ROOT \<br />    --certificate-authority-configuration \<br />    "KeyAlgorithm=RSA_2048,<br />    SigningAlgorithm=SHA256WITHRSA,<br />    Subject={<br />        Country=US,<br />        State=WA,<br />        Locality=Seattle,<br />        Organization=Build on AWS,<br />        OrganizationalUnit=mTLS Amazon ECS and ALB Example,<br />        CommonName=${SERVICES_DOMAIN}}" \<br />        --query CertificateAuthorityArn --output text`</pre>Weitere Informationen finden Sie [AWS Private CA in der AWS Dokumentation unter Eine private Zertifizierungsstelle erstellen](https://docs.aws.amazon.com/privateca/latest/userguide/create-CA.html). | DevOps Ingenieur, AWS DevOps | 
| Erstellen und installieren Sie Ihr privates CA-Zertifikat. | Um ein Zertifikat für Ihre private Root-CA zu erstellen und zu installieren, führen Sie die folgenden Befehle in Ihrem Terminal aus:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html) | AWS DevOps, DevOps Ingenieur | 
| Fordern Sie ein verwaltetes Zertifikat an. | Verwenden Sie den folgenden Befehl AWS Certificate Manager , um ein privates Zertifikat zur Verwendung mit Ihrem privaten ALB anzufordern:<pre>export TLS_CERTIFICATE_ARN=`aws acm request-certificate \<br />    --domain-name "*.${DOMAIN_DOMAIN}" \<br />    --certificate-authority-arn ${ROOT_CA_ARN} \<br />    --query CertificateArn --output text`</pre> | DevOps Ingenieur, AWS DevOps | 
| Verwenden Sie die private CA, um ein Client-Zertifikat auszustellen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html)`openssl req -out client_csr1.pem -new -newkey rsa:2048 -nodes -keyout client_private-key1.pem``openssl req -out client_csr2.pem -new -newkey rsa:2048 -nodes -keyout client_private-key2.pem`Dieser Befehl gibt die CSR und den privaten Schlüssel für die beiden Dienste zurück. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html)<pre>SERVICE_ONE_CERT_ARN=`aws acm-pca issue-certificate \<br />    --certificate-authority-arn ${ROOT_CA_ARN} \<br />    --csr fileb://client_csr1.pem \<br />    --signing-algorithm "SHA256WITHRSA" \<br />    --validity Value=5,Type="YEARS" --query CertificateArn --output text` <br /><br />echo "SERVICE_ONE_CERT_ARN: ${SERVICE_ONE_CERT_ARN}"<br /><br />aws acm-pca get-certificate \<br />    --certificate-authority-arn ${ROOT_CA_ARN} \<br />    --certificate-arn ${SERVICE_ONE_CERT_ARN} \<br />     | jq -r '.Certificate' > client_cert1.cert<br /><br />SERVICE_TWO_CERT_ARN=`aws acm-pca issue-certificate \<br />    --certificate-authority-arn ${ROOT_CA_ARN} \<br />    --csr fileb://client_csr2.pem \<br />    --signing-algorithm "SHA256WITHRSA" \<br />    --validity Value=5,Type="YEARS" --query CertificateArn --output text` <br /><br />echo "SERVICE_TWO_CERT_ARN: ${SERVICE_TWO_CERT_ARN}"<br /><br />aws acm-pca get-certificate \<br />    --certificate-authority-arn ${ROOT_CA_ARN} \<br />    --certificate-arn ${SERVICE_TWO_CERT_ARN} \<br />     | jq -r '.Certificate' > client_cert2.cert</pre>Weitere Informationen finden Sie in der AWS Dokumentation unter [Ausstellen von privaten Endentitätszertifikaten](https://docs.aws.amazon.com/privateca/latest/userguide/PcaIssueCert.html). | DevOps Ingenieur, AWS DevOps | 

### Bereitstellung von AWS-Services
<a name="provision-aws-services"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereitstellung AWS-Services mit der CloudFormation Vorlage. | Verwenden Sie die Vorlage, um die Virtual Private Cloud (VPC), den Amazon ECS-Cluster, die Amazon ECS-Services, den Application Load Balancer und das Amazon Elastic Container Registry (Amazon ECR) bereitzustellen. CloudFormation  | DevOps Ingenieur | 
| Variablen abrufen. | Stellen Sie sicher, dass Sie über einen Amazon ECS-Cluster verfügen, auf dem zwei Dienste ausgeführt werden. Verwenden Sie die folgenden Befehle, um die Ressourcendetails abzurufen und als Variablen zu speichern:<pre><br />export LoadBalancerDNS=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`LoadBalancerDNS`].OutputValue')<br /><br />export ECRRepositoryUri=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`ECRRepositoryUri`].OutputValue')<br /><br />export ECRRepositoryServiceOneUri=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`ECRRepositoryServiceOneUri`].OutputValue')<br /><br />export ECRRepositoryServiceTwoUri=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`ECRRepositoryServiceTwoUri`].OutputValue')<br /><br />export ClusterName=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`ClusterName`].OutputValue')<br /><br />export BucketName=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`BucketName`].OutputValue')<br /><br />export Service1ListenerArn=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`Service1ListenerArn`].OutputValue')<br /><br />export Service2ListenerArn=$(aws cloudformation describe-stacks --stack-name ecs-mtls \<br />--output text \<br />--query 'Stacks[0].Outputs[?OutputKey==`Service2ListenerArn`].OutputValue')</pre> | DevOps Ingenieur | 
| Erstellen Sie ein CodeBuild Projekt. | Gehen Sie wie folgt vor, um ein CodeBuild Projekt zur Erstellung der Docker-Images für Ihre Amazon ECS-Services zu verwenden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html)Weitere Informationen finden Sie [AWS CodeBuild in der AWS Dokumentation unter Erstellen eines Build-Projekts](https://docs.aws.amazon.com/codebuild/latest/userguide/create-project.html). | AWS DevOps, DevOps Ingenieur | 
| Erstellen Sie die Docker-Images. | Sie können es verwenden CodeBuild , um den Image-Erstellungsprozess durchzuführen. CodeBuild benötigt Berechtigungen, um mit Amazon ECR zu interagieren und mit Amazon S3 zu arbeiten.Im Rahmen des Prozesses wird das Docker-Image erstellt und in die Amazon ECR-Registrierung übertragen. Einzelheiten zur Vorlage und zum Code finden Sie unter [Zusätzliche](#simplify-application-authentication-with-mutual-tls-in-amazon-ecs-additional) Informationen.(Optional) Verwenden Sie den folgenden Befehl, um lokal zu Testzwecken zu erstellen:<pre># login to ECR<br />aws ecr get-login-password | docker login --username AWS --password-stdin $ECRRepositoryUri<br /><br /># build image for service one<br />cd /service1<br />aws s3 cp s3://$BucketName/serviceone/ service1/ --recursive<br />docker build -t $ECRRepositoryServiceOneUri .<br />docker push $ECRRepositoryServiceOneUri<br /><br /># build image for service two<br />cd ../service2<br />aws s3 cp s3://$BucketName/servicetwo/ service2/ --recursive<br />docker build -t $ECRRepositoryServiceTwoUri .<br />docker push $ECRRepositoryServiceTwoUri</pre> | DevOps Ingenieur | 

### Mutual TLS aktivieren
<a name="enable-mutual-tls"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie das CA-Zertifikat auf Amazon S3 hoch. | Verwenden Sie den folgenden Beispielbefehl, um das CA-Zertifikat in den Amazon S3 S3-Bucket hochzuladen:`aws s3 cp ca-cert.pem s3://$BucketName/acm-trust-store/ ` | AWS DevOps, DevOps Ingenieur | 
| Erstellen Sie den Trust Store. | Verwenden Sie den folgenden Beispielbefehl, um den Trust Store zu erstellen:<pre>TrustStoreArn=`aws elbv2 create-trust-store --name acm-pca-trust-certs \<br />    --ca-certificates-bundle-s3-bucket $BucketName \<br />    --ca-certificates-bundle-s3-key acm-trust-store/ca-cert.pem --query 'TrustStores[].TrustStoreArn' --output text`</pre> | AWS DevOps, DevOps Ingenieur | 
| Laden Sie Kundenzertifikate hoch. | Verwenden Sie den folgenden Beispielbefehl, um Client-Zertifikate für Docker-Images auf Amazon S3 hochzuladen:<pre># for service one<br />aws s3 cp client_cert1.cert s3://$BucketName/serviceone/<br />aws s3 cp client_private-key1.pem s3://$BucketName/serviceone/<br /><br /># for service two<br />aws s3 cp client_cert2.cert s3://$BucketName/servicetwo/<br />aws s3 cp client_private-key2.pem s3://$BucketName/servicetwo/</pre> | AWS DevOps, DevOps Ingenieur | 
| Ändern Sie den Listener. | Um Mutual TLS auf dem ALB zu aktivieren, ändern Sie die HTTPS-Listener mit den folgenden Befehlen:<pre>aws elbv2 modify-listener \<br />    --listener-arn $Service1ListenerArn \<br />    --certificates CertificateArn=$TLS_CERTIFICATE_ARN_TWO \<br />    --ssl-policy ELBSecurityPolicy-2016-08 \<br />    --protocol HTTPS \<br />    --port 8080 \<br />    --mutual-authentication Mode=verify,TrustStoreArn=$TrustStoreArn,IgnoreClientCertificateExpiry=false<br /><br />aws elbv2 modify-listener \<br />    --listener-arn $Service2ListenerArn \<br />    --certificates CertificateArn=$TLS_CERTIFICATE_ARN_TWO \<br />    --ssl-policy ELBSecurityPolicy-2016-08 \<br />    --protocol HTTPS \<br />    --port 8090 \<br />    --mutual-authentication Mode=verify,TrustStoreArn=$TrustStoreArn,IgnoreClientCertificateExpiry=false<br /></pre>Weitere Informationen finden Sie in der AWS Dokumentation unter [Konfiguration von gegenseitigem TLS auf einem Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/configuring-mtls-with-elb.html). | AWS DevOps, DevOps Ingenieur | 

### Aktualisieren Sie die Dienste
<a name="update-the-services"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktualisieren Sie die Amazon ECS-Aufgabendefinition. | Um die Amazon ECS-Aufgabendefinition zu aktualisieren, ändern Sie den `image` Parameter in der neuen Version.Um die Werte für die jeweiligen Services abzurufen, aktualisieren Sie die Aufgabendefinitionen mit dem neuen Docker-Images-URI, den Sie in den vorherigen Schritten erstellt haben: oder `echo $ECRRepositoryServiceOneUri` `echo $ECRRepositoryServiceTwoUri`<pre><br />    "containerDefinitions": [<br />        {<br />            "name": "nginx",<br />            "image": "public.ecr.aws/nginx/nginx:latest",   # <----- change to new Uri<br />            "cpu": 0,</pre>Weitere Informationen finden Sie in der AWS Dokumentation unter [Aktualisieren einer Amazon ECS-Aufgabendefinition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-task-definition-console-v2.html) mithilfe der Konsole.  | AWS DevOps, DevOps Ingenieur | 
| Aktualisieren Sie den Amazon ECS-Service. | Aktualisieren Sie den Service mit der neuesten Aufgabendefinition. Diese Aufgabendefinition ist der Entwurf für die neu erstellten Docker-Images und enthält das Client-Zertifikat, das für die gegenseitige TLS-Authentifizierung erforderlich ist.  Gehen Sie wie folgt vor, um den Dienst zu aktualisieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html)Wiederholen Sie die Schritte für den anderen Dienst. | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 

### Greifen Sie auf die Anwendung zu
<a name="access-the-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Kopieren Sie die Anwendungs-URL. | Verwenden Sie die Amazon ECS-Konsole, um die Aufgabe anzusehen. Wenn der Aufgabenstatus auf Wird **ausgeführt** aktualisiert wurde, wählen Sie die Aufgabe aus. Kopieren Sie im Abschnitt **Aufgabe** die Aufgaben-ID. | AWS-Administrator, AWS DevOps | 
| Testen Sie Ihre Anwendung. | Um Ihre Anwendung zu testen, verwenden Sie ECS Exec, um auf die Aufgaben zuzugreifen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-application-authentication-with-mutual-tls-in-amazon-ecs.html) | AWS-Administrator, AWS DevOps | 

## Zugehörige Ressourcen
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-resources"></a>

**Amazon ECS-Dokumentation**
+ [Erstellen einer Amazon ECS-Aufgabendefinition mithilfe der Konsole](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html)
+ [Erstellen eines Container-Images zur Verwendung auf Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-container-image.html)
+ [Amazon-ECS-Cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html)
+ [Amazon ECS für AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-container-image.html#create-container-image-next-steps)
+ [Bewährte Methoden für Amazon-ECS-Netzwerke](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/networking-best-practices.html)
+ [Parameter der Amazon ECS-Servicedefinition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html)

**Andere AWS Ressourcen**
+ [Wie verwende ich AWS private CA, um mTLS auf dem Application Load Balancer zu konfigurieren?](https://repost.aws/knowledge-center/elb-alb-configure-private-ca-mtls) ()AWS re:Post

## Zusätzliche Informationen
<a name="simplify-application-authentication-with-mutual-tls-in-amazon-ecs-additional"></a>

**Das Dockerfile bearbeiten******

Der folgende Code zeigt die Befehle, die Sie im Dockerfile für Service 1 bearbeiten:

```
FROM public.ecr.aws/nginx/nginx:latest
WORKDIR /usr/share/nginx/html
RUN echo "Returning response from Service 1: Ok" > /usr/share/nginx/html/index.html
ADD client_cert1.cert client_private-key1.pem /usr/local/share/ca-certificates/
RUN chmod -R 400 /usr/local/share/ca-certificates/
```

Der folgende Code zeigt die Befehle, die Sie im Dockerfile für Dienst 2 bearbeiten:

```
FROM public.ecr.aws/nginx/nginx:latest
WORKDIR /usr/share/nginx/html
RUN echo "Returning response from Service 2: Ok" > /usr/share/nginx/html/index.html
ADD client_cert2.cert client_private-key2.pem /usr/local/share/ca-certificates/
RUN chmod -R 400 /usr/local/share/ca-certificates/
```

Wenn Sie die Docker-Images mit erstellen, verwendet die `buildspec` Datei die CodeBuild Build-Nummer CodeBuild, um Image-Versionen eindeutig als Tag-Wert zu identifizieren. Sie können die `buildspec` Datei an Ihre Anforderungen anpassen, wie im folgenden `buildspec ` benutzerdefinierten Code gezeigt: 

```
version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $ECR_REPOSITORY_URI
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
        # change the S3 path depending on the service
      - aws s3 cp s3://$YOUR_S3_BUCKET_NAME/serviceone/ $CodeBuild_SRC_DIR/ --recursive 
      - echo Build started on `date`
      - echo Building the Docker image...
      - docker build -t $ECR_REPOSITORY_URI:latest .
      - docker tag $ECR_REPOSITORY_URI:latest $ECR_REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker images...
      - docker push $ECR_REPOSITORY_URI:latest
      - docker push $ECR_REPOSITORY_URI:$IMAGE_TAG
      - echo Writing image definitions file...
      # for ECS deployment reference
      - printf '[{"name":"%s","imageUri":"%s"}]' $CONTAINER_NAME $ECR_REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json   

artifacts:
  files:
    - imagedefinitions.json
```

# Mehr Muster
<a name="containersandmicroservices-more-patterns-pattern-list"></a>

**Topics**
+ [Automatisieren Sie das Löschen von AWS CloudFormation Stacks und zugehörigen Ressourcen](automate-deletion-cloudformation-stacks-associated-resources.md)
+ [Automatisieren Sie das dynamische Pipeline-Management für die Bereitstellung von Hotfix-Lösungen in Gitflow-Umgebungen mithilfe von und AWS Service Catalog AWS CodePipeline](automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.md)
+ [Automatisches Erstellen von CI/CD Pipelines und Amazon ECS-Clustern für Microservices mithilfe von AWS CDK](automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.md)
+ [Erstellen und übertragen Sie Docker-Images mithilfe von GitHub Actions und Terraform auf Amazon ECR](build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform.md)
+ [Containerisieren Sie Mainframe-Workloads, die von Blu Age modernisiert wurden](containerize-mainframe-workloads-that-have-been-modernized-by-blu-age.md)
+ [Erstellen Sie einen benutzerdefinierten Protokollparser für Amazon ECS mithilfe eines Firelens-Protokollrouters](create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.md)
+ [Stellen Sie mithilfe von Terraform Agentensysteme auf Amazon Bedrock mit dem CrewAI-Framework bereit](deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.md)
+ [Stellen Sie mithilfe von Terraform eine Umgebung für containerisierte Blu Age-Anwendungen bereit](deploy-an-environment-for-containerized-blu-age-applications-by-using-terraform.md)
+ [Stellen Sie mithilfe einer Inferenz-Pipeline in Amazon Vorverarbeitungslogik in einem ML-Modell an einem einzigen Endpunkt bereit SageMaker](deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker.md)
+ [Stellen Sie Workloads aus DevOps Azure-Pipelines auf private Amazon EKS-Cluster bereit](deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.md)
+ [Implementieren Sie KI-gestützte Kubernetes-Diagnose und -Fehlerbehebung mit der Integration von K8SGPT und Amazon Bedrock](implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration.md)
+ [Verwalten Sie blue/green Bereitstellungen von Microservices für mehrere Konten und Regionen mithilfe von AWS-Code-Services und AWS KMS-Schlüsseln für mehrere Regionen](manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.md)
+ [Verwalten Sie lokale Containeranwendungen, indem Sie Amazon ECS Anywhere mit dem AWS CDK einrichten](manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk.md)
+ [Migrieren Sie von Oracle WebLogic zu Apache Tomcat (ToMEE) auf Amazon ECS](migrate-from-oracle-weblogic-to-apache-tomcat-tomee-on-amazon-ecs.md)
+ [Richten Sie einen nutzbaren Mindestdatenraum für die gemeinsame Nutzung von Daten zwischen Organisationen ein](minimum-viable-data-space-share-data-organizations.md)
+ [Modernisieren Sie ASP.NET Web Forms-Anwendungen auf AWS](modernize-asp-net-web-forms-applications-on-aws.md)
+ [Überwachen Sie Amazon ECR-Repositorys mit AWS und AWS CloudFormation Config auf Platzhalterberechtigungen](monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config.md)
+ [Überwachen Sie die Anwendungsaktivität mithilfe von CloudWatch Logs Insights](monitor-application-activity-by-using-cloudwatch-logs-insights.md)
+ [Richten Sie mithilfe von AWS CDK eine CI/CD Pipeline für Hybrid-Workloads auf Amazon ECS Anywhere ein und GitLab](set-up-a-ci-cd-pipeline-for-hybrid-workloads-on-amazon-ecs-anywhere-by-using-aws-cdk-and-gitlab.md)
+ [Richten Sie die end-to-end Verschlüsselung für Anwendungen auf Amazon EKS mithilfe von cert-manager und Let's Encrypt ein](set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.md)
+ [Vereinfachen Sie die Bereitstellung von Amazon EKS-Anwendungen für mehrere Mandanten mithilfe von Flux](simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.md)
+ [Optimieren Sie mithilfe von SageMaker KI und Hydra Workflows für maschinelles Lernen — von der lokalen Entwicklung bis hin zu skalierbaren Experimenten](streamline-machine-learning-workflows-by-using-amazon-sagemaker.md)
+ [Strukturieren Sie ein Python-Projekt in hexagonaler Architektur mit AWS Lambda](structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.md)
+ [Testen Sie die AWS Infrastruktur mithilfe LocalStack von Terraform-Tests](test-aws-infra-localstack-terraform.md)
+ [Koordinieren Sie die Ressourcenabhängigkeit und die Aufgabenausführung mithilfe des AWS Fargate WaitCondition Hook-Konstrukts](use-the-aws-fargate-waitcondition-hook-construct.md)
+ [Verwenden Sie Amazon Bedrock-Agenten, um die Erstellung von Zugriffskontrollen in Amazon EKS durch textbasierte Eingabeaufforderungen zu automatisieren](using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.md)

# Serverless
<a name="serverless-pattern-list"></a>

**Topics**
+ [Erstellen Sie mithilfe von AWS Amplify eine serverlose mobile React Native-App](build-a-serverless-react-native-mobile-app-by-using-aws-amplify.md)
+ [Mandanten für mehrere SaaS-Produkte auf einer einzigen Steuerebene verwalten](manage-tenants-across-multiple-saas-products-on-a-single-control-plane.md)
+ [Konsolidieren Sie die vorsignierte URL-Generierung und das Herunterladen von Objekten in Amazon S3 mithilfe eines Endpunkts, der statischen IP-Adressen zugeordnet ist](consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.md)
+ [Erstellen Sie eine kontoübergreifende EventBridge Amazon-Verbindung in einer Organisation](create-cross-account-amazon-eventbridge-connection-organization.md)
+ [Stellen Sie DynamoDB-Datensätze mithilfe von Kinesis Data Streams und Firehose an Amazon S3 bereit mit AWS CDK](deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.md)
+ [Implementieren Sie die pfadbasierte API-Versionierung mithilfe benutzerdefinierter Domains in Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Importieren Sie die psycopg2-Bibliothek, AWS Lambda um mit Ihrer PostgreSQL-Datenbank zu interagieren](import-psycopg2-library-lambda.md)
+ [Integrieren Sie Amazon API Gateway mit Amazon SQS, um asynchrones REST zu handhaben APIs](integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.md)
+ [Ereignisse asynchron mit Amazon API Gateway und AWS Lambda verarbeiten](process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda.md)
+ [Ereignisse asynchron mit Amazon API Gateway und Amazon DynamoDB Streams verarbeiten](processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams.md)
+ [Ereignisse asynchron mit Amazon API Gateway, Amazon SQS und AWS Fargate verarbeiten](process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate.md)
+ [Führen Sie AWS Systems Manager Automation Automation-Aufgaben synchron über AWS Step Functions aus](run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions.md)
+ [parallel Lesevorgänge von S3-Objekten mithilfe von Python in einer AWS Lambda Funktion ausführen](run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function.md)
+ [Senden Sie Telemetriedaten von AWS Lambda zu OpenSearch für Analysen und Visualisierungen in Echtzeit](send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization.md)
+ [Richten Sie einen serverlosen Mobilfunkrouter für eine zellenbasierte Architektur ein](serverless-cell-router-architecture.md)
+ [Richten Sie den privaten Zugriff auf einen Amazon S3 S3-Bucket über einen VPC-Endpunkt ein](set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.md)
+ [Fehlerbehebung bei Zuständen mithilfe AWS Step Functions von Amazon Bedrock](troubleshooting-states-in-aws-step-functions.md)
+ [Mehr Muster](serverless-more-patterns-pattern-list.md)

# Erstellen Sie mithilfe von AWS Amplify eine serverlose mobile React Native-App
<a name="build-a-serverless-react-native-mobile-app-by-using-aws-amplify"></a>

*Deekshitulu Pentakota, Amazon Web Services*

## Zusammenfassung
<a name="build-a-serverless-react-native-mobile-app-by-using-aws-amplify-summary"></a>

Dieses Muster zeigt, wie Sie mithilfe von AWS Amplify und den folgenden AWS-Services ein serverloses Backend für eine mobile React Native-App erstellen:
+ AWS AppSync
+ Amazon Cognito
+ Amazon DynamoDB

Nachdem Sie das Backend der App mithilfe von Amplify konfiguriert und bereitgestellt haben, authentifiziert Amazon Cognito App-Benutzer und autorisiert sie für den Zugriff auf die App. AWS interagiert AppSync dann mit der Frontend-App und mit einer DynamoDB-Backend-Tabelle, um Daten zu erstellen und abzurufen.

**Anmerkung**  
Dieses Muster verwendet eine einfache "ToDoList" App als Beispiel, aber Sie können ein ähnliches Verfahren verwenden, um jede beliebige mobile React-Native-App zu erstellen.

## Voraussetzungen und Einschränkungen
<a name="build-a-serverless-react-native-mobile-app-by-using-aws-amplify-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ [Amplify Command Line Interface (Amplify CLI)](https://docs.amplify.aws/cli/start/install/), installiert und konfiguriert
+ XCode (jede Version)
+ Microsoft Visual Studio (jede Version, jeder Code-Editor, jeder Texteditor)
+ Vertrautheit mit Amplify
+ Vertrautheit mit Amazon Cognito
+ Vertrautheit mit AWS AppSync
+ Vertrautheit mit DynamoDB
+ Vertrautheit mit Node.js
+ Vertrautheit mit npm
+ Vertrautheit mit React und React Native
+ Vertrautheit mit JavaScript und ECMAScript 6 () ES6
+ Vertrautheit mit GraphQL

## Architektur
<a name="build-a-serverless-react-native-mobile-app-by-using-aws-amplify-architecture"></a>

Das folgende Diagramm zeigt eine Beispielarchitektur für die Ausführung des Backends einer mobilen React Native-App in der AWS-Cloud:

![\[Workflow für die Ausführung einer mobilen React-Native-App mit AWS-Services.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/c95e0150-5762-4c90-946c-efa3a22913e4/images/5beff5f9-9d14-49dc-a046-b74e5bfbd13f.png)


Das Diagramm zeigt die folgende Architektur:

1. Amazon Cognito authentifiziert App-Benutzer und autorisiert sie, auf die App zuzugreifen.

1. Um Daten zu erstellen und abzurufen, AppSync verwendet AWS eine GraphQL-API, um mit der Frontend-App und einer Backend-DynamoDB-Tabelle zu interagieren.

## Tools
<a name="build-a-serverless-react-native-mobile-app-by-using-aws-amplify-tools"></a>

**AWS-Services**
+ [AWS Amplify](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html) ist eine Reihe von speziell entwickelten Tools und Funktionen, mit denen Frontend-Web- und Mobilentwickler schnell Full-Stack-Anwendungen auf AWS erstellen können.
+ [AWS AppSync](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html) bietet eine skalierbare GraphQL-Schnittstelle, mit der Anwendungsentwickler Daten aus mehreren Quellen kombinieren können, darunter Amazon DynamoDB, AWS Lambda und HTTP. APIs
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.

**Code**

Der Code für die Beispielanwendung, die in diesem Muster verwendet wird, ist im ios-todo-app Repository GitHub [aws-amplify-react-native-](https://github.com/aws-samples/aws-amplify-react-native-ios-todo-app) verfügbar. Um die Beispieldateien zu verwenden, folgen Sie den Anweisungen im Abschnitt **Epics** dieses Musters.

## Epen
<a name="build-a-serverless-react-native-mobile-app-by-using-aws-amplify-epics"></a>

### Erstelle deine React Native-App und führe sie aus
<a name="create-and-run-your-react-native-app"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie eine React Native-Entwicklungsumgebung ein.  | Anweisungen finden Sie unter [Einrichten der Entwicklungsumgebung](https://reactnative.dev/docs/next/environment-setup) in der React Native-Dokumentation. | App-Developer | 
| Erstellen Sie die mobile ToDoList React Native-App und führen Sie sie im iOS-Simulator aus. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html) | App-Developer | 

### Initialisieren Sie eine neue Backend-Umgebung für die App
<a name="initialize-a-new-backend-environment-for-the-app"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Backend-Dienste, die zur Unterstützung der App in Amplify erforderlich sind.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html)Wenden Sie für das in diesem Muster verwendete ToDoList App-Setup die folgende Beispielkonfiguration an.**Beispiel für die Konfiguration der React Native Amplify App**<pre>? Name: ToDoListAmplify<br /><br />? Environment: dev<br /><br />? Default editor: Visual Studio Code<br /><br />? App type: javascript<br /><br />? Javascript framework: react-native<br /><br />? Source Directory Path: src<br /><br />? Distribution Directory Path: /<br /><br />? Build Command: npm run-script build<br /><br />? Start Command: npm run-script start<br /><br />? Select the authentication method you want to use: AWS profile<br /><br />? Please choose the profile you want to use: default</pre>Weitere Informationen finden Sie unter [Erstellen eines neuen Amplify-Backends in der Amplify](https://docs.amplify.aws/lib/project-setup/create-application/q/platform/js/#create-a-new-amplify-backend) Dev Center-Dokumentation.Der `amplify init` Befehl stellt mithilfe von [AWS die folgenden Ressourcen bereit CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html) | App-Developer | 

### Fügen Sie Ihrer Amplify React Native-App die Amazon Cognito Cognito-Authentifizierung hinzu
<a name="add-amazon-cognito-authentication-to-your-amplify-react-native-app"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Amazon Cognito Cognito-Authentifizierungsservice. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html)Wenden Sie für das in diesem Muster verwendete ToDoList App-Setup die folgende Beispielkonfiguration an.**Beispiel für Konfigurationseinstellungen für den Authentifizierungsdienst**<pre>? Do you want to use the default authentication and security configuration? \ <br />Default configuration<br /> <br />? How do you want users to be able to sign in? \ <br />Username <br /><br />? Do you want to configure advanced settings? \ <br />No, I am done</pre>Der `amplify add auth` Befehl erstellt die erforderlichen Ordner, Dateien und Abhängigkeitsdateien in einem lokalen Ordner (**Amplify**) im Stammverzeichnis des Projekts. Für das in diesem Muster verwendete ToDoList App-Setup wird die **Datei aws-exports.js** zu diesem Zweck erstellt. | App-Developer | 
| Stellen Sie den Amazon Cognito-Service in der AWS-Cloud bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html)Um die in Ihrem Projekt bereitgestellten Dienste zu sehen, rufen Sie die Amplify-Konsole auf, indem Sie den folgenden Befehl ausführen:`amplify console` | App-Developer | 
| Installieren Sie die erforderlichen Amplify-Bibliotheken für React Native und die CocoaPods Abhängigkeiten für iOS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html) | App-Developer | 
| Importieren und konfigurieren Sie den Amplify-Dienst. | Importieren und laden Sie in der Einstiegspunktdatei der App (z. B. **App.js**) die Konfigurationsdatei des Amplify-Dienstes, indem Sie die folgenden Codezeilen eingeben:<pre>import Amplify from 'aws-amplify'<br />import config from './src/aws-exports'<br />Amplify.configure(config)</pre>Wenn Sie nach dem Import des Amplify-Dienstes in die Einstiegspunktdatei der App eine Fehlermeldung erhalten, beenden Sie die App. Öffnen XCode Sie dann die **ToDoListAmplifyDatei .xcworkspace** aus dem iOS-Ordner des Projekts, wählen Sie sie aus und führen Sie die App aus. | App-Developer | 
| Aktualisieren Sie die Einstiegspunktdatei Ihrer App, um die WithAuthenticator-Komponente höherer Ordnung (HOC) zu verwenden. | Der `withAuthenticator` HOC bietet Workflows zum Anmelden, Registrieren und Vergessen von Passwörtern in Ihrer App, wobei nur wenige Codezeilen verwendet werden. Weitere Informationen finden Sie unter [Option 1: Verwenden Sie vorgefertigte UI-Komponenten](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#option-1-use-pre-built-ui-components) im Amplify Dev Center. Außerdem [Komponenten höherer Ordnung](https://reactjs.org/docs/higher-order-components.html) in der React-Dokumentation.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html)**Beispiel für den WITHAuthenticator HOC-Code**<pre>import Amplify from 'aws-amplify'<br />import config from './src/aws-exports'<br />Amplify.configure(config)<br />import { withAuthenticator } from 'aws-amplify-react-native';<br /><br /><br />const App = () => {<br />  return null;<br />};<br /><br /><br />export default withAuthenticator(App);</pre>Im iOS-Simulator zeigt die App den Anmeldebildschirm an, der vom Amazon Cognito-Service bereitgestellt wird. | App-Developer | 
| Testen Sie die Einrichtung des Authentifizierungsdienstes. | Gehen Sie im iOS-Simulator wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html)Sie können auch die [Amazon Cognito Cognito-Konsole](https://console.aws.amazon.com/cognito/) öffnen und überprüfen, ob ein neuer Benutzer im **Identity Pool** erstellt wurde oder nicht. | App-Developer | 

### Eine AppSync AWS-API und eine DynamoDB-Datenbank mit der App Connect
<a name="connect-an-aws-appsync-api-and-dynamodb-database-to-the-app"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine AppSync AWS-API und eine DynamoDB-Datenbank. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html)Wenden Sie für das in diesem Muster verwendete ToDoList App-Setup die folgende Beispielkonfiguration an.**Beispiel für API- und Datenbankkonfigurationseinstellungen**<pre>? Please select from one of the below mentioned services: \ <br />GraphQL <br /><br />? Provide API name: todolistamplify<br /><br />? Choose the default authorization type for the API \ <br />Amazon Cognito User Pool<br /><br />Do you want to use the default authentication and security configuration<br /><br />? Default configuration How do you want users to be able to sign in? \ <br />Username<br /><br />Do you want to configure advanced settings? \ <br />No, I am done.<br /><br />? Do you want to configure advanced settings for the GraphQL API \ <br />No, I am done.<br /><br />? Do you have an annotated GraphQL schema? \ <br />No<br /><br />? Choose a schema template: \ <br />Single object with fields (e.g., "Todo" with ID, name, description)<br /><br />? Do you want to edit the schema now? \ <br />Yes</pre>**Beispiel für ein GraphQL-Schema**<pre> type Todo @model {<br />   id: ID!<br />   name: String!<br />   description: String<br />}</pre> | App-Developer | 
| Stellen Sie die AppSync AWS-API bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html)Wenden Sie für das in diesem Muster verwendete ToDoList App-Setup die folgende Beispielkonfiguration an.**Beispiel für AppSync AWS-API-Konfigurationseinstellungen**Die folgende Konfiguration erstellt die GraphQL-API in AWS AppSync und eine **Todo-Tabelle** in Dynamo DB.<pre> ? Are you sure you want to continue? Yes<br />? Do you want to generate code for your newly created GraphQL API Yes<br />? Choose the code generation language target javascript<br />? Enter the file name pattern of graphql queries, mutations and subscriptions src/graphql/**/*.js<br />? Do you want to generate/update all possible GraphQL operations - \ <br />queries, mutations and subscriptions Yes<br />? Enter maximum statement depth \<br />[increase from default if your schema is deeply nested] 2</pre> | App-Developer | 
| Connect das Frontend der App mit der AppSync AWS-API. | Um die in diesem Muster bereitgestellte ToDoList Beispiel-App zu verwenden, kopieren Sie den Code aus der Datei **App.js** im ios-todo-app GitHub Repository [aws-amplify-react-native-](https://github.com/aws-samples/aws-amplify-react-native-ios-todo-app). Integrieren Sie dann den Beispielcode in Ihre lokale Umgebung.Der in der Datei **App.js** des Repositorys enthaltene Beispielcode bewirkt Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-a-serverless-react-native-mobile-app-by-using-aws-amplify.html) | App-Developer | 

## Zugehörige Ressourcen
<a name="build-a-serverless-react-native-mobile-app-by-using-aws-amplify-resources"></a>
+ [AWS Amplify](https://aws.amazon.com/amplify/)
+ [Amazon Cognito](https://aws.amazon.com/cognito/)
+ [AWS AppSync](https://aws.amazon.com/appsync/)
+ [Amazon-DynamoDB](https://aws.amazon.com/dynamodb/)
+ [React (React-Dokumentation](https://reactjs.org/)) 

# Mandanten für mehrere SaaS-Produkte auf einer einzigen Steuerebene verwalten
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane"></a>

*Ramanna Avancha, Kishan Kavala, Anusha Mandava und Jenifer Pascal, Amazon Web Services*

## Zusammenfassung
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-summary"></a>

Dieses Muster zeigt, wie Mandantenlebenszyklen für mehrere SaaS-Produkte (Software as a Service) auf einer einzigen Steuerungsebene in der AWS-Cloud verwaltet werden. Die bereitgestellte Referenzarchitektur kann Unternehmen dabei helfen, die Implementierung redundanter, gemeinsam genutzter Funktionen in ihren einzelnen SaaS-Produkten zu reduzieren und die Governance-Effizienz in großem Umfang zu steigern.

Große Unternehmen können mehrere SaaS-Produkte in verschiedenen Geschäftsbereichen anbieten. Diese Produkte müssen häufig für die Nutzung durch externe Mandanten mit unterschiedlichen Abonnementstufen bereitgestellt werden. Ohne eine gemeinsame Mandantenlösung müssen IT-Administratoren Zeit damit verbringen, undifferenzierte Funktionen über mehrere SaaS hinweg zu verwalten APIs, anstatt sich auf die Entwicklung der Kernproduktfunktionen zu konzentrieren.

Die in diesem Muster bereitgestellte Common-Tenant-Lösung kann dazu beitragen, die Verwaltung vieler gemeinsam genutzter SaaS-Produktfunktionen eines Unternehmens zu zentralisieren, darunter die folgenden:
+ Sicherheit
+ Bereitstellung von Mandanten
+ Speicherung von Mieterdaten
+ Kommunikation mit Mietern
+ Produktmanagement
+ Protokollierung und Überwachung von Metriken

## Voraussetzungen und Einschränkungen
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Kenntnisse über Amazon Cognito oder einen externen Identitätsanbieter (IdP)
+ Kenntnisse über Amazon API Gateway
+ Kenntnisse über AWS Lambda
+ Kenntnisse über Amazon DynamoDB
+ Kenntnisse in AWS Identity and Access Management (IAM)
+ Kenntnis von AWS Step Functions
+ Kenntnisse von AWS CloudTrail und Amazon CloudWatch
+ Kenntnisse von Python-Bibliotheken und Code
+ Kenntnisse über SaaS APIs, einschließlich der verschiedenen Benutzertypen (Organisationen, Mandanten, Administratoren und Anwendungsbenutzer), Abonnementmodelle und Modelle zur Mandantenisolierung
+ Kenntnis der SaaS-Anforderungen Ihres Unternehmens für mehrere Produkte und Mehrmandantenabonnements

**Einschränkungen**
+ Integrationen zwischen der Common-Tenant-Lösung und einzelnen SaaS-Produkten werden in diesem Muster nicht behandelt.
+ Dieses Muster stellt den Amazon Cognito-Service nur in einer einzigen AWS-Region bereit.

## Architektur
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon API Gateway
+ Amazon Cognito
+ AWS CloudTrail
+ Amazon CloudWatch
+ Amazon DynamoDB
+ IAM
+ AWS Lambda
+ Amazon Simple Storage Service (Amazon-S3)
+ Amazon-Simple-Notification-Service (Amazon-SNS)
+ Funktionen von AWS Step

**Zielarchitektur**

Das folgende Diagramm zeigt einen Beispiel-Workflow für die Verwaltung von Mandantenlebenszyklen für mehrere SaaS-Produkte auf einer einzigen Steuerungsebene in der AWS-Cloud.

![\[Workflow für die Verwaltung der Lebenszyklen von Mandanten auf einer einzigen Kontrollebene.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/4306bc76-22a7-45ca-a107-43df6c6f7ac8/images/700faf4d-c28f-4814-96aa-2d895cdcb518.png)


 Das Diagramm zeigt den folgenden Workflow:

1. Ein AWS-Benutzer initiiert die Mandantenbereitstellung, Produktbereitstellung oder verwaltungsbezogene Aktionen, indem er einen API-Gateway-Endpunkt aufruft.

1. Der Benutzer wird durch ein Zugriffstoken authentifiziert, das aus einem Amazon Cognito Cognito-Benutzerpool oder einem anderen IdP abgerufen wird.

1. Einzelne Bereitstellungs- oder Verwaltungsaufgaben werden von Lambda-Funktionen ausgeführt, die in API Gateway API-Endpunkte integriert sind.

1.  APIs Bei der Verwaltung der gemeinsamen Mandantenlösung (für Mandanten, Produkte und Benutzer) werden alle erforderlichen Eingabeparameter, Header und Token erfasst. Dann APIs ruft die Administration die zugehörigen Lambda-Funktionen auf.

1. IAM-Berechtigungen sowohl für die Administration APIs als auch für die Lambda-Funktionen werden vom IAM-Dienst validiert.

1. Lambda-Funktionen speichern und rufen Daten aus den Katalogen (für Mandanten, Produkte und Benutzer) in DynamoDB und Amazon S3 ab.

1. Nachdem die Berechtigungen validiert wurden, wird ein AWS Step Functions Functions-Workflow aufgerufen, um eine bestimmte Aufgabe auszuführen. Das Beispiel im Diagramm zeigt einen Workflow zur Mandantenbereitstellung.

1. Einzelne AWS Step Functions Functions-Workflow-Aufgaben werden in einem vordefinierten Workflow (State Machine) ausgeführt.

1. Alle wichtigen Daten, die für die Ausführung der Lambda-Funktion benötigt werden, die jeder Workflow-Aufgabe zugeordnet ist, werden entweder von DynamoDB oder Amazon S3 abgerufen. Andere AWS-Ressourcen müssen möglicherweise mithilfe einer CloudFormation AWS-Vorlage bereitgestellt werden.

1. Bei Bedarf sendet der Workflow eine Anfrage zur Bereitstellung zusätzlicher AWS-Ressourcen für ein bestimmtes SaaS-Produkt an das AWS-Konto dieses Produkts.

1. Wenn die Anfrage erfolgreich ist oder fehlschlägt, veröffentlicht der Workflow die Statusaktualisierung als Nachricht zu einem Amazon SNS SNS-Thema.

1. Amazon SNS hat das Amazon SNS-Thema des Step Functions Functions-Workflows abonniert.

1. Amazon SNS sendet dann die Workflow-Status-Aktualisierung zurück an den AWS-Benutzer.

1. Protokolle der Aktionen der einzelnen AWS, einschließlich eines Prüfprotokolls mit API-Aufrufen, werden an gesendet CloudWatch. CloudWatch Für jeden Anwendungsfall können spezifische Regeln und Alarme konfiguriert werden.

1. Protokolle werden zu Prüfungszwecken in Amazon S3 S3-Buckets archiviert.

**Automatisierung und Skalierung**

Dieses Muster verwendet eine CloudFormation Vorlage, um die Bereitstellung der Common-Tenant-Lösung zu automatisieren. Die Vorlage kann Ihnen auch dabei helfen, die zugehörigen Ressourcen schnell nach oben oder unten zu skalieren.

Weitere Informationen finden Sie unter [Arbeiten mit CloudFormation AWS-Vorlagen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) im * CloudFormation AWS-Benutzerhandbuch*.

## Tools
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-tools"></a>

**AWS-Services**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) unterstützt Sie bei der Prüfung der Unternehmensführung, der Einhaltung von Vorschriften und des Betriebsrisikos Ihres AWS-Kontos.
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Metriken Ihrer AWS-Ressourcen und der Anwendungen, die Sie auf AWS ausführen, in Echtzeit zu überwachen.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS-Ressourcen sicher zu verwalten, indem kontrolliert wird, 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.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [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.

## Best Practices
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-best-practices"></a>

Die Lösung in diesem Muster verwendet eine einzige Steuerungsebene, um das Onboarding mehrerer Mandanten zu verwalten und den Zugriff auf mehrere SaaS-Produkte bereitzustellen. Die Steuerungsebene hilft administrativen Benutzern bei der Verwaltung von vier weiteren, funktionsspezifischen Ebenen:
+ Sicherheitsebene
+ Workflow-Ebene
+ Kommunikationsebene
+ Protokollierungs- und Überwachungsebene

## Epen
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-epics"></a>

### Konfigurieren Sie die Sicherheitsebene
<a name="configure-the-security-plane"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Legen Sie die Anforderungen für Ihre Multi-Tenant-SaaS-Plattform fest. | Legen Sie detaillierte Anforderungen für Folgendes fest:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html) | Cloud-Architekt, AWS-Systemadministrator | 
| Richten Sie den Amazon Cognito-Service ein. | Folgen Sie den Anweisungen unter [Erste Schritte mit Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-getting-started.html) im *Amazon Cognito Developer Guide*. | Cloud-Architekt | 
| Konfigurieren Sie die erforderlichen IAM-Richtlinien. | Erstellen Sie die erforderlichen IAM-Richtlinien für Ihren Anwendungsfall. Ordnen Sie dann die Richtlinien den IAM-Rollen in Amazon Cognito zu.Weitere Informationen finden Sie unter [Verwaltung des Zugriffs mithilfe von Richtlinien](https://docs.aws.amazon.com/cognito/latest/developerguide/security-iam.html#security_iam_access-manage) und [rollenbasierter Zugriffskontrolle](https://docs.aws.amazon.com/cognito/latest/developerguide/role-based-access-control.html) im *Amazon Cognito* Developer Guide. | Cloud-Administrator, Cloud-Architekt, AWS IAM-Sicherheit | 
| Konfigurieren Sie die erforderlichen API-Berechtigungen.  | Richten Sie API-Gateway-Zugriffsberechtigungen mithilfe von IAM-Rollen und -Richtlinien sowie Lambda-Autorisierern ein.Anweisungen finden Sie in den folgenden Abschnitten des *Amazon API Gateway Developer Guide*:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html) | Cloud-Administrator, Cloud-Architekt | 

### Konfigurieren Sie die Datenebene
<a name="configure-the-data-plane"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die erforderlichen Datenkataloge. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html)Weitere Informationen finden Sie unter [Setting up DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SettingUp.html) im *Amazon DynamoDB Developer Guide*. | DBA | 

### Konfigurieren Sie die Steuerungsebene
<a name="configure-the-control-plane"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie Lambda-Funktionen und API Gateway APIs , um die erforderlichen Aufgaben auf der Steuerungsebene auszuführen. | Erstellen Sie separate Lambda-Funktionen und API Gateway, APIs um Folgendes hinzuzufügen, zu löschen und zu verwalten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html)Weitere Informationen finden Sie unter [Using AWS Lambda with Amazon API Gateway](https://docs.aws.amazon.com/lambda/latest/dg/services-apigateway.html) im *AWS Lambda Developer Guide*. | App-Developer | 

### Konfigurieren Sie die Workflow-Ebene
<a name="configure-the-workflow-plane"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Identifizieren Sie die Aufgaben, die AWS Step Functions Functions-Workflows ausführen müssen. | Identifizieren und dokumentieren Sie die detaillierten AWS Step Functions Functions-Workflow-Anforderungen für Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html)Stellen Sie sicher, dass die wichtigsten Beteiligten die Anforderungen genehmigen. | Besitzer der App | 
| Erstellen Sie die erforderlichen AWS Step Functions Functions-Workflows. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html) | App-Entwickler, Lead aufbauen | 

### Konfigurieren Sie die Kommunikationsebene
<a name="configure-the-communication-plane"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie Amazon SNS SNS-Themen. | Erstellen Sie Amazon SNS SNS-Themen, um Benachrichtigungen zu folgenden Themen zu erhalten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html)Weitere Informationen finden Sie unter dem [Thema Creating an SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) im *Amazon SNS Developer Guide*. | App-Besitzer, Cloud-Architekt | 
| Abonnieren Sie Endpunkte für jedes Amazon SNS SNS-Thema. | Um Nachrichten zu erhalten, die zu einem Amazon SNS SNS-Thema veröffentlicht wurden, müssen Sie für jedes Thema einen Endpunkt abonnieren.Weitere Informationen finden Sie unter Amazon SNS [SNS-Abonnement im Amazon SNS *SNS-Entwicklerhandbuch*](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html). | App-Entwickler, Cloud-Architekt | 

### Konfigurieren Sie die Protokollierungs- und Überwachungsebene
<a name="configure-the-logging-and-monitoring-plane"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktivieren Sie die Protokollierung für jede Komponente der Common-Tenant-Lösung. | Aktivieren Sie die Protokollierung auf Komponentenebene für jede Ressource in der Common Tenant-Lösung, die Sie erstellt haben.Detaillierte Informationen finden Sie hier:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-tenants-across-multiple-saas-products-on-a-single-control-plane.html)Mithilfe von IAM-Richtlinien können Sie Protokolle für jede Ressource in einem zentralen Protokollierungskonto konsolidieren. Weitere Informationen finden Sie unter [Zentralisierte Protokollierung und Sicherheitsvorkehrungen für mehrere Konten.](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/centralized-logging-and-multiple-account-security-guardrails.html) | App-Entwickler, AWS-Systemadministrator, Cloud-Administrator | 

### Bereitstellung und Bereitstellung der Common-Tenant-Lösung
<a name="provision-and-deploy-the-common-tenant-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  CloudFormation Vorlagen erstellen. | Automatisieren Sie mithilfe von CloudFormation Vorlagen die Bereitstellung und Wartung der vollständigen Common-Tenant-Lösung und all ihrer Komponenten.Weitere Informationen finden Sie im [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html). | App-Entwickler, DevOps Ingenieur, CloudFormation Entwickler | 

## Zugehörige Ressourcen
<a name="manage-tenants-across-multiple-saas-products-on-a-single-control-plane-resources"></a>
+ [Steuern Sie den Zugriff auf eine REST-API mithilfe von Amazon Cognito Cognito-Benutzerpools als Autorisierer](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) (*Amazon API Gateway Developer Guide*)
+ [Verwenden Sie API Gateway Lambda-Autorisierer](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html) (*Amazon API Gateway* Developer Guide)
+ [Amazon Cognito Cognito-Benutzerpools](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html) (*Amazon Cognito Cognito-Entwicklerhandbuch*)
+ [Kontoübergreifende, regionsübergreifende CloudWatch Konsole](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) (* CloudWatch Amazon-Benutzerhandbuch*)

# Konsolidieren Sie die vorsignierte URL-Generierung und das Herunterladen von Objekten in Amazon S3 mithilfe eines Endpunkts, der statischen IP-Adressen zugeordnet ist
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses"></a>

*Song Jin, Eunhye Jo und Jun Soung Lee, Amazon Web Services*

## Zusammenfassung
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-summary"></a>

Dieses Muster vereinfacht den Zugriff auf Amazon Simple Storage Service (Amazon S3), indem sichere, benutzerdefinierte Vorlagen URLs für Objektdownloads erstellt werden. Die Lösung bietet einen einzigen Endpunkt mit einer eindeutigen Domain und statischen IP-Adressen. Es ist auf Kunden zugeschnitten, die eine Konsolidierung von API- und Amazon S3 S3-Endpunkten unter einer einheitlichen Domain mit statischen IP-Adressen benötigen. Bei diesem Anwendungsfall befolgen Benutzer eine Firewall-Richtlinie für IP-Adressen und Domain-Zulassungslisten, wodurch der API-Zugriff auf bestimmte Domänen und IP-Adressen beschränkt wird. 

Die Architektur verwendet Schlüssel AWS-Services wie AWS Global Accelerator Amazon API Gateway AWS Lambda, Application Load Balancer und Amazon S3. AWS PrivateLink Dieses Design zentralisiert die API für die Generierung vorsignierter Endgeräte URLs und des Amazon S3 S3-Endpunkts unter einer einzigen Domain, die mit einem Accelerator mit zwei statischen IP-Adressen verknüpft ist. Folglich können Benutzer mühelos vorsignierte Amazon S3 S3-Objekte über einen einheitlichen Domain-Endpunkt mit statischen IP-Adressen anfordern URLs und herunterladen. 

Diese Architektur ist besonders vorteilhaft für Kunden mit strengen Richtlinien oder Compliance-Anforderungen, z. B. im öffentlichen Sektor, im medizinischen Bereich und im Finanzsektor.

## Voraussetzungen und Einschränkungen
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Eine öffentlich gehostete Zone für Ihren benutzerdefinierten Domainnamen
+ Eine in AWS Certificate Manager (ACM) importierte Domain in AWS-Region der Ihrer Wahl

**Einschränkungen**
+ Der Amazon S3 S3-Bucket-Name muss mit dem Domainnamen des Endpunkts übereinstimmen. Diese Anforderung soll sicherstellen, dass der Amazon S3 S3-Endpunkt über den einzigen API-Endpunkt bedient werden kann.
+ Der in API Gateway verwendete benutzerdefinierte Domainname sollte mit dem Domainnamen des einzelnen API-Endpunkts übereinstimmen.
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-architecture"></a>

Das folgende Diagramm zeigt die Zielarchitektur und den Arbeitsablauf für dieses Muster.

![\[Komponenten und Arbeitsablauf für die Generierung vorab signierter URLs und das Herunterladen von Objekten.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e19ebcb5-2138-481e-952e-3cfee9ad9e97/images/effd197c-d4d7-4990-8b66-3eb1c64aab4c.png)


Das Diagramm veranschaulicht das folgende Konzept und den folgenden Arbeitsablauf:

1. Ein Benutzer initiiert eine Anforderung zur Generierung einer vorsignierten URL mithilfe des benutzerdefinierten Endpunkts AWS Global Accelerator, über den der benutzerdefinierte Domänenname und die zugehörigen IP-Adressen bereitgestellt wird.

1. Eine Lambda-Funktion generiert die vorsignierte URL, die auf den benutzerdefinierten Endpunkt verweist. Sie antwortet mit einer 301-Weiterleitung, die die generierte vorsignierte URL enthält. Über die umgeleitete vorsignierte URL lädt der Benutzer das Objekt automatisch herunter, indem er den benutzerdefinierten Endpunkt verwendet, der über Global Accelerator bereitgestellt wird.

Die Gesamtarchitektur für die Generierung vorsignierter URLs und den Workflow zum Herunterladen von Objekten besteht aus folgenden Komponenten:
+ Bereitstellung statischer IP-Adressen durch Global Accelerator.
+ Registrierung des Alias des Accelerators als A-Eintrag in der öffentlich gehosteten Zone von Amazon Route 53 mit dem benutzerdefinierten Domainnamen.
+ Erstellung eines Amazon S3 S3-Buckets mit einem Bucket-Namen, der dem registrierten benutzerdefinierten Domainnamen entspricht.
+ Erstellung von VPC-Endpunkten für API Gateway und den Amazon S3 S3-Service.
+ Konfiguration eines intern gerichteten Application Load Balancer für die Verbindung mit Global Accelerator.
+ Zuweisung eines benutzerdefinierten Domainnamens für API Gateway mit angehängtem ACM-Zertifikat.
+ Bereitstellung eines privaten API Gateway, das in eine Lambda-Funktion integriert ist.
+ Die Lambda-Funktion ist mit einer angehängten AWS Identity and Access Management (IAM-) Rolle (mit [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)Berechtigungen) ausgestattet.

## Tools
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-tools"></a>

**AWS-Services**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) verteilen den eingehenden Anwendungsdatenverkehr auf mehrere Ziele, z. B. Amazon Elastic Compute Cloud (Amazon EC2) -Instances, in mehreren Availability Zones.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) unterstützt Sie bei der Erstellung, Speicherung und Erneuerung öffentlicher und privater SSL/TLS X.509-Zertifikate und -Schlüssel, die Ihre AWS Websites und Anwendungen schützen.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen.
+ [AWS Global Accelerator](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html)ist ein globaler Dienst, der mehrere AWS-Regionen Endpunkte unterstützt. Sie können Beschleuniger erstellen, die den Datenverkehr über das globale Netzwerk an optimale Endpunkte weiterleiten. AWS Dies verbessert die Verfügbarkeit und Leistung Ihrer Internetanwendungen, die von einer globalen Zielgruppe verwendet werden.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)hilft Ihnen dabei, unidirektionale, private Verbindungen von Ihren virtuellen privaten Clouds (VPCs) zu Diensten außerhalb der VPC herzustellen.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Andere Tools**
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.

**Code-Repository**

Sie können dieses Muster je nach Wunsch entweder mit AWS CDK oder mit Terraform bereitstellen. Der Abschnitt [Epics](#consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-epics) enthält Anweisungen für beide Bereitstellungsmethoden. Der Code für dieses Muster ist in den folgenden GitHub Repositorys verfügbar:
+ **AWS CDK**— [s3- -cdk presignedurl-staticips-endpoint-with](https://github.com/aws-samples/s3-presignedurl-staticips-endpoint-with-cdk)
+ **[Terraform — s3- -Terraform presignedurl-staticips-endpoint-with](https://github.com/aws-samples/s3-presignedurl-staticips-endpoint-with-terraform)**

## Best Practices
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-best-practices"></a>
+ Um die Sicherheit in der Produktionsumgebung zu erhöhen, ist es wichtig, Autorisierungsmechanismen wie [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) zu implementieren, um den Zugriff auf die `PresignedUrl` Generierungs-API einzuschränken.
+ Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).

## Epen
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-epics"></a>

### Bereite die Umgebung vor
<a name="prepare-the-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Entscheiden Sie sich für einen Domainnamen. | Entscheiden Sie sich für einen öffentlichen Domainnamen für den einheitlichen Amazon S3 S3-Endpunkt. Der Domainname wird auch als Amazon S3 S3-Bucket-Name verwendet. | AWS-Administrator, Netzwerkadministrator | 
| Erstellen Sie eine öffentliche gehostete Zone. | [Erstellen Sie eine öffentlich gehostete Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) in Amazon Route 53. Sein Domainname muss mit dem Domainnamen übereinstimmen, der in API Gateway verwendet wird. | AWS-Administrator, Netzwerkadministrator | 
| Bereiten Sie ein SSL-Zertifikat vor. | Verwenden Sie AWS Certificate Manager (ACM), um ein SSL-Zertifikat für Ihre Webanwendungsdomäne [anzufordern](https://docs.aws.amazon.com/acm/latest/userguide/acm-public-certificates.html) oder zu [importieren](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html). | AWS-Administrator, Netzwerkadministrator | 

### Stellen Sie das Muster mit Terraform bereit
<a name="deploy-the-pattern-with-terraform"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie die Terraform-Entwicklungsumgebung ein. | Gehen Sie wie folgt vor, um die Entwicklungsumgebung einzurichten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | AWS-Administrator, Cloud-Administrator | 
| Ändern Sie die **`provider.tf`**Dateien `.tfvars` und. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html)**Beachten Sie Folgendes:**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | AWS-Administrator, Cloud-Administrator | 
| Stellen Sie Netzwerkressourcen bereit. | Führen Sie die folgenden Befehle aus, um Netzwerkressourcen bereitzustellen:<pre>cd ./2.vpc_alb_ga<br />terraform init<br />terraform plan --var-file=apg.tfvars<br />terraform apply --var-file=apg.tfvars</pre>Geben Sie bei der Ausführung des `apply ` Befehls **yes** ein, wenn Sie dazu aufgefordert werden. | AWS-Administrator, Cloud-Administrator | 
| Stellen Sie API Gateway, Amazon S3 und Lambda bereit. | Verwenden Sie die folgenden Befehle, um Netzwerkressourcen bereitzustellen:<pre>cd ./2.apigw_s3_lambda<br />terraform init<br />terraform plan --var-file=apg.tfvars<br />terraform apply --var-file=apg.tfvars</pre> | AWS-Administrator, Cloud-Administrator | 

### Stellen Sie das Muster bereit mit AWS CDK
<a name="deploy-the-pattern-with-cdk"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie die AWS CDK Entwicklungsumgebung ein. | Gehen Sie wie folgt vor, um die Entwicklungsumgebung einzurichten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | AWS-Administrator, Cloud-Administrator | 
| Konfigurieren Sie die Domain-Einstellungen in der `config/index.ts` Datei. | Verwenden Sie die folgenden Befehle, um die Optionen der konstanten Variablen zu bearbeiten:<pre>export const options = {<br />    certificateArn: '{arn of the acm which created before}',<br />    dnsAttr: {<br />        zoneName: '{public hosted zone name}',<br />        hostedZoneId: 'hosted zone Id',<br />    },<br />    domainNamePrefix: '{Prefix for the domain}',<br />    presignPath: 'presign',<br />    objectsPath: 'objects',<br />};</pre>Ersetzen Sie in den Befehlen jeden Platzhalter durch Ihre eigenen Informationen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | AWS-Administrator, Cloud-Administrator | 
| Stellen Sie die Stacks bereit. | Verwenden Sie den folgenden Befehl, um zwei Stacks bereitzustellen, einen für die Virtual Private Cloud (VPC) und einen weiteren für die Anwendung:<pre>$ npm install <br />$ cdk synth <br />$ cdk deploy --all</pre> | AWS-Administrator, Cloud-Administrator | 

### Testen Sie das Muster
<a name="test-the-pattern"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die IP-Adressen des Endpunkts. | Verwenden Sie den folgenden Befehl, um zu überprüfen, ob die Domäne für dieses Muster statische IP-Adressen hat:<pre>nslookup ${s3-bucket-prefix}.${domain}</pre> | Netzwerkadministrator | 
| Laden Sie eine Testdatei hoch, die Sie später herunterladen können. | Laden Sie die Testdatei in den `'/objects'` Ordner im Amazon S3 S3-Bucket hoch. | AWS-Administrator, Cloud-Administrator | 
| Rufen Sie die API auf, um eine vorsignierte URL zu generieren. | Um eine vorsignierte URL zu generieren, rufen Sie die URL in einem Browser oder API-Client (z. B. [Postman](https://www.postman.com/product/what-is-postman/)) im folgenden Format auf:<pre>https://${s3-bucket-prefix}.${domain}/presign/objects/${uploaded-filename}</pre>Ersetzen Sie die Platzhalterwerte in `${s3-bucket-prefix}` und `${domain}` durch die Werte, die Sie in den vorherigen Schritten festgelegt haben. | Besitzer der App | 
| Überprüfe das Ergebnis. | Das erwartete Ergebnis ist, dass Sie einen Statuscode für die Weiterleitung 301 (dauerhaft verschoben) erhalten sollten. Diese Antwort enthält die vorsignierte URL, die den Download Ihrer Testdatei automatisch initiieren sollte. | Testingenieur | 

### Mit Terraform aufräumen
<a name="clean-up-with-terraform"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Zerstören Sie API Gateway-, Amazon S3- und Lambda-Ressourcen. | Verwenden Sie die folgenden Befehle, um Ressourcen zu löschen:<pre>cd ./2.apigw_s3_lambda<br />terraform init<br />terraform plan --destroy --var-file=apg.tfvars<br />terraform destroy --var-file=apg.tfvars<br /></pre> | AWS-Administrator, Cloud-Administrator | 
| Zerstören Sie Netzwerkressourcen. | Verwenden Sie die folgenden Befehle, um Netzwerkressourcen zu löschen:<pre>cd ./1.vpc_alb_ga<br />terraform init<br />terraform plan --destroy --var-file=apg.tfvars<br />terraform destroy --var-file=apg.tfvars<br /></pre> | AWS-Administrator, Cloud-Administrator | 

### Aufräumen mit AWS CDK
<a name="clean-up-with-cdk"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Zerstöre die Stapel. | Verwenden Sie den folgenden Befehl, um sowohl den VPC- als auch den Anwendungsstapel zu löschen:<pre>$ cdk destroy --all</pre> | AWS-Administrator, Cloud-Administrator | 
| Leeren und löschen Sie die Amazon S3 S3-Buckets. | [Leeren](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) und [löschen Sie](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) das Objekt Amazon S3 S3-Bucket und den Amazon S3 S3-Logs-Bucket, die nicht standardmäßig gelöscht werden.Die Amazon S3 S3-Bucket-Namen lauten `${s3-bucket-prefix}.${domain}` und`${s3-bucket-prefix}.${domain}-logs`.Wenn Sie es vorziehen, das [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) zum Löschen der Buckets zu verwenden, verwenden Sie die folgenden Befehle:<pre>$ aws s3 rm s3://${s3-bucket-prefix}.${domain} --recursive<br />$ aws s3 rb s3://${s3-bucket-prefix}.${domain} --force<br />$ aws s3 rm s3://${s3-bucket-prefix}.${domain}-logs --recursive<br />$ aws s3 rb s3://${s3-bucket-prefix}.${domain}-logs --force</pre>Ersetzen Sie `${s3-bucket-prefix}` und `${domain}` durch die Werte, die Sie in den vorherigen Schritten festgelegt haben. , /p> | AWS-Administrator, Cloud-Administrator | 

## Zugehörige Ressourcen
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-resources"></a>

**AWS Blogs**
+ [Zugriff auf ein Amazon API Gateway über statische IP-Adressen, bereitgestellt von AWS Global Accelerator](https://aws.amazon.com/blogs/networking-and-content-delivery/accessing-an-aws-api-gateway-via-static-ip-addresses-provided-by-aws-global-accelerator/) 
+ [Generieren Sie eine vorsignierte URL in modularer Form AWS CDK JavaScript](https://aws.amazon.com/blogs/developer/generate-presigned-url-modular-aws-sdk-javascript/) 
+ [Hosten interner statischer HTTPS-Websites mit ALB, S3 und PrivateLink](https://aws.amazon.com/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/) 

# Erstellen Sie eine kontoübergreifende EventBridge Amazon-Verbindung in einer Organisation
<a name="create-cross-account-amazon-eventbridge-connection-organization"></a>

*Sam Wilson und Robert Stone, Amazon Web Services*

## Zusammenfassung
<a name="create-cross-account-amazon-eventbridge-connection-organization-summary"></a>

Große verteilte Systeme verwenden Amazon EventBridge , um Statusänderungen zwischen verschiedenen Amazon Web Services (AWS) -Konten in einer AWS Organizations Organisation zu kommunizieren. EventBridge Ist jedoch in der Regel in der Lage, nur Endgeräte oder Verbraucher in derselben AWS-Konto Umgebung anzusprechen. Die Ausnahme ist ein Event-Bus in einem anderen Konto. Dieser Event-Bus ist ein gültiges Ziel. Um Ereignisse aus einem Event-Bus in einem anderen Konto zu verarbeiten, müssen die Ereignisse vom Event-Bus des Quellkontos in den Event-Bus des Zielkontos übertragen werden. Verwenden Sie den in diesem Muster beschriebenen empfohlenen Ansatz AWS-Konten, um Probleme bei der Verwaltung kritischer Ereignisse zwischen Anwendungen innerhalb verschiedener Anwendungen zu vermeiden.

Dieses Muster veranschaulicht, wie eine ereignisgesteuerte Architektur implementiert wird EventBridge , an der mehrere Personen AWS-Konten in einer AWS Organizations Organisation beteiligt sind. Das Muster verwendet AWS Cloud Development Kit (AWS CDK) Toolkit und. AWS CloudFormation

EventBridge bietet einen serverlosen Event-Bus, der Sie beim Empfangen, Filtern, Transformieren, Weiterleiten und Bereitstellen von Ereignissen unterstützt. Als wichtige Komponente ereignisgesteuerter Architekturen EventBridge unterstützt es die Trennung zwischen Nachrichtenproduzenten und Empfängern dieser Nachrichten. In einem einzigen Konto ist das ganz einfach. Bei einer Struktur mit mehreren Konten sind zusätzliche Überlegungen erforderlich, damit Ereignisse auf dem Event-Bus in einem Konto auf andere Konten innerhalb derselben Organisation übertragen werden können.

Informationen zu kontospezifischen Überlegungen für Produzenten und Verbraucher finden Sie im Abschnitt [Zusätzliche](#create-cross-account-amazon-eventbridge-connection-organization-additional) Informationen.

## Voraussetzungen und Einschränkungen
<a name="create-cross-account-amazon-eventbridge-connection-organization-prereqs"></a>

**Voraussetzungen**
+ Eine AWS Organizations Organisation, der mindestens zwei Personen angehören AWS-Konten
+ Eine AWS Identity and Access Management (IAM-) Rolle in beiden AWS-Konten , mit der Sie die Infrastruktur in beiden bereitstellen können, AWS-Konten indem Sie AWS CloudFormation
+ Git [lokal installiert](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
+ AWS Command Line Interface (AWS CLI) [lokal installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ AWS CDK [lokal installiert](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) und in [beiden Bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html#bootstrapping-howto) AWS-Konten

**Produktversionen**

Dieses Muster wurde mit den folgenden Tools und Versionen erstellt und getestet:
+ AWS CDK Toolkit 2.126.0
+ Node.js 18.19.0
+ npm 10.2.3
+ Python 3.12

Dieses Muster sollte mit jeder Version von AWS CDK v2 oder npm funktionieren. Die Versionen 13.0.0 bis 13.6.0 von Node.js sind nicht kompatibel mit. AWS CDK

## Architektur
<a name="create-cross-account-amazon-eventbridge-connection-organization-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm zeigt den Architektur-Workflow für die Übertragung eines Ereignisses von einem Konto aus und dessen Verarbeitung in einem anderen Konto.

![\[Der dreistufige Prozess zum Verbinden des Quell-Produzentenkontos und des Ziel-Verbraucherkontos.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/34a5f3ae-511d-4636-999f-c73396770117/images/ccc4878a-6281-4a77-a483-4e6f299d7807.png)


Der Workflow umfasst die folgenden Schritte:

1. Die AWS Lambda Producer-Funktion im Quellkonto platziert ein Ereignis auf dem EventBridge Event-Bus des Kontos.

1. Die kontenübergreifende EventBridge Regel leitet das Ereignis an einen EventBridge Event-Bus im Zielkonto weiter.

1. Der EventBridge Eventbus im Zielkonto hat eine Lambda-Zielregel, die die Consumer-Lambda-Funktion aufruft.

Eine bewährte Methode ist die Verwendung einer [Dead Letter Queue (DLQ)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html) für die Behandlung fehlgeschlagener Aufrufe der Consumer-Lambda-Funktion. Aus Gründen der Übersichtlichkeit wurde die DLQ in dieser Lösung jedoch weggelassen. Weitere Informationen darüber, wie Sie eine DLQ in Ihren Workflows implementieren und die Fähigkeit Ihrer Workflows zur Wiederherstellung nach Fehlern verbessern können, finden Sie im Blogbeitrag [Implementieren von AWS Lambda Fehlerbehandlungsmustern](https://aws.amazon.com/blogs/compute/implementing-aws-lambda-error-handling-patterns/).

**Automatisierung und Skalierung**

AWS CDK stellt automatisch die erforderliche Architektur bereit. EventBridge kann je nach auf Tausende von Datensätzen pro Sekunde skaliert AWS-Region werden. Weitere Informationen finden Sie in der [Dokumentation zu EventBridge Amazon-Kontingenten](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

## Tools
<a name="create-cross-account-amazon-eventbridge-connection-organization-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung von AWS Cloud Infrastruktur im Code unterstützt. Dieses Muster verwendet das [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html), ein Cloud-Entwicklungskit für die Befehlszeile, mit dem Sie mit Ihrer AWS CDK App interagieren können.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)ist ein Kontoverwaltungsservice, mit dem Sie mehrere Konten zu einer Organisation AWS-Konten zusammenfassen können, die Sie erstellen und zentral verwalten.

**Andere Tools**
+ [Node.js](https://nodejs.org/en/docs/) ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen entwickelt wurde.
+ [npm](https://docs.npmjs.com/about-npm) ist eine Softwareregistrierung, die in einer Node.js -Umgebung ausgeführt wird und verwendet wird, um Pakete gemeinsam zu nutzen oder auszuleihen und die Bereitstellung von privaten Paketen zu verwalten.
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [cross-account-eventbridge-in-organization](https://github.com/aws-samples/aws-cdk-examples/tree/main/python/cross-account-eventbridge-in-organization) verfügbar.

## Best Practices
<a name="create-cross-account-amazon-eventbridge-connection-organization-best-practices"></a>

Bewährte Methoden für die Arbeit mit EventBridge finden Sie in den folgenden Ressourcen:
+ [Bewährte Methoden für EventBridge Amazon-Event-Muster](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-patterns-best-practices.html)
+ [Bewährte Methoden bei der Definition von Regeln in Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules-best-practices.html)

## Epen
<a name="create-cross-account-amazon-eventbridge-connection-organization-epics"></a>

### Bereiten Sie Ihre lokale AWS CDK Bereitstellungsumgebung vor
<a name="prepare-your-local-cdk-deployment-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie lokale Anmeldeinformationen für das Quellkonto und das Zielkonto. | Lesen Sie [unter Neue Konfiguration und neue Anmeldeinformationen einrichten](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html#getting-started-quickstart-new) und verwenden Sie die Authentifizierungs- und Anmeldemethode, die für Ihre Umgebung am sinnvollsten ist.Stellen Sie sicher, dass Sie die Authentifizierung sowohl AWS CLI für das Quellkonto als auch für das Zielkonto konfigurieren.Bei diesen Anweisungen wird davon ausgegangen, dass Sie zwei AWS-Profile lokal konfiguriert haben: `sourceAccount` und`destinationAccount`. | App-Developer | 
| Bootstrap für beide AWS-Konten. | Führen Sie die folgenden Befehle aus, um die Konten zu booten:<pre>cdk bootstrap --profile sourceAccount<br />cdk bootstrap --profile destinationAccount</pre> | App-Developer | 
| Klonen Sie den Mustercode. | Führen Sie den folgenden Befehl aus, um das Repository zu klonen:<pre>git clone git@github.com:aws-samples/aws-cdk-examples.git</pre>Ändern Sie dann das Verzeichnis in den neu geklonten Projektordner:<pre>cd aws-cdk-examples/python/cross-account-eventbridge-in-organization</pre> | App-Developer | 

### Auf ProducerStack das Quellkonto bereitstellen
<a name="deploy-producerstack-to-the-source-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ändern Sie `cdk.json` mit Ihren Daten AWS Organizations und Ihren Kontodaten. | Nehmen Sie im Stammordner des Projekts die folgenden Änderungen vor`cdk.json`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | App-Developer | 
| Stellen Sie die ProducerStack Ressourcen bereit. | Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus:<pre>cdk deploy ProducerStack --profile sourceAccount</pre>Wenn Sie dazu aufgefordert werden, akzeptieren Sie die neuen IAM-Rollen und andere sicherheitsrelevante Berechtigungen, die durch erstellt wurden. AWS CloudFormation | App-Developer | 
| Stellen Sie sicher, dass die ProducerStack Ressourcen bereitgestellt wurden. | Gehen Sie wie folgt vor, um die Ressourcen zu überprüfen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | App-Developer | 

### Auf ConsumerStack dem Zielkonto bereitstellen
<a name="deploy-consumerstack-to-the-destination-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die ConsumerStack Ressourcen bereit. | Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus:<pre>cdk deploy ConsumerStack --profile destinationAccount</pre>Wenn Sie dazu aufgefordert werden, akzeptieren Sie die neuen IAM-Rollen und andere sicherheitsrelevante Berechtigungen, die durch erstellt wurden. CloudFormation | App-Developer | 
| Stellen Sie sicher, dass die Ressourcen bereitgestellt wurden ConsumerStack  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | App-Developer | 

### Ereignisse produzieren und nutzen
<a name="produce-and-consume-events"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Rufen Sie die Producer Lambda-Funktion auf. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | App-Developer | 
| Stellen Sie sicher, dass das Ereignis empfangen wurde. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | App-Developer | 

### Bereinigen
<a name="cleanup"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Zerstöre die ConsumerStack Ressourcen. | Wenn Sie dieses Muster als Test verwenden, bereinigen Sie die bereitgestellten Ressourcen, um zusätzliche Kosten zu vermeiden.Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus:<pre>cdk destroy ConsumerStack --profile destinationAccount</pre>Sie werden aufgefordert, das Löschen des Stacks zu bestätigen. | App-Developer | 
| Zerstöre die ProducerStack Ressourcen. | Führen Sie den folgenden Befehl im Stammverzeichnis des Projekts aus:<pre>cdk destroy ProducerStack --profile sourceAccount</pre>Sie werden aufgefordert, das Löschen des Stacks zu bestätigen. | App-Developer | 

## Fehlerbehebung
<a name="create-cross-account-amazon-eventbridge-connection-organization-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Im Zielkonto wurde kein Ereignis empfangen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-cross-account-amazon-eventbridge-connection-organization.html) | 
| Beim Aufrufen einer Lambda-Funktion von der Konsole aus wird der folgende Fehler zurückgegeben: `User: arn:aws:iam::123456789012:user/XXXXX is not authorized to perform: lambda:Invoke` | Wenden Sie sich an Ihren AWS-Konto Administrator, um die entsprechenden `lambda:Invoke` Aktionsberechtigungen für die `ProducerStack-ProducerLambdaXXXX` Lambda-Funktion zu erhalten. | 

## Zugehörige Ressourcen
<a name="create-cross-account-amazon-eventbridge-connection-organization-resources"></a>

**Referenzen**
+ [AWS Organizations Benutzerhandbuch](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)
+ [ EventBridge Amazon-Ereignismuster](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)
+ [Regeln bei Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)

**Tutorials und Videos**
+ [Tutorial: Organisation erstellen und konfigurieren](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html)
+ [AWS re:Invent 2023 — Fortgeschrittene ereignisgesteuerte Muster mit Amazon (01-R) EventBridge COM3](https://www.youtube.com/watch?v=6X4lSPkn4ps)

## Zusätzliche Informationen
<a name="create-cross-account-amazon-eventbridge-connection-organization-additional"></a>

**Regel des Produzenten**

Im Quellkonto wird ein EventBridge Event-Bus erstellt, der Nachrichten von Produzenten akzeptiert (wie im Abschnitt *Architektur* gezeigt). Für diesen Eventbus wird eine Regel mit zugehörigen IAM-Berechtigungen erstellt. Die Regeln zielen auf den EventBridge Event-Bus im Zielkonto ab und basieren auf der folgenden `cdk.json` Struktur:

```
"rules": [
  {
    "id": "CrossAccount",
    "sources": ["Producer"],
    "detail_types": ["TestType"],
    "targets": [
      {
        "id": "ConsumerEventBus",
        "arn": "arn:aws:events:us-east-2:012345678901:event-bus/CrossAccount"
      }
    ]
  }
]
```

Für jeden konsumierenden Event-Bus müssen das Ereignismuster und der Ziel-Event-Bus angegeben werden.

*Ereignismuster*

Mit [Ereignismustern](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) wird gefiltert, für welche Ereignisse diese Regel gilt. Für dieses Beispiel geben die Ereignisquellen und der Datensatz an, `detail_types` welche Ereignisse vom Ereignisbus des Quellkontos an den Ereignisbus des Zielkontos übertragen werden sollen.

*Ziel-Event-Bus*

Diese Regel zielt auf einen Eventbus ab, der in einem anderen Konto vorhanden ist. Der vollständige Name `arn` (Amazon-Ressourcenname) wird benötigt, um den Ziel-Event-Bus eindeutig zu identifizieren, und das `id` ist die [logische ID](https://docs.aws.amazon.com/cdk/v2/guide/identifiers.html#identifiers_logical_ids), die von verwendet wird AWS CloudFormation. Der Ziel-Event-Bus muss zum Zeitpunkt der Erstellung der Zielregel noch nicht vorhanden sein.

**Spezifische Überlegungen zum Zielkonto**

Im Zielkonto wird ein EventBridge Ereignisbus erstellt, um Nachrichten vom Ereignisbus des Quellkontos zu empfangen. Damit Ereignisse vom Quellkonto aus veröffentlicht werden können, müssen Sie eine [ressourcenbasierte](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html) Richtlinie erstellen:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Sid": "AllowOrgToPutEvents",
    "Effect": "Allow",
    "Principal": "*",
    "Action": "events:PutEvents",
    "Resource": "arn:aws:events:us-east-2:012345678901:event-bus/CrossAccount",
    "Condition": {
      "StringEquals": {
        "aws:PrincipalOrgID": "o-XXXXXXXXX"
      }
    }
  }]
}
```

Es ist besonders wichtig, die `events:PutEvents` Erlaubnis zu erteilen, die es jedem anderen Konto in derselben Organisation ermöglicht, Ereignisse in diesem Event-Bus zu veröffentlichen. Wenn Sie `aws:PrincipalOrgId` die Organisations-ID angeben, werden die erforderlichen Berechtigungen gewährt.

**Muster des Ereignisses**

Sie können das enthaltene Ereignismuster an Ihren Anwendungsfall anpassen:

```
rule = events.Rule(
    self,
    self.id + 'Rule' + rule_definition['id'],
    event_bus=event_bus,
    event_pattern=events.EventPattern(
        source=rule_definition['sources'],
        detail_type=rule_definition['detail_types'],
    )
)
```

Um unnötige Verarbeitung zu vermeiden, sollte im Ereignismuster festgelegt werden, dass nur Ereignisse, die vom Zielkonto verarbeitet werden sollen, an den Ereignisbus des Zielkontos übertragen werden.

*Ressourcenbasierte Richtlinie*

In diesem Beispiel wird anhand der Organisations-ID gesteuert, welche Konten Ereignisse auf den Event-Bus des Zielkontos übertragen dürfen. Erwägen Sie, eine restriktivere Richtlinie zu verwenden, z. B. die Angabe des Quellkontos.

*EventBridge Kontingente*

Beachten Sie die folgenden [Kontingente](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html):
+ 300 Regeln pro Event-Bus sind das Standardkontingent. Dies kann bei Bedarf erweitert werden, sollte aber für die meisten Anwendungsfälle geeignet sein.
+ Fünf Ziele pro Regel sind das zulässige Maximum. Wir empfehlen Anwendungsarchitekten, für jedes Zielkonto eine eigene Regel zu verwenden, um eine genaue Steuerung des Ereignismusters zu ermöglichen.

# Stellen Sie DynamoDB-Datensätze mithilfe von Kinesis Data Streams und Firehose an Amazon S3 bereit mit AWS CDK
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk"></a>

*Shashank Shrivastava und Daniel Matuki da Cunha, Amazon Web Services*

## Zusammenfassung
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-summary"></a>

Dieses Muster enthält Beispielcode und eine Anwendung für die Übermittlung von Datensätzen von Amazon DynamoDB an Amazon Simple Storage Service (Amazon S3) mithilfe von Amazon Kinesis Data Streams und Amazon Data Firehose. Der Ansatz des Musters verwendet [AWS Cloud Development Kit (AWS CDK) L3-Konstrukte](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) und beinhaltet ein Beispiel dafür, wie eine Datentransformation durchgeführt wird, AWS Lambda bevor Daten an den Ziel-S3-Bucket in der Amazon Web Services (AWS) Cloud geliefert werden.

Kinesis Data Streams zeichnet Änderungen auf Elementebene in DynamoDB-Tabellen auf und repliziert sie in den erforderlichen Kinesis-Datenstrom. Ihre Anwendungen können auf den Kinesis Data Stream zugreifen und die Änderungen auf Elementebene nahezu in Echtzeit anzeigen. Kinesis Data Streams bietet auch Zugriff auf andere Amazon Kinesis Kinesis-Services wie Firehose und Amazon Managed Service für Apache Flink. Das bedeutet, dass Sie Anwendungen entwickeln können, die Echtzeit-Dashboards bereitstellen, Warnmeldungen generieren, dynamische Preisgestaltung und Werbung implementieren und anspruchsvolle Datenanalysen durchführen.

Sie können dieses Muster für Ihre Anwendungsfälle zur Datenintegration verwenden. Beispielsweise können Transportfahrzeuge oder Industrieanlagen große Datenmengen an eine DynamoDB-Tabelle senden. Diese Daten können dann transformiert und in einem in Amazon S3 gehosteten Data Lake gespeichert werden. Anschließend können Sie die Daten abfragen und verarbeiten und potenzielle Fehler vorhersagen, indem Sie serverlose Dienste wie Amazon Athena, Amazon Redshift Spectrum, Amazon Rekognition und verwenden. AWS Glue

## Voraussetzungen und Einschränkungen
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-prereqs"></a>

*Voraussetzungen*
+ Ein aktiver. AWS-Konto
+ AWS Command Line Interface (AWS CLI), installiert und konfiguriert. Weitere Informationen finden Sie AWS CLI in [der AWS CLI Dokumentation unter Erste Schritte mit](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) dem.
+ Node.js (18.x\$1) und npm, installiert und konfiguriert. Weitere Informationen finden Sie in der Dokumentation unter [Node.js und npm herunterladen und installieren](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). `npm`
+ aws-cdk (2.x\$1), installiert und konfiguriert. Weitere Informationen finden Sie in der Dokumentation unter [Erste Schritte mit dem](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html). AWS CDK AWS CDK 
+ Das GitHub [aws-dynamodb-kinesisfirehose-s3-Ingestion-Repository](https://github.com/aws-samples/aws-dynamodb-kinesisfirehose-s3-ingestion/), geklont und auf Ihrem lokalen Computer konfiguriert.
+ Bestehende Beispieldaten für die DynamoDB-Tabelle. Die Daten müssen das folgende Format haben: `{"SourceDataId": {"S": "123"},"MessageData":{"S": "Hello World"}}`

## Architektur
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-architecture"></a>

Das folgende Diagramm zeigt einen Beispiel-Workflow für die Übermittlung von Datensätzen von DynamoDB an Amazon S3 mithilfe von Kinesis Data Streams und Firehose.

![\[Ein Beispiel-Workflow für die Übermittlung von Datensätzen von DynamoDB an Amazon S3 mithilfe von Kinesis Data Streams und Firehose.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e2a9c412-312e-4900-9774-19a281c578e4/images/6e6df998-e6c2-4eaf-b263-ace752194689.png)


Das Diagramm zeigt den folgenden Workflow:

1. Daten werden mit Amazon API Gateway als Proxy für DynamoDB aufgenommen. Sie können auch jede andere Quelle verwenden, um Daten in DynamoDB aufzunehmen. 

1. Änderungen auf Artikelebene werden nahezu in Echtzeit in Kinesis Data Streams generiert und an Amazon S3 übermittelt.

1. Kinesis Data Streams sendet die Datensätze zur Transformation und Bereitstellung an Firehose. 

1. Eine Lambda-Funktion konvertiert die Datensätze von einem DynamoDB-Datensatzformat in das JSON-Format, das nur die Namen und Werte der Datensatzelementattribute enthält.

## Tools
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-tools"></a>

*AWS-Services*
+ [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 Cloud-Entwicklungskit für die Befehlszeile, mit dem Sie mit Ihrer AWS CDK App interagieren können.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [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 und zu verwalten. AWS-Konten AWS-Regionen

*Code-Repository*

Der Code für dieses Muster ist im GitHub [aws-dynamodb-kinesisfirehose-s3-Ingestion-Repository verfügbar.](https://github.com/aws-samples/aws-dynamodb-kinesisfirehose-s3-ingestion/)

## Epen
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-epics"></a>

### Richten Sie den Beispielcode ein und konfigurieren Sie ihn
<a name="set-up-and-configure-the-sample-code"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die Abhängigkeiten. | Installieren Sie auf Ihrem lokalen Computer die Abhängigkeiten aus den `package.json` Dateien in den `sample-application` Verzeichnissen `pattern/aws-dynamodb-kinesisstreams-s3` und, indem Sie die folgenden Befehle ausführen:<pre>cd <project_root>/pattern/aws-dynamodb-kinesisstreams-s3 </pre><pre>npm install && npm run build</pre><pre>cd <project_root>/sample-application/</pre><pre>npm install && npm run build</pre>  | App-Entwickler, General AWS | 
| Generieren Sie die CloudFormation Vorlage. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.html) | App-Entwickler, General AWS, AWS DevOps | 

### Stellen Sie die Ressourcen bereit
<a name="deploy-the-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen und implementieren Sie die Ressourcen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk.html) | App-Entwickler, General AWS, AWS DevOps | 

### Daten in die DynamoDB-Tabelle aufnehmen, um die Lösung zu testen
<a name="ingest-data-into-the-dynamodb-table-to-test-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Nehmen Sie Ihre Beispieldaten in die DynamoDB-Tabelle auf. | Senden Sie eine Anfrage an Ihre DynamoDB-Tabelle, indem Sie den folgenden Befehl in ausführen: AWS CLI`aws dynamodb put-item --table-name <your_table_name> --item '{"<table_partition_key>": {"S": "<partition_key_ID>"},"MessageData":{"S": "<data>"}}'`Beispiel:`aws dynamodb put-item --table-name SourceData_table --item '{"SourceDataId": {"S": "123"},"MessageData":{"S": "Hello World"}}'`Standardmäßig `put-item` gibt der keinen Wert als Ausgabe zurück, wenn der Vorgang erfolgreich ist. Wenn der Vorgang fehlschlägt, wird ein Fehler zurückgegeben. Die Daten werden in DynamoDB gespeichert und dann an Kinesis Data Streams und Firehose gesendet. Sie verwenden unterschiedliche Methoden, um Daten zu einer DynamoDB-Tabelle hinzuzufügen. Weitere Informationen finden Sie unter [Daten in Tabellen laden in](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SampleData.LoadData.html) der DynamoDB-Dokumentation. | App-Developer | 
| Stellen Sie sicher, dass ein neues Objekt im S3-Bucket erstellt wurde. | Melden Sie sich beim S3-Bucket an AWS-Managementkonsole und überwachen Sie den S3-Bucket, um sicherzustellen, dass mit den von Ihnen gesendeten Daten ein neues Objekt erstellt wurde. Weitere Informationen finden Sie [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)in der Amazon S3 S3-Dokumentation. | App-Entwickler, General AWS | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereinigen Sie die Ressourcen.  | Führen Sie den `cdk destroy` Befehl aus, um alle von diesem Muster verwendeten Ressourcen zu löschen. | App-Entwickler, General AWS | 

## Zugehörige Ressourcen
<a name="deliver-dynamodb-records-to-amazon-s3-using-kinesis-data-streams-and-amazon-data-firehose-with-aws-cdk-resources"></a>
+ [static-site-stacks3-.ts](https://github.com/awslabs/aws-solutions-constructs/blob/main/source/use_cases/aws-s3-static-website/lib/s3-static-site-stack.ts#L25) (GitHub Repository)
+ [aws-apigateway-dynamodb Modul](https://github.com/awslabs/aws-solutions-constructs/tree/main/source/patterns/%40aws-solutions-constructs/aws-apigateway-dynamodb) (GitHub Repositorium)
+ [aws-kinesisstreams-kinesisfirehose-s3-Modul](https://github.com/awslabs/aws-solutions-constructs/tree/main/source/patterns/%40aws-solutions-constructs/aws-kinesisstreams-kinesisfirehose-s3) (GitHub Repositorium)
+ [Erfassung von Änderungsdaten für DynamoDB Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html) (DynamoDB-Dokumentation)
+ [Verwenden von Kinesis Data Streams zur Erfassung von Änderungen an DynamoDB (DynamoDB-Dokumentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/kds.html))

# Implementieren Sie die pfadbasierte API-Versionierung mithilfe benutzerdefinierter Domains in Amazon API Gateway
<a name="implement-path-based-api-versioning-by-using-custom-domains"></a>

*Corey Schnedl, Marcelo Barbosa, Mario Lopez Martinez, Anbazhagan Ponnuswamy, Gaurav Samudra und Abhilash Vinod, Amazon Web Services*

## Zusammenfassung
<a name="implement-path-based-api-versioning-by-using-custom-domains-summary"></a>

Dieses Muster zeigt, wie Sie die [API-Zuordnungsfunktion](https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-mappings.html) von [benutzerdefinierten Domains](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html) verwenden können, um eine pfadbasierte API-Versionierungslösung für Amazon API Gateway zu implementieren.

Amazon API Gateway ist ein vollständig verwalteter Service, mit dem Sie in jeder Größenordnung etwas erstellen, veröffentlichen, verwalten, überwachen und sichern APIs können. Mithilfe der Funktion für benutzerdefinierte Domains des Services können Sie benutzerdefinierte Domainnamen erstellen, die einfacher und intuitiver URLs sind und Ihren API-Benutzern zur Verfügung stellen können. Sie können API-Zuordnungen verwenden, um API-Stufen mit einem benutzerdefinierten Domainnamen zu verbinden. Nachdem Sie einen Domainnamen erstellt und DNS-Einträge konfiguriert haben, verwenden Sie API-Zuordnungen, um Traffic APIs über Ihren benutzerdefinierten Domainnamen an Sie zu senden.

Sobald eine API öffentlich verfügbar ist, wird sie von Verbrauchern verwendet. Mit der Weiterentwicklung einer öffentlichen API wird auch ihr Servicevertrag weiterentwickelt, um neuen Funktionen und Fähigkeiten Rechnung zu tragen. Es ist jedoch unklug, bestehende Funktionen zu ändern oder zu entfernen. Alle grundlegenden Änderungen können sich auf die Anwendungen des Verbrauchers auswirken und diese zur Laufzeit beschädigen. Die API-Versionierung ist wichtig, um zu verhindern, dass die Abwärtskompatibilität beeinträchtigt wird und ein Vertrag verletzt wird.

Sie benötigen eine klare Strategie für die API-Versionierung, um den Verbrauchern zu helfen, sie zu übernehmen. Die pfadbasierte Versionierung APIs URLs ist der einfachste und am häufigsten verwendete Ansatz. Bei dieser Art der Versionierung werden Versionen explizit als Teil der API definiert. URIs Das folgende Beispiel URLs zeigt, wie ein Verbraucher den URI verwenden kann, um eine API-Version für seine Anfrage anzugeben:

`https://api.example.com/api/v1/orders `

`https://api.example.com/api/v2/orders `

`https://api.example.com/api/vX/orders`

Dieses Muster verwendet die, AWS Cloud Development Kit (AWS CDK) um eine Beispielimplementierung einer skalierbaren pfadbasierten Versionierungslösung für Ihre API zu erstellen, bereitzustellen und zu testen. AWS CDK ist ein Open-Source-Framework für die Softwareentwicklung, mit dem Sie Ihre Cloud-Anwendungsressourcen mithilfe vertrauter Programmiersprachen modellieren und bereitstellen können.

## Voraussetzungen und Einschränkungen
<a name="implement-path-based-api-versioning-by-using-custom-domains-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ Der Besitz einer Domain ist erforderlich, um das Beispiel-Repository dieses Musters und die benutzerdefinierte Domain-Funktionalität von Amazon API Gateway verwenden zu können. Sie können Amazon Route 53 verwenden, um Ihre Domains für Ihre Organisation zu erstellen und zu verwalten. Informationen zur Registrierung oder Übertragung einer Domain bei Route 53 finden Sie unter [Neue Domains registrieren](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register-update.html) in der Route 53-Dokumentation.
+ Bevor Sie einen benutzerdefinierten Domainnamen für eine API einrichten können, müssen Sie über ein [SSL/TLS-Zertifikat](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-specify-certificate-for-custom-domain-name.html) verfügen. AWS Certificate Manager
+ Sie müssen den Ressourceneintrag Ihres DNS-Anbieters erstellen oder aktualisieren, bevor Sie ihn dem API-Endpunkt zuweisen können. Ohne eine solche Zuordnung können API-Anfragen, die für den benutzerdefinierten Domainnamen gebunden sind, API Gateway nicht erreichen.

**Einschränkungen**
+ Ein benutzerdefinierter Domainname muss innerhalb eines Bereichs AWS-Region eindeutig sein AWS-Konten.
+ Sie müssen einen regionalen benutzerdefinierten Domainnamen verwenden und die Sicherheitsrichtlinie TLS 1.2 anwenden, um API-Zuweisungen mit mehreren Ebenen zu konfigurieren.
+ Bei einer API-Zuordnung APIs müssen der benutzerdefinierte Domainname und der zugeordnete Domainname identisch AWS-Konto sein.
+ API-Zuordnungen dürfen nur Buchstaben, Zahlen und die folgenden Zeichen enthalten: `$-_.+!*'()/`
+ Die maximale Länge für den Pfad in einer API-Zuweisung beträgt 300 Zeichen.
+ Es können 200 API-Zuweisungen mit mehreren Ebenen für jeden Domainnamen vorhanden sein.
+ Mit der Sicherheitsrichtlinie TLS 1.2 können Sie HTTP APIs nur einem regionalen benutzerdefinierten Domainnamen zuordnen.
+ Sie können nicht demselben benutzerdefinierten Domainnamen wie eine HTTP-API oder REST-API zuordnen. WebSocket APIs 
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**
+ Diese Beispielimplementierung verwendet [AWS CDK in TypeScript](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-typescript.html) Version 2.149.0.

## Architektur
<a name="implement-path-based-api-versioning-by-using-custom-domains-architecture"></a>

Das folgende Diagramm zeigt den Architektur-Workflow.

![\[Workflow mit API-Zuordnungen und benutzerdefinierten Domänen zur Implementierung einer pfadbasierten API-Versionierungslösung.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e1b32d2b-410f-4ace-967e-f0b8aaf0304c/images/fa9f04f1-efa6-4fb1-a541-ae3da4076b00.png)


Das Diagramm veranschaulicht folgende Vorgänge:

1. Der API-Benutzer sendet eine Anfrage mit einem benutzerdefinierten Domainnamen an Amazon API Gateway.

1. API Gateway leitet die Anfrage des Benutzers dynamisch an eine entsprechende Instanz und Phase von API Gateway weiter, basierend auf dem in der URL der Anfrage angegebenen Pfad. Die folgende Tabelle zeigt ein Beispiel dafür, wie die verschiedenen URL-basierten Pfade an bestimmte Stufen für verschiedene Instanzen von API Gateway weitergeleitet werden können.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/implement-path-based-api-versioning-by-using-custom-domains.html)

1. Die API-Gateway-Zielinstanz verarbeitet die Anfrage und gibt das Ergebnis an den Benutzer zurück.

**Automatisierung und Skalierung**

Wir empfehlen, dass Sie für jede Version Ihrer API separate AWS CloudFormation Stacks verwenden. Mit diesem Ansatz können Sie eine vollständige Isolierung zwischen den Backends erreichen, zu APIs denen die benutzerdefinierte Domain-API-Zuordnungsfunktion weitergeleitet werden kann. Ein Vorteil dieses Ansatzes besteht darin, dass verschiedene Versionen Ihrer API unabhängig voneinander bereitgestellt oder entfernt werden können, ohne dass das Risiko besteht, dass eine andere API geändert wird. Dieser Ansatz erhöht die Widerstandsfähigkeit durch die Isolierung von CloudFormation Stacks. Außerdem bietet es Ihnen verschiedene Back-End-Optionen für Ihre API wie AWS Lambda, AWS Fargate, HTTP-Endpunkte und Aktionen von. AWS-Services

Du kannst Git-Branching-Strategien wie [Gitflow](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/gitflow-branching-strategy.html) in Kombination mit isolierten CloudFormation Stacks verwenden, um den Quellcode zu verwalten, der in verschiedenen Versionen der API bereitgestellt wird. Mit dieser Option können Sie verschiedene Versionen Ihrer API verwalten, ohne den Quellcode für neue Versionen duplizieren zu müssen. Mit Gitflow kannst du Tags zu Commits in deinem Git-Repository hinzufügen, wenn Releases veröffentlicht werden. Als Ergebnis hast du einen vollständigen Überblick über den Quellcode, der sich auf eine bestimmte Version bezieht. Wenn Aktualisierungen durchgeführt werden müssen, können Sie den Code aus einer bestimmten Version auschecken, Aktualisierungen vornehmen und dann den aktualisierten Quellcode auf dem CloudFormation Stack bereitstellen, der der entsprechenden Hauptversion entspricht. Dieser Ansatz reduziert das Risiko, dass eine andere API-Version beschädigt wird, da jede Version der API über isolierten Quellcode verfügt und in separaten CloudFormation Stacks bereitgestellt wird.

## Tools
<a name="implement-path-based-api-versioning-by-using-custom-domains-tools"></a>

**AWS-Services**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) unterstützt Sie bei der Erstellung, Speicherung und Erneuerung öffentlicher und privater SSL/TLS X.509-Zertifikate und -Schlüssel, die Ihre AWS Websites und Anwendungen schützen.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)ist ein Open-Source-Framework für die Softwareentwicklung, mit dem Sie Ihre Cloud-Infrastruktur im Code definieren und bereitstellen können. CloudFormation[Die Beispielimplementierung dieses Musters verwendet das in AWS CDK . TypeScript](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-typescript.html) Bei der Arbeit mit dem AWS CDK In werden vertraute Tools TypeScript verwendet, darunter der TypeScript Microsoft-Compiler (`tsc`), [Node.js](https://nodejs.org/) und der Node-Paketmanager (`npm`). Wenn Sie möchten, können Sie [Yarn](https://yarnpkg.com/) verwenden, obwohl die Beispiele in diesem Muster dies tun. `npm` Die Module, aus denen die [AWS Construct-Bibliothek](https://docs.aws.amazon.com/cdk/v2/guide/libraries.html#libraries-construct) besteht, werden über das `npm ` Repository [npmjs.org](https://docs.npmjs.com/) verteilt.
+ [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 und zu verwalten. AWS-Konten AWS-Regionen
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html)ist eine Firewall für Webanwendungen, mit der Sie HTTP- und HTTPS-Anfragen überwachen können, die an Ihre geschützten Webanwendungsressourcen weitergeleitet werden.

**Andere Tools**
+ [Bruno](https://www.usebruno.com/) ist ein Git-freundlicher Open-Source-API-Testclient.
+ [cdk-nag](https://github.com/cdklabs/cdk-nag) ist ein Open-Source-Hilfsprogramm, das AWS CDK Anwendungen mithilfe von Regelpaketen auf bewährte Verfahren überprüft.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [path-based-versioning-with-api-gateway](https://github.com/aws-samples/path-based-versioning-with-api-gateway) verfügbar.

## Best Practices
<a name="implement-path-based-api-versioning-by-using-custom-domains-best-practices"></a>
+ Verwenden Sie eine robuste CI/CD-Pipeline (Continuous Integration and Continuous Delivery), um das Testen und Bereitstellen Ihrer CloudFormation Stacks zu automatisieren, die mit dem erstellt wurden. AWS CDK Weitere Informationen zu dieser Empfehlung finden Sie in den [AWS Well-Architected Guidance DevOps ](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html).
+ AWS WAF ist eine verwaltete Firewall, die sich problemlos in Dienste wie Amazon API Gateway integrieren lässt. Es AWS WAF ist zwar keine notwendige Komponente, damit dieses Versionierungsmuster funktioniert, wir empfehlen jedoch aus Sicherheitsgründen, es in API Gateway AWS WAF zu integrieren.
+ Ermutigen Sie API-Nutzer, regelmäßig auf die neueste Version Ihrer API zu aktualisieren, damit ältere Versionen Ihrer API als veraltet gelten und effizient entfernt werden können.
+ Bevor Sie diesen Ansatz in einer Produktionsumgebung verwenden, implementieren Sie eine Firewall- und Autorisierungsstrategie für Ihre API.
+ Implementieren Sie den Zugriff auf die Verwaltung Ihrer AWS Ressourcen, AWS-Konto indem Sie das [Zugriffsmodell mit den geringsten Rechten](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) verwenden.
+ [Um bewährte Verfahren und Sicherheitsempfehlungen für Anwendungen durchzusetzen AWS CDK, die mit dem erstellt wurden, empfehlen wir die Verwendung des Dienstprogramms cdk-nag.](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/check-aws-cdk-applications-or-cloudformation-templates-for-best-practices-by-using-cdk-nag-rule-packs.html) 

## Epen
<a name="implement-path-based-api-versioning-by-using-custom-domains-epics"></a>

### Bereite deine lokale Umgebung vor
<a name="prepare-your-local-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Führen Sie den folgenden Befehl aus, um das Beispielanwendungs-Repository zu klonen:<pre>git clone https://github.com/aws-samples/path-based-versioning-with-api-gateway</pre> | App-Developer | 
| Navigieren Sie zum geklonten Repository. | Führen Sie den folgenden Befehl aus, um zum Speicherort des geklonten Repository-Ordners zu navigieren: <pre>cd api-gateway-custom-domain-versioning</pre> | App-Developer | 
| Installieren Sie die erforderlichen Abhängigkeiten. | Führen Sie den folgenden Befehl aus, um die erforderlichen Abhängigkeiten zu installieren:<pre>npm install </pre> | App-Developer | 

### Stellen Sie den CloudFormation Routing-Stack bereit
<a name="deploy-the-cfnshort-routing-stack"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Initiieren Sie die Bereitstellung des Routing-Stacks. | Um die Bereitstellung des CloudFormation Routing-Stacks zu initiieren`CustomDomainRouterStack`, führen Sie den folgenden Befehl aus und `example.com` ersetzen Sie ihn durch den Namen der Domain, der Sie gehören:<pre>npx cdk deploy CustomDomainRouterStack --parameters PrerequisiteDomainName=example.com</pre>Die Stack-Bereitstellung ist erst erfolgreich, wenn die folgende Domain-DNS-Validierungsaufgabe erfolgreich ausgeführt wurde. | App-Developer | 

### Überprüfen des Domäneneigentümers
<a name="verify-domain-ownership"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bestätigen Sie die Inhaberschaft Ihrer Domain. | Das Zertifikat verbleibt im Status **Ausstehende Validierung**, bis Sie nachweisen, dass Sie Eigentümer der zugehörigen Domain sind. Um die Inhaberschaft nachzuweisen, fügen Sie CNAME-Einträge zur Hosting-Zone hinzu, die der Domain zugeordnet ist. Weitere Informationen finden Sie in der AWS Certificate Manager Dokumentation unter [DNS-Validierung](https://docs.aws.amazon.com/acm/latest/userguide/dns-validation.html). Durch das Hinzufügen der entsprechenden Datensätze kann die `CustomDomainRouterStack` Bereitstellung erfolgreich abgeschlossen werden. | App-Entwickler, AWS-Systemadministrator, Netzwerkadministrator | 
| Erstellen Sie einen Aliaseintrag, der auf Ihre benutzerdefinierte API Gateway Gateway-Domain verweist. | Nachdem das Zertifikat erfolgreich ausgestellt und validiert wurde, [erstellen Sie einen DNS-Eintrag](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-regional-api-custom-domain-create.html#apigateway-regional-api-custom-domain-dns-record), der auf Ihre benutzerdefinierte Amazon API Gateway Gateway-Domain-URL verweist. Die benutzerdefinierte Domain-URL wird durch die Bereitstellung der benutzerdefinierten Domain eindeutig generiert und als CloudFormation Ausgabeparameter angegeben. Es folgt ein [Beispiel für den Datensatz](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-values-basic.html): **Routing-Richtlinie**: Einfaches Routing**Name des Datensatzes**: `demo.api-gateway-custom-domain-versioning.example.com`**Alias**: Ja**Eintragstyp**: Ein DNS-Eintrag vom Typ „A“, der auf eine AWS Ressource verweist**Value (Wert)**: `d-xxxxxxxxxx.execute-api.xx-xxxx-x.amazonaws.com`**TTL (Sekunden)**: 300 | App-Entwickler, AWS-Systemadministrator, Netzwerkadministrator | 

### Stellen Sie CloudFormation Stacks bereit und rufen Sie die API auf
<a name="deploy-cfnshort-stacks-and-invoke-the-api"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie den `ApiStackV1` Stack bereit. | Verwenden Sie den folgenden Befehl, um den `ApiStackV1` Stack bereitzustellen:<pre>npm run deploy-v1</pre>Der folgende CDK-Code fügt die API-Zuordnung hinzu:<pre>var apiMapping = new CfnApiMapping(this, "ApiMapping", {<br />      apiId: this.lambdaRestApi.restApiId,<br />      domainName: props.customDomainName.domainName,<br />      stage: "api",<br />      apiMappingKey: "api/v1",<br />    });</pre> | App-Developer | 
| Stellen Sie den `ApiStackV2` Stack bereit. | Verwenden Sie den folgenden Befehl, um den `ApiStackV2` Stack bereitzustellen:<pre>npm run deploy-v2</pre> | App-Developer | 
| Rufen Sie die API auf. | [Informationen zum Aufrufen der API und zum Testen der API-Endpunkte mithilfe von Bruno finden Sie in den Anweisungen unter Zusätzliche Informationen.](#implement-path-based-api-versioning-by-using-custom-domains-additional) | App-Developer | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereinigen Sie die Ressourcen. | Verwenden Sie den folgenden Befehl, um die mit dieser Beispielanwendung verknüpften Ressourcen zu löschen:<pre>npx cdk destroy --all</pre>Stellen Sie sicher, dass Sie alle Route 53-DNS-Einträge bereinigen, die manuell für die Überprüfung des Domainbesitzes hinzugefügt wurden. | App-Developer | 

## Fehlerbehebung
<a name="implement-path-based-api-versioning-by-using-custom-domains-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Bei der Bereitstellung von `CustomDomainRouterStack` Zeitüberschreitungen tritt ein Timeout auf, da das Zertifikat nicht validiert werden kann. | Stellen Sie sicher, dass Sie die richtigen CNAME-Einträge für die DNS-Validierung hinzugefügt haben, wie in der vorherigen Aufgabe beschrieben. Ihr neues Zertifikat zeigt nach dem Hinzufügen der **DNS-Validierungseinträge möglicherweise noch bis zu 30 Minuten den Status Ausstehende** Validierung an. Weitere Informationen finden Sie in der AWS Certificate Manager Dokumentation unter [DNS-Validierung](https://docs.aws.amazon.com/acm/latest/userguide/dns-validation.html). | 

## Zugehörige Ressourcen
<a name="implement-path-based-api-versioning-by-using-custom-domains-resources"></a>
+ [Implementierung der Header-basierten API-Gateway-Versionierung mit Amazon CloudFront](https://aws.amazon.com/blogs/compute/implementing-header-based-api-gateway-versioning-with-amazon-cloudfront/) — Dieser AWS Compute-Blogbeitrag bietet eine Header-basierte Versionierungsstrategie als Alternative zu der in diesem Muster beschriebenen pfadbasierten Versionierungsstrategie.
+ [AWS CDK Workshop](https://cdkworkshop.com/20-typescript.html) — Dieser Einführungsworkshop konzentriert sich auf das Erstellen und Bereitstellen von Anwendungen mithilfe von. AWS AWS Cloud Development Kit (AWS CDK) Dieser Workshop unterstützt Go, Python und TypeScript. 

## Zusätzliche Informationen
<a name="implement-path-based-api-versioning-by-using-custom-domains-additional"></a>

**Testen Sie Ihre API mit Bruno**

Wir empfehlen Ihnen, [Bruno](https://www.usebruno.com/), ein Open-Source-API-Testtool, zu verwenden, um zu überprüfen, ob das pfadbasierte Routing für die Beispielanwendung ordnungsgemäß funktioniert. Dieses Muster bietet eine Beispielsammlung, um das Testen Ihrer Beispiel-API zu erleichtern.

Gehen Sie wie folgt vor, um Ihre API aufzurufen und zu testen:

1. [Installiere Bruno.](https://www.usebruno.com/downloads)

1. Öffne Bruno.

1. Wählen Sie im [Code-Repository](https://github.com/aws-samples/path-based-versioning-with-api-gateway) dieses Musters **Bruno/Sample-API- Gateway-Custom-Domain-Versioning ** aus und öffnen Sie die Sammlung.

1. Um das Drop-down-Menü **Umgebungen** oben rechts auf der Benutzeroberfläche (UI) zu sehen, wählen Sie eine beliebige Anfrage in der Sammlung aus.

1. **Wählen Sie im Drop-down-Menü **Umgebungen** die Option Konfigurieren aus.**

1. Ersetzen Sie den `REPLACE_ME_WITH_YOUR_DOMAIN` Wert durch Ihre benutzerdefinierte Domain.

1. Wählen Sie **Speichern** und schließen Sie dann den Abschnitt **Konfiguration**.

1. ****Vergewissern Sie sich, dass für **Sandbox Environment** die Option **Aktiv** ausgewählt ist.

1. Rufen Sie Ihre API auf, indem Sie die Schaltfläche **->** für die ausgewählte Anfrage verwenden.

1. Beachten Sie, wie die Validierung (Weitergabe von Werten, die keine Zahlen sind) in V1 im Vergleich zu V2 gehandhabt wird.

Screenshots eines Beispiel-API-Aufrufs und eines Vergleichs der V1- und V2-Validierung finden Sie unter **Testen Ihrer Beispiel-API** in der `README.md` Datei im [Code-Repository](https://github.com/aws-samples/path-based-versioning-with-api-gateway) dieses Musters.

# Importieren Sie die psycopg2-Bibliothek, AWS Lambda um mit Ihrer PostgreSQL-Datenbank zu interagieren
<a name="import-psycopg2-library-lambda"></a>

*Louis Hourcade, Amazon Web Services*

## Zusammenfassung
<a name="import-psycopg2-library-lambda-summary"></a>

[Psycopg](https://www.psycopg.org/docs/) ist ein PostgresSQL-Datenbankadapter für Python. Entwickler verwenden die `psycopg2` Bibliothek, um Python-Anwendungen zu schreiben, die mit PostgreSQL-Datenbanken interagieren.

Auf Amazon Web Services (AWS) verwenden Entwickler auch, [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)um Code für Anwendungen oder Backend-Services auszuführen. Lambda ist ein serverloser, ereignisgesteuerter Rechendienst, der Code ausführt, ohne dass Server bereitgestellt oder verwaltet werden müssen.

Wenn Sie eine neue Funktion erstellen, die eine von Lambda [unterstützte Python-Laufzeit verwendet, wird die Lambda-Laufzeitumgebung](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html) standardmäßig aus einem [Basis-Image für Lambda](https://github.com/aws/aws-lambda-base-images) erstellt, das von bereitgestellt wird. AWS Bibliotheken wie `pandas` oder `psycopg2` sind nicht im Basis-Image enthalten. Um eine Bibliothek zu verwenden, müssen Sie sie in einem benutzerdefinierten Paket bündeln und an Lambda anhängen.

Es gibt mehrere Möglichkeiten, eine Bibliothek zu bündeln und anzuhängen, darunter die folgenden:
+ Stellen Sie Ihre Lambda-Funktion aus einem [ZIP-Dateiarchiv](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-zip.html) bereit.
+ Stellen Sie Ihre Lambda-Funktion von einem benutzerdefinierten Container-Image aus bereit.
+ Erstellen Sie eine [Lambda-Schicht](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html#lambda-layer-versions) und fügen Sie sie Ihrer Lambda-Funktion hinzu.

Dieses Muster demonstriert die ersten beiden Optionen.

Mit einem ZIP-Bereitstellungspaket ist das Hinzufügen der `pandas` Bibliothek zu Ihrer Lambda-Funktion relativ einfach. Erstellen Sie einen Ordner auf Ihrem Linux-Computer, fügen Sie das Lambda-Skript zusammen mit der `pandas` Bibliothek und den Abhängigkeiten der Bibliothek zum Ordner hinzu, komprimieren Sie den Ordner und stellen Sie ihn als Quelle für Ihre Lambda-Funktion bereit.

Obwohl die Verwendung eines ZIP-Bereitstellungspakets eine gängige Praxis ist, funktioniert dieser Ansatz für die Bibliothek nicht. `psycopg2` Dieses Muster zeigt zunächst den Fehler, den Sie erhalten, wenn Sie ein ZIP-Bereitstellungspaket verwenden, um die `psycopg2` Bibliothek zu Ihrer Lambda-Funktion hinzuzufügen. Das Muster zeigt dann, wie Lambda aus einem Dockerfile bereitgestellt und das Lambda-Image bearbeitet wird, damit die Bibliothek funktioniert. `psycopg2`

[Informationen zu den drei Ressourcen, die das Muster bereitstellt, finden Sie im Abschnitt Zusätzliche Informationen.](#import-psycopg2-library-lambda-additional)

## Voraussetzungen und Einschränkungen
<a name="import-psycopg2-library-lambda-prereqs"></a>

**Voraussetzungen**
+ Ein Aktiv AWS-Konto mit ausreichenden Berechtigungen, um die von diesem Muster verwendeten AWS Ressourcen bereitzustellen
+ AWS Cloud Development Kit (AWS CDK) wird global installiert, indem Folgendes ausgeführt wird `npm install -g aws-cdk`
+ Ein Git-Client
+ Python
+ Docker

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie auf der Seite [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**
+ Python-Laufzeitversion, die [von Lambda unterstützt wird](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ Psycopg2 Version 2.9.3
+ Pandas versie 1.5.2

## Architektur
<a name="import-psycopg2-library-lambda-architecture"></a>

**Überblick über die Lösung**

Um die Herausforderungen zu veranschaulichen, denen Sie bei der Verwendung der `psycopg2` Bibliothek in Lambda begegnen könnten, stellt das Muster zwei Lambda-Funktionen bereit:
+ Eine Lambda-Funktion mit der Python-Runtime, die aus einer ZIP-Datei erstellt wurde. [Die `pandas` Bibliotheken `psycopg2` und werden in diesem .zip-Bereitstellungspaket mithilfe von pip installiert.](https://pypi.org/project/pip/)
+ Eine Lambda-Funktion mit der Python-Laufzeit, die aus einem Dockerfile erstellt wurde. Das Dockerfile installiert die `pandas` Bibliotheken `psycopg2` und im Lambda-Container-Image.

Die erste Lambda-Funktion installiert die `pandas` Bibliothek und ihre Abhängigkeiten in einer ZIP-Datei, und Lambda kann diese Bibliothek verwenden.

Die zweite Lambda-Funktion zeigt, dass Sie die `psycopg2` Bibliotheken `pandas` und in Lambda ausführen können, indem Sie ein Container-Image für Ihre Lambda-Funktion erstellen.

## Tools
<a name="import-psycopg2-library-lambda-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.

**Andere Tools**
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.
+ [pandas](https://pandas.pydata.org/) ist ein Python-basiertes Open-Source-Tool zur Datenanalyse und -manipulation.
+ [Psycopg](https://www.psycopg.org/docs/) ist ein PostgreSQL-Datenbankadapter für die Sprache Python, der für Multithread-Anwendungen entwickelt wurde. Dieses Muster verwendet Psycopg 2.
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.

**Code-Repository**

Der Code für dieses Muster ist im [import-psycopg2- in-lambda-to-interact -Repository](https://github.com/aws-samples/import-psycopg2-in-lambda-to-interact-with-postgres-database) unter verfügbar. with-postgres-database GitHub

## Best Practices
<a name="import-psycopg2-library-lambda-best-practices"></a>

Dieses Muster bietet Ihnen ein funktionierendes Beispiel für die Erstellung einer Lambda-Funktion aus einem Dockerfile. AWS CDK Wenn Sie diesen Code in Ihrer Anwendung wiederverwenden, stellen Sie sicher, dass die bereitgestellten Ressourcen alle Sicherheitsanforderungen erfüllen. Verwenden Sie Tools wie [Checkov](https://www.checkov.io/), das Cloud-Infrastrukturkonfigurationen scannt, um Fehlkonfigurationen zu finden, bevor die Infrastruktur bereitgestellt wird.

## Epen
<a name="import-psycopg2-library-lambda-epics"></a>

### Klonen Sie das Repository und konfigurieren Sie die Bereitstellung
<a name="clone-the-repository-and-configure-the-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Führen Sie die folgenden Befehle aus, um das GitHub Repository auf Ihrem lokalen Computer zu klonen:<pre>git clone https://github.com/aws-samples/import-psycopg2-in-lambda-to-interact-with-postgres-database.git<br />cd AWS-lambda-psycopg2</pre> | Allgemeines AWS | 
| Konfigurieren Sie Ihre Bereitstellung. | Bearbeiten Sie die `app.py` Datei mit Informationen zu Ihren AWS-Konto:<pre>aws_acccount = "AWS_ACCOUNT_ID"<br />region = "AWS_REGION"<br /># Select the CPU architecture you are using to build the image (ARM or X86)<br />architecture = "ARM"</pre> | Allgemeines AWS | 

### Starten Sie Ihr AWS-Konto und stellen Sie die Anwendung bereit
<a name="bootstrap-your-aws-account-and-deploy-the-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bootstrap dein AWS-Konto. | Wenn Sie [Ihre AWS-Umgebung noch nicht gebootet](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) haben, führen Sie die folgenden Befehle mit den AWS Anmeldeinformationen Ihres AWS Kontos aus:<pre>cdk bootstrap aws://<tooling-account-id>/<aws-region></pre> | Allgemeines AWS | 
| Stellen Sie den Code bereit. | Führen Sie den folgenden Befehl aus, um die AWS CDK Anwendung bereitzustellen:<pre>cdk deploy AWSLambdaPyscopg2</pre> | Allgemeines AWS | 

### Testen Sie die Lambda-Funktionen von der AWS-Managementkonsole aus
<a name="test-the-lambda-functions-from-the-aws-management-console"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie die Lambda-Funktion, die aus der ZIP-Datei erstellt wurde. | Gehen Sie wie folgt vor, um die Lambda-Funktion zu testen, die aus der ZIP-Datei erstellt wurde:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/import-psycopg2-library-lambda.html)Da Lambda die erforderlichen PostgreSQL-Bibliotheken im Standard-Image nicht findet, kann es die Bibliothek nicht verwenden. `psycopg2` | Allgemeines AWS | 
| Testen Sie die Lambda-Funktion, die aus dem Dockerfile erstellt wurde. | Um die `psycopg2` Bibliothek in Ihrer Lambda-Funktion zu verwenden, müssen Sie das Lambda Amazon Machine Image (AMI) bearbeiten.Gehen Sie wie folgt vor, um die Lambda-Funktion zu testen, die aus dem Dockerfile erstellt wurde:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/import-psycopg2-library-lambda.html)Der folgende Code zeigt das Dockerfile, das die AWS CDK Vorlage erstellt:<pre># Start from lambda Python3.13 image<br />FROM public.ecr.aws/lambda/python:3.13<br /><br /># Copy the lambda code, together with its requirements<br />COPY lambda/requirements.txt ${LAMBDA_TASK_ROOT}<br />COPY lambda/lambda_code.py ${LAMBDA_TASK_ROOT}<br /><br /># Install postgresql-devel in your image<br />RUN yum install -y gcc postgresql-devel<br /><br /># install the requirements for the Lambda code<br />RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"<br /><br /># Command can be overwritten by providing a different command in the template directly.<br />CMD ["lambda_code.handler"]</pre>Das Dockerfile verwendet das AWS bereitgestellte Lambda-Image für die Python-Laufzeit und installiert [postgresql-devel](https://yum-info.contradodigital.com/view-package/updates/postgresql-devel/), das die Bibliotheken enthält, die zum Kompilieren von Anwendungen benötigt werden, die direkt mit dem PostgreSQL-Managementserver interagieren. Das Dockerfile installiert auch die Bibliotheken und, die in der Datei angegeben sind. `pandas` `psycopg2` `requirements.txt` | Allgemeines AWS | 

## Zugehörige Ressourcen
<a name="import-psycopg2-library-lambda-resources"></a>
+ [AWS CDK Dokumentation](https://docs.aws.amazon.com/cdk/v2/guide/home.html)
+ [AWS Lambda Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

## Zusätzliche Informationen
<a name="import-psycopg2-library-lambda-additional"></a>

In diesem Muster stellt die AWS CDK Vorlage einen AWS Stapel mit drei Ressourcen bereit:
+ Eine [AWS Identity and Access Management (IAM-) Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) für die Lambda-Funktionen.
+ Eine Lambda-Funktion mit einer Python-Laufzeit. Die Funktion wird aus dem `Constructs/lambda/lambda_deploy.zip` Bereitstellungspaket bereitgestellt.
+ Eine Lambda-Funktion mit einer Python-Laufzeit. Die Funktion wird über das Dockerfile unter dem Ordner bereitgestellt `Constructs`

Das Skript für beide Lambda-Funktionen prüft, ob die `psycopg2` Bibliotheken `pandas` und erfolgreich importiert wurden:

```
import pandas
print("pandas successfully imported")

import psycopg2
print("psycopg2 successfully imported")

def handler(event, context):
    """Function that checks whether psycopg2  and pandas are successfully imported or not"""
    return {"Status": "psycopg2 and pandas successfully imported"}
```

Das `lambda_deploy.zip` Bereitstellungspaket wird mit dem `Constructs/lambda/build.sh` Bash-Skript erstellt. Dieses Skript erstellt einen Ordner, kopiert das Lambda-Skript, installiert die `psycopg2` Bibliotheken `pandas` und und generiert die ZIP-Datei. Um die .zip-Datei selbst zu generieren, führen Sie dieses Bash-Skript aus und stellen Sie den Stack erneut bereit. AWS CDK 

Das Dockerfile beginnt mit dem AWS bereitgestellten Basis-Image für Lambda mit einer Python-Laufzeit. Das Dockerfile installiert die `psycopg2` Bibliotheken `pandas` und über dem Standard-Image.

# Integrieren Sie Amazon API Gateway mit Amazon SQS, um asynchrones REST zu handhaben APIs
<a name="integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis"></a>

*Natalia Colantonio Favero und Gustavo Martim, Amazon Web Services*

## Zusammenfassung
<a name="integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis-summary"></a>

Wenn Sie REST bereitstellen APIs, müssen Sie manchmal eine Nachrichtenwarteschlange bereitstellen, die Client-Anwendungen veröffentlichen können. Möglicherweise haben Sie Probleme mit der Latenz von Drittanbietern APIs und Verzögerungen bei den Antworten, oder Sie möchten die Antwortzeit von Datenbankabfragen vermeiden oder vermeiden, den Server zu skalieren, wenn eine große Anzahl gleichzeitiger APIs Server vorhanden ist. In diesen Szenarien müssen die Client-Anwendungen, die in der Warteschlange veröffentlichen, nur wissen, dass die API die Daten empfangen hat — nicht, was nach dem Empfang der Daten passiert.

Dieses Muster erstellt einen REST-API-Endpunkt, indem [Amazon API Gateway](https://aws.amazon.com/api-gateway/) verwendet wird, um eine Nachricht an [Amazon Simple Queue Service (Amazon SQS)](https://aws.amazon.com/sqs/) zu senden. Es schafft eine easy-to-implement Integration zwischen den beiden Diensten, wodurch ein direkter Zugriff auf die SQS-Warteschlange vermieden wird.

## Voraussetzungen und Einschränkungen
<a name="integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis-prereqs"></a>
+ Ein [aktives Konto AWS](https://portal.aws.amazon.com/billing/signup/iam)

## Architektur
<a name="integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis-architecture"></a>

![\[Architektur für die Integration von API Gateway mit Amazon SQS\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/70984dee-e49f-4446-9d52-49ce826c3909/images/737ba0b2-da8f-4478-8c54-0a4835fd69f9.png)


Das Diagramm veranschaulicht diese Schritte:

1. Fordern Sie einen POST-REST-API-Endpunkt an, indem Sie ein Tool wie Postman, eine andere API oder andere Technologien verwenden.

1. API Gateway stellt eine Nachricht, die im Hauptteil der Anfrage empfangen wird, in die Warteschlange.

1. Amazon SQS empfängt die Nachricht und sendet eine Antwort mit einem Erfolgs- oder Fehlercode an API Gateway.

## Tools
<a name="integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis-tools"></a>
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.   

## Epen
<a name="integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis-epics"></a>

### Erstellen Sie eine SQS-Warteschlange
<a name="create-an-sqs-queue"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Warteschlange. | So erstellen Sie eine SQS-Warteschlange, die die Nachrichten von der REST-API empfängt:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html) | App-Developer | 

### Zugriff auf Amazon SQS bereitstellen
<a name="provide-access-to-sqs"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine IAM-Rolle. | Diese IAM-Rolle gewährt API Gateway Gateway-Ressourcen vollen Zugriff auf Amazon SQS.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html) | App-Entwickler, AWS-Administrator | 

### Erstellen Sie eine REST-API
<a name="create-a-rest-api"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine REST-API. | Dies ist die REST-API, an die HTTP-Anfragen gesendet werden.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html) | App-Developer | 
| Connect API Gateway mit Amazon SQS. | Dieser Schritt ermöglicht es, dass die Nachricht aus dem Hauptteil der HTTP-Anfrage an Amazon SQS weitergeleitet wird.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html) | App-Developer | 

### Testen Sie die REST-API
<a name="test-the-rest-api"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie die REST-API. | Führen Sie einen Test durch, um zu überprüfen, ob die Konfiguration fehlt:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html) | App-Developer | 
| Ändern Sie die API-Integration, um die Anfrage ordnungsgemäß an Amazon SQS weiterzuleiten. | Vervollständigen Sie die Konfiguration, um den Integrationsfehler zu beheben:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html) | App-Developer | 
| Testen und validieren Sie die Nachricht in Amazon SQS. | Führen Sie einen Test durch, um zu bestätigen, dass der Test erfolgreich abgeschlossen wurde:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html) | App-Developer | 
| Testen Sie API Gateway mit einem Sonderzeichen. | Führen Sie einen Test aus, der Sonderzeichen (wie &) enthält, die in einer Nachricht nicht zulässig sind:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html)Das liegt daran, dass Sonderzeichen im Nachrichtentext standardmäßig nicht unterstützt werden. Im nächsten Schritt konfigurieren Sie API Gateway so, dass es Sonderzeichen unterstützt. Weitere Informationen zu Inhaltstypkonvertierungen finden Sie in der [API Gateway Gateway-Dokumentation](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-workflow.html). | App-Developer | 
| Ändern Sie die API-Konfiguration, sodass Sonderzeichen unterstützt werden. | Passen Sie die Konfiguration so an, dass Sonderzeichen in der Nachricht akzeptiert werden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html)Die neue Nachricht sollte das Sonderzeichen enthalten. | App-Developer | 

### Stellen Sie die REST-API bereit
<a name="deploy-the-rest-api"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die API bereit. |  So stellen Sie die REST-API bereit:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html) | App-Developer | 
| Testen Sie mit einem externen Tool. | Führen Sie einen Test mit einem externen Tool durch, um zu bestätigen, dass die Nachricht erfolgreich empfangen wurde:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis.html) | App-Developer | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie die API. | Wählen Sie in der [API Gateway Gateway-Konsole](https://console.aws.amazon.com/apigateway/) die API aus, die Sie erstellt haben, und klicken Sie dann auf **Löschen**. | App-Developer | 
| Löschen Sie die IAM-Rolle. | **Wählen Sie in der [IAM-Konsole](https://console.aws.amazon.com/iam/) im Bereich **Rollen** die Option **AWSGatewayRoleForSQS** und dann Löschen aus.** | App-Developer | 
| Löschen Sie die SQS-Warteschlange. | **Wählen Sie auf der [Amazon SQS SQS-Konsole](https://console.aws.amazon.com/sqs/) im Bereich **Warteschlangen** die SQS-Warteschlange aus, die Sie erstellt haben, und klicken Sie dann auf Löschen.** | App-Developer | 

## Zugehörige Ressourcen
<a name="integrate-amazon-api-gateway-with-amazon-sqs-to-handle-asynchronous-rest-apis-resources"></a>
+ [SQS- SendMessage](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services-reference.html#SQS-SendMessage) (API Gateway Gateway-Dokumentation)
+ [Inhaltstypkonvertierungen in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-workflow.html) (API Gateway Gateway-Dokumentation)
+ [\$1util-Variablen](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#util-template-reference) (API Gateway Gateway-Dokumentation)
+ [Wie integriere ich eine API Gateway Gateway-REST-API in Amazon SQS und behebe häufig auftretende Fehler?](https://repost.aws/knowledge-center/api-gateway-rest-api-sqs-errors) (AWS Re:POST-Artikel)

# Ereignisse asynchron mit Amazon API Gateway und AWS Lambda verarbeiten
<a name="process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda"></a>

*Andrea Meroni, Mariem Kthiri, Nadim Majed und Michael Wallner, Amazon Web Services*

## Zusammenfassung
<a name="process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda-summary"></a>

[Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) ist ein vollständig verwalteter Service, mit dem Entwickler in jeder Größenordnung erstellen, veröffentlichen, warten, überwachen und sichern APIs können. Er erledigt die Aufgaben, die mit der Annahme und Verarbeitung von bis zu Hunderttausenden von gleichzeitigen API-Aufrufen verbunden sind.

Eine wichtige Servicequote von API Gateway ist das Integrations-Timeout. Das Timeout ist die maximale Zeit, in der ein Backend-Dienst eine Antwort zurückgeben muss, bevor die REST-API einen Fehler zurückgibt. Das feste Limit von 29 Sekunden ist für synchrone Workloads im Allgemeinen akzeptabel. Dieses Limit stellt jedoch eine Herausforderung für Entwickler dar, die API Gateway mit asynchronen Workloads verwenden möchten.

Dieses Muster zeigt eine Beispielarchitektur für die asynchrone Verarbeitung von Ereignissen mithilfe von API Gateway und AWS Lambda. Die Architektur unterstützt die Ausführung von Verarbeitungsaufträgen mit einer Dauer von bis zu 15 Minuten und verwendet eine einfache REST-API als Schnittstelle.

[Projen](https://pypi.org/project/projen/) [wird verwendet, um die lokale Entwicklungsumgebung einzurichten und die Beispielarchitektur in Kombination mit dem [AWS Cloud Development Kit (AWS CDK) Toolkit AWS-Konto](https://docs.aws.amazon.com/cdk/v2/guide/cli.html), [Docker](https://docs.docker.com/get-docker/) und Node.js auf einem Ziel bereitzustellen.](https://nodejs.org/en/download/) Projen richtet automatisch eine virtuelle [Python-Umgebung](https://www.python.org/downloads/) mit [Pre-Commit](https://pre-commit.com/) und den Tools ein, die für die Qualitätssicherung des Codes, Sicherheitsscans und Unit-Tests verwendet werden. Weitere Informationen finden Sie im Abschnitt [Tools](#process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda-tools).

## Voraussetzungen und Einschränkungen
<a name="process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Die folgenden Tools sind auf Ihrer Workstation installiert:
  + [AWS Cloud Development Kit (AWS CDK) Toolkit-Version](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) 2.85.0
  + [Docker-Version 20.10.21](https://docs.docker.com/get-docker/)
  + [Node.js, Version 18.13.0](https://nodejs.org/en/download/)
  + Bewährte [Version 0.71.111](https://pypi.org/project/projen/)
  + [Python-Version](https://www.python.org/downloads/) 3.9.16

**Einschränkungen**
+ Die maximale Laufzeit eines Jobs ist durch die maximale Laufzeit für Lambda-Funktionen (15 Minuten) begrenzt.
+ Die maximale Anzahl gleichzeitiger Jobanfragen ist durch die reservierte Parallelität der Lambda-Funktion begrenzt.

## Architektur
<a name="process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda-architecture"></a>

Das folgende Diagramm zeigt die Interaktion der Jobs-API mit den Lambda-Funktionen zur Ereignisverarbeitung und Fehlerbehandlung, wobei Ereignisse in einem Amazon-Ereignisarchiv gespeichert werden. EventBridge 

![\[AWS Cloud architecture showing user interaction with jobs API, Lambda functions, and EventBridge.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e027130c-44c1-41ab-bbe9-f196a49bd9ac/images/3c437b65-48e3-477d-aeea-6ff938cc3285.png)


Ein typischer Arbeitsablauf umfasst die folgenden Schritte:

1. Sie authentifizieren sich bei AWS Identity and Access Management (IAM) und erhalten Sicherheitsanmeldedaten.

1. Sie senden eine `POST` HTTP-Anfrage an den `/jobs` Jobs-API-Endpunkt und geben dabei die Jobparameter im Hauptteil der Anfrage an.

1. Die Jobs-API, bei der es sich um eine API-Gateway-REST-API handelt, gibt Ihnen eine HTTP-Antwort zurück, die die Job-ID enthält.

1. Die Jobs-API ruft asynchron die Lambda-Funktion zur Ereignisverarbeitung auf.

1. Die Funktion zur Ereignisverarbeitung verarbeitet das Ereignis und fügt dann die Auftragsergebnisse in die Amazon DynamoDB-Tabelle der Jobs ein.

1. Sie senden eine `GET` HTTP-Anfrage an den `/jobs/{jobId}` Job-API-Endpunkt mit der Job-ID aus Schritt 3 als. `{jobId}`

1. Die Jobs-API fragt die `jobs` DynamoDB-Tabelle ab, um die Auftragsergebnisse abzurufen.

1. Die Jobs-API gibt eine HTTP-Antwort zurück, die die Auftragsergebnisse enthält.

1. Wenn die Ereignisverarbeitung fehlschlägt, sendet die Ereignisverarbeitungsfunktion das Ereignis an die Fehlerbehandlungsfunktion.

1. Die Fehlerbehandlungsfunktion platziert die Jobparameter in der `jobs` DynamoDB-Tabelle.

1. Sie können die Job-Parameter abrufen, indem Sie eine `GET` HTTP-Anfrage an den `/jobs/{jobId}` Jobs-API-Endpunkt senden.

1. Wenn die Fehlerbehandlung fehlschlägt, sendet die Fehlerbehandlungsfunktion das Ereignis an ein EventBridge Ereignisarchiv.

   Sie können die archivierten Ereignisse erneut abspielen, indem Sie. EventBridge

## Tools
<a name="process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel Lambda-Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.

**Andere Tools**
+ [autopep8](https://github.com/hhatto/autopep8) formatiert Python-Code automatisch auf der Grundlage des Python Enhancement Proposal (PEP) 8-Styleguides.
+ [Bandit](https://bandit.readthedocs.io/en/latest/) scannt Python-Code, um häufig auftretende Sicherheitsprobleme zu finden.
+ [Commitizen](https://commitizen-tools.github.io/commitizen/) ist ein Git-Commit-Checker und -Generator. `CHANGELOG`
+ [cfn-lint ist ein Linter](https://github.com/aws-cloudformation/cfn-lint) AWS CloudFormation 
+ [Checkov](https://github.com/bridgecrewio/checkov) ist ein statisches Code-Analyse-Tool, das Infrastructure as Code (IaC) auf Sicherheits- und Compliance-Fehlkonfigurationen überprüft.
+ [jq ist ein Befehlszeilentool](https://stedolan.github.io/jq/download/) zum Parsen von JSON.
+ [Postman](https://www.postman.com/) ist eine API-Plattform.
+ [pre-commit](https://pre-commit.com/) ist ein Git-Hooks-Manager.
+ [Projen](https://github.com/projen/projen) ist ein Projektgenerator.
+ [pytest](https://docs.pytest.org/en/7.2.x/index.html) ist ein Python-Framework zum Schreiben kleiner, lesbarer Tests.

**Code-Repository**

Dieser Beispielarchitekturcode befindet sich im Repository GitHub [Asynchronous Event Processing with API Gateway and Lambda](https://github.com/aws-samples/asynchronous-event-processing-api-gateway-lambda-cdk).

## Best Practices
<a name="process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda-best-practices"></a>
+ Diese Beispielarchitektur beinhaltet keine Überwachung der bereitgestellten Infrastruktur. Wenn Ihr Anwendungsfall eine Überwachung erfordert, sollten Sie das Hinzufügen von [CDK Monitoring Constructs](https://constructs.dev/packages/cdk-monitoring-constructs) oder einer anderen Überwachungslösung in Betracht ziehen.
+ Diese Beispielarchitektur verwendet [IAM-Berechtigungen](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html), um den Zugriff auf die Jobs-API zu steuern. Jeder, der autorisiert ist, `JobsAPIInvokeRole` dies anzunehmen, kann die Jobs-API aufrufen. Daher ist der Zugriffskontrollmechanismus binär. Wenn Ihr Anwendungsfall ein komplexeres Autorisierungsmodell erfordert, sollten Sie es mit einem anderen [Zugriffskontrollmechanismus](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html) testen.
+ Wenn ein Benutzer eine `POST` HTTP-Anfrage an den `/jobs` Jobs-API-Endpunkt sendet, werden die Eingabedaten auf zwei verschiedenen Ebenen validiert:
  + Amazon API Gateway ist für die erste [Anforderungsvalidierung](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html) verantwortlich.
  + Die Funktion zur Ereignisverarbeitung führt die zweite Anfrage durch.

    Es wird keine Überprüfung durchgeführt, wenn der Benutzer eine `GET` HTTP-Anfrage an den `/jobs/{jobId}` Jobs-API-Endpunkt sendet. Wenn Ihr Anwendungsfall eine zusätzliche Eingabevalidierung und ein höheres Maß an Sicherheit erfordert, sollten Sie die [Verwendung von AWS WAF zum Schutz Ihrer API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html) in Betracht ziehen.

## Epen
<a name="process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda-epics"></a>

### Richte die Umgebung ein
<a name="set-up-the-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Führen Sie den folgenden Befehl aus, um das Repository lokal zu klonen:<pre>git clone https://github.com/aws-samples/asynchronous-event-processing-api-gateway-lambda-cdk.git</pre> | DevOps Ingenieur | 
| Richten Sie das Projekt ein. | Ändern Sie das Verzeichnis in das Repository-Stammverzeichnis und richten Sie die virtuelle Python-Umgebung und alle Tools mithilfe von [Projen](https://github.com/projen/projen) ein:<pre>cd asynchronous-event-processing-api-gateway-api-gateway-lambda-cdk<br />npx projen</pre> | DevOps Ingenieur | 
| Installieren Sie Pre-Commit-Hooks. | Gehen Sie wie folgt vor, um Pre-Commit-Hooks zu installieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda.html) | DevOps Ingenieur | 

### Stellen Sie die Beispielarchitektur bereit
<a name="deploy-the-example-architecture"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bootstrap. AWS CDK | Um AWS CDK in Ihrem zu booten AWS-Konto, führen Sie den folgenden Befehl aus:<pre>AWS_PROFILE=$YOUR_AWS_PROFILE npx projen bootstrap</pre> | AWS DevOps | 
| Stellen Sie die Beispielarchitektur bereit. | Führen Sie den folgenden Befehl aus AWS-Konto, um die Beispielarchitektur in Ihrem bereitzustellen:<pre>AWS_PROFILE=$YOUR_AWS_PROFILE npx projen deploy</pre> | AWS DevOps | 

### Testen Sie die Architektur
<a name="test-the-architecture"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die Testvoraussetzungen. | Installieren Sie auf Ihrer Workstation the [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html), [Postman](https://www.postman.com/downloads/) und [jq](https://jqlang.github.io/jq/).Die Verwendung von [Postman](https://www.postman.com/downloads/) zum Testen dieser Beispielarchitektur wird empfohlen, ist aber nicht zwingend erforderlich. Wenn Sie sich für ein alternatives API-Testtool entscheiden, stellen Sie sicher, dass es die [Authentifizierung mit AWS Signature Version 4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) unterstützt, und beziehen Sie sich auf die exponierten API-Endpunkte, die durch [den Export der REST-API](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-export-api.html) überprüft werden können. | DevOps Ingenieur | 
| Gehen Sie von der aus`JobsAPIInvokeRole`. | [Gehen Sie davon aus](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html)`JobsAPIInvokeRole`, dass das als Ausgabe des Befehls deploy gedruckt wurde:<pre>CREDENTIALS=$(AWS_PROFILE=$<YOUR_AWS_PROFILE> aws sts assume-role \<br />--no-cli-pager \<br />--role-arn $<JOBS_API_INVOKE_ROLE_ARN> \<br />--role-session-name JobsAPIInvoke)<br />export AWS_ACCESS_KEY_ID=$(cat $CREDENTIALS | jq ‘.Credentials’’.AccessKeyId’)<br />export AWS_SECRET_ACCESS_KEY=$(cat $CREDENTIALS | jq ‘.Credentials’’.SecretAccessKey’)<br />export AWS_SESSION_TOKEN==$(cat $CREDENTIALS | jq ‘.Credentials’’.SessionToken’)</pre> | AWS DevOps | 
| Postman konfigurieren. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda.html) | AWS DevOps | 
| Testen Sie die Beispielarchitektur. | Um die Beispielarchitektur zu testen, [senden Sie Anfragen an](https://learning.postman.com/docs/sending-requests/requests/#next-steps) die Jobs-API. Weitere Informationen finden Sie in der [Postman-Dokumentation](https://learning.postman.com/docs/getting-started/first-steps/sending-the-first-request/#send-an-api-request). | DevOps Ingenieur | 

## Fehlerbehebung
<a name="process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die Zerstörung und anschließende erneute Bereitstellung der Beispielarchitektur schlägt fehl, da die [Amazon CloudWatch Logs-Protokollgruppe](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) `/aws/apigateway/JobsAPIAccessLogs` bereits existiert. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda.html) | 

## Zugehörige Ressourcen
<a name="process-events-asynchronously-with-amazon-api-gateway-and-aws-lambda-resources"></a>
+ [API-Gateway-Zuordnungsvorlage und Referenz zur Zugriffsprotokollierungsvariablen](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html)
+ [Richten Sie den asynchronen Aufruf der Backend-Lambda-Funktion ein](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-integration-async.html)

# Ereignisse asynchron mit Amazon API Gateway und Amazon DynamoDB Streams verarbeiten
<a name="processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams"></a>

*Andrea Meroni, Mariem Kthiri, Nadim Majed, Alessandro Trisolini und Michael Wallner, Amazon Web Services*

## Zusammenfassung
<a name="processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams-summary"></a>

[Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) ist ein vollständig verwalteter Service, den Entwickler nutzen können, um sie in jeder Größenordnung zu erstellen, zu veröffentlichen, zu verwalten, APIs zu überwachen und zu sichern. Er erledigt die Aufgaben, die mit der Annahme und Verarbeitung von bis zu Hunderttausenden von gleichzeitigen API-Aufrufen verbunden sind.

Eine wichtige Servicequote von API Gateway ist das Integrations-Timeout. Das Timeout ist die maximale Zeit, in der ein Backend-Dienst eine Antwort zurückgeben muss, bevor die REST-API einen Fehler zurückgibt. Das feste Limit von 29 Sekunden ist für synchrone Workloads im Allgemeinen akzeptabel. Dieses Limit stellt jedoch eine Herausforderung für Entwickler dar, die API Gateway mit asynchronen Workloads verwenden möchten.

Dieses Muster zeigt eine Beispielarchitektur für die asynchrone Verarbeitung von Ereignissen mithilfe von API Gateway, Amazon DynamoDB Streams und. AWS Lambda Die Architektur unterstützt die Ausführung von Parallelverarbeitungsjobs mit denselben Eingabeparametern und verwendet eine grundlegende REST-API als Schnittstelle. In diesem Beispiel begrenzt die Verwendung von Lambda als Backend die Dauer von Jobs auf 15 Minuten. Sie können dieses Limit umgehen, indem Sie einen alternativen Dienst zur Verarbeitung eingehender Ereignisse verwenden (z. B. AWS Fargate).

[Projen](https://pypi.org/project/projen/) [wird verwendet, um die lokale Entwicklungsumgebung einzurichten und die Beispielarchitektur in Kombination mit dem [AWS Cloud Development Kit (AWS CDK) Toolkit AWS-Konto](https://docs.aws.amazon.com/cdk/v2/guide/cli.html), [Docker](https://docs.docker.com/get-docker/) und Node.js auf einem Ziel bereitzustellen.](https://nodejs.org/en/download/) Projen richtet automatisch eine virtuelle [Python-Umgebung](https://www.python.org/downloads/) mit [Pre-Commit](https://pre-commit.com/) und den Tools ein, die für die Qualitätssicherung des Codes, Sicherheitsscans und Unit-Tests verwendet werden. Weitere Informationen finden Sie im Abschnitt [Tools](#processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams-tools).

## Voraussetzungen und Einschränkungen
<a name="processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Die folgenden Tools sind auf Ihrer Workstation installiert:
  + [AWS Cloud Development Kit (AWS CDK) Toolkit-Version](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) 2.85.0 oder höher
  + [Docker-Version 20.10.21](https://docs.docker.com/get-docker/) oder höher
  + [Node.js Version 18](https://nodejs.org/en/download/) oder höher
  + [Projen](https://pypi.org/project/projen/) Version 0.71.111 oder höher
  + [Python-Version](https://www.python.org/downloads/) 3.9.16 oder höher

**Einschränkungen**
+ Die empfohlene maximale Anzahl von Lesern für DynamoDB Streams ist zwei, um eine Drosselung zu vermeiden.
+ Die maximale Laufzeit eines Jobs ist durch die maximale Laufzeit für Lambda-Funktionen (15 Minuten) begrenzt.
+ Die maximale Anzahl gleichzeitiger Jobanfragen ist durch die reservierte Parallelität der Lambda-Funktionen begrenzt.

## Architektur
<a name="processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams-architecture"></a>

**Architektur**

Das folgende Diagramm zeigt die Interaktion der Jobs-API mit DynamoDB Streams und den Lambda-Funktionen zur Ereignisverarbeitung und Fehlerbehandlung mit Ereignissen, die in einem Amazon-Ereignisarchiv gespeichert sind. EventBridge 

![\[Diagramm der Architektur und des Prozesses, wobei die Schritte nach dem Diagramm aufgeführt sind.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/68a46501-16e5-48e4-99c6-fc67a8b4133a/images/29fe6982-ad81-4099-9c65-08b17c96e78f.png)


Ein typischer Arbeitsablauf umfasst die folgenden Schritte:

1. Sie authentifizieren sich bei AWS Identity and Access Management (IAM) und erhalten Sicherheitsanmeldedaten.

1. Sie senden eine `POST` HTTP-Anfrage an den `/jobs` Jobs-API-Endpunkt und geben dabei die Jobparameter im Hauptteil der Anfrage an.

1. Die Jobs-API gibt Ihnen eine HTTP-Antwort zurück, die die Job-ID enthält.

1. Die Job-API platziert die Job-Parameter in der `jobs_table` Amazon DynamoDB-Tabelle.

1. Der `jobs_table` DynamoDB-Stream der DynamoDB-Tabelle ruft die Lambda-Funktionen zur Ereignisverarbeitung auf.

1. Die Lambda-Funktionen zur Ereignisverarbeitung verarbeiten das Ereignis und fügen dann die Auftragsergebnisse in die `jobs_table` DynamoDB-Tabelle ein. [Um konsistente Ergebnisse zu gewährleisten, implementieren die Funktionen zur Ereignisverarbeitung einen optimistischen Sperrmechanismus.](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptimisticLocking.html)

1. Sie senden eine `GET` HTTP-Anfrage an den `/jobs/{jobId}` Job-API-Endpunkt mit der Job-ID aus Schritt 3 als. `{jobId}`

1. Die Jobs-API fragt die `jobs_table` DynamoDB-Tabelle ab, um die Auftragsergebnisse abzurufen.

1. Die Jobs-API gibt eine HTTP-Antwort zurück, die die Auftragsergebnisse enthält.

1. Wenn die Ereignisverarbeitung fehlschlägt, sendet die Quellenzuordnung der Ereignisverarbeitungsfunktion das Ereignis an das Thema Amazon Simple Notification Service (Amazon SNS) zur Fehlerbehandlung.

1. Das SNS-Thema zur Fehlerbehandlung überträgt das Ereignis asynchron an die Fehlerbehandlungsfunktion.

1. Die Fehlerbehandlungsfunktion platziert die Jobparameter in der `jobs_table` DynamoDB-Tabelle.

   Sie können die Job-Parameter abrufen, indem Sie eine `GET` HTTP-Anfrage an den `/jobs/{jobId}` Jobs-API-Endpunkt senden.

1. Wenn die Fehlerbehandlung fehlschlägt, sendet die Fehlerbehandlungsfunktion das Ereignis an ein EventBridge Amazon-Archiv.

   Sie können die archivierten Ereignisse erneut abspielen, indem Sie EventBridge

## Tools
<a name="processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS-Lambda-Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen AWS-Konten.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.

**Andere Tools**
+ [autopep8](https://github.com/hhatto/autopep8) formatiert Python-Code automatisch auf der Grundlage des Python Enhancement Proposal (PEP) 8-Styleguides.
+ [Bandit](https://bandit.readthedocs.io/en/latest/) scannt Python-Code, um häufig auftretende Sicherheitsprobleme zu finden.
+ [Commitizen](https://commitizen-tools.github.io/commitizen/) ist ein Git-Commit-Checker und -Generator. `CHANGELOG`
+ [cfn-lint ist ein Linter](https://github.com/aws-cloudformation/cfn-lint) AWS CloudFormation 
+ [Checkov](https://github.com/bridgecrewio/checkov) ist ein statisches Code-Analyse-Tool, das Infrastructure as Code (IaC) auf Sicherheits- und Compliance-Fehlkonfigurationen überprüft.
+ [jq ist ein Befehlszeilentool](https://stedolan.github.io/jq/download/) zum Parsen von JSON.
+ [Postman](https://www.postman.com/) ist eine API-Plattform.
+ [pre-commit](https://pre-commit.com/) ist ein Git-Hooks-Manager.
+ [Projen](https://github.com/projen/projen) ist ein Projektgenerator.
+ [pytest](https://docs.pytest.org/en/7.2.x/index.html) ist ein Python-Framework zum Schreiben kleiner, lesbarer Tests.

**Code-Repository**

Dieser Beispielarchitekturcode befindet sich im Repository GitHub [Asynchronous Processing with API Gateway und DynamoDB Streams](https://github.com/aws-samples/asynchronous-event-processing-api-gateway-dynamodb-streams-cdk).

## Best Practices
<a name="processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams-best-practices"></a>
+ Diese Beispielarchitektur beinhaltet keine Überwachung der bereitgestellten Infrastruktur. Wenn Ihr Anwendungsfall eine Überwachung erfordert, sollten Sie das Hinzufügen von [CDK Monitoring Constructs](https://constructs.dev/packages/cdk-monitoring-constructs) oder einer anderen Überwachungslösung in Betracht ziehen.
+ Diese Beispielarchitektur verwendet [IAM-Berechtigungen](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html), um den Zugriff auf die Jobs-API zu steuern. Jeder, der autorisiert ist, `JobsAPIInvokeRole` dies anzunehmen, kann die Jobs-API aufrufen. Daher ist der Zugriffskontrollmechanismus binär. Wenn Ihr Anwendungsfall ein komplexeres Autorisierungsmodell erfordert, sollten Sie es mit einem anderen [Zugriffskontrollmechanismus](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html) testen.
+ Wenn ein Benutzer eine `POST` HTTP-Anfrage an den `/jobs` Jobs-API-Endpunkt sendet, werden die Eingabedaten auf zwei verschiedenen Ebenen validiert:
  + API Gateway ist für die erste [Anforderungsvalidierung](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html) verantwortlich.
  + Die Funktion zur Ereignisverarbeitung führt die zweite Anfrage aus.

    Es wird keine Überprüfung durchgeführt, wenn der Benutzer eine `GET` HTTP-Anfrage an den `/jobs/{jobId}` Jobs-API-Endpunkt sendet. Wenn Ihr Anwendungsfall eine zusätzliche Eingabevalidierung und ein erhöhtes Sicherheitsniveau erfordert, sollten Sie den [Einsatz AWS WAF zum Schutz Ihrer API in Betracht ziehen](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html).
+ Um eine Drosselung zu vermeiden, rät die [DynamoDB Streams-Dokumentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html#Streams.Processing) Benutzern davon ab, mit mehr als zwei Verbrauchern vom Shard desselben Streams zu lesen. Um die Anzahl der Verbraucher zu erhöhen, empfehlen wir die Verwendung von [Amazon Kinesis Data Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/kds.html).
+ In diesem Beispiel wurde [optimistisches Sperren](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptimisticLocking.html) verwendet, um sicherzustellen, dass Elemente in der `jobs_table` DynamoDB-Tabelle konsistent aktualisiert werden. Je nach Anforderung des Anwendungsfalls müssen Sie möglicherweise zuverlässigere Sperrmechanismen implementieren, z. B. pessimistisches Sperren.

## Epen
<a name="processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams-epics"></a>

### Richte die Umgebung ein
<a name="set-up-the-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Führen Sie den folgenden Befehl aus, um das Repository lokal zu klonen:<pre>git clone https://github.com/aws-samples/asynchronous-event-processing-api-gateway-dynamodb-streams-cdk.git</pre> | DevOps Ingenieur | 
| Richten Sie das Projekt ein. | Ändern Sie das Verzeichnis in das Repository-Stammverzeichnis und richten Sie die virtuelle Python-Umgebung und alle Tools mithilfe von [Projen](https://github.com/projen/projen) ein:<pre>cd asynchronous-event-processing-api-gateway-api-gateway-dynamodb-streams-cdk<br />npx projen</pre> | DevOps Ingenieur | 
| Installieren Sie Pre-Commit-Hooks. | Gehen Sie wie folgt vor, um Pre-Commit-Hooks zu installieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams.html) | DevOps Ingenieur | 

### Stellen Sie die Beispielarchitektur bereit
<a name="deploy-the-example-architecture"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bootstrap. AWS CDK | Um [AWS CDK](https://aws.amazon.com/cdk/)in Ihrem zu booten AWS-Konto, führen Sie den folgenden Befehl aus:<pre>AWS_PROFILE=$YOUR_AWS_PROFILE npx projen bootstrap</pre> | AWS DevOps | 
| Stellen Sie die Beispielarchitektur bereit. | Führen Sie den folgenden Befehl aus AWS-Konto, um die Beispielarchitektur in Ihrem bereitzustellen:<pre>AWS_PROFILE=$YOUR_AWS_PROFILE npx projen deploy</pre> | AWS DevOps | 

### Testen Sie die Architektur
<a name="test-the-architecture"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die Testvoraussetzungen. | Installieren Sie auf Ihrer Workstation the [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html), [Postman](https://www.postman.com/downloads/) und [jq](https://jqlang.github.io/jq/).Die Verwendung von [Postman](https://www.postman.com/downloads/) zum Testen dieser Beispielarchitektur wird empfohlen, ist aber nicht zwingend erforderlich. Wenn Sie sich für ein alternatives API-Testtool entscheiden, stellen Sie sicher, dass es die [AWS Signature Version 4-Authentifizierung](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) unterstützt, und verweisen Sie auf die exponierten API-Endpunkte, die durch [Exportieren der REST-API](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-export-api.html) überprüft werden können. | DevOps Ingenieur | 
| Gehen Sie von der aus`JobsAPIInvokeRole`. | [Gehen Sie davon aus](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html)`JobsAPIInvokeRole`, dass das als Ausgabe des `deploy` Befehls gedruckt wurde:<pre>CREDENTIALS=$(AWS_PROFILE=$<YOUR_AWS_PROFILE> aws sts assume-role \<br />--no-cli-pager \<br />--role-arn $<JOBS_API_INVOKE_ROLE_ARN> \<br />--role-session-name JobsAPIInvoke)<br />export AWS_ACCESS_KEY_ID=$(cat $CREDENTIALS | jq ‘.Credentials’’.AccessKeyId’)<br />export AWS_SECRET_ACCESS_KEY=$(cat $CREDENTIALS | jq ‘.Credentials’’.SecretAccessKey’)<br />export AWS_SESSION_TOKEN==$(cat $CREDENTIALS | jq ‘.Credentials’’.SessionToken’)</pre> | AWS DevOps | 
| Postman konfigurieren. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams.html) | AWS DevOps | 
| Testen Sie die Beispielarchitektur. | Um die Beispielarchitektur zu testen, senden Sie Anfragen an die Jobs-API. Weitere Informationen finden Sie in der [Postman-Dokumentation](https://learning.postman.com/docs/getting-started/first-steps/sending-the-first-request/#send-an-api-request). | DevOps Ingenieur | 

## Fehlerbehebung
<a name="processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die Zerstörung und anschließende erneute Bereitstellung der Beispielarchitektur schlägt fehl, da die [Amazon CloudWatch Logs-Protokollgruppe](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) `/aws/apigateway/JobsAPIAccessLogs` bereits existiert. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams.html) | 

## Zugehörige Ressourcen
<a name="processing-events-asynchronously-with-amazon-api-gateway-and-amazon-dynamodb-streams-resources"></a>
+ [API-Gateway-Zuordnungsvorlage und Referenz zur Zugriffsprotokollierungsvariablen](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html)
+ [Erfassung von Änderungsdaten für DynamoDB Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html)
+ [Optimistisches Sperren mit Versionsnummer](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptimisticLocking.html)
+ [Verwenden von Kinesis Data Streams zur Erfassung von Änderungen an DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/kds.html)

# Ereignisse asynchron mit Amazon API Gateway, Amazon SQS und AWS Fargate verarbeiten
<a name="process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate"></a>

*Andrea Meroni, Mariem Kthiri, Nadim Majed, Alessandro Trisolini und Michael Wallner, Amazon Web Services*

## Zusammenfassung
<a name="process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate-summary"></a>

[Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) ist ein vollständig verwalteter Service, den Entwickler nutzen können, um sie in jeder Größenordnung zu erstellen, zu veröffentlichen, zu verwalten, APIs zu überwachen und zu sichern. Er erledigt die Aufgaben, die mit der Annahme und Verarbeitung von bis zu Hunderttausenden von gleichzeitigen API-Aufrufen verbunden sind.

Eine wichtige Servicequote von API Gateway ist das Integrations-Timeout. Das Timeout ist die maximale Zeit, in der ein Backend-Dienst eine Antwort zurückgeben muss, bevor die REST-API einen Fehler zurückgibt. Das feste Limit von 29 Sekunden ist für synchrone Workloads im Allgemeinen akzeptabel. Dieses Limit stellt jedoch eine Herausforderung für Entwickler dar, die API Gateway mit asynchronen Workloads verwenden möchten.

Dieses Muster zeigt eine Beispielarchitektur für die asynchrone Verarbeitung von Ereignissen mithilfe von API Gateway, Amazon Simple Queue Service (Amazon SQS) und. AWS Fargate Die Architektur unterstützt die Ausführung von Verarbeitungsaufträgen ohne zeitliche Einschränkungen und verwendet eine einfache REST-API als Schnittstelle.

[Projen](https://pypi.org/project/projen/) [wird verwendet, um die lokale Entwicklungsumgebung einzurichten und die Beispielarchitektur in Kombination mit [Docker](https://docs.docker.com/get-docker/) und Node.js [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)auf einem Ziel AWS-Konto bereitzustellen.](https://nodejs.org/en/download/) Projen richtet automatisch eine virtuelle [Python-Umgebung](https://www.python.org/downloads/) mit [Pre-Commit](https://pre-commit.com/) und den Tools ein, die für die Qualitätssicherung des Codes, Sicherheitsscans und Unit-Tests verwendet werden. Weitere Informationen finden Sie im Abschnitt [Tools](#process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate-tools).

## Voraussetzungen und Einschränkungen
<a name="process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Die folgenden Tools sind auf Ihrer Workstation installiert:
  + [AWS Cloud Development Kit (AWS CDK) Toolkit-Version](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) 2.85.0 oder höher
  + [Docker-Version 20.10.21](https://docs.docker.com/get-docker/) oder höher
  + [Node.js Version 18](https://nodejs.org/en/download/) oder höher
  + [Projen](https://pypi.org/project/projen/) Version 0.71.111 oder höher
  + [Python-Version](https://www.python.org/downloads/) 3.9.16 oder höher

**Einschränkungen**
+ Gleichzeitige Jobs sind auf 500 Aufgaben pro Minute begrenzt. Dies ist die maximale Anzahl von Aufgaben, die Fargate bereitstellen kann.

## Architektur
<a name="process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate-architecture"></a>

Das folgende Diagramm zeigt die Interaktion der Jobs-API mit der `jobs` Amazon DynamoDB-Tabelle, dem Fargate-Dienst zur Ereignisverarbeitung und der Fehlerbehandlungsfunktion. AWS Lambda Ereignisse werden in einem EventBridge Amazon-Eventarchiv gespeichert.

![\[Architekturdiagramm mit einer Beschreibung, die dem Diagramm folgt.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/8a03149c-8f34-4593-84d5-accc1800a0a2/images/5e1071aa-4fbc-495c-bc22-8e62a32a136b.png)


Ein typischer Arbeitsablauf umfasst die folgenden Schritte:

1. Sie authentifizieren sich bei AWS Identity and Access Management (IAM) und erhalten Sicherheitsanmeldedaten.

1. Sie senden eine `POST` HTTP-Anfrage an den `/jobs` Jobs-API-Endpunkt und geben dabei die Jobparameter im Hauptteil der Anfrage an.

1. Die Jobs-API, bei der es sich um eine API-Gateway-REST-API handelt, gibt Ihnen eine HTTP-Antwort zurück, die die Job-ID enthält.

1. Die Jobs-API sendet eine Nachricht an die SQS-Warteschlange.

1. Fargate ruft die Nachricht aus der SQS-Warteschlange ab, verarbeitet das Ereignis und fügt dann die Auftragsergebnisse in die `jobs` DynamoDB-Tabelle ein.

1. Sie senden eine `GET` HTTP-Anfrage an den `/jobs/{jobId}` Job-API-Endpunkt mit der Job-ID aus Schritt 3 als. `{jobId}`

1. Die Jobs-API fragt die `jobs` DynamoDB-Tabelle ab, um die Auftragsergebnisse abzurufen.

1. Die Jobs-API gibt eine HTTP-Antwort zurück, die die Auftragsergebnisse enthält.

1. Wenn die Ereignisverarbeitung fehlschlägt, sendet die SQS-Warteschlange das Ereignis an die Dead-Letter-Warteschlange (DLQ).

1. Ein EventBridge Ereignis initiiert die Fehlerbehandlungsfunktion.

1. Die Fehlerbehandlungsfunktion platziert die Jobparameter in der `jobs` DynamoDB-Tabelle.

1. Sie können die Job-Parameter abrufen, indem Sie eine `GET` HTTP-Anfrage an den `/jobs/{jobId}` Job-API-Endpunkt senden.

1. Wenn die Fehlerbehandlung fehlschlägt, sendet die Fehlerbehandlungsfunktion das Ereignis an ein EventBridge Archiv.

   Sie können die archivierten Ereignisse erneut abspielen, indem Sie EventBridge

## Tools
<a name="process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html)hilft Ihnen dabei, Container auszuführen, ohne Server oder Amazon Elastic Compute Cloud (Amazon EC2) -Instances verwalten zu müssen. Es wird in Verbindung mit Amazon Elastic Container Service (Amazon ECS) verwendet.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel Lambda-Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.

**Andere Tools**
+ [autopep8](https://github.com/hhatto/autopep8) formatiert Python-Code automatisch auf der Grundlage des Python Enhancement Proposal (PEP) 8-Styleguides.
+ [Bandit](https://bandit.readthedocs.io/en/latest/) scannt Python-Code, um häufig auftretende Sicherheitsprobleme zu finden.
+ [Commitizen](https://commitizen-tools.github.io/commitizen/) ist ein Git-Commit-Checker und -Generator. `CHANGELOG`
+ [cfn-lint ist ein Linter](https://github.com/aws-cloudformation/cfn-lint) AWS CloudFormation 
+ [Checkov](https://github.com/bridgecrewio/checkov) ist ein statisches Code-Analyse-Tool, das Infrastructure as Code (IaC) auf Sicherheits- und Compliance-Fehlkonfigurationen überprüft.
+ [jq ist ein Befehlszeilentool](https://stedolan.github.io/jq/download/) zum Parsen von JSON.
+ [Postman](https://www.postman.com/) ist eine API-Plattform.
+ [pre-commit](https://pre-commit.com/) ist ein Git-Hooks-Manager.
+ [Projen](https://github.com/projen/projen) ist ein Projektgenerator.
+ [pytest](https://docs.pytest.org/en/7.2.x/index.html) ist ein Python-Framework zum Schreiben kleiner, lesbarer Tests.

**Code-Repository**

Dieser Beispielarchitekturcode befindet sich im Repository GitHub [Asynchronous Processing with API Gateway und SQS.](https://github.com/aws-samples/asynchronous-event-processing-api-gateway-sqs-cdk)

## Best Practices
<a name="process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate-best-practices"></a>
+ Diese Beispielarchitektur beinhaltet keine Überwachung der bereitgestellten Infrastruktur. Wenn Ihr Anwendungsfall eine Überwachung erfordert, sollten Sie das Hinzufügen von [CDK Monitoring Constructs](https://constructs.dev/packages/cdk-monitoring-constructs) oder einer anderen Überwachungslösung in Betracht ziehen.
+ Diese Beispielarchitektur verwendet [IAM-Berechtigungen](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html), um den Zugriff auf die Jobs-API zu steuern. Jeder, der autorisiert ist, `JobsAPIInvokeRole` dies anzunehmen, kann die Jobs-API aufrufen. Daher ist der Zugriffskontrollmechanismus binär. Wenn Ihr Anwendungsfall ein komplexeres Autorisierungsmodell erfordert, sollten Sie es mit einem anderen [Zugriffskontrollmechanismus](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html) testen.
+ Wenn ein Benutzer eine `POST` HTTP-Anfrage an den `/jobs` Jobs-API-Endpunkt sendet, werden die Eingabedaten auf zwei verschiedenen Ebenen validiert:
  + API Gateway ist für die erste [Anforderungsvalidierung](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html) verantwortlich.
  + Die Funktion zur Ereignisverarbeitung führt die zweite Anfrage aus.

    Es wird keine Überprüfung durchgeführt, wenn der Benutzer eine `GET` HTTP-Anfrage an den `/jobs/{jobId}` Jobs-API-Endpunkt sendet. Wenn Ihr Anwendungsfall eine zusätzliche Eingabevalidierung und ein erhöhtes Sicherheitsniveau erfordert, sollten Sie den [Einsatz AWS WAF zum Schutz Ihrer API in Betracht ziehen](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html).

## Epen
<a name="process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate-epics"></a>

### Richte die Umgebung ein
<a name="set-up-the-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Führen Sie den folgenden Befehl aus, um das Repository lokal zu klonen:<pre>git clone https://github.com/aws-samples/asynchronous-event-processing-api-gateway-sqs-cdk.git</pre> | DevOps Ingenieur | 
| Richten Sie das Projekt ein. | Ändern Sie das Verzeichnis in das Repository-Stammverzeichnis und richten Sie die virtuelle Python-Umgebung und alle Tools mithilfe von [Projen](https://github.com/projen/projen) ein:<pre>cd asynchronous-event-processing-api-gateway-api-gateway-sqs-cdk<br />npx projen</pre> | DevOps Ingenieur | 
| Installieren Sie Pre-Commit-Hooks. | Gehen Sie wie folgt vor, um Pre-Commit-Hooks zu installieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate.html) | DevOps Ingenieur | 

### Stellen Sie die Beispielarchitektur bereit
<a name="deploy-the-example-architecture"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bootstrap. AWS CDK | Um [AWS CDK](https://aws.amazon.com/cdk/)in Ihrem zu booten AWS-Konto, führen Sie den folgenden Befehl aus:<pre>AWS_PROFILE=$YOUR_AWS_PROFILE npx projen bootstrap</pre> | AWS DevOps | 
| Stellen Sie die Beispielarchitektur bereit. | Führen Sie den folgenden Befehl aus AWS-Konto, um die Beispielarchitektur in Ihrem bereitzustellen:<pre>AWS_PROFILE=$YOUR_AWS_PROFILE npx projen deploy</pre> | AWS DevOps | 

### Testen Sie die Architektur
<a name="test-the-architecture"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die Testvoraussetzungen. | Installieren Sie auf Ihrer Workstation the [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html), [Postman](https://www.postman.com/downloads/) und [jq](https://jqlang.github.io/jq/).Die Verwendung von [Postman](https://www.postman.com/downloads/) zum Testen dieser Beispielarchitektur wird empfohlen, ist aber nicht zwingend erforderlich. Wenn Sie sich für ein alternatives API-Testtool entscheiden, stellen Sie sicher, dass es die [Authentifizierung mit AWS Signature Version 4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) unterstützt, und beziehen Sie sich auf die exponierten API-Endpunkte, die durch [den Export der REST-API](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-export-api.html) überprüft werden können. | DevOps Ingenieur | 
| Gehen Sie von der aus`JobsAPIInvokeRole`. | [Gehen Sie davon aus](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html)`JobsAPIInvokeRole`, dass das als Ausgabe des `deploy` Befehls gedruckt wurde:<pre>CREDENTIALS=$(AWS_PROFILE=$<YOUR_AWS_PROFILE> aws sts assume-role \<br />--no-cli-pager \<br />--role-arn $<JOBS_API_INVOKE_ROLE_ARN> \<br />--role-session-name JobsAPIInvoke)<br />export AWS_ACCESS_KEY_ID=$(cat $CREDENTIALS | jq ‘.Credentials’’.AccessKeyId’)<br />export AWS_SECRET_ACCESS_KEY=$(cat $CREDENTIALS | jq ‘.Credentials’’.SecretAccessKey’)<br />export AWS_SESSION_TOKEN==$(cat $CREDENTIALS | jq ‘.Credentials’’.SessionToken’)</pre> | AWS DevOps | 
| Postman konfigurieren. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate.html) | AWS DevOps | 
| Testen Sie die Beispielarchitektur. | Um die Beispielarchitektur zu testen, senden Sie Anfragen an die Jobs-API. Weitere Informationen finden Sie in der [Postman-Dokumentation](https://learning.postman.com/docs/getting-started/first-steps/sending-the-first-request/#send-an-api-request). | DevOps Ingenieur | 

## Fehlerbehebung
<a name="process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die Zerstörung und anschließende erneute Bereitstellung der Beispielarchitektur schlägt fehl, da die [Amazon CloudWatch Logs-Protokollgruppe](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) `/aws/apigateway/JobsAPIAccessLogs` bereits existiert. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate.html) | 
| Die Zerstörung und anschließende erneute Bereitstellung der Beispielarchitektur schlägt fehl, da die [Protokollgruppe CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) `/aws/ecs/EventProcessingServiceLogs` bereits vorhanden ist. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate.html) | 

## Zugehörige Ressourcen
<a name="process-events-asynchronously-with-amazon-api-gateway-amazon-sqs-and-aws-fargate-resources"></a>
+ [API-Gateway-Zuordnungsvorlage und Referenz zur Zugriffsprotokollierungsvariablen](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html)
+ [Wie integriere ich eine API Gateway Gateway-REST-API in Amazon SQS und behebe häufig auftretende Fehler?](https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-rest-api-sqs-errors/)

# Führen Sie AWS Systems Manager Automation Automation-Aufgaben synchron über AWS Step Functions aus
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions"></a>

*Elie El Khoury, Amazon Web Services*

## Zusammenfassung
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-summary"></a>

Dieses Muster erklärt, wie die Integration AWS Step Functions mit erfolgt. AWS Systems Manager Es verwendet AWS SDK-Dienstintegrationen, um die Systems Manager **startAutomationExecution**Manager-API mit einem Task-Token aus einem State-Machine-Workflow aufzurufen, und pausiert, bis das Token mit einem erfolgreichen oder fehlerhaften Aufruf zurückkehrt. Um die Integration zu demonstrieren, implementiert dieses Muster einen Wrapper für Automatisierungsdokumente (Runbook) um das `AWS-RunPowerShellScript` OR-Dokument und wird verwendet`.waitForTaskToken`, um `AWS-RunShellScript` oder synchron aufzurufen. `AWS-RunShellScript` `AWS-RunPowerShellScript` Weitere Informationen zu AWS SDK-Dienstintegrationen in Step Functions finden Sie im [AWS Step Functions Entwicklerhandbuch](https://docs.aws.amazon.com/step-functions/latest/dg/supported-services-awssdk.html).

Step Functions**** ist ein visueller Workflow-Dienst mit geringem Programmieraufwand, mit dem Sie mithilfe von Diensten verteilte Anwendungen erstellen, IT- und Geschäftsprozesse automatisieren und Daten- und Machine-Learning-Pipelines erstellen können. AWS Workflows verwalten Fehler, Wiederholungen, Parallelisierung, Serviceintegrationen und Beobachtbarkeit, sodass Sie sich auf die wertvollere Geschäftslogik konzentrieren können.

Automatisierung, eine Funktion von AWS Systems Manager, vereinfacht allgemeine Wartungs-, Bereitstellungs- und Problembehebungsaufgaben für AWS-Services Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS), Amazon Redshift und Amazon Simple Storage Service (Amazon S3). Durch die Automatisierung haben Sie eine detaillierte Kontrolle über die Parallelität Ihrer Automatisierungen. Sie können beispielsweise angeben, auf wie viele Ressourcen gleichzeitig zugegriffen werden soll und wie viele Fehler auftreten können, bevor eine Automatisierung gestoppt wird.

Einzelheiten zur Implementierung, einschließlich Runbook-Schritten, Parametern und Beispielen, finden Sie im Abschnitt [Zusätzliche Informationen](#run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-additional).

## Voraussetzungen und Einschränkungen
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Konto AWS 
+ AWS Identity and Access Management (IAM) -Berechtigungen für den Zugriff auf Step Functions und Systems Manager
+ Eine EC2 Instanz, auf der Systems Manager Agent (SSM Agent) [installiert](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-agent.html) ist
+ [Ein IAM-Instanzprofil für Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html), das an die Instance angehängt ist, auf der Sie das Runbook ausführen möchten
+ Eine Step Functions Functions-Rolle mit den folgenden IAM-Berechtigungen (die dem Prinzip der geringsten Rechte folgen):

```
{
             "Effect": "Allow",
             "Action": "ssm:StartAutomationExecution",
             "Resource": "*"
 }
```

**Produktversionen**
+ SSM-Dokumentschema Version 0.3 oder höher
+ SSM Agent Version 2.3.672.0 oder höher

## Architektur
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-architecture"></a>

**Zieltechnologie-Stack**
+ AWS Step Functions
+ AWS Systems Manager -Automatisierung

**Zielarchitektur**

![\[Architektur für die synchrone Ausführung von Systems Manager Manager-Automatisierungsaufgaben über Step Functions\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/47c19e4f-d68d-4f91-bb68-202098757529/images/2d248aae-d858-4565-8af2-593cde0da780.png)


**Automatisierung und Skalierung**
+ Dieses Muster bietet eine AWS CloudFormation Vorlage, mit der Sie die Runbooks auf mehreren Instanzen bereitstellen können. (Weitere Informationen finden Sie im [Implementierungs-Repository von GitHub Step Functions und Systems Manager](https://github.com/aws-samples/amazon-stepfunctions-ssm-waitfortasktoken).)

## Tools
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-tools"></a>

**AWS-Services**
+ [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 regionsübergreifend AWS-Konten zu verwalten.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, sie zu verwenden.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Funktionen und andere Funktionen kombinieren können, um geschäftskritische Anwendungen AWS-Services zu erstellen.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)hilft Ihnen bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der ausgeführt werden. AWS Cloud Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS Ressourcen sicher und in großem Umfang zu verwalten.

**Code**

Der Code für dieses Muster ist im [Implementierungs-Repository von GitHub Step Functions und Systems Manager](https://github.com/aws-samples/amazon-stepfunctions-ssm-waitfortasktoken) verfügbar. 

## Epen
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-epics"></a>

### Runbooks erstellen
<a name="create-runbooks"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie die CloudFormation Vorlage herunter. | Laden Sie die `ssm-automation-documents.cfn.json` Vorlage aus dem `cloudformation ` Ordner des GitHub Repositorys herunter. | AWS DevOps | 
| Runbooks erstellen. | Melden Sie sich bei der an AWS-Managementkonsole, öffnen Sie die [CloudFormation Konsole](https://console.aws.amazon.com/cloudformation/) und stellen Sie die Vorlage bereit. Weitere Informationen zum Bereitstellen von CloudFormation Vorlagen finden Sie in der CloudFormation Dokumentation unter [Erstellen eines Stacks auf der CloudFormation Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). Die CloudFormation Vorlage stellt drei Ressourcen bereit:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions.html) | AWS DevOps | 

### Erstellen Sie eine Beispiel-Zustandsmaschine
<a name="create-a-sample-state-machine"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Teststatus-Maschine.  | Folgen Sie den Anweisungen im [AWS Step Functions Entwicklerhandbuch](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html), um eine Zustandsmaschine zu erstellen und auszuführen. Verwenden Sie für die Definition den folgenden Code. Achten Sie darauf, den `InstanceIds` Wert mit der ID einer gültigen Systems Manager-fähigen Instanz in Ihrem Konto zu aktualisieren.<pre>{<br />  "Comment": "A description of my state machine",<br />  "StartAt": "StartAutomationWaitForCallBack",<br />  "States": {<br />    "StartAutomationWaitForCallBack": {<br />      "Type": "Task",<br />      "Resource": "arn:aws:states:::aws-sdk:ssm:startAutomationExecution.waitForTaskToken",<br />      "Parameters": {<br />        "DocumentName": "SfnRunCommandByInstanceIds",<br />        "Parameters": {<br />          "InstanceIds": [<br />            "i-1234567890abcdef0"<br />          ],<br />          "taskToken.$": "States.Array($$.Task.Token)",<br />          "workingDirectory": [<br />            "/home/ssm-user/"<br />          ],<br />          "Commands": [<br />            "echo \"This is a test running automation waitForTaskToken\" >> automation.log",<br />            "sleep 100"<br />          ],<br />          "executionTimeout": [<br />              "10800"<br />          ],<br />          "deliveryTimeout": [<br />              "30"<br />          ],<br />          "shell": [<br />              "Shell"<br />          ]<br />            }<br />      },<br />      "End": true<br />    }<br />  }<br />}</pre>Dieser Code ruft das Runbook auf, um zwei Befehle auszuführen, die den `waitForTaskToken` Aufruf von Systems Manager Automation demonstrieren.Der `shell` Parameterwert (`Shell`oder`PowerShell`) bestimmt, ob das Automatisierungsdokument ausgeführt wird `AWS-RunShellScript` oder`AWS-RunPowerShellScript`.Die Aufgabe schreibt „Dies ist ein waitForTask Automatisierungstoken für die Testausführung“ in die `/home/ssm-user/automation.log` Datei und ruht dann 100 Sekunden lang, bevor sie mit dem Aufgabentoken antwortet und die nächste Aufgabe im Workflow freigibt.Wenn Sie stattdessen das `SfnRunCommandByTargets` Runbook aufrufen möchten, ersetzen Sie den `Parameters` Abschnitt des vorherigen Codes durch den folgenden:<pre>"Parameters": {<br />          "Targets": [<br />            {<br />              "Key": "InstanceIds",<br />              "Values": [<br />                "i-02573cafcfEXAMPLE",<br />                "i-0471e04240EXAMPLE"<br />              ]<br />            }<br />          ],</pre> | AWS DevOps | 
| Aktualisieren Sie die IAM-Rolle für den State Machine. | Im vorherigen Schritt wird automatisch eine dedizierte IAM-Rolle für den State Machine erstellt. Es gewährt jedoch keine Berechtigungen zum Aufrufen des Runbooks. Aktualisieren Sie die Rolle, indem Sie die folgenden Berechtigungen hinzufügen:<pre>{<br />      "Effect": "Allow",<br />      "Action": "ssm:StartAutomationExecution",<br />      "Resource": "*"<br /> }</pre> | AWS DevOps | 
| Validieren Sie die synchronen Aufrufe. | Führen Sie die Zustandsmaschine aus, um den synchronen Aufruf zwischen Step Functions und Systems Manager Automation zu validieren. Eine Beispielausgabe finden Sie im Abschnitt [Zusätzliche Informationen](#run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-additional).  | AWS DevOps | 

## Zugehörige Ressourcen
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-resources"></a>
+ [Erste Schritte mit AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html) (*AWS Step Functions Entwicklerhandbuch*)
+ [Warten Sie auf einen Rückruf mit dem Task-Token](https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-wait-token) (*AWS Step Functions Developer Guide*, Service Integration Patterns)
+ [API-Aufrufe send\$1task\$1success und [send\$1task\$1failure](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/stepfunctions/client/send_task_failure.html)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/stepfunctions/client/send_task_success.html) (Boto3-Dokumentation) 
+ [AWS Systems Manager Automatisierung AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html) *(Benutzerhandbuch*)

## Zusätzliche Informationen
<a name="run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions-additional"></a>

**Implementierungsinformationen**

Dieses Muster stellt eine CloudFormation Vorlage bereit, die zwei Systems Manager Manager-Runbooks bereitstellt:
+ `SfnRunCommandByInstanceIds`führt den `AWS-RunPowerShellScript` Befehl `AWS-RunShellScript` or mithilfe einer Instanz aus. IDs
+ `SfnRunCommandByTargets`führt den `AWS-RunPowerShellScript` Befehl `AWS-RunShellScript` or mithilfe von Zielen aus.

Jedes Runbook implementiert vier Schritte, um einen synchronen Aufruf zu erreichen, wenn die `.waitForTaskToken` Option in Step Functions verwendet wird.


| 
| 
| Schritt | Action | Description | 
| --- |--- |--- |
| **1** | `Branch` | Prüft den `shell` Parameterwert (`Shell`oder`PowerShell`), um zu entscheiden, ob die Ausführung `AWS-RunShellScript` für Linux oder `AWS-RunPowerShellScript` für Windows erfolgen soll. | 
| **2** | `RunCommand_Shell` oder `RunCommand_PowerShell` | Nimmt mehrere Eingaben entgegen und führt den `RunPowerShellScript` Befehl `RunShellScript` oder aus. Weitere Informationen finden Sie auf der Registerkarte **Details** für das Dokument `RunCommand_Shell` oder `RunCommand_PowerShell` Automation in der Systems Manager Manager-Konsole. | 
| **3** | `SendTaskFailure` | Wird ausgeführt, wenn Schritt 2 abgebrochen oder abgebrochen wird. Es ruft die Step Functions [send\$1task\$1failure](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/stepfunctions/client/send_task_failure.html) API auf, die drei Parameter als Eingabe akzeptiert: das von der Zustandsmaschine übergebene Token, den Fehlerfehler und eine Beschreibung der Fehlerursache. | 
| **4** | `SendTaskSuccess` | Wird ausgeführt, wenn Schritt 2 erfolgreich ist. Es ruft die Step Functions [send\$1task\$1success](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/stepfunctions/client/send_task_success.html) API auf, die das von der Zustandsmaschine übergebene Token als Eingabe akzeptiert. | 

**Runbook-Parameter**

`SfnRunCommandByInstanceIds`Runbook:


| 
| 
| Parametername | Typ | Optional oder erforderlich | Description | 
| --- |--- |--- |--- |
| `shell` | Zeichenfolge | Erforderlich | Die Instanz-Shell, um zu entscheiden, ob sie `AWS-RunShellScript` für Linux oder `AWS-RunPowerShellScript` für Windows ausgeführt werden sollen. | 
| `deliveryTimeout` | Ganzzahl | Optional | Die Wartezeit in Sekunden, bis ein Befehl an den SSM-Agenten auf einer Instance übermittelt wird. Dieser Parameter hat einen Mindestwert von 30 (0,5 Minuten) und einen Höchstwert von 2592000 (720 Stunden). | 
| `executionTimeout` | Zeichenfolge | Optional | Die Zeit in Sekunden, die ein Befehl bis zum Abschluss benötigt, bevor er als fehlgeschlagen betrachtet wird. Der Standardwert ist 3600 (1 Stunde). Der Höchstwert ist 172800 (48 Stunden). | 
| `workingDirectory` | Zeichenfolge | Optional | Der Pfad zum Arbeitsverzeichnis auf der Instance. | 
| `Commands` | StringList | Erforderlich | Das auszuführende Shell-Skript oder der auszuführende Befehl. | 
| `InstanceIds` | StringList | Erforderlich | Die IDs Instanzen, in denen Sie den Befehl ausführen möchten. | 
| `taskToken` | Zeichenfolge | Erforderlich | Das Task-Token, das für Rückrufantworten verwendet werden soll. | 

`SfnRunCommandByTargets`Runbook:


| 
| 
| Name | Typ | Optional oder erforderlich | Description | 
| --- |--- |--- |--- |
| `shell` | Zeichenfolge | Erforderlich | Die Instanz-Shell, um zu entscheiden, ob sie `AWS-RunShellScript` für Linux oder `AWS-RunPowerShellScript` für Windows ausgeführt werden sollen. | 
| `deliveryTimeout` | Ganzzahl | Optional | Die Wartezeit in Sekunden, bis ein Befehl an den SSM-Agenten auf einer Instance übermittelt wird. Dieser Parameter hat einen Mindestwert von 30 (0,5 Minuten) und einen Höchstwert von 2592000 (720 Stunden). | 
| `executionTimeout` | Ganzzahl | Optional | Die Zeit in Sekunden, die ein Befehl bis zum Abschluss benötigt, bevor er als fehlgeschlagen betrachtet wird. Der Standardwert ist 3600 (1 Stunde). Der Höchstwert ist 172800 (48 Stunden). | 
| `workingDirectory` | Zeichenfolge | Optional | Der Pfad zum Arbeitsverzeichnis auf der Instance. | 
| `Commands` | StringList | Erforderlich | Das auszuführende Shell-Skript oder der auszuführende Befehl. | 
| `Targets` | MapList | Erforderlich | Eine Reihe von Suchkriterien, die Instanzen anhand von Schlüssel-Wert-Paaren identifizieren, die Sie angeben. Beispiel: `[{"Key":"InstanceIds","Values":["i-02573cafcfEXAMPLE","i-0471e04240EXAMPLE"]}]` | 
| `taskToken` | Zeichenfolge | Erforderlich | Das Task-Token, das für Rückrufantworten verwendet werden soll. | 

**Beispielausgabe**

Die folgende Tabelle enthält ein Beispiel für die Ausgabe der Step-Funktion. Sie zeigt, dass die Gesamtlaufzeit zwischen Schritt 5 (`TaskSubmitted`) und Schritt 6 (`TaskSucceeded`) über 100 Sekunden beträgt. Dies zeigt, dass die Step-Funktion auf die Beendigung des `sleep 100` Befehls gewartet hat, bevor sie zur nächsten Aufgabe im Workflow überging.


| 
| 
| ID (ID) | Typ | Schritt | Ressource | Verstrichene Zeit (ms) | Zeitstempel | 
| --- |--- |--- |--- |--- |--- |
| **1** | `ExecutionStarted` |  | - | 0 | 11. März 2022 14:50:34.303 Uhr | 
| **2** | `TaskStateEntered` | `StartAutomationWaitForCallBack` | - | 40 | 11. März 2022 14:50:34,343 Uhr | 
| **3** | `TaskScheduled` | `StartAutomationWaitForCallBack` | - | 40 | 11. März 2022 14:50:34,343 Uhr | 
| **4** | `TaskStarted` | `StartAutomationWaitForCallBack` | - | 154 | 11. März 2022 14:50:34.457 Uhr | 
| **5** | `TaskSubmitted` | `StartAutomationWaitForCallBack` | - | 657 | 11. März 2022 14:50:34.960 Uhr | 
| **6** | `TaskSucceeded` | `StartAutomationWaitForCallBack` | - | 10:3835 | 11. März 2022 14:52:18.138 Uhr | 
| **7** | `TaskStateExited` | `StartAutomationWaitForCallBack` | - | 1038 60 | 11. März 2022 14:52:18.163 Uhr | 
| **8** | `ExecutionSucceeded` |  | - | 103 897 | 11. März 2022 14:52:18.200 Uhr | 

# parallel Lesevorgänge von S3-Objekten mithilfe von Python in einer AWS Lambda Funktion ausführen
<a name="run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function"></a>

*Eduardo Bortoluzzi, Amazon Web Services*

## Zusammenfassung
<a name="run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-summary"></a>

Sie können dieses Muster verwenden, um eine Liste von Dokumenten aus Amazon Simple Storage Service (Amazon S3) -Buckets in Echtzeit abzurufen und zusammenzufassen. Das Muster bietet Beispielcode zum parallel Lesen von Objekten aus S3-Buckets auf Amazon Web Services (AWS). Das Muster zeigt, wie I/O gebundene Aufgaben mit AWS Lambda Funktionen unter Verwendung von Python effizient ausgeführt werden können.

Ein Finanzunternehmen verwendete dieses Muster in einer interaktiven Lösung, um korrelierte Finanztransaktionen manuell in Echtzeit zu genehmigen oder abzulehnen. Die Dokumente zu Finanztransaktionen wurden in einem marktbezogenen S3-Bucket gespeichert. Ein Mitarbeiter wählte eine Liste von Dokumenten aus dem S3-Bucket aus, analysierte den Gesamtwert der Transaktionen, die die Lösung berechnete, und entschied, den ausgewählten Stapel zu genehmigen oder abzulehnen.

I/O-gebundene Aufgaben unterstützen mehrere Threads. In diesem Beispielcode die Datei [concurrent.futures. ThreadPoolExecutor](https://docs.python.org/3.13/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor)wird mit maximal 30 Threads gleichzeitig verwendet, obwohl Lambda-Funktionen bis zu 1.024 Threads unterstützen (wobei einer dieser Threads Ihr Hauptprozess ist). Dieses Limit ist darauf zurückzuführen, dass zu viele Threads aufgrund von Kontextwechsel und Nutzung von Rechenressourcen zu Latenzproblemen führen. Sie müssen auch die maximale Anzahl an Poolverbindungen erhöhen, `botocore` damit alle Threads den S3-Objektdownload gleichzeitig durchführen können.

Der Beispielcode verwendet ein 8,3-KB-Objekt mit JSON-Daten in einem S3-Bucket. Das Objekt wird mehrfach gelesen. Nachdem die Lambda-Funktion das Objekt gelesen hat, werden die JSON-Daten in ein Python-Objekt dekodiert. Im Dezember 2024 wurden nach der Ausführung dieses Beispiels 1.000 Lesevorgänge in 2,3 Sekunden und 10.000 Lesevorgänge in 27 Sekunden mithilfe einer Lambda-Funktion, die mit 2.304 MB Speicher konfiguriert war, verarbeitet. AWS Lambda unterstützt Speicherkonfigurationen von 128 MB bis 10.240 MB (10 GB), obwohl eine Erhöhung des Lambda-Speichers über 2.304 MB nicht dazu beigetragen hat, die Zeit für die Ausführung dieser speziellen I/O-bezogenen Aufgabe zu verkürzen.

Das [AWS Lambda Power Tuning-Tool](https://github.com/alexcasalboni/aws-lambda-power-tuning) wurde verwendet, um verschiedene Lambda-Speicherkonfigurationen zu testen und das beste performance-to-cost Verhältnis für die Aufgabe zu überprüfen. Die Testergebnisse finden Sie im Abschnitt [Zusätzliche Informationen](#run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-additional).

## Voraussetzungen und Einschränkungen
<a name="run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Kenntnisse in der Python-Entwicklung

**Einschränkungen**
+ Eine Lambda-Funktion kann maximal [1.024 Ausführungsprozesse oder](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html#function-configuration-deployment-and-execution) Threads haben.
+ Neue AWS-Konten haben ein Lambda-Speicherlimit von 3.008 MB. Passen Sie das AWS Lambda Power Tuning Tool entsprechend an. Weitere Informationen finden Sie im Abschnitt [Problembehandlung](#run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-troubleshooting).
+ Amazon S3 hat ein Limit von [5.500 GET/HEAD Anfragen pro Sekunde pro partitioniertem](https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html) Präfix.

**Produktversionen**
+ Python 3.9 oder höher
+ AWS Cloud Development Kit (AWS CDK) v2
+ AWS Command Line Interface (AWS CLI) Ausführung 2
+ AWS Lambda Power Tuning 4.3.6 (optional)

## Architektur
<a name="run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-architecture"></a>

**Zieltechnologie-Stack**
+ AWS Lambda
+ Amazon S3
+ AWS Step Functions (wenn AWS Lambda Power Tuning eingesetzt wird)

**Zielarchitektur**

Das folgende Diagramm zeigt eine Lambda-Funktion, die Objekte parallel aus einem S3-Bucket liest. Das Diagramm enthält auch einen Step Functions Functions-Workflow für das AWS Lambda Power Tuning-Tool zur Feinabstimmung des Lambda-Funktionsspeichers. Diese Feinabstimmung trägt dazu bei, ein ausgewogenes Verhältnis zwischen Kosten und Leistung zu erreichen.

![\[Diagramm mit Lambda-Funktion, S3-Bucket und AWS Step Functions.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/b46e9b16-9842-4291-adfa-3ef012b89aec/images/828696e2-6df7-4536-9205-951c99449f4e.png)


**Automatisierung und Skalierung**

Die Lambda-Funktionen skalieren bei Bedarf schnell. Um 503 Slow-Down-Fehler von Amazon S3 bei hoher Nachfrage zu vermeiden, empfehlen wir, der Skalierung einige Grenzen zu setzen.

## Tools
<a name="run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK) v2](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html) ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen. Die Beispielinfrastruktur wurde für die Bereitstellung mit erstellt AWS CDK.
+ [AWS Command Line InterfaceAWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können. In diesem Muster wird AWS CLI Version 2 verwendet, um eine JSON-Beispieldatei hochzuladen.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [Amazon Simple Storage Service Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, mit dem Sie beliebige Datenmengen speichern, schützen und abrufen können.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Funktionen und andere AWS-Services kombinieren können, um geschäftskritische Anwendungen zu erstellen.

**Andere Tools**
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache. Die [Wiederverwendung inaktiver Worker-Threads](https://docs.python.org/3.8/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor) wurde in Python-Version 3.8 eingeführt, und der Lambda-Funktionscode in diesem Muster wurde für Python-Version 3.9 und höher erstellt.

**Code-Repository**

Der Code für dieses Muster ist im [aws-lambda-parallel-download](https://github.com/aws-samples/aws-lambda-parallel-download) GitHub Repository verfügbar.

## Best Practices
<a name="run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-best-practices"></a>
+ Dieses AWS CDK Konstrukt stützt sich auf Ihre AWS-Konto Benutzerberechtigungen zur Bereitstellung der Infrastruktur. [Wenn Sie AWS CDK Pipelines oder kontoübergreifende Bereitstellungen verwenden möchten, finden Sie weitere Informationen unter Stack-Synthesizer.](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html#bootstrapping-synthesizers)
+ Für diese Beispielanwendung sind die Zugriffsprotokolle im S3-Bucket nicht aktiviert. Es hat sich bewährt, Zugriffsprotokolle im Produktionscode zu aktivieren.

## Epen
<a name="run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-epics"></a>

### Bereiten Sie die Entwicklungsumgebung vor
<a name="prepare-the-development-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die installierte Python-Version. | Dieser Code wurde speziell auf Python 3.9 und Python 3.13 getestet und sollte auf allen Versionen zwischen diesen Versionen funktionieren. Um Ihre Python-Version zu überprüfen, führen Sie es `python3 -V` in Ihrem Terminal aus und installieren Sie bei Bedarf eine neuere Version.Führen Sie den Befehl aus, um zu überprüfen, ob die erforderlichen Module installiert sind`python3 -c "import pip, venv"`. Keine Fehlermeldung bedeutet, dass die Module ordnungsgemäß installiert sind und Sie bereit sind, dieses Beispiel auszuführen.  | Cloud-Architekt | 
| Installieren AWS CDK. | Um das zu installieren, AWS CDK falls es noch nicht installiert ist, folgen Sie den Anweisungen unter [Erste Schritte mit dem AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html). Um zu überprüfen, ob es sich bei der installierten AWS CDK Version um Version 2.0 oder höher handelt, führen Sie den Befehl aus`cdk –version`. | Cloud-Architekt | 
| Bootstrap für Ihre Umgebung. | Um Ihre Umgebung zu booten, folgen Sie, falls dies noch nicht geschehen ist, den Anweisungen unter [Bootstrapping Ihrer Umgebung zur Verwendung](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping-env.html) mit dem. AWS CDK | Cloud-Architekt | 

### Klonen Sie das Beispiel-Repository
<a name="clone-the-example-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Führen Sie den folgenden Befehl aus, um die neueste Version des Repositorys zu klonen:<pre>git clone --depth 1 --branch v1.2.0 \<br />git@github.com:aws-samples/aws-lambda-parallel-download.git</pre> | Cloud-Architekt | 
| Ändern Sie das Arbeitsverzeichnis in das geklonte Repository. | Führen Sie den folgenden Befehl aus:<pre>cd aws-lambda-parallel-download</pre> | Cloud-Architekt | 
| Erstellen Sie die virtuelle Python-Umgebung. | Führen Sie den folgenden Befehl aus, um eine virtuelle Python-Umgebung zu erstellen:<pre>python3 -m venv .venv</pre> | Cloud-Architekt | 
| Aktivieren Sie die virtuelle Umgebung. | Führen Sie den folgenden Befehl aus, um die virtuelle Umgebung zu aktivieren:<pre>source .venv/bin/activate</pre> | Cloud-Architekt | 
| Installieren Sie die Abhängigkeiten. | Führen Sie den `pip` folgenden Befehl aus, um die Python-Abhängigkeiten zu installieren:<pre>pip install -r requirements.txt</pre> | Cloud-Architekt | 
| Durchsuchen Sie den Code. | (Optional) Der Beispielcode, der ein Objekt aus dem S3-Bucket herunterlädt, befindet sich unter`resources/parallel.py`.Der Infrastrukturcode befindet sich im `parallel_download` Ordner. | Cloud-Architekt | 

### Stellen Sie die App bereit und testen Sie sie
<a name="deploy-and-test-the-app"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die Anwendung bereit. | Führen Sie `cdk deploy`.Schreiben Sie die AWS CDK Ergebnisse auf:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function.html) | Cloud-Architekt | 
| Laden Sie eine JSON-Beispieldatei hoch. | Das Repository enthält eine JSON-Beispieldatei mit einer Größe von etwa 9 KB. Führen Sie den folgenden Befehl aus, um die Datei in den S3-Bucket des erstellten Stacks hochzuladen:<pre>aws s3 cp sample.json s3://<ParallelDownloadStack.SampleS3BucketName></pre>`<ParallelDownloadStack.SampleS3BucketName>`Ersetzen Sie durch den entsprechenden Wert aus der AWS CDK Ausgabe. | Cloud-Architekt | 
| Führen Sie die App aus. | Gehen Sie wie folgt vor, um die App auszuführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function.html) | Cloud-Architekt | 
| Fügen Sie die Anzahl der Downloads hinzu. | (Optional) Um 1.500 Get-Object-Aufrufe auszuführen, verwenden Sie den folgenden JSON-Code im **Event-JSON** des `Test` Parameters:<pre>{"repeat": 1500, "objectKey": "sample.json"}</pre> | Cloud-Architekt | 

### Optional: Führen Sie AWS Lambda Power Tuning aus
<a name="optional-run-lamlong-power-tuning"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie das AWS Lambda Power Tuning-Tool aus. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function.html)Am Ende des Laufs wird das Ergebnis auf der Registerkarte **Eingabe und Ausgabe der Ausführung** angezeigt. | Cloud-Architekt | 
| Sehen Sie sich die AWS Lambda Power Tuning-Ergebnisse in einem Diagramm an. | Kopieren Sie auf der Registerkarte **Eingabe und Ausgabe der Ausführung** den `visualization` Eigenschaftenlink und fügen Sie ihn in eine neue Browser-Registerkarte ein. | Cloud-Architekt | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Entfernen Sie die Objekte aus dem S3-Bucket. | Bevor Sie die bereitgestellten Ressourcen zerstören, entfernen Sie alle Objekte aus dem S3-Bucket:<pre>aws s3 rm s3://<ParallelDownloadStack.SampleS3BucketName> \<br />--recursive</pre>Denken Sie daran, `<ParallelDownloadStack.SampleS3BucketName>` durch den Wert aus den AWS CDK Ausgaben zu ersetzen. | Cloud-Architekt | 
| Zerstöre die Ressourcen. | Führen Sie den folgenden Befehl aus, um alle Ressourcen zu löschen, die für dieses Pilotprojekt erstellt wurden:<pre>cdk destroy</pre> | Cloud-Architekt | 

## Fehlerbehebung
<a name="run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| `'MemorySize' value failed to satisfy constraint: Member must have value less than or equal to 3008` | Für neue Konten können Sie möglicherweise nicht mehr als 3.008 MB in Ihren Lambda-Funktionen konfigurieren. Um mit AWS Lambda Power Tuning zu testen, fügen Sie der Eingabe-JSON die folgende Eigenschaft hinzu, wenn Sie die Ausführung von Step Functions starten:<pre>"powerValues": [<br />    512,<br />    1024,<br />    1536,<br />    2048,<br />    2560,<br />    3008<br />  ]</pre> | 

## Zugehörige Ressourcen
<a name="run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-resources"></a>
+ [Python — konkurrierende.Futures. ThreadPoolExecutor](https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor)
+ [Lambda-Kontingente — Konfiguration, Bereitstellung und Ausführung von Funktionen](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html#function-configuration-deployment-and-execution)
+ [Arbeiten mit dem AWS CDK in Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [Profilierungsfunktionen mit AWS Lambda Power Tuning](https://docs.aws.amazon.com/lambda/latest/operatorguide/profile-functions.html)

## Zusätzliche Informationen
<a name="run-parallel-reads-of-s3-objects-by-using-python-in-an-aws-lambda-function-additional"></a>

**Code**

Der folgende Codeausschnitt führt die I/O Parallelverarbeitung durch:

```
with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
  for result in executor.map(a_function, (the_arguments)):
    ...
```

Der `ThreadPoolExecutor` verwendet die Threads wieder, sobald sie verfügbar sind.

**Tests und Ergebnisse**

Diese Tests wurden im Dezember 2024 durchgeführt.

Beim ersten Test wurden 2.500 Objektlesevorgänge verarbeitet, mit dem folgenden Ergebnis.

![\[Mit steigendem Arbeitsspeicher sinken die Aufrufzeit und die Aufrufkosten steigen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/b46e9b16-9842-4291-adfa-3ef012b89aec/images/f6743412-1e52-4c4c-a51c-ac0f75b3b998.png)


Ab 3.009 MB blieb die Verarbeitungszeit bei jeder Speichererweiterung fast gleich, aber die Kosten stiegen mit zunehmender Speichergröße.

In einem weiteren Test wurde der Bereich zwischen 1.536 MB und 3.072 MB Arbeitsspeicher untersucht, wobei Werte verwendet wurden, die ein Vielfaches von 256 MB waren, und es wurden 10.000 Objektlesevorgänge verarbeitet. Dabei wurden die folgenden Ergebnisse erzielt.

![\[Der Unterschied zwischen sinkender Aufrufzeit und steigenden Aufrufkosten wurde verringert.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/b46e9b16-9842-4291-adfa-3ef012b89aec/images/c75d4443-74d8-4b93-9b4d-b2640869381e.png)


Das beste performance-to-cost Verhältnis wurde mit der Lambda-Konfiguration mit 2.304 MB Speicher erzielt.

Zum Vergleich: Ein sequentieller Prozess mit 2.500 Objektlesevorgängen dauerte 47 Sekunden. Der parallel Vorgang mit der Lambda-Konfiguration mit 2.304 MB dauerte 7 Sekunden, was 85 Prozent weniger ist.

![\[Diagramm, das die Verkürzung der Zeit beim Wechsel von sequentieller zur parallel Verarbeitung zeigt.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/b46e9b16-9842-4291-adfa-3ef012b89aec/images/f3dcc44d-ac20-4b75-897d-1d71f0d59781.png)


# Senden Sie Telemetriedaten von AWS Lambda zu OpenSearch für Analysen und Visualisierungen in Echtzeit
<a name="send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization"></a>

*Tabby Ward, Guy Bachar und David Kilzer, Amazon Web Services*

## Zusammenfassung
<a name="send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-summary"></a>

Moderne Anwendungen werden zunehmend verteilt und ereignisgesteuert, was die Notwendigkeit von Überwachung und Beobachtbarkeit in Echtzeit verstärkt. AWS Lambda ist ein serverloser Computerdienst, der eine entscheidende Rolle beim Aufbau skalierbarer und ereignisgesteuerter Architekturen spielt. Die Überwachung und Fehlerbehebung von Lambda-Funktionen kann jedoch schwierig sein, wenn Sie sich ausschließlich auf Amazon CloudWatch Logs verlassen, was zu Latenz und begrenzten Aufbewahrungsfristen führen kann.

Um dieser Herausforderung zu begegnen, AWS wurde die Lambda Telemetry API eingeführt, die es Lambda-Funktionen ermöglicht, Telemetriedaten direkt an Überwachungs- und Beobachtungstools von Drittanbietern zu senden. Diese API unterstützt das Echtzeit-Streaming von Protokollen, Metriken und Traces und bietet einen umfassenden und zeitnahen Überblick über die Leistung und den Zustand Ihrer Lambda-Funktionen.

Dieses Muster erklärt, wie die Lambda-Telemetrie-API [OpenSearch](https://opensearch.org/docs/latest/), eine verteilte Open-Source-Such- und Analyse-Engine, integriert werden kann. OpenSearch bietet eine leistungsstarke und skalierbare Plattform für die Aufnahme, Speicherung und Analyse großer Datenmengen und ist damit die ideale Wahl für Lambda-Telemetriedaten. Insbesondere zeigt dieses Muster, wie Logs von einer in Python geschriebenen Lambda-Funktion direkt an einen OpenSearch Cluster gesendet werden, indem eine Lambda-Erweiterung verwendet wird, die von bereitgestellt wird. AWS Diese Lösung ist flexibel und anpassbar, sodass Sie Ihre eigene Lambda-Erweiterung erstellen oder den Beispielquellcode ändern können, um das Ausgabeformat nach Wunsch zu ändern.

Das Muster erklärt, wie die Lambda-Telemetrie-API-Integration eingerichtet und konfiguriert wird OpenSearch, und enthält bewährte Methoden für Sicherheit, Kostenoptimierung und Skalierbarkeit. Ziel ist es, Ihnen zu helfen, tiefere Einblicke in Ihre Lambda-Funktionen zu gewinnen und die allgemeine Beobachtbarkeit Ihrer serverlosen Anwendungen zu verbessern.


| 
| 
| Hinweis: Dieses Muster konzentriert sich auf die Integration der Lambda-Telemetrie-API mit Managed. OpenSearch Die besprochenen Prinzipien und Techniken gelten jedoch auch für Self-Managed OpenSearch und Elasticsearch. | 
| --- |

## Voraussetzungen und Einschränkungen
<a name="send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-prereqs"></a>

Bevor Sie mit dem Integrationsprozess beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:

**AWS-Konto**: Eine aktive AWS-Konto Person mit den entsprechenden Berechtigungen zum Erstellen und Verwalten der folgenden AWS Ressourcen:
+ AWS Lambda
+ AWS Identity and Access Management (ICH BIN)
+ Amazon OpenSearch Service (wenn Sie einen verwalteten OpenSearch Cluster verwenden)

**OpenSearch Cluster**:
+ Sie können einen vorhandenen selbstverwalteten OpenSearch Cluster oder einen verwalteten Dienst wie OpenSearch Service verwenden.
+ Wenn Sie OpenSearch Service verwenden, richten Sie Ihren OpenSearch Cluster ein, indem Sie den Anweisungen unter [Erste Schritte mit Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/gsg.html) in der OpenSearch Service-Dokumentation folgen.
+ Stellen Sie sicher, dass der OpenSearch Cluster über Ihre Lambda-Funktion zugänglich ist und dass er mit den erforderlichen Sicherheitseinstellungen wie Zugriffsrichtlinien, Verschlüsselung und Authentifizierung konfiguriert ist.
+ Konfigurieren Sie den OpenSearch Cluster mit den erforderlichen Indexzuordnungen und Einstellungen, um die Lambda-Telemetriedaten aufzunehmen. Weitere Informationen finden Sie in der Servicedokumentation unter [Laden von Streaming-Daten in Amazon OpenSearch OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/integrations.html).

**Netzwerkkonnektivität**:
+ Stellen Sie sicher, dass Ihre Lambda-Funktion über die erforderliche Netzwerkkonnektivität für den Zugriff auf den OpenSearch Cluster verfügt. Anleitungen zur Konfiguration der Virtual Private Cloud (VPC) -Einstellungen finden Sie in der Servicedokumentation unter [Starten Ihrer Amazon OpenSearch Service-Domains innerhalb einer VPC](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html). OpenSearch 

**IAM-Rollen** und -Richtlinien:
+ Erstellen Sie eine IAM-Rolle mit den erforderlichen Berechtigungen für Ihre Lambda-Funktion, um auf den OpenSearch Cluster und auf Ihre darin gespeicherten Anmeldeinformationen zuzugreifen. AWS Secrets Manager
+ Fügen Sie der Rolle die entsprechenden IAM-Richtlinien hinzu, z. B. die `AWSLambdaBasicExecutionRole` Richtlinie und alle zusätzlichen Berechtigungen, die für die Interaktion erforderlich sind. OpenSearch
+ Stellen Sie sicher, dass die Ihrer Lambda-Funktion erteilten IAM-Berechtigungen das Schreiben von Daten in den OpenSearch Cluster ermöglichen. Informationen zur Verwaltung von IAM-Berechtigungen finden Sie unter [Definieren von Lambda-Funktionsberechtigungen mit einer Ausführungsrolle](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) in der Lambda-Dokumentation.

Kenntnisse in **Programmiersprachen**:
+ Sie benötigen Grundkenntnisse in Python (oder der Programmiersprache Ihrer Wahl), um den Beispielcode für die Lambda-Funktion und die Lambda-Erweiterung zu verstehen und zu ändern.

**Entwicklungsumgebung**:
+ Richten Sie eine lokale Entwicklungsumgebung mit den erforderlichen Tools und Abhängigkeiten für die Erstellung und Bereitstellung von Lambda-Funktionen und -Erweiterungen ein. 

**AWS CLI oder AWS-Managementkonsole**:
+ Installieren und konfigurieren Sie das [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) oder verwenden Sie das AWS-Managementkonsole mit den entsprechenden Anmeldeinformationen, um mit den erforderlichen zu interagieren AWS-Services.

**Überwachung und Protokollierung**:
+ Machen Sie sich mit bewährten Methoden zur Überwachung und Protokollierung vertraut AWS, einschließlich Diensten wie Amazon CloudWatch und AWS CloudTrail zu Überwachungs- und Prüfungszwecken.
+ Überprüfen Sie die CloudWatch Logs für Ihre Lambda-Funktion, um Fehler oder Ausnahmen im Zusammenhang mit der Lambda-Telemetrie-API-Integration zu identifizieren. Anleitungen zur Fehlerbehebung finden Sie in der [Lambda Telemetry API-Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/telemetry-api.html).

## Architektur
<a name="send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-architecture"></a>

Dieses Muster verwendet OpenSearch Service, um Protokolle und Telemetriedaten zu speichern, die von Lambda-Funktionen generiert werden. Mit diesem Ansatz können Sie Protokolle schnell direkt in Ihren OpenSearch Cluster streamen, wodurch die Latenz und die Kosten reduziert werden, die mit der Verwendung von CloudWatch Logs als Vermittler verbunden sind.


| 
| 
| Ihr Lambda-Erweiterungscode kann Telemetrie entweder direkt über die OpenSearch API oder über eine [OpenSearch Clientbibliothek](https://opensearch.org/docs/latest/clients/index/) an den OpenSearch Service weiterleiten. Die Lambda-Erweiterung kann die von der OpenSearch API unterstützten Massenoperationen verwenden, um Telemetrieereignisse zu bündeln und sie in einer einzigen Anfrage an den OpenSearch Service zu senden. | 
| --- |

Das folgende Workflow-Diagramm veranschaulicht den Log-Workflow für Lambda-Funktionen, wenn Sie einen OpenSearch Cluster als Endpunkt verwenden.

![\[Workflow zum Senden von Telemetriedaten an einen OpenSearch Cluster.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/57fe8796-9f36-46cf-8304-f506242b9f04/images/283ccdcd-a0e1-40a2-a95a-3bd046bfa8ca.png)


Die Architektur umfasst die folgenden Komponenten:
+ Lambda-Funktion: Die serverlose Funktion, die während der Ausführung Protokolle und Telemetriedaten generiert.
+ Lambda-Erweiterung: Eine Python-basierte Erweiterung, die die Lambda-Telemetrie-API verwendet, um direkt in den Cluster zu integrieren. OpenSearch Diese Erweiterung läuft zusammen mit der Lambda-Funktion in derselben Ausführungsumgebung.
+ Lambda-Telemetrie-API: Die API, die es Lambda-Erweiterungen ermöglicht, Telemetriedaten, einschließlich Logs, Metriken und Traces, direkt an Überwachungs- und Beobachtungstools von Drittanbietern zu senden.
+ Amazon OpenSearch Service-Cluster: Ein verwalteter OpenSearch Cluster, der auf gehostet wird AWS. Dieser Cluster ist für die Aufnahme, Speicherung und Indizierung der Protokolldaten verantwortlich, die von der Lambda-Funktion über die Lambda-Erweiterung gestreamt werden.

Der Workflow besteht aus den folgenden Schritten:

1. Die Lambda-Funktion wird aufgerufen und generiert während ihrer Ausführung Protokolle und Telemetriedaten.

1. Die Lambda-Erweiterung wird zusammen mit der Funktion zur Erfassung der Protokolle und Telemetriedaten mithilfe der Lambda-Telemetrie-API ausgeführt.

1. Die Lambda-Erweiterung stellt eine sichere Verbindung mit dem OpenSearch Service-Cluster her und streamt die Protokolldaten in Echtzeit.

1. Der OpenSearch Service-Cluster erfasst, indexiert und speichert die Protokolldaten, um sie mithilfe von Tools wie Kibana oder anderen kompatiblen Anwendungen für die Suche, Analyse und Visualisierung verfügbar zu machen.

Durch die Umgehung von CloudWatch Logs und das direkte Senden von Protokolldaten an den OpenSearch Cluster bietet diese Lösung mehrere Vorteile:
+ Protokollstreaming und -analyse in Echtzeit ermöglichen eine schnellere Fehlerbehebung und verbesserte Beobachtbarkeit.
+ Geringere Latenz und potenzielle Aufbewahrungsbeschränkungen im Zusammenhang mit CloudWatch Protokollen.
+ Flexibilität, um die Lambda-Erweiterung anzupassen oder Ihre eigene Erweiterung für bestimmte Ausgabeformate oder zusätzliche Verarbeitung zu erstellen.
+ Integration mit den Such-, Analyse- und Visualisierungsfunktionen von OpenSearch Service für die Protokollanalyse und -überwachung.

Der Abschnitt [Epics](#send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-epics) enthält step-by-step Anweisungen zur Einrichtung der Lambda-Erweiterung, zur Konfiguration der Lambda-Funktion und zur Integration in den OpenSearch Service-Cluster. [Sicherheitsüberlegungen, Strategien zur Kostenoptimierung und Tipps zur Überwachung und Fehlerbehebung der Lösung finden Sie im Abschnitt Bewährte Methoden.](#send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-best-practices)

## Tools
<a name="send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-tools"></a>

**AWS-Services**
+ [AWS Lambda](https://aws.amazon.com/lambda/) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde.
+ [Amazon OpenSearch Service](https://aws.amazon.com/opensearch-service/) ist ein vollständig verwalteter Service von AWS , der die Bereitstellung, den Betrieb und die Skalierung von OpenSearch Clustern in der Cloud vereinfacht.
+ [Lambda-Erweiterungen](https://docs.aws.amazon.com/lambda/latest/dg/lambda-extensions.html) erweitern die Funktionalität Ihrer Lambda-Funktionen, indem sie zusätzlich benutzerdefinierten Code ausführen. Sie können Lambda-Erweiterungen verwenden, um Lambda in verschiedene Überwachungs-, Beobachtungs-, Sicherheits- und Governance-Tools zu integrieren.
+ AWS Lambda Mit der [Telemetrie-API](https://docs.aws.amazon.com/lambda/latest/dg/telemetry-api.html) können Sie Erweiterungen verwenden, um erweiterte Überwachungs- und Beobachtbarkeitsdaten direkt von Lambda zu erfassen und an ein Ziel Ihrer Wahl zu senden.
+ [CloudFormation](https://aws.amazon.com/cloudformation/)hilft Ihnen dabei, Ihre AWS Ressourcen zu modellieren und einzurichten, sodass Sie weniger Zeit mit der Verwaltung dieser Ressourcen verbringen und sich mehr auf Ihre Anwendungen konzentrieren können.

**Code-Repositorien**
+ [AWS Lambda Extensions](https://github.com/aws-samples/aws-lambda-extensions) umfasst Demos und Beispielprojekte von AWS und AWS Partnern, die Ihnen den Einstieg in die Erstellung Ihrer eigenen Erweiterungen erleichtern.
+ Example [Lambda Telemetry Integrations for OpenSearch bietet ein Beispiel für](https://github.com/aws-samples/aws-lambda-extensions/tree/main/python-example-telemetry-opensearch-extension) eine Lambda-Erweiterung, die zeigt, wie Logs von einer Lambda-Funktion an einen Cluster gesendet werden. OpenSearch 

**Andere Tools**
+ [OpenSearch](https://opensearch.org/faq/)ist eine verteilte Open-Source-Such- und Analysemaschine, die eine leistungsstarke Plattform für die Erfassung, Speicherung und Analyse großer Datenmengen bietet.
+ Kibana ist ein Open-Source-Tool zur Datenvisualisierung und -erkundung, das Sie mit verwenden können. OpenSearch Beachten Sie, dass die Implementierung von Visualisierung und Analyse den Rahmen dieses Musters sprengen würde. Weitere Informationen finden Sie in der [Kibana-Dokumentation](https://www.elastic.co/guide/en/kibana/current/index.html) und in anderen Ressourcen.

## Best Practices
<a name="send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-best-practices"></a>

Beachten Sie bei der Integration der Lambda-Telemetrie-API die folgenden bewährten Methoden. OpenSearch

**Sicherheit und Zugriffskontrolle**
+ **Sichere Kommunikation**: Verschlüsseln Sie die gesamte Kommunikation zwischen Ihren Lambda-Funktionen und dem OpenSearch Cluster mithilfe von HTTPS. Konfigurieren Sie die erforderlichen SSL/TLS Einstellungen in Ihrer Lambda-Erweiterung und OpenSearch -Konfiguration.
+ **IAM-Berechtigungen:**
  + Erweiterungen werden in derselben Ausführungsumgebung wie die Lambda-Funktion ausgeführt, sodass sie dieselbe Zugriffsebene auf Ressourcen wie Dateisystem-, Netzwerk- und Umgebungsvariablen erben.
  + Gewähren Sie Ihren Lambda-Funktionen die mindestens erforderlichen IAM-Berechtigungen, um auf die Lambda-Telemetrie-API zuzugreifen und Daten in den Cluster zu schreiben. OpenSearch Verwenden Sie das [Prinzip der geringsten Rechte, um den Umfang der Berechtigungen](https://docs.aws.amazon.com/lambda/latest/operatorguide/least-privilege.html) einzuschränken.
+ **OpenSearch Zugriffskontrolle**: Implementieren Sie eine differenzierte Zugriffskontrolle in Ihrem OpenSearch Cluster, um den Zugriff auf sensible Daten zu beschränken. Verwenden Sie die integrierten Sicherheitsfunktionen wie Benutzerauthentifizierung, rollenbasierte Zugriffskontrolle und Berechtigungen auf Indexebene in. OpenSearch
+ **Vertrauenswürdige Erweiterungen**: Installieren Sie immer nur Erweiterungen aus einer vertrauenswürdigen Quelle. Verwenden Sie Infrastructure-as-Code-Tools (IaC) CloudFormation , um beispielsweise das Anhängen derselben Erweiterungskonfiguration, einschließlich IAM-Berechtigungen, an mehrere Lambda-Funktionen zu vereinfachen. IaC-Tools bieten auch ein Auditprotokoll der zuvor verwendeten Erweiterungen und Versionen.
+ **Umgang mit sensiblen Daten**: Vermeiden Sie beim Erstellen von Erweiterungen die Protokollierung sensibler Daten. Bereinigen Sie Payloads und Metadaten, bevor Sie sie protokollieren oder zu Prüfungszwecken speichern.

**Kostenoptimierung**
+ **Überwachung und Alarmierung**: Richten Sie Überwachungs- und Warnmechanismen ein, um die Datenmenge zu verfolgen, an die Ihre OpenSearch Lambda-Funktionen gesendet werden. Auf diese Weise können Sie potenzielle Kostenüberschreitungen erkennen und beheben.
+ **Aufbewahrung von Daten**: Überlegen Sie sich sorgfältig, welche Aufbewahrungsfrist für Ihre Lambda-Telemetriedaten angemessen ist. OpenSearch Längere Aufbewahrungsfristen können die Speicherkosten in die Höhe treiben. Bringen Sie also Ihre Anforderungen an die Beobachtbarkeit mit der Kostenoptimierung in Einklang.
+ **Komprimierung und Indizierung**: Aktivieren Sie die Datenkomprimierung und optimieren Sie Ihre OpenSearch Indexierungsstrategie, um den Speicherbedarf Ihrer Lambda-Telemetriedaten zu reduzieren.
+ **Geringere Abhängigkeit** von CloudWatch: Durch die direkte Integration der Lambda-Telemetrie-API können Sie Ihre Abhängigkeit von CloudWatch Protokollen potenziell reduzieren, was zu Kosteneinsparungen führen kann. OpenSearch Dies liegt daran, dass Sie mit der Lambda-Telemetrie-API Protokolle direkt an senden können OpenSearch, sodass die Daten nicht gespeichert und verarbeitet werden müssen. CloudWatch

**Skalierbarkeit und Zuverlässigkeit**
+ **Asynchrone Verarbeitung**: Verwenden Sie asynchrone Verarbeitungsmuster wie Amazon Simple Queue Service (Amazon SQS) oder Amazon Kinesis, um die Ausführung der Lambda-Funktion von der Datenaufnahme zu entkoppeln. OpenSearch Dies trägt dazu bei, die Reaktionsfähigkeit Ihrer Lambda-Funktionen aufrechtzuerhalten und die allgemeine Zuverlässigkeit des Systems zu verbessern.
+ **OpenSearch Cluster-Skalierung**: Überwachen Sie die Leistung und die Ressourcennutzung Ihres OpenSearch Clusters und skalieren Sie ihn nach Bedarf nach oben oder unten, um das zunehmende Volumen an Lambda-Telemetrie-Daten zu bewältigen.
+ **Failover und Disaster Recovery**: Implementieren Sie eine robuste Notfallwiederherstellungsstrategie für Ihren OpenSearch Cluster, einschließlich regelmäßiger Backups und der Möglichkeit, Daten im Falle eines Ausfalls schnell wiederherzustellen.

**Beobachtbarkeit und Überwachung**
+ **Dashboards und Visualisierungen**: Verwenden Sie Kibana oder andere Dashboard-Tools, um benutzerdefinierte Dashboards und Visualisierungen zu erstellen, die auf der Grundlage der enthaltenen Telemetriedaten Einblicke in die Leistung und den Zustand Ihrer Lambda-Funktionen bieten. OpenSearch
+ **Warnmeldungen und Benachrichtigungen**: Richten Sie Warnmeldungen und Benachrichtigungen ein, um Ihre Lambda-Funktionen proaktiv auf Anomalien, Fehler oder Leistungsprobleme zu überwachen. Integrieren Sie diese Warnungen und Benachrichtigungen in Ihre bestehenden Incident-Management-Prozesse.
+ **Rückverfolgung und Korrelation**: Stellen Sie sicher, dass Ihre Lambda-Telemetriedaten relevante Tracing-Informationen wie Anfrage IDs oder Korrelation enthalten IDs, um die end-to-end Beobachtbarkeit und Fehlerbehebung in Ihren verteilten serverlosen Anwendungen zu ermöglichen.

Wenn Sie diese bewährten Methoden befolgen, können Sie sicherstellen, dass Ihre Integration der Lambda-Telemetrie-API sicher, kostengünstig und skalierbar OpenSearch ist und umfassende Beobachtbarkeit für Ihre serverlosen Anwendungen bietet.

## Epen
<a name="send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-epics"></a>

### Erstellen und implementieren Sie die Lambda-Erweiterungsebene
<a name="build-and-deploy-the-lam-extension-layer"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie den Quellcode herunter. | Laden Sie die Beispielerweiterungen aus dem [AWS Lambda Extensions](https://github.com/aws-samples/aws-lambda-extensions) Repository herunter. | App-Entwickler, Cloud-Architekt | 
| Navigieren Sie zum Verzeichnis `python-example-telemetry-opensearch-extension`. | Das [AWS Lambda Erweiterungs-Repository](https://github.com/aws-samples/aws-lambda-extensions), das Sie heruntergeladen haben, enthält zahlreiche Beispiele für verschiedene Anwendungsfälle und Sprachlaufzeiten. Navigieren Sie zum Ordner [python-example-telemetry-opensearch-extension](https://github.com/aws-samples/aws-lambda-extensions/tree/main/python-example-telemetry-opensearch-extension), um die OpenSearch Python-Erweiterung zu verwenden, an die Protokolle gesendet OpenSearch werden. | App-Entwickler, Cloud-Architekt | 
| Fügen Sie Berechtigungen hinzu, um den Erweiterungsendpunkt auszuführen. | Führen Sie den folgenden Befehl aus, um den Erweiterungsendpunkt ausführbar zu machen:<pre>chmod +x python-example-telemetry-opensearch-extension/extension.py</pre> | App-Entwickler, Cloud-Architekt | 
| Installieren Sie die Abhängigkeiten der Erweiterungen lokal. | Führen Sie den folgenden Befehl aus, um lokale Abhängigkeiten für den Python-Code zu installieren:<pre>pip3 install -r python-example-telemetry-opensearch-extension/requirements.txt -t ./python-example-telemetry-opensearch-extension/</pre>Diese Abhängigkeiten werden zusammen mit dem Erweiterungscode bereitgestellt. | App-Entwickler, Cloud-Architekt | 
| Erstellen Sie ein ZIP-Paket für die Erweiterung, um sie als Ebene bereitzustellen. | Die Erweiterung.zip-Datei sollte ein Stammverzeichnis mit dem Namen`extensions/`, in dem sich die ausführbare Datei der Erweiterung befindet, und ein weiteres Stammverzeichnis mit dem Namen enthalten`python-example-telemetry-opensearch-extension/`, in dem sich die Kernlogik der Erweiterung und ihre Abhängigkeiten befinden.Erstellen Sie das ZIP-Paket für die Erweiterung:<pre>chmod +x extensions/python-example-telemetry-opensearch-extension<br />zip -r extension.zip extensions python-example-telemetry-opensearch-extension</pre> | App-Entwickler, Cloud-Architekt | 
| Stellen Sie die Erweiterung als Lambda-Schicht bereit. | Veröffentlichen Sie den Layer mithilfe Ihrer Erweiterung.zip-Datei und dem folgenden Befehl:<pre>aws lambda publish-layer-version \<br />--layer-name "python-example-telemetry-opensearch-extension" \<br />--zip-file "fileb://extension.zip"</pre> | App-Entwickler, Cloud-Architekt | 

### Integrieren Sie die Erweiterung in Ihre Funktion
<a name="integrate-the-extension-into-your-function"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie die Ebene zu Ihrer Funktion hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization.html)Weitere Informationen zum Hinzufügen einer Ebene zu Ihrer Lambda-Funktion finden Sie in der [Lambda-Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/adding-layers.html). | App-Entwickler, Cloud-Architekt | 
| Legen Sie die Umgebungsvariablen für die Funktion fest. | Wählen Sie auf der Funktionsseite die Registerkarte **Konfiguration** und fügen Sie Ihrer Funktion die folgenden Umgebungsvariablen hinzu:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization.html) | App-Entwickler, Cloud-Architekt | 

### Fügen Sie Protokollierungsanweisungen hinzu und testen Sie Ihre Funktion
<a name="add-logging-statements-and-test-your-function"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie Ihrer Funktion Protokollierungsanweisungen hinzu. | Fügen Sie Ihrer Funktion Protokollierungsanweisungen hinzu, indem Sie einen der [integrierten Protokollierungsmechanismen](https://docs.aws.amazon.com/lambda/latest/dg/python-logging.html) oder das Logging-Modul Ihrer Wahl verwenden. Hier sind Beispiele für das Protokollieren von Nachrichten in Python:<pre>print("Your Log Message Here")<br />logger = logging.getLogger(__name__)<br /><br />logger.info("Test Info Log.")<br />logger.error("Test Error Log.")</pre> | App-Entwickler, Cloud-Architekt | 
| Testen Sie Ihre Funktion. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization.html)Wenn alles ordnungsgemäß funktioniert, sollte die Meldung „**Funktion ausgeführt: erfolgreich**“ angezeigt werden. | App-Entwickler, Cloud-Architekt | 

### Sehen Sie sich Ihre Logs an OpenSearch
<a name="view-your-logs-in-opensearch"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fragen Sie Ihre Indizes ab. | Führen Sie in OpenSearch den folgenden Befehl aus, um Ihre Indizes abzufragen:<pre>SELECT * FROM index-name</pre>Ihre Protokolle sollten in den Abfrageergebnissen angezeigt werden. | Cloud-Architekt | 

## Fehlerbehebung
<a name="send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Probleme mit der Verbindung | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization.html) | 
| Fehler bei der Datenaufnahme | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization.html) | 

## Zugehörige Ressourcen
<a name="send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-resources"></a>
+ [Beispiel für Lambda-Telemetrie-Integrationen für OpenSearch](https://github.com/aws-samples/aws-lambda-extensions/tree/main/python-example-telemetry-opensearch-extension) (Repository) GitHub 
+ [Erweitern Sie Lambda-Funktionen mithilfe von Lambda-Erweiterungen (Lambda-Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/lambda-extensions.html))
+ [Lambda-Telemetrie-API](https://docs.aws.amazon.com/lambda/latest/dg/telemetry-api.html) (Lambda-Dokumentation)
+ [Vorstellung der AWS Lambda Telemetrie-API](https://aws.amazon.com/blogs/compute/introducing-the-aws-lambda-telemetry-api/) (Blogbeitrag)AWS 
+ [Integration der AWS Lambda Telemetrie-API mit Prometheus und OpenSearch (Blogbeitrag](https://aws.amazon.com/blogs/opensource/integrating-the-aws-lambda-telemetry-api-with-prometheus-and-opensearch))AWS 

## Zusätzliche Informationen
<a name="send-telemetry-data-from-lambda-to-opensearch-for-analytics-visualization-additional"></a>

**Änderung der Protokollstruktur**

Die Erweiterung sendet Protokolle standardmäßig als verschachteltes Dokument OpenSearch an. Auf diese Weise können Sie verschachtelte Abfragen ausführen, um einzelne Spaltenwerte abzurufen.

Wenn die Standard-Protokollausgabe nicht Ihren spezifischen Anforderungen entspricht, können Sie sie anpassen, indem Sie den Quellcode der Lambda-Erweiterung ändern, die von bereitgestellt wird AWS. AWS ermutigt Kunden, die Ausgabe an ihre Geschäftsanforderungen anzupassen. Um die Protokollausgabe zu ändern, suchen Sie die `dispatch_to_opensearch` Funktion in der `telemetry_dispatcher.py` Datei im Quellcode der Erweiterung und nehmen Sie die erforderlichen Änderungen vor.

# Richten Sie einen serverlosen Mobilfunkrouter für eine zellenbasierte Architektur ein
<a name="serverless-cell-router-architecture"></a>

*Mian Tariq und Ioannis Lioupras, Amazon Web Services*

## Zusammenfassung
<a name="serverless-cell-router-architecture-summary"></a>

Als Einstiegspunkt in das System einer globalen zellbasierten Anwendung ist der Mobilfunkrouter dafür verantwortlich, Benutzer effizient den entsprechenden Zellen zuzuweisen und den Benutzern die Endpunkte zur Verfügung zu stellen. Der Mobilfunkrouter übernimmt Funktionen wie das Speichern von user-to-cell Zuordnungen, die Überwachung der Zellkapazität und das Anfordern neuer Zellen bei Bedarf. Es ist wichtig, die Funktionalität des Mobilfunkrouters bei möglichen Störungen aufrechtzuerhalten.

Das Design-Framework für Mobilfunkrouter in diesem Muster konzentriert sich auf Stabilität, Skalierbarkeit und allgemeine Leistungsoptimierung. Das Muster verwendet statisches Routing, bei dem Clients Endpunkte bei der ersten Anmeldung zwischenspeichern und direkt mit Zellen kommunizieren. Diese Entkopplung erhöht die Ausfallsicherheit des Systems, indem sie dazu beiträgt, die unterbrechungsfreie Funktionalität der zellbasierten Anwendung bei einem Ausfall des Mobilfunkrouters sicherzustellen.

Dieses Muster verwendet eine AWS CloudFormation Vorlage für die Bereitstellung der Architektur. Einzelheiten dazu, was die Vorlage bereitstellt, oder dazu, wie dieselbe Konfiguration mithilfe von bereitgestellt wird AWS-Managementkonsole, finden Sie im Abschnitt [Zusätzliche Informationen](#serverless-cell-router-architecture-additional).

**Wichtig**  
Die Demonstration, der Code und die CloudFormation Vorlage in diesem Muster dienen nur zur Erläuterung. Das zur Verfügung gestellte Material dient ausschließlich der Veranschaulichung des Entwurfsmusters und der Verständlichkeit. Die Demo und der Code sind nicht produktionsbereit und sollten nicht für Live-Produktionsaktivitäten verwendet werden. Von jedem Versuch, den Code oder die Demo in einer Produktionsumgebung zu verwenden, wird dringend abgeraten und erfolgt auf eigenes Risiko. Wir empfehlen, sich mit geeigneten Fachleuten in Verbindung zu setzen und gründliche Tests durchzuführen, bevor Sie dieses Muster oder eine seiner Komponenten in einer Produktionsumgebung implementieren.

## Voraussetzungen und Einschränkungen
<a name="serverless-cell-router-architecture-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Amazon Web Services (AWS) -Konto
+ Die neueste Version von [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html))
+ [AWS-Anmeldeinformationen](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) mit den erforderlichen Berechtigungen zum Erstellen des CloudFormation Stacks, der AWS Lambda Funktionen und der zugehörigen Ressourcen

**Produktversionen**
+ Python 3.12

## Architektur
<a name="serverless-cell-router-architecture-architecture"></a>

Das folgende Diagramm zeigt ein allgemeines Design des Mobilfunkrouters.

![\[Der fünfstufige Prozess des Mobilfunkrouters.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/fd2fbf9d-9ae4-4c27-bc32-cf117350137a/images/feb90b51-dd91-483b-b5a3-b0a5359686e3.png)


Das Diagramm durchläuft den folgenden Arbeitsablauf:

1. Der Benutzer kontaktiert Amazon API Gateway, das als Schnittstelle für die Mobilfunk-Router-API-Endpunkte dient.

1. Amazon Cognito kümmert sich um die Authentifizierung und Autorisierung.

1. Der AWS Step Functions Workflow besteht aus den folgenden Komponenten:
   + **Orchestrator** ‒ Wird `Orchestrator` verwendet AWS Step Functions , um einen Workflow oder eine Zustandsmaschine zu erstellen. Der Workflow wird durch die Cell-Router-API ausgelöst. Der `Orchestrator` führt Lambda-Funktionen basierend auf dem Ressourcenpfad aus.
   + **Dispatcher** ‒ Die `Dispatcher` Lambda-Funktion identifiziert und weist jedem registrierten neuen Benutzer eine statische Zelle zu. Die Funktion sucht nach der Zelle mit der geringsten Anzahl von Benutzern, weist sie dem Benutzer zu und gibt die Endpunkte zurück.
   + **Mapper** ‒ Der `Mapper` Vorgang verarbeitet die user-to-cell Zuordnungen innerhalb der `RoutingDB` Amazon DynamoDB DynamoDB-Datenbank, die mit der Vorlage erstellt wurde. CloudFormation Wenn die `Mapper` Funktion ausgelöst wird, stellt sie den bereits zugewiesenen Benutzern ihre Endpunkte zur Verfügung.
   + **Scaler** ‒ Die `Scaler` Funktion verfolgt die Zellbelegung und die verfügbare Kapazität. Bei Bedarf kann die `Scaler` Funktion über Amazon Simple Queue Service (Amazon SQS) eine Anfrage an die Bereitstellungs- und Bereitstellungsebene senden, um neue Zellen anzufordern.
   + **Validator** ‒ Die `Validator` Funktion validiert die Zellenendpunkte und erkennt mögliche Probleme.

1. Die `RoutingDB` speichert Zellinformationen und Attribute (API-Endpunkte, Status AWS-Region, Metriken).

1. Wenn die verfügbare Kapazität von Zellen einen Schwellenwert überschreitet, fordert der Mobilfunkrouter Bereitstellungs- und Bereitstellungsdienste über Amazon SQS an, um neue Zellen zu erstellen.

Wenn neue Zellen erstellt werden, `RoutingDB` wird es aus der Bereitstellungs- und Bereitstellungsebene aktualisiert. Dieser Prozess würde jedoch den Rahmen dieses Musters sprengen. Einen Überblick über die Voraussetzungen für den Entwurf zellenbasierter Architekturen und Einzelheiten zum in diesem Muster verwendeten Mobilfunkrouter-Design finden Sie im Abschnitt [Zusätzliche](#serverless-cell-router-architecture-additional) Informationen.

## Tools
<a name="serverless-cell-router-architecture-tools"></a>

**AWS-Services**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.
+ [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 zu verwalten AWS-Regionen.
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)ist ein serverloser Orchestrierungsservice, mit dem Sie Lambda-Funktionen und andere Funktionen kombinieren können, um geschäftskritische Anwendungen AWS-Services zu erstellen.

**Andere Tools**
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [Serverless-Cell-Router-Repository](https://github.com/aws-samples/Serverless-Cell-Router/) verfügbar. 

## Best Practices
<a name="serverless-cell-router-architecture-best-practices"></a>

Bewährte Methoden für den Aufbau zellenbasierter Architekturen finden Sie in der folgenden AWS Well-Architected-Anleitung:
+ [Verringerung des Ausmaßes der Auswirkungen durch zellenbasierte Architektur](https://docs.aws.amazon.com/wellarchitected/latest/reducing-scope-of-impact-with-cell-based-architecture/reducing-scope-of-impact-with-cell-based-architecture.html)
+ [AWS Säule der Zuverlässigkeit von Well-Architected Frameworks: REL1 0-BP04 Verwenden Sie Schottarchitekturen, um das Ausmaß der Auswirkungen zu begrenzen](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_fault_isolation_use_bulkhead.html)

## Epen
<a name="serverless-cell-router-architecture-epics"></a>

### Bereiten Sie die Quelldateien vor
<a name="prepare-source-files"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Beispielcode-Repository. | Verwenden Sie den folgenden Befehl, um das Serverless-Cell-Router GitHub Repository auf Ihren Computer zu klonen:<pre>git clone https://github.com/aws-samples/Serverless-Cell-Router/</pre> | Developer | 
| Richten Sie AWS CLI temporäre Anmeldeinformationen ein. | Konfigurieren Sie die AWS CLI mit Anmeldeinformationen für Ihre AWS-Konto. In dieser exemplarischen Vorgehensweise werden temporäre Anmeldeinformationen verwendet, die über die AWS IAM Identity **Center-Befehlszeile oder die programmatische** Zugriffsoption bereitgestellt werden. Dadurch werden den `AWS_SESSION_TOKEN` AWS Umgebungsvariablen `AWS_ACCESS_KEY_ID``AWS_SECRET_ACCESS_KEY`, und die entsprechenden Anmeldeinformationen für die Verwendung mit dem zugewiesen. AWS CLI | Developer | 
| Erstellen Sie einen S3-Bucket. | Erstellen Sie einen S3-Bucket, der zum Speichern und Zugreifen auf die Serverless-Cell-Router Lambda-Funktionen für die Bereitstellung durch die CloudFormation Vorlage verwendet wird. Verwenden Sie den folgenden Befehl, um den S3-Bucket zu erstellen: <pre>aws s3api create-bucket --bucket <bucket name> --region eu-central-1 --create-bucket-configuration LocationConstraint=eu-central-1</pre> | Developer | 
| Erstellen Sie ZIP-Dateien. | Erstellen Sie eine ZIP-Datei für jede Lambda-Funktion, die sich im Verzeichnis [Functions](https://github.com/aws-samples/Serverless-Cell-Router/tree/main/Functions) befindet. Diese ZIP-Dateien werden zur Bereitstellung der Lambda-Funktionen verwendet. Verwenden Sie auf einem Mac die folgenden Befehle: `zip`<pre>zip -j mapper-scr.zip Functions/Mapper.py<br />zip -j dispatcher-scr.zip Functions/Dispatcher.py<br />zip -j scaler-scr.zip Functions/Scaler.py<br />zip -j cp validator-scr.zip Functions/Validator.py<br />zip -j dynamodbDummyData-scr.zip Functions/DynamodbDummyData.py</pre> | Developer | 
| Kopieren Sie die ZIP-Dateien in den S3-Bucket. | Verwenden Sie die folgenden Befehle, um alle ZIP-Dateien der Lambda-Funktion in den S3-Bucket zu kopieren:<pre>aws s3 cp mapper-scr.zip s3://<bucket name><br />aws s3 cp dispatcher-scr.zip s3://<bucket name><br />aws s3 cp scaler-scr.zip s3://<bucket name><br />aws s3 cp validator-scr.zip s3://<bucket name><br />aws s3 cp dynamodbDummyData-scr.zip s3://<bucket name></pre> | Developer | 

### Erstellen Sie den Stack CloudFormation
<a name="create-the-cfn-stack"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die CloudFormation Vorlage bereit. | Führen Sie den folgenden AWS CLI Befehl aus, um die CloudFormation Vorlage bereitzustellen:<pre>aws cloudformation create-stack --stack-name serverless.cell-router \<br />--template-body file://Serverless-Cell-Router-Stack-v10.yaml \<br />--capabilities CAPABILITY_IAM \<br />--parameters ParameterKey=LambdaFunctionMapperS3KeyParameterSCR,ParameterValue=mapper-scr.zip \<br />ParameterKey=LambdaFunctionDispatcherS3KeyParameterSCR,ParameterValue=dispatcher-scr.zip \<br />ParameterKey=LambdaFunctionScalerS3KeyParameterSCR,ParameterValue=scaler-scr.zip \<br />ParameterKey=LambdaFunctionAddDynamoDBDummyItemsS3KeyParameterSCR,ParameterValue=dynamodbDummyData-scr.zip \<br />ParameterKey=LambdaFunctionsS3BucketParameterSCR,ParameterValue=<S3 bucket storing lambda zip files> \<br />ParameterKey=CognitoDomain,ParameterValue=<Cognito Domain Name> \<br />--region <enter your aws region id, e.g. "eu-central-1"></pre> | Developer | 
| Überprüfen Sie den Fortschritt. | Melden Sie sich bei der an AWS-Managementkonsole, öffnen Sie die CloudFormation Konsole unter [https://console.aws.amazon.com/cloudformation/]()und überprüfen Sie den Fortschritt der Stack-Entwicklung. Wenn der Status lautet`CREATE_COMPLETE`, wurde der Stack erfolgreich bereitgestellt. | Developer | 

### Beurteilen und verifizieren
<a name="assess-and-verify"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Weisen Sie dem Benutzer Zellen zu. | Um das zu initiieren`Orchestrator`, führen Sie den folgenden curl-Befehl aus:<pre>curl -X POST \<br />-H "Authorization: Bearer {User id_token}" \<br />https://xxxxxx.execute-api.eu-central-1.amazonaws.com/Cell_Router_Development/cells</pre>Der `Orchestrator` löst die Ausführung der `Dispatcher` Funktion aus. Das `Dispatcher` wiederum überprüft die Existenz des Benutzers. Wenn der Benutzer gefunden wird, `Dispatcher` gibt der die zugehörige Zellen-ID und den zugehörigen Endpunkt URLs zurück. Wenn der Benutzer nicht gefunden wird, `Dispatcher` weist der dem Benutzer eine Zelle zu und sendet die Zellen-ID an die `Scaler` Funktion zur Bewertung der Restkapazität der zugewiesenen Zelle.Die Antwort der `Scaler` Funktion lautet wie folgt:`"cellID : cell-0002 , endPoint_1 : https://xxxxx.execute-api.eu-north-1.amazonaws.com/ , endPoint_2 : https://xxxxxxx.execute-api.eu-central-1.amazonaws.com/"` | Developer | 
| Ruft Benutzerzellen ab. | Führen Sie `Orchestrator` den folgenden Befehl aus, um die `Mapper` Funktion auszuführen:<pre>curl -X POST \<br />-H "Authorization: Bearer {User id_token}" \<br />https://xxxxxxxxx.execute-api.eu-central-1.amazonaws.com/Cell_Router_Development/mapper</pre>Das `Orchestrator` sucht nach der Zelle, die dem Benutzer zugewiesen ist, und gibt die Zellen-ID und URLs die folgende Antwort zurück:`"cellID : cell-0002 , endPoint_1 : https://xxxxx.execute-api.eu-north-1.amazonaws.com/ , endPoint_2 : https://xxxxxxx.execute-api.eu-central-1.amazonaws.com/"` | Developer | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereinigen Sie die Ressourcen. | Gehen Sie wie folgt vor, um zusätzliche Gebühren auf Ihrem Konto zu vermeiden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/serverless-cell-router-architecture.html) | App-Developer | 

## Zugehörige Ressourcen
<a name="serverless-cell-router-architecture-resources"></a>

**Referenzen**
+ [Statische Stabilität mithilfe von Availability Zones](https://aws.amazon.com/builders-library/static-stability-using-availability-zones/)
+ [Grenzen der AWS-Fehlerisolierung: Statische Stabilität](https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/static-stability.html)

**Video**

[Physalia: Zellenbasierte Architektur für höhere Verfügbarkeit auf Amazon EBS](https://www.youtube.com/watch?v=6IknqRZMFic) 




[https://www.youtube-nocookie.com/embed/RZMFic6 Ich weiß es? Steuerungen = 0](https://www.youtube-nocookie.com/embed/6IknqRZMFic?controls=0)

## Zusätzliche Informationen
<a name="serverless-cell-router-architecture-additional"></a>

**Prämissen für den Entwurf zellbasierter Architektur**

Dieses Muster konzentriert sich zwar auf den Mobilfunkrouter, es ist jedoch wichtig, die gesamte Umgebung zu verstehen. Die Umgebung ist in drei separate Schichten gegliedert:
+ Die Routing-Schicht oder dünne Schicht, die den Mobilfunkrouter enthält
+ Die Zellschicht, bestehend aus verschiedenen Zellen
+ Die Bereitstellungs- und Bereitstellungsebene, die Zellen bereitstellt und die Anwendung bereitstellt

Jede Schicht behält ihre Funktionalität auch bei Beeinträchtigungen anderer Schichten bei. AWS-Konten dienen als Grenze zur Fehlerisolierung.

Das folgende Diagramm zeigt die Schichten auf einer hohen Ebene. Die Zellschicht und die Bereitstellungs- und Bereitstellungsschicht fallen nicht in den Geltungsbereich dieses Musters.

![\[Die Routing-Ebene, die Zellenebene mit mehreren Zellkonten und die Bereitstellungs- und Bereitstellungsschicht.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/fd2fbf9d-9ae4-4c27-bc32-cf117350137a/images/137ac34d-43c3-42b6-95de-a365ff611ce8.png)


Weitere Informationen zur zellenbasierten Architektur finden Sie unter [Reduzierung des Wirkungsbereichs durch zellenbasierte Architektur: Zellenrouting](https://docs.aws.amazon.com/wellarchitected/latest/reducing-scope-of-impact-with-cell-based-architecture/cell-routing.html).

**Entwurfsmuster für Mobilfunkrouter**

Der Mobilfunkrouter ist eine von allen Zellen gemeinsam genutzte Komponente. Um mögliche Auswirkungen zu minimieren, ist es wichtig, dass die Routing-Ebene ein vereinfachtes und horizontal skalierbares Design verwendet, das so dünn wie möglich ist. Die Routing-Schicht dient als Einstiegspunkt des Systems und besteht nur aus den Komponenten, die für die effiziente Zuweisung von Benutzern zu den entsprechenden Zellen erforderlich sind. Komponenten innerhalb dieser Ebene sind nicht an der Verwaltung oder Erstellung von Zellen beteiligt.

Dieses Muster verwendet statisches Routing, was bedeutet, dass der Client die Endpunkte bei der ersten Anmeldung zwischenspeichert und anschließend eine direkte Kommunikation mit der Zelle herstellt. Regelmäßige Interaktionen zwischen dem Client und dem Mobilfunkrouter werden initiiert, um den aktuellen Status zu bestätigen oder Aktualisierungen abzurufen. Diese gezielte Entkopplung ermöglicht bestehenden Benutzern einen unterbrechungsfreien Betrieb bei einem Ausfall des Mobilfunkrouters und sorgt für kontinuierliche Funktionalität und Stabilität innerhalb des Systems.

In diesem Muster unterstützt der Mobilfunkrouter die folgenden Funktionen:
+ Abrufen von Zellendaten aus der Zellendatenbank in der Bereitstellungs- und Bereitstellungsschicht und Speichern oder Aktualisieren der lokalen Datenbank.
+ Zuweisen einer Zelle zu jedem neuen registrierten Benutzer der Anwendung mithilfe des Zellenzuweisungsalgorithmus.
+ Speichern der user-to-cells Zuordnung in der lokalen Datenbank.
+ Überprüfung der Kapazität der Zellen während der Benutzerzuweisung und Auslösen eines Ereignisses für den Automaten in der Bereitstellungs- und Bereitstellungsebene, um Zellen zu erstellen.
+ Verwendung des Algorithmus für Kriterien zur Zellenerstellung, um diese Funktionalität bereitzustellen.
+ Beantwortung der neu registrierten Benutzeranfragen durch Bereitstellung URLs der statischen Zellen. Diese URLs werden auf dem Client mit einer Gültigkeitsdauer (TTL) zwischengespeichert.
+ Beantwortung vorhandener Benutzeranfragen nach einer ungültigen URL durch Angabe einer neuen oder aktualisierten URL.

Sehen Sie sich die folgenden Komponenten und Schritte an, um mehr über den Demonstrations-Cellrouter zu erfahren, der anhand der CloudFormation Vorlage eingerichtet wurde:

1. Richten Sie den Amazon Cognito Cognito-Benutzerpool ein und konfigurieren Sie ihn.

1. Richten Sie die API Gateway für den Mobilfunkrouter ein und konfigurieren Sie sie.

1. Erstellen Sie eine DynamoDB-Tabelle.

1. Erstellen und konfigurieren Sie eine SQS-Warteschlange.

1. Implementieren Sie die`Orchestrator`.

1. Implementieren Sie die Lambda-Funktionen:`Dispatcher`,`Scaler`,`Mapper`,`Validator`.

1. Beurteilt und verifiziert.

Voraussetzung ist, dass die Bereitstellungs- und Bereitstellungsschicht bereits eingerichtet ist. Ihre Implementierungsdetails würden den Rahmen dieses Artefakts sprengen.

Da diese Komponenten anhand einer CloudFormation Vorlage eingerichtet und konfiguriert werden, werden die folgenden Schritte anschaulich und allgemein dargestellt. Es wird davon ausgegangen, dass Sie über die erforderlichen AWS Fähigkeiten verfügen, um die Einrichtung und Konfiguration abzuschließen.

*1. Einrichtung und Konfiguration des Amazon Cognito Cognito-Benutzerpools*

Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon Cognito Cognito-Konsole unter [https://console.aws.amazon.com/cognito/](). Richten Sie einen Amazon Cognito Cognito-Benutzerpool mit dem Namen`CellRouterPool`, mit App-Integration, gehosteter Benutzeroberfläche und den erforderlichen Berechtigungen ein und konfigurieren Sie ihn.

*2. Richten Sie die API Gateway für den Mobilfunkrouter ein und konfigurieren Sie sie*

Öffnen Sie die API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigateway/](). Richten Sie mithilfe eines Amazon Cognito-Autorisierers`CellRouter`, der in den Amazon Cognito-Benutzerpool integriert ist, eine API mit dem Namen, ein und konfigurieren Sie sie. `CellRouterPool` Implementieren Sie die folgenden Elemente:
+ `CellRouter`API-Ressourcen, einschließlich `POST` Methoden
+ Integration mit dem in Schritt 5 implementierten Step Functions-Workflow
+ Autorisierung durch den Amazon Cognito Cognito-Autorisierer
+ Zuordnungen von Integrationsanfragen und Antworten
+ Zuweisung der erforderlichen Berechtigungen

*3. Erstellen Sie eine DynamoDB-Tabelle*

Öffnen Sie die DynamoDB-Konsole unter und erstellen Sie eine Standard-DynamoDB-Tabelle [https://console.aws.amazon.com/dynamodb/](), die `tbl_router` mit der folgenden Konfiguration aufgerufen wird:
+ **Partitionsschlüssel** ‒ `marketId`
+ **Schlüssel sortieren** ‒ `cellId`
+ **Kapazitätsmodus** ‒ Bereitgestellt
+ **Point-in-time Wiederherstellung (PITR) ‒ Aus**

Erstellen Sie auf der Registerkarte **Indizes** einen globalen sekundären Index mit dem Namen. `marketId-currentCapacity-index` Die `Scaler` Lambda-Funktion verwendet den Index, um effizient nach der Zelle mit der niedrigsten Anzahl zugewiesener Benutzer zu suchen.

Erstellen Sie die Tabellenstruktur mit den folgenden Attributen:
+ `marketId`‒ Europa
+ `cellId`‒ cell-0002
+ `currentCapacity`‒ 2
+ `endPoint_1`‒ <your endpoint for the first Region>
+ `endPoint_2`‒ <your endpoint for the second Region>
+ `IsHealthy`‒ Stimmt
+ `maxCapacity`‒ 10
+ `regionCode_1` ‒ `eu-north-1`
+ `regionCode_2` ‒ `eu-central-1`
+ `userIds`‒ <your email address>

*4 Erstellen und konfigurieren Sie eine SQS-Warteschlange*

Öffnen Sie die Amazon SQS SQS-Konsole unter [https://console.aws.amazon.com/sqs/]()und erstellen Sie eine Standard-SQS-Warteschlange namens `CellProvisioning` konfiguriert mit **Amazon SQS SQS-Schlüsselverschlüsselung**.

*5. Implementieren Sie den Orchestrator*

Entwickeln Sie einen Step Functions Functions-Workflow, der als `Orchestrator` Grundlage für den Router dient. Der Workflow kann über die Cell-Router-API aufgerufen werden. Der Workflow führt die angegebenen Lambda-Funktionen basierend auf dem Ressourcenpfad aus. Integrieren Sie die Step-Funktion in die API-Gateway-API für den Mobilfunkrouter `CellRouter` und konfigurieren Sie die erforderlichen Berechtigungen zum Aufrufen der Lambda-Funktionen.

Das folgende Diagramm zeigt den Arbeitsablauf. Der Auswahlstatus ruft eine der Lambda-Funktionen auf. Wenn die Lambda-Funktion erfolgreich ist, endet der Workflow. Wenn die Lambda-Funktion fehlschlägt, wird fail state aufgerufen.

![\[Ein Diagramm des Workflows mit den vier Funktionen, der mit einem Fehlerstatus endet.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/fd2fbf9d-9ae4-4c27-bc32-cf117350137a/images/cfe8d029-6f30-49a1-aaad-cad503bdcbae.png)


*6. Implementieren Sie die Lambda-Funktionen*

Implementieren Sie die `Validator` Funktionen `Dispatcher` `Mapper``Scaler`,, und. Wenn Sie jede Funktion in der Demonstration einrichten und konfigurieren, definieren Sie eine Rolle für die Funktion und weisen Sie die erforderlichen Berechtigungen für die Ausführung der erforderlichen Operationen in der DynamoDB-Tabelle zu. `tbl_router` Integrieren Sie zusätzlich jede Funktion in den Workflow. `Orchestrator`

*Dispatcher-Funktion*

Die `Dispatcher` Funktion ist dafür verantwortlich, jedem neuen registrierten Benutzer eine einzelne statische Zelle zu identifizieren und zuzuweisen. Wenn sich ein neuer Benutzer bei der globalen Anwendung registriert, wird die Anfrage an die `Dispatcher` Funktion weitergeleitet. Die Funktion verarbeitet die Anfrage anhand vordefinierter Bewertungskriterien wie den folgenden:

1. **Region** ‒ Wählen Sie die Zelle auf dem Markt aus, in der sich der Benutzer befindet. Wenn der Benutzer beispielsweise von Europa aus auf die globale Anwendung zugreift, wählen Sie eine Zelle aus, die AWS-Regionen in Europa verwendet wird.

1. **Nähe oder Latenz** ‒ Wählen Sie die Zelle aus, die dem Benutzer am nächsten ist. Wenn der Benutzer beispielsweise von Holland aus auf die Anwendung zugreift, berücksichtigt die Funktion eine Zelle, die Frankfurt und Irland verwendet. Die Entscheidung, welche Zelle sich am nächsten befindet, basiert auf Kennzahlen wie der Latenz zwischen dem Standort des Benutzers und den Zellenregionen. Bei diesem Beispielmuster werden die Informationen statisch aus der Bereitstellungs- und Bereitstellungsebene eingespeist.

1. **Health** ‒ Die `Dispatcher` Funktion überprüft anhand des angegebenen Zellstatus (Gesund = wahr oder falsch), ob die ausgewählte Zelle gesund ist.

1. **Kapazität** ‒ Die Benutzerverteilung basiert auf der *geringsten Anzahl von Benutzern in einer Zellenlogik*, sodass der Benutzer der Zelle mit der geringsten Benutzeranzahl zugewiesen wird.

**Anmerkung**  
Diese Kriterien dienen lediglich der Erläuterung dieses Beispielmusters. Für eine realitätsnahe Implementierung eines Mobilfunkrouters können Sie verfeinerte und anwendungsfallorientierte Kriterien definieren.

`Orchestrator`Ruft die Dispatcher-Funktion auf, um Zellen Benutzer zuzuweisen. In dieser Demofunktion ist der Marktwert ein statischer Parameter, der als definiert ist. `europe`

Die `Dispatcher` Funktion bewertet, ob dem Benutzer bereits eine Zelle zugewiesen ist. Wenn die Zelle bereits zugewiesen ist, gibt die `Dispatcher` Funktion die Endpunkte der Zelle zurück. Wenn dem Benutzer keine Zelle zugewiesen ist, sucht die Funktion nach der Zelle mit der geringsten Anzahl von Benutzern, weist sie dem Benutzer zu und gibt die Endpunkte zurück. Die Effizienz der Zellensuchanfrage wird durch die Verwendung des globalen sekundären Indexes optimiert.

*Mapper-Funktion*

Die `Mapper` Funktion überwacht die Speicherung und Wartung von user-to-cell Zuordnungen in der Datenbank. Jedem registrierten Benutzer wird eine einzelne Zelle zugewiesen. Jede Zelle hat zwei unterschiedliche URLs — eine für jede AWS-Region. Diese dienen als API-Endpunkte, die auf API Gateway gehostet werden, und URLs fungieren als eingehende Punkte für die globale Anwendung.

Wenn die `Mapper` Funktion eine Anfrage von der Client-Anwendung empfängt, führt sie eine Abfrage in der DynamoDB-Tabelle aus, `tbl_router` um die user-to-cell Zuordnung abzurufen, die der angegebenen E-Mail-ID zugeordnet ist. Wenn sie eine zugewiesene Zelle findet, stellt die `Mapper` Funktion umgehend die beiden Zellen der Zelle bereit. URLs Die `Mapper` Funktion überwacht außerdem aktiv Änderungen an der Zelle URLs und veranlasst Benachrichtigungen oder Aktualisierungen der Benutzereinstellungen.

*Scaler-Funktion*

Die `Scaler` Funktion verwaltet die Restkapazität der Zelle. Bei jeder neuen Benutzerregistrierungsanfrage bewertet die `Scaler` Funktion die verfügbare Kapazität der Zelle, der die `Dispatcher` Funktion dem Benutzer zugewiesen hat. Wenn die Zelle ihr vorgegebenes Limit gemäß den angegebenen Bewertungskriterien erreicht hat, initiiert die Funktion eine Anfrage über eine Amazon SQS SQS-Warteschlange an die Bereitstellungs- und Bereitstellungsebene und fordert die Bereitstellung und Bereitstellung neuer Zellen an. Die Skalierung von Zellen kann auf der Grundlage einer Reihe von Bewertungskriterien wie den folgenden durchgeführt werden:

1. **Maximale Benutzeranzahl** ‒ Jede Zelle kann eine maximale Anzahl von 500 Benutzern haben.

1. **Pufferkapazität** ‒ Die Pufferkapazität jeder Zelle beträgt 20 Prozent, was bedeutet, dass jeder Zelle jederzeit 400 Benutzern zugewiesen werden kann. Die verbleibenden 20 Prozent der Pufferkapazität sind für future Anwendungsfälle und die Behandlung unerwarteter Szenarien reserviert (z. B. wenn die Dienste zur Zellenerstellung und -bereitstellung nicht verfügbar sind).

1. **Zellenerstellung** ‒ Sobald eine bestehende Zelle 70 Prozent der Kapazität erreicht, wird eine Anforderung zur Erstellung einer zusätzlichen Zelle ausgelöst.

**Anmerkung**  
Diese Kriterien dienen nur zur Erläuterung dieses Beispielmusters. Für eine realitätsnahe Implementierung eines Mobilfunkrouters können Sie verfeinerte und anwendungsfallorientierte Kriterien definieren.

Der `Scaler` Demonstrationscode wird ausgeführt, `Orchestrator` nachdem der dem neu registrierten Benutzer `Dispatcher` erfolgreich eine Zelle zugewiesen hat. Nach Erhalt der Zellen-ID von bewertet der anhand vordefinierter Bewertungskriterien`Dispatcher`, ob die angegebene Zelle über ausreichend Kapazität für weitere Benutzer verfügt. `Scaler` Wenn die Kapazität der Zelle nicht ausreicht, sendet die `Scaler` Funktion eine Nachricht an den Amazon SQS-Service. Diese Nachricht wird vom Service innerhalb der Bereitstellungs- und Bereitstellungsebene abgerufen, wodurch die Bereitstellung einer neuen Zelle eingeleitet wird.

**Validator-Funktion**

Die `Validator` Funktion identifiziert und behebt Probleme im Zusammenhang mit dem Zellzugriff. Wenn sich ein Benutzer bei der globalen Anwendung anmeldet, ruft die Anwendung die Zellen URLs aus den Benutzerprofileinstellungen ab und leitet Benutzeranfragen an eine der beiden zugewiesenen Regionen innerhalb der Zelle weiter. Wenn auf sie nicht zugegriffen URLs werden kann, kann die Anwendung eine validierte URL-Anfrage an den Mobilfunkrouter senden. Der Mobilfunkrouter ruft die `Orchestrator` auf. `Validator` Das `Validator` initiiert den Validierungsprozess. Die Validierung kann neben anderen Prüfungen Folgendes umfassen:
+ Querverweise auf die URLs in der Datenbank URLs gespeicherte Zelle in der Anfrage, um mögliche Aktualisierungen zu identifizieren und zu verarbeiten
+ Durchführung einer gründlichen Zustandsprüfung (z. B. eine `HTTP GET` Anfrage an den Endpunkt der Zelle)

Abschließend liefert die `Validator` Funktion Antworten auf Anfragen von Kundenanwendungen und gibt den Validierungsstatus sowie alle erforderlichen Korrekturmaßnahmen an.

Die wurde `Validator` entwickelt, um die Benutzererfahrung zu verbessern. Stellen Sie sich ein Szenario vor, in dem bestimmte Benutzer Schwierigkeiten haben, auf die globale Anwendung zuzugreifen, weil aufgrund eines Vorfalls Zellen vorübergehend nicht verfügbar sind. Anstatt generische Fehler anzuzeigen, kann die `Validator` Funktion aufschlussreiche Schritte zur Problembehebung bereitstellen. Diese Schritte können die folgenden Aktionen beinhalten:
+ Informieren Sie die Benutzer über den Vorfall.
+ Geben Sie eine ungefähre Wartezeit bis zur Verfügbarkeit des Dienstes an.
+ Geben Sie eine Support-Kontaktnummer an, um weitere Informationen zu erhalten.

Der Demo-Code für die `Validator` Funktion überprüft, ob die vom Benutzer angegebene Zelle URLs in der Anfrage mit den in der Tabelle gespeicherten Datensätzen übereinstimmt. `tbl_router` Die `Validator` Funktion überprüft auch, ob die Zellen gesund sind.

# Richten Sie den privaten Zugriff auf einen Amazon S3 S3-Bucket über einen VPC-Endpunkt ein
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint"></a>

*Martin Maritsch, Nicolas Jacob Baer, Gabriel Rodriguez Garcia, Shukhrat Khodjaev, Mohan Gowda Purushothama und Joaquin Rinaudo, Amazon Web Services*

## Zusammenfassung
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-summary"></a>

In Amazon Simple Storage Service (Amazon S3) können Sie mit Presigned URLs Dateien beliebiger Größe für Zielbenutzer freigeben. Standardmäßig URLs sind vorsignierte Amazon S3 innerhalb eines Ablaufzeitfensters über das Internet zugänglich, sodass sie bequem zu verwenden sind. In Unternehmensumgebungen ist jedoch häufig der Zugriff auf Amazon S3 erforderlich, der so vorkonfiguriert ist URLs , dass er nur auf ein privates Netzwerk beschränkt ist.

Dieses Muster stellt eine serverlose Lösung für die sichere Interaktion mit S3-Objekten dar, indem vorsignierte Daten URLs aus einem privaten Netzwerk ohne Internetdurchquerung verwendet werden. In der Architektur greifen Benutzer über einen internen Domainnamen auf einen Application Load Balancer zu. Der Datenverkehr wird intern über Amazon API Gateway und einen Virtual Private Cloud (VPC) -Endpunkt für den S3-Bucket geleitet. Die AWS Lambda Funktion generiert vorsignierte URLs Dateidownloads über den privaten VPC-Endpunkt, wodurch die Sicherheit und der Datenschutz für sensible Daten verbessert werden.

## Voraussetzungen und Einschränkungen
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-prereqs"></a>

**Voraussetzungen**
+ Eine VPC, die ein Subnetz umfasst AWS-Konto , das in einem mit dem Unternehmensnetzwerk verbunden ist (z. B. über AWS Direct Connect).

**Einschränkungen**
+ Der S3-Bucket muss denselben Namen wie die Domain haben. Wir empfehlen daher, die [Amazon S3 S3-Bucket-Namensregeln zu überprüfen.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)
+ Diese Beispielarchitektur beinhaltet keine Überwachungsfunktionen für die bereitgestellte Infrastruktur. Wenn Ihr Anwendungsfall eine Überwachung erfordert, sollten Sie das Hinzufügen von [AWS Überwachungsdiensten](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/welcome.html) in Betracht ziehen.
+ Diese Beispielarchitektur beinhaltet keine Eingabevalidierung. Wenn Ihr Anwendungsfall eine Eingabevalidierung und ein erhöhtes Sicherheitsniveau erfordert, sollten Sie dies [AWS WAF zum Schutz Ihrer API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html) in Betracht ziehen.
+ Diese Beispielarchitektur beinhaltet keine Zugriffsprotokollierung mit dem Application Load Balancer. Wenn Ihr Anwendungsfall eine Zugriffsprotokollierung erfordert, sollten Sie die Aktivierung der [Load Balancer-Zugriffsprotokolle](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html) in Betracht ziehen.

**Versionen**
+ Python-Version 3.11 oder höher
+ Terraform Version 1.6 oder höher

## Architektur
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-architecture"></a>

**Zieltechnologie-Stack**

Die folgenden AWS-Services werden im Zieltechnologie-Stack verwendet:
+ **Amazon S3** ist der zentrale Speicherservice, der für das sichere Hochladen, Herunterladen und Speichern von Dateien verwendet wird.
+ **Amazon API Gateway** stellt Ressourcen und Endpunkte für die Interaktion mit dem S3-Bucket zur Verfügung. Dieser Service spielt eine Rolle bei der Generierung von Daten, die URLs für das Herunterladen oder Hochladen vorkonfiguriert sind.
+ **AWS Lambda**generiert vorsignierte Dateien URLs für das Herunterladen von Dateien von Amazon S3. Die Lambda-Funktion wird von API Gateway aufgerufen.
+ **Amazon VPC** stellt Ressourcen innerhalb einer VPC bereit, um das Netzwerk zu isolieren. Die VPC umfasst Subnetze und Routingtabellen zur Steuerung des Datenverkehrs.
+ Der **Application Load Balancer** leitet eingehenden Datenverkehr entweder an API Gateway oder an den VPC-Endpunkt des S3-Buckets weiter. Es ermöglicht Benutzern aus dem Unternehmensnetzwerk den internen Zugriff auf Ressourcen.
+ Der **VPC-Endpunkt für Amazon S3** ermöglicht die direkte, private Kommunikation zwischen Ressourcen in der VPC und Amazon S3, ohne das öffentliche Internet zu durchqueren.
+ **AWS Identity and Access Management (IAM)** steuert den Zugriff auf Ressourcen. AWS Berechtigungen werden eingerichtet, um sichere Interaktionen mit der API und anderen Diensten zu gewährleisten.

**Zielarchitektur**

![\[Einrichtung eines privaten Zugriffs auf einen S3-Bucket über einen VPC-Endpoint\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/683ca6a1-789c-4444-bcbf-e4e80d253df3/images/1ca7ee17-d346-4eb9-bf61-ccf42528a401.png)


Das Diagramm veranschaulicht folgende Vorgänge:

1. Benutzer aus dem Unternehmensnetzwerk können über einen internen Domainnamen auf den Application Load Balancer zugreifen. Wir gehen davon aus, dass eine Verbindung zwischen dem Unternehmensnetzwerk und dem Intranet-Subnetz im besteht AWS-Konto (z. B. über eine Direct Connect Verbindung).

1. Der Application Load Balancer leitet eingehenden Datenverkehr entweder an API Gateway weiter, um Daten zu generieren, die für das Herunterladen oder Hochladen von Daten auf Amazon S3 vorsigniert URLs sind, oder an den VPC-Endpunkt des S3-Buckets. In beiden Szenarien werden Anfragen intern weitergeleitet und müssen nicht über das Internet geleitet werden.

1. API Gateway stellt Ressourcen und Endpunkte für die Interaktion mit dem S3-Bucket zur Verfügung. In diesem Beispiel stellen wir einen Endpunkt zum Herunterladen von Dateien aus dem S3-Bucket bereit. Dieser könnte jedoch erweitert werden, um auch Upload-Funktionen bereitzustellen.

1. Die Lambda-Funktion generiert die vorsignierte URL zum Herunterladen einer Datei von Amazon S3, indem sie den Domainnamen des Application Load Balancer anstelle der öffentlichen Amazon S3 S3-Domain verwendet.

1. Der Benutzer erhält die vorsignierte URL und verwendet sie, um die Datei mithilfe des Application Load Balancer von Amazon S3 herunterzuladen. Der Load Balancer enthält eine Standardroute, um Traffic, der nicht für die API bestimmt ist, an den VPC-Endpunkt des S3-Buckets zu senden.

1. Der VPC-Endpunkt leitet die vorsignierte URL mit dem benutzerdefinierten Domainnamen an den S3-Bucket weiter. Der S3-Bucket muss denselben Namen wie die Domain haben.

**Automatisierung und Skalierung**

Dieses Muster verwendet Terraform, um die Infrastruktur aus dem Code-Repository in einem bereitzustellen. AWS-Konto

## Tools
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-tools"></a>

**Tools**
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer AWS Befehlszeilen-Shell mit Diensten interagieren können.

**Code-Repository**

Der Code für dieses Muster ist in einem GitHub Repository unter [https://github.com/aws-samples/private-s3-vpce](https://github.com/aws-samples/private-s3-vpce) verfügbar.

## Best Practices
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-best-practices"></a>

Die Beispielarchitektur für dieses Muster verwendet [IAM-Berechtigungen, um den Zugriff auf die API zu steuern](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html). Jeder, der über gültige IAM-Anmeldeinformationen verfügt, kann die API aufrufen. Wenn Ihr Anwendungsfall ein komplexeres Autorisierungsmodell erfordert, möchten Sie möglicherweise [einen anderen Zugriffskontrollmechanismus verwenden](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html).

## Epen
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-epics"></a>

### Stellen Sie die Lösung in einem bereit AWS-Konto
<a name="deploy-the-solution-in-an-aws-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Besorgen Sie sich AWS Anmeldeinformationen. | Überprüfen Sie Ihre AWS Anmeldeinformationen und Ihren Zugang zu Ihrem Konto. Anweisungen finden Sie in der AWS CLI Dokumentation unter [Konfiguration und Einstellungen für die Anmeldeinformationsdatei](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). | AWS DevOps, Allgemeines AWS | 
| Klonen Sie das Repository | Klonen Sie das mit diesem Muster bereitgestellte GitHub Repository:<pre>git clone https://github.com/aws-samples/private-s3-vpce</pre> | AWS DevOps, Allgemeines AWS | 
| Variablen konfigurieren. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, Allgemeines AWS | 
| Lösung bereitstellen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, Allgemeines AWS | 

### Testen der Lösung
<a name="test-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Testdatei. | Laden Sie eine Datei auf Amazon S3 hoch, um ein Testszenario für den Dateidownload zu erstellen. Sie können die [Amazon S3 S3-Konsole](https://console.aws.amazon.com/s3/) oder den folgenden AWS CLI Befehl verwenden:<pre>aws s3 cp /path/to/testfile s3://your-bucket-name/testfile</pre> | AWS DevOps, Allgemeines AWS | 
| Testen Sie die Funktionalität vordefinierter URLs. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, Allgemeines AWS | 
| Bereinigen Sie. | Stellen Sie sicher, dass Sie die Ressourcen entfernen, wenn sie nicht mehr benötigt werden:<pre>terraform destroy</pre> | AWS DevOps, Allgemeines AWS | 

## Fehlerbehebung
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| S3-Objektschlüsselnamen mit Sonderzeichen wie Nummernzeichen (\$1) unterbrechen URL-Parameter und führen zu Fehlern. | Codieren Sie die URL-Parameter ordnungsgemäß und stellen Sie sicher, dass der Name des S3-Objektschlüssels den [Amazon S3 S3-Richtlinien entspricht](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html). | 

## Zugehörige Ressourcen
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-resources"></a>

Amazon S3:
+ [Objekte mit vorsignierten teilen URLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html)
+ [Steuern des Zugriffs von VPC-Endpunkten aus mit Bucket-Richtlinien](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html)

Amazon API Gateway:
+ [Verwenden Sie VPC-Endpunktrichtlinien für private Zwecke APIs in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-vpc-endpoint-policies.html)

Application Load Balancer:
+ [Hosten interner statischer HTTPS-Websites mit ALB, S3 und PrivateLink](https://aws.amazon.com/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/) (AWS Blogbeitrag)

# Fehlerbehebung bei Zuständen mithilfe AWS Step Functions von Amazon Bedrock
<a name="troubleshooting-states-in-aws-step-functions"></a>

*Aniket Kurzadkar und Sangam Kushwaha, Amazon Web Services*

## Zusammenfassung
<a name="troubleshooting-states-in-aws-step-functions-summary"></a>

AWS Step Functions Funktionen zur Fehlerbehandlung können Ihnen helfen, einen Fehler zu erkennen, der während eines bestimmten Status in einem [Workflow](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-statemachines.html) auftritt, aber es kann dennoch schwierig sein, die Ursache eines Fehlers zu finden und zu debuggen. Dieses Muster adressiert diese Herausforderung und zeigt, wie Amazon Bedrock Ihnen helfen kann, Fehler zu beheben, die während Status in Step Functions auftreten. 

Step Functions bietet Workflow-Orchestrierung und erleichtert es Entwicklern, Prozesse zu automatisieren. Step Functions bietet auch Funktionen zur Fehlerbehandlung, die folgende Vorteile bieten:
+ Entwickler können robustere Anwendungen entwickeln, die nicht komplett ausfallen, wenn etwas schief geht.
+ Workflows können bedingte Logik enthalten, um verschiedene Arten von Fehlern unterschiedlich zu behandeln.
+ Das System kann fehlgeschlagene Operationen automatisch wiederholen, möglicherweise mit exponentiellem Backoff.
+ Für Fehlerszenarien können alternative Ausführungspfade definiert werden, sodass der Workflow angepasst und die Verarbeitung fortgesetzt werden kann.

Wenn in einem Step Functions-Workflow ein Fehler auftritt, zeigt dieses Muster, wie die Fehlermeldung und der Kontext an ein Foundation Model (FM) wie Claude 3 gesendet werden können, das von Step Functions unterstützt wird. Das FM kann den Fehler analysieren, ihn kategorisieren und mögliche Schritte zur Behebung vorschlagen.

## Voraussetzungen und Einschränkungen
<a name="troubleshooting-states-in-aws-step-functions-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Grundlegendes Verständnis von [AWS Step Functions und Arbeitsabläufen](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-statemachines.html)
+ Amazon Bedrock [API-Konnektivität](https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api.html)

**Einschränkungen**
+ Sie können den Ansatz dieses Musters für verschiedene AWS-Services Zwecke verwenden. Die Ergebnisse können jedoch je nach der von AWS Lambda Amazon Bedrock erstellten Aufforderung variieren.
+ Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS-Services nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Service-Endpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Service aus.

## Architektur
<a name="troubleshooting-states-in-aws-step-functions-architecture"></a>

Das folgende Diagramm zeigt den Workflow und die Architekturkomponenten für dieses Muster.

![\[Workflow für die Fehlerbehandlung und Benachrichtigung mit Step Functions, Amazon Bedrock und Amazon SNS.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/78f86c74-c9de-4562-adcc-105b87a77a54/images/d8eda499-ea1d-45e5-8a36-e04a44ad5c4b.png)


Das Diagramm zeigt den automatisierten Workflow für die Fehlerbehandlung und Benachrichtigung in einer Step Functions Functions-Zustandsmaschine:

1. Der Entwickler startet die Ausführung einer Zustandsmaschine.

1. Die Step Functions Functions-Zustandsmaschine beginnt mit der Verarbeitung ihrer Zustände. Es gibt zwei mögliche Ergebnisse:
   + (a) Wenn alle Staaten erfolgreich ausgeführt wurden, wird der Workflow direkt an Amazon SNS weitergeleitet, wo eine E-Mail-Erfolgsmeldung gesendet wird.
   + (b) Wenn ein Status ausfällt, wechselt der Workflow zur Lambda-Funktion zur Fehlerbehandlung.

1. Im Falle eines Fehlers passiert Folgendes:
   + (a) Die Lambda-Funktion (Fehlerhandler) wird ausgelöst. Die Lambda-Funktion extrahiert die Fehlermeldung aus den Ereignisdaten, die ihr von der Step Functions Functions-Zustandsmaschine übergeben wurden. Anschließend bereitet die Lambda-Funktion eine Aufforderung auf der Grundlage dieser Fehlermeldung vor und sendet die Aufforderung an Amazon Bedrock. In der Aufforderung werden Lösungen und Vorschläge für den spezifischen aufgetretenen Fehler angefordert.
   + (b) Amazon Bedrock, das das generative KI-Modell hostet, verarbeitet die Eingabeaufforderung. (Dieses Muster verwendet das Anthropic Claude 3 Foundation Model (FM), eines von vielen, FMs die Amazon Bedrock unterstützt.) Das KI-Modell analysiert den Fehlerkontext. Anschließend generiert das Modell eine Antwort, die Erklärungen zur Ursache des Fehlers, mögliche Lösungen zur Behebung des Fehlers und Vorschläge zur Vermeidung future Fehler enthalten kann.

     Amazon Bedrock gibt seine KI-generierte Antwort an die Lambda-Funktion zurück. Die Lambda-Funktion verarbeitet die Antwort und formatiert sie möglicherweise oder extrahiert wichtige Informationen. Dann sendet die Lambda-Funktion die Antwort an die Ausgabe der Zustandsmaschine.

1. Nach der Fehlerbehandlung oder erfolgreicher Ausführung wird der Workflow abgeschlossen, indem Amazon SNS veranlasst wird, eine E-Mail-Benachrichtigung zu senden.

## Tools
<a name="troubleshooting-states-in-aws-step-functions-tools"></a>

**AWS-Services**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) ist ein vollständig verwalteter Service, der Ihnen leistungsstarke Basismodelle (FMs) von führenden KI-Startups und Amazon über eine einheitliche API zur Verfügung stellt.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten 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.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Funktionen und andere Funktionen kombinieren können, um geschäftskritische Anwendungen AWS-Services zu erstellen.

## Best Practices
<a name="troubleshooting-states-in-aws-step-functions-best-practices"></a>
+ Angesichts der Tatsache, dass Amazon Bedrock ein generatives KI-Modell ist, das aus trainierten Daten lernt, verwendet es diese Daten auch, um Kontext zu trainieren und zu generieren. Es hat sich bewährt, alle privaten Informationen zu verbergen, die zu Problemen mit Datenlecks führen könnten. 
+ Obwohl generative KI wertvolle Erkenntnisse liefern kann, sollten kritische Entscheidungen zur Fehlerbehandlung immer noch unter menschlicher Aufsicht getroffen werden, insbesondere in Produktionsumgebungen.

## Epen
<a name="troubleshooting-states-in-aws-step-functions-epics"></a>

### Erstellen Sie eine Zustandsmaschine für Ihren Workflow
<a name="create-a-state-machine-for-your-workflow"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen -Zustandsautomaten. | Gehen Sie wie folgt vor, um eine Zustandsmaschine zu erstellen, die für Ihren Workflow geeignet ist:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/troubleshooting-states-in-aws-step-functions.html) | AWS DevOps | 

### Erstellen einer Lambda-Funktion
<a name="create-a-lam-function"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Lambda-Funktion.  | Gehen Sie wie folgt vor, um eine Lambda-Funktion zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/troubleshooting-states-in-aws-step-functions.html) | AWS DevOps | 
| Richten Sie die erforderliche Logik im Lambda-Code ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/troubleshooting-states-in-aws-step-functions.html)<pre>client = boto3.client(<br />        service_name="bedrock-runtime", region_name="selected-region"<br />    )<br /><br />    # Invoke Claude 3 with the text prompt<br />    model_id = "your-model-id" # Select your Model ID, Based on the Model Id, Change the body format<br /><br />    try:<br />        response = client.invoke_model(<br />            modelId=model_id,<br />            body=json.dumps(<br />                {<br />                    "anthropic_version": "bedrock-2023-05-31",<br />                    "max_tokens": 1024,<br />                    "messages": [<br />                        {<br />                            "role": "user",<br />                            "content": [{"type": "text", "text": prompt}],<br />                        }<br />                    ],<br />                }<br />            ),<br />        )<br /></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/troubleshooting-states-in-aws-step-functions.html) | AWS DevOps | 

### Integrieren Sie Step Functions mit Lambda
<a name="integrate-sfn-with-lam"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie Lambda für die Behandlung von Fehlern in Step Functions ein. | Gehen Sie wie folgt vor, um Step Functions so einzurichten, dass Fehler behandelt werden, ohne den Arbeitsablauf zu unterbrechen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/troubleshooting-states-in-aws-step-functions.html) | AWS DevOps | 

## Fehlerbehebung
<a name="troubleshooting-states-in-aws-step-functions-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Lambda kann nicht auf die Amazon Bedrock API zugreifen (nicht zur Ausführung autorisiert) | Dieser Fehler tritt auf, wenn die Lambda-Rolle nicht berechtigt ist, auf die Amazon Bedrock-API zuzugreifen. Um dieses Problem zu beheben, fügen Sie die `AmazonBedrockFullAccess` Richtlinie für die Lambda-Rolle hinzu. Weitere Informationen finden Sie [AmazonBedrockFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockFullAccess.html)im *Referenzhandbuch für AWS verwaltete Richtlinien.* | 
| Lambda-Timeout-Fehler | Manchmal kann es je nach Aufforderung mehr als 30 Sekunden dauern, bis eine Antwort generiert und zurückgesendet wird. Erhöhen Sie die Konfigurationszeit, um dieses Problem zu beheben. Weitere Informationen finden [Sie unter Configure Lambda function timeout](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonBedrockFullAccess.html) im *AWS Lambda Developer* Guide. | 

## Zugehörige Ressourcen
<a name="troubleshooting-states-in-aws-step-functions-resources"></a>
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)
+ [Amazon Bedrock API-Zugriff](https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api.html)
+ [Erstellen Sie Ihre erste Lambda-Funktion](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)
+ [Entwicklung von Workflows mit Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/developing-workflows.html#development-run-debug)
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 

# Mehr Muster
<a name="serverless-more-patterns-pattern-list"></a>

**Topics**
+ [Mit Athena auf Amazon DynamoDB-Tabellen zugreifen, diese abfragen und verbinden](access-query-and-join-amazon-dynamodb-tables-using-athena.md)
+ [Automatisieren Sie CodeGuru Amazon-Rezensionen für AWS CDK Python-Anwendungen mithilfe von GitHub Aktionen](automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.md)
+ [Automatisieren Sie die AWS-Ressourcenbewertung](automate-aws-resource-assessment.md)
+ [Automatisieren Sie die Bereitstellung verschachtelter Anwendungen mit AWS SAM](automate-deployment-of-nested-applications-using-aws-sam.md)
+ [Automatisieren Sie die Bereitstellung von AWS Supply Chain Data Lakes in einem Multi-Repository-Setup mithilfe von GitHub Actions, Artifactory und Terraform](automate-the-deployment-of-aws-supply-chain-data-lakes.md)
+ [Automatisieren Sie die Replikation von Amazon RDS-Instances auf AWS-Konten](automate-the-replication-of-amazon-rds-instances-across-aws-accounts.md)
+ [Automatisches Archivieren von Elementen in Amazon S3 mithilfe von DynamoDB TTL](automatically-archive-items-to-amazon-s3-using-dynamodb-ttl.md)
+ [Automatische Erkennung von Änderungen und Initiierung verschiedener CodePipeline Pipelines für ein Monorepo in CodeCommit](automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.md)
+ [Erstellen Sie eine serverlose Architektur mit mehreren Mandanten in Amazon Service OpenSearch](build-a-multi-tenant-serverless-architecture-in-amazon-opensearch-service.md)
+ [Erstellen Sie einen fortschrittlichen Mainframe-Dateiviewer in der AWS-Cloud](build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.md)
+ [Value at Risk (VaR) mithilfe von AWS-Services berechnen](calculate-value-at-risk-var-by-using-aws-services.md)
+ [Kopieren Sie AWS Service Catalog-Produkte zwischen verschiedenen AWS-Konten und AWS-Regionen](copy-aws-service-catalog-products-across-different-aws-accounts-and-aws-regions.md)
+ [Automatisches Erstellen dynamischer CI-Pipelines für Java- und Python-Projekte](create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.md)
+ [Zerlegen Sie Monolithen mithilfe von CQRS und Event Sourcing in Microservices](decompose-monoliths-into-microservices-by-using-cqrs-and-event-sourcing.md)
+ [Stellen Sie eine React-basierte Einzelseitenanwendung auf Amazon S3 bereit und CloudFront](deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.md)
+ [Stellen Sie eine Amazon API Gateway Gateway-API auf einer internen Website mithilfe von privaten Endpunkten und einem Application Load Balancer bereit](deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.md)
+ [Bereitstellen und verwalten Sie einen serverlosen Data Lake in der AWS-Cloud, indem Sie Infrastruktur als Code verwenden](deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code.md)
+ [Stellen Sie mithilfe AWS von Terraform und Amazon Bedrock einen RAG-Anwendungsfall bereit](deploy-rag-use-case-on-aws.md)
+ [Entwickeln Sie mithilfe von Amazon Bedrock-Agenten und Wissensdatenbanken einen vollautomatischen Chat-basierten Assistenten](develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases.md)
+ [Entwickeln Sie mithilfe von RAG und Prompting fortschrittliche, auf KI basierende Chat-Assistenten ReAct](develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.md)
+ [Dynamisches Generieren einer IAM-Richtlinie mit IAM Access Analyzer mithilfe von Step Functions](dynamically-generate-an-iam-policy-with-iam-access-analyzer-by-using-step-functions.md)
+ [Integrieren Sie visuelle Komponenten von Amazon Quick Sight mithilfe von Amazon Cognito und IaC-Automatisierung in Webanwendungen](embed-quick-sight-visual-components-into-web-apps-cognito-iac.md)
+ [Stellen Sie sicher, dass die Amazon EMR-Protokollierung bei Amazon S3 beim Start aktiviert ist](ensure-amazon-emr-logging-to-amazon-s3-is-enabled-at-launch.md)
+ [Schätzen Sie die Kosten einer DynamoDB-Tabelle für On-Demand-Kapazität](estimate-the-cost-of-a-dynamodb-table-for-on-demand-capacity.md)
+ [Generieren Sie mit Amazon Personalize personalisierte und neu eingestufte Empfehlungen](generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.md)
+ [Generieren Sie Testdaten mit einem AWS Glue Glue-Job und Python](generate-test-data-using-an-aws-glue-job-and-python.md)
+ [Implementieren Sie SHA1 Hashing für PII-Daten bei der Migration von SQL Server zu PostgreSQL](implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.md)
+ [Implementieren Sie das serverlose Saga-Muster mithilfe von AWS Step Functions](implement-the-serverless-saga-pattern-by-using-aws-step-functions.md)
+ [Verbessern Sie die Betriebsleistung, indem Sie Amazon DevOps Guru in mehreren AWS-Regionen, Konten und OUs mit dem AWS CDK aktivieren](improve-operational-performance-by-enabling-amazon-devops-guru-across-multiple-aws-regions-accounts-and-ous-with-the-aws-cdk.md)
+ [Starten Sie mithilfe von Step Functions und einer Lambda-Proxyfunktion ein CodeBuild Projekt für alle AWS-Konten](launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.md)
+ [Migrieren Sie Apache Cassandra-Workloads mithilfe von AWS Glue zu Amazon Keyspaces](migrate-apache-cassandra-workloads-to-amazon-keyspaces-by-using-aws-glue.md)
+ [Überwachen Sie die Nutzung eines gemeinsam genutzten Amazon Machine Image über mehrere AWS-Konten](monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.md)
+ [Optimieren Sie serverlose Bereitstellungen mit mehreren Konten mithilfe der AWS CDK Workflows und Aktionen GitHub](optimize-multi-account-serverless-deployments.md)
+ [Orchestrieren Sie eine ETL-Pipeline mit Validierung, Transformation und Partitionierung mit AWS Step Functions](orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.md)
+ [Abfragen von Amazon DynamoDB-Tabellen mit SQL mithilfe von Amazon Athena](query-amazon-dynamodb-tables-sql-amazon-athena.md)
+ [Führen Sie ereignisgesteuerte und geplante Workloads in großem Umfang mit AWS Fargate aus](run-event-driven-and-scheduled-workloads-at-scale-with-aws-fargate.md)
+ [Senden Sie benutzerdefinierte Attribute an Amazon Cognito und fügen Sie sie in Token ein](send-custom-attributes-cognito.md)
+ [Statische Inhalte in einem Amazon S3 S3-Bucket über eine VPC mithilfe von Amazon bereitstellen CloudFront](serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront.md)
+ [Optimieren Sie die Entwicklung und Bereitstellung von Amazon Lex Lex-Bot mithilfe eines automatisierten Workflows](streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.md)
+ [Strukturieren Sie ein Python-Projekt in hexagonaler Architektur mit AWS Lambda](structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.md)
+ [Translate natürliche Sprache in Abfragen, DSL für OpenSearch und Elasticsearch-Abfragen](translate-natural-language-query-dsl-opensearch-elasticsearch.md)
+ [Daten aus einem Amazon Redshift Redshift-Cluster kontenübergreifend nach Amazon S3 entladen](unload-data-from-amazon-redshift-cross-accounts-to-amazon-s3.md)
+ [Koordinieren Sie die Ressourcenabhängigkeit und die Aufgabenausführung mithilfe des AWS Fargate WaitCondition Hook-Konstrukts](use-the-aws-fargate-waitcondition-hook-construct.md)
+ [Verwenden Sie Amazon Bedrock-Agenten, um die Erstellung von Zugriffskontrollen in Amazon EKS durch textbasierte Eingabeaufforderungen zu automatisieren](using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.md)

# Netzwerk
<a name="networking-pattern-list"></a>

**Topics**
+ [Automatisieren Sie die Einrichtung von regionsübergreifendem Peering mit AWS Transit Gateway](automate-the-setup-of-inter-region-peering-with-aws-transit-gateway.md)
+ [Zentralisieren Sie die Netzwerkkonnektivität mit AWS Transit Gateway](centralize-network-connectivity-using-aws-transit-gateway.md)
+ [Konfigurieren Sie die HTTPS-Verschlüsselung für Oracle JD Edwards EnterpriseOne auf Oracle WebLogic mithilfe eines Application Load Balancer](configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer.md)
+ [Stellen Sie über ein privates Netzwerk eine Connect zu Daten- und Steuerungsebenen des Application Migration Service her](connect-to-application-migration-service-data-and-control-planes-over-a-private-network.md)
+ [Erstellen Sie Infoblox-Objekte mithilfe von CloudFormation benutzerdefinierten AWS-Ressourcen und Amazon SNS](create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns.md)
+ [Erstellen Sie mithilfe von Terraform eine hierarchische IPAM-Architektur mit mehreren Regionen AWS](multi-region-ipam-architecture.md)
+ [Passen Sie CloudWatch Amazon-Benachrichtigungen an für AWS Network Firewall](customize-amazon-cloudwatch-alerts-for-aws-network-firewall.md)
+ [Bereitstellen von Ressourcen in einer AWS Wavelength Zone mithilfe von Terraform](deploy-resources-wavelength-zone-using-terraform.md)
+ [Massenmigrieren von DNS-Einträgen in eine private gehostete Zone von Amazon Route 53](migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.md)
+ [Ändern Sie HTTP-Header, wenn Sie von F5 zu einem Application Load Balancer auf AWS migrieren](modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws.md)
+ [Erstellen Sie einen Bericht mit den Ergebnissen von Network Access Analyzer für eingehenden Internetzugang in mehreren AWS-Konten](create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.md)
+ [Richten Sie die DNS-Auflösung für Hybridnetzwerke in einer Umgebung mit mehreren Konten AWS ein](set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment.md)
+ [Stellen Sie sicher, dass ELB-Load Balancer eine TLS-Terminierung erfordern](verify-that-elb-load-balancers-require-tls-termination.md)
+ [AWS-Netzwerk-Firewall-Protokolle und -Metriken mithilfe von Splunk anzeigen](view-aws-network-firewall-logs-and-metrics-by-using-splunk.md)
+ [Mehr Muster](networking-more-patterns-pattern-list.md)

# Automatisieren Sie die Einrichtung von regionsübergreifendem Peering mit AWS Transit Gateway
<a name="automate-the-setup-of-inter-region-peering-with-aws-transit-gateway"></a>

*Ram Kandaswamy, Amazon Web Services*

## Zusammenfassung
<a name="automate-the-setup-of-inter-region-peering-with-aws-transit-gateway-summary"></a>

AWS Transit Gateway verbindet virtuelle private Clouds (VPCs) und lokale Netzwerke über einen zentralen Hub. Der Transit Gateway Gateway-Verkehr bleibt immer auf dem globalen Amazon Web Services (AWS) -Backbone und durchquert nicht das öffentliche Internet, wodurch Bedrohungsvektoren wie häufige Exploits und verteilte Denial-of-Service (DDoS) -Angriffe reduziert werden.

Wenn Sie zwischen zwei oder mehr AWS-Regionen kommunizieren müssen, können Sie regionsübergreifendes Transit Gateway Gateway-Peering verwenden, um Peering-Verbindungen zwischen Transit-Gateways in verschiedenen Regionen herzustellen. Die manuelle Konfiguration von regionsübergreifendem Peering mit Transit Gateway kann jedoch ein zeitaufwändiger Vorgang sein, der mehrere Schritte umfasst. Dieses Muster bietet einen automatisierten Prozess zum Entfernen dieser manuellen Schritte, indem das Peering mithilfe von Code durchgeführt wird. Sie können diesen Ansatz verwenden, wenn Sie während der Einrichtung einer Organisation mit mehreren Regionen wiederholt mehrere Regionen und AWS-Konten konfigurieren müssen.

Dieses Muster verwendet einen CloudFormation AWS-Stack, der den AWS Step Functions-Workflow, AWS Lambda Lambda-Funktionen, AWS Identity and Access Management (IAM) -Rollen und Protokollgruppen in Amazon CloudWatch Logs umfasst. Anschließend können Sie eine Step Functions Functions-Ausführung starten und die regionsübergreifende Peering-Verbindung für Ihre Transit-Gateways erstellen. Informationen zur manuellen Einrichtung von regionsübergreifendem Peering finden Sie unter [Peer VPCs in verschiedenen AWS-Regionen mithilfe von AWS Transit Gateway](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/peer-vpcs-different-regions-transit-gateway.html).

## Voraussetzungen und Einschränkungen
<a name="automate-the-setup-of-inter-region-peering-with-aws-transit-gateway-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Ein vorhandener Amazon Simple Storage Service (Amazon S3) -Bucket.
+ Transit-Gateways, die in der anfordernden Region und den akzeptierenden Regionen erstellt und konfiguriert wurden. Aus der Region des *Anforderers* *stammt eine Peering-Anfrage, und die akzeptierenden Regionen akzeptieren* die Peering-Anfrage. Weitere Informationen dazu finden Sie unter [Erstellen und Akzeptieren einer VPC-Peering-Verbindung](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) in der Amazon VPC-Dokumentation.
+ VPCs, wurde in den Regionen Acceptor und Requester installiert und konfiguriert. Schritte zum Erstellen einer VPC finden Sie unter [Erstellen der VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html#getting-started-create-vpc) von [Get Started with Amazon VPC in der Amazon VPC-Dokumentation](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html).
+ Sie VPCs müssen das Tag und den `addToTransitGateway` Wert verwenden. `true`
+ Sicherheitsgruppen und Netzwerkzugriffskontrolllisten (ACLs) für Sie VPCs, konfiguriert nach Ihren Anforderungen. Weitere Informationen dazu finden Sie unter [Sicherheitsgruppen für Ihre VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) und Ihr [Netzwerk ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) in der Amazon VPC-Dokumentation.

 

**AWS-Regionen und Einschränkungen**
+ Nur bestimmte AWS-Regionen unterstützen regionsübergreifendes Peering. Eine vollständige Liste der Regionen, die regionsübergreifendes Peering unterstützen, finden Sie im [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/faqs/). FAQs
+ Im beigefügten Beispielcode wird davon ausgegangen, dass die Region des Anforderers und die Region des Akzeptors dies ist. `us-east-2` `us-west-2` Wenn Sie verschiedene Regionen konfigurieren möchten, müssen Sie diese Werte in allen Python-Dateien bearbeiten. Um ein komplexeres Setup zu implementieren, das mehr als zwei Regionen umfasst, können Sie die Step-Funktion so ändern, dass die Regions als Parameter an die Lambda-Funktion übergeben und die Funktion für jede Kombination ausgeführt werden.

## Architektur
<a name="automate-the-setup-of-inter-region-peering-with-aws-transit-gateway-architecture"></a>

![\[Die Step Functions Functions-Zustandsmaschine verwendet die Lambda-Funktion, um eine Peering-Verbindung für Transit-Gateways herzustellen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/b678bb87-c7b9-4f7b-b26e-eaac650e5d1b/images/d58f0586-659d-4111-b3a8-2fe23d578fef.png)


 

Das Diagramm zeigt einen Workflow mit den folgenden Schritten:

1. Der Benutzer erstellt einen CloudFormation AWS-Stack.

1. AWS CloudFormation erstellt eine Step Functions Functions-Zustandsmaschine, die eine Lambda-Funktion verwendet. Weitere Informationen dazu finden Sie in der AWS [Step Functions Step Functions-Dokumentation unter Erstellen einer Step Functions-Zustandsmaschine, die Lambda verwendet](https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-creating-lambda-state-machine.html).

1. Step Functions ruft eine Lambda-Funktion für das Peering auf. 

1. Die Lambda-Funktion stellt eine Peering-Verbindung zwischen Transit-Gateways her.

1. Step Functions ruft eine Lambda-Funktion für Änderungen an Routentabellen auf.

1. Die Lambda-Funktion ändert die Routentabellen, indem sie den CIDR-Block (Classless Inter-Domain Routing) von hinzufügt. VPCs

**Arbeitsablauf für Step Functions**

![\[Step Functions Functions-Workflow zum Aufrufen der Lambda-Funktion zur Änderung von Routentabellen für Transit-Gateway-Peering.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/b678bb87-c7b9-4f7b-b26e-eaac650e5d1b/images/2f235f47-5d68-492c-b954-7dc170939cae.png)


 

Das Diagramm zeigt den folgenden Step Functions Functions-Arbeitsablauf:

1. Der Step Functions Functions-Workflow ruft die Lambda-Funktion für das Transit-Gateway-Peering auf. 

1. Es erfolgt ein Timer-Anruf, um eine Minute zu warten.

1. Der Peering-Status wird abgerufen und an den Condition-Block gesendet. Der Block ist für das Looping verantwortlich. 

1. Wenn die Erfolgsbedingung nicht erfüllt ist, ist der Workflow so codiert, dass er in die Timer-Phase übergeht. 

1. Wenn die Erfolgsbedingung erfüllt ist, wird eine Lambda-Funktion aufgerufen, um die Routentabellen zu ändern. Nach diesem Aufruf endet der Step Functions Functions-Workflow.

## Tools
<a name="automate-the-setup-of-inter-region-peering-with-aws-transit-gateway-tools"></a>
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation ist ein Service, der Sie bei der Modellierung und Einrichtung Ihrer AWS-Ressourcen unterstützt.
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) — CloudWatch Logs hilft Ihnen dabei, die Protokolle all Ihrer Systeme, Anwendungen und AWS-Services, die Sie verwenden, zu zentralisieren.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — IAM ist ein Webservice zur sicheren Steuerung des Zugriffs auf AWS-Services.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) — Lambda führt Ihren Code auf einer hochverfügbaren Recheninfrastruktur aus und übernimmt die gesamte Verwaltung der Rechenressourcen.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) — Step Functions macht es einfach, die Komponenten verteilter Anwendungen als eine Reihe von Schritten in einem visuellen Workflow zu koordinieren. 

## Epen
<a name="automate-the-setup-of-inter-region-peering-with-aws-transit-gateway-epics"></a>

### Automatisieren Sie das Peering
<a name="automate-peering"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie die angehängten Dateien in Ihren S3-Bucket hoch. | Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die Amazon S3 S3-Konsole und laden Sie dann die (angehängten) `get-transit-gateway-peering-status.zip` Dateien `modify-transit-gateway-routes.zip``peer-transit-gateway.zip`, und in Ihren S3-Bucket hoch. | Allgemeines AWS | 
| Erstellen Sie den CloudFormation AWS-Stack. | Führen Sie den folgenden Befehl aus, um mithilfe der `transit-gateway-peering.json` Datei (angehängt) einen CloudFormation AWS-Stack zu erstellen:`aws cloudformation create-stack --stack-name myteststack --template-body file://sampletemplate.json`Der CloudFormation AWS-Stack erstellt den Step Functions Functions-Workflow, die Lambda-Funktionen, IAM-Rollen und CloudWatch Protokollgruppen.Stellen Sie sicher, dass sich die CloudFormation AWS-Vorlage auf den S3-Bucket bezieht, der die zuvor hochgeladenen Dateien enthält.Sie können einen Stack auch mithilfe der CloudFormation AWS-Konsole erstellen. Weitere Informationen dazu finden Sie in der CloudFormation AWS-Dokumentation unter [Erstellen eines Stacks auf der CloudFormation AWS-Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). | DevOps Ingenieur | 
| Starten Sie eine neue Ausführung in Step Functions. | Öffnen Sie die Step Functions Functions-Konsole und starten Sie eine neue Ausführung. Step Functions ruft die Lambda-Funktion auf und erstellt die Peering-Verbindung für die Transit-Gateways. Sie benötigen keine JSON-Eingabedatei. Stellen Sie sicher, dass ein Anhang verfügbar ist und ob der Verbindungstyp **Peering** ist.Weitere Informationen dazu finden Sie unter [Starten einer neuen Ausführung](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started.html#start-new-execution) unter [Erste Schritte mit AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started.html) in der Dokumentation zu AWS Steps Functions. | DevOps Ingenieur, General AWS | 
| Überprüfen Sie die Routen in den Routentabellen.  | Zwischen den Transit-Gateways wird regionsübergreifendes Peering eingerichtet. Die Routentabellen werden mit dem CIDR-Blockbereich der VPC der Peer-Region aktualisiert. IPv4  Öffnen Sie die Amazon VPC-Konsole und wählen Sie in der Routentabelle, die dem Transit-Gateway-Anhang entspricht, die Registerkarte **Verknüpfungen** aus. Überprüfen Sie den VPC-CIDR-Blockbereich der Peering-Regionen. Ausführliche Schritte und Anweisungen finden Sie unter [Zuordnen einer Transit-Gateway-Routentabelle](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-route-tables.html#associate-tgw-route-table) in der Amazon VPC-Dokumentation. | Netzwerkadministrator | 

## Zugehörige Ressourcen
<a name="automate-the-setup-of-inter-region-peering-with-aws-transit-gateway-resources"></a>
+ [Ausführungen in Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-state-machine-executions.html)
+ [Peering-Anlagen für Transit-Gateways](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-peering.html)
+ [Peer VPCs in verschiedenen AWS-Regionen mithilfe von AWS Transit Gateway](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/peer-vpcs-different-regions-transit-gateway.html)
+ [Verbindung zwischen VPCs AWS-Regionen mithilfe von AWS Transit Gateway herstellen — Demo](https://www.youtube.com/watch?v=cj1rQqLxXU8) (Video)

## Anlagen
<a name="attachments-b678bb87-c7b9-4f7b-b26e-eaac650e5d1b"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/b678bb87-c7b9-4f7b-b26e-eaac650e5d1b/attachments/attachment.zip)

# Zentralisieren Sie die Netzwerkkonnektivität mit AWS Transit Gateway
<a name="centralize-network-connectivity-using-aws-transit-gateway"></a>

*Mydhili Palagummi und Nikhil Marrapu, Amazon Web Services*

## Zusammenfassung
<a name="centralize-network-connectivity-using-aws-transit-gateway-summary"></a>

Dieses Muster beschreibt die einfachste Konfiguration, in der AWS Transit Gateway verwendet werden kann, um ein lokales Netzwerk mit virtuellen privaten Clouds (VPCs) in mehreren AWS-Konten innerhalb einer AWS-Region zu verbinden. Mit diesem Setup können Sie ein Hybridnetzwerk einrichten, das mehrere VPC-Netzwerke in einer Region und ein lokales Netzwerk verbindet. Dies wird durch die Verwendung eines Transit-Gateways und einer VPN-Verbindung (Virtual Private Network) zum lokalen Netzwerk erreicht. 

## Voraussetzungen und Einschränkungen
<a name="centralize-network-connectivity-using-aws-transit-gateway-prereqs"></a>

**Voraussetzungen**
+ Ein Konto für das Hosten von Netzwerkdiensten, das als Mitgliedskonto einer Organisation in AWS Organizations verwaltet wird
+ VPCs in mehreren AWS-Konten, ohne sich überlappende Classless Inter-Domain Routing (CIDR) -Blöcke

**Einschränkungen**

Dieses Muster unterstützt nicht die Isolierung des Datenverkehrs zwischen bestimmten Netzwerken VPCs oder dem lokalen Netzwerk. Alle an das Transit-Gateway angeschlossenen Netzwerke können sich gegenseitig erreichen. Um den Verkehr zu isolieren, müssen Sie benutzerdefinierte Routentabellen auf dem Transit-Gateway verwenden. Dieses Muster verbindet das Netzwerk VPCs und das lokale Netzwerk nur mithilfe einer einzigen Standard-Routentabelle für das Transit-Gateway, was die einfachste Konfiguration darstellt.

## Architektur
<a name="centralize-network-connectivity-using-aws-transit-gateway-architecture"></a>

**Zieltechnologie-Stack**
+ AWS Transit Gateway
+  Site-to-SiteAWS-VPN
+ VPC
+ AWS Resource Access Manager (AWS RAM)

 

**Zielarchitektur**

![\[AWS Transit Gateway verbindet das lokale Netzwerk mit mehreren AWS-Konten innerhalb einer Region. VPCs\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e23f5faf-e75e-42a3-80e3-142516a2db4e/images/1ecf7e04-bbf8-4304-88c8-6aceb7271d1e.jpeg)


## Tools
<a name="centralize-network-connectivity-using-aws-transit-gateway-tools"></a>

**AWS-Services**
+ Mit [AWS Resource Access Manager (AWS RAM)](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) können Sie Ihre Ressourcen sicher über Ihre AWS-Konten, Organisationseinheiten oder Ihre gesamte Organisation von AWS Organizations aus teilen.
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html) ist ein zentraler Hub, der virtuelle private Clouds (VPCs) und lokale Netzwerke verbindet.

## Epen
<a name="centralize-network-connectivity-using-aws-transit-gateway-epics"></a>

### Erstellen Sie ein Transit-Gateway im Netzwerkdienstkonto
<a name="create-a-transit-gateway-in-the-network-services-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Transit-Gateway. | Erstellen Sie in dem AWS-Konto, in dem Sie Netzwerkdienste hosten möchten, ein Transit-Gateway in der AWS-Zielregion. Anweisungen finden Sie unter [Ein Transit-Gateway erstellen](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-transit-gateways.html#create-tgw). Beachten Sie Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-network-connectivity-using-aws-transit-gateway.html) | Netzwerkadministrator | 

### Connect das Transit-Gateway mit Ihrem lokalen Netzwerk
<a name="connect-the-transit-gateway-to-your-on-premises-network"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie ein Kunden-Gateway-Gerät für die VPN-Verbindung ein. | Das Kunden-Gateway-Gerät ist an der lokalen Seite der Site-to-Site VPN-Verbindung zwischen dem Transit-Gateway und Ihrem lokalen Netzwerk angeschlossen. Weitere Informationen finden Sie in der Site-to-Site AWS-VPN-Dokumentation unter [Ihr Kunden-Gateway-Gerät](https://docs.aws.amazon.com/vpn/latest/s2svpn/your-cgw.html). Identifizieren oder starten Sie ein unterstütztes lokales Kundengerät und notieren Sie sich dessen öffentliche IP-Adresse. Die VPN-Konfiguration wird zu einem späteren Zeitpunkt in diesem Epos abgeschlossen.  | Netzwerkadministrator | 
| Erstellen Sie im Netzwerkdienstkonto einen VPN-Anhang zum Transit-Gateway. | Um eine Verbindung einzurichten, erstellen Sie einen VPN-Anhang für das Transit-Gateway. Anweisungen finden Sie unter [VPN-Anlagen für das Transit-Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpn-attachments.html). | Netzwerkadministrator | 
| Konfigurieren Sie das VPN auf dem Kunden-Gateway-Gerät in Ihrem lokalen Netzwerk.  | Laden Sie die Konfigurationsdatei für die Site-to-Site VPN-Verbindung herunter, die dem Transit-Gateway zugeordnet ist, und konfigurieren Sie die VPN-Einstellungen auf dem Kunden-Gateway-Gerät. Anweisungen finden Sie unter [Laden Sie die Konfigurationsdatei](https://docs.aws.amazon.com/vpn/latest/s2svpn/SetUpVPNConnections.html#vpn-download-config) herunter. | Netzwerkadministrator | 

### Teilen Sie das Transit-Gateway im Netzwerk-Services-Konto mit anderen AWS-Konten oder Ihrer Organisation
<a name="share-the-transit-gateway-in-the-network-services-account-to-other-aws-accounts-or-your-organization"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktivieren Sie im Verwaltungskonto von AWS Organizations die Option Teilen. | Um das Transit-Gateway mit Ihrer Organisation oder mit bestimmten Organisationseinheiten zu teilen, aktivieren Sie die gemeinsame Nutzung in AWS Organizations. Andernfalls müssten Sie das Transit-Gateway für jedes Konto einzeln teilen. Anweisungen finden Sie unter [Aktivieren der gemeinsamen Nutzung von Ressourcen innerhalb von AWS Organizations](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-orgs). | AWS-Systemadministrator | 
| Erstellen Sie die Transit-Gateway-Ressourcenfreigabe im Netzwerkdienstkonto. |  VPCs Damit andere AWS-Konten innerhalb Ihrer Organisation eine Verbindung zum Transit-Gateway herstellen können, verwenden Sie im Netzwerk-Services-Konto die AWS-RAM-Konsole, um die Transit-Gateway-Ressource gemeinsam zu nutzen. Anweisungen finden Sie unter [Eine gemeinsame Nutzung von Ressourcen erstellen](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-create). | AWS-Systemadministrator | 

### Connect VPCs zum Transit-Gateway her
<a name="connect-vpcs-to-the-transit-gateway"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie VPC-Anhänge in einzelnen Konten.  | Erstellen Sie in den Konten, für die das Transit-Gateway gemeinsam genutzt wurde, Transit-Gateway-VPC-Anlagen. Anweisungen finden Sie unter [Erstellen eines Transit-Gateway-Anhangs zu einer VPC](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpc-attachments.html#create-vpc-attachment). | Netzwerkadministrator | 
| Akzeptieren Sie die VPC-Anhangsanfragen. | Akzeptieren Sie im Netzwerkdienstkonto die VPC-Anhangsanforderungen des Transit-Gateways. Anweisungen finden Sie unter [Akzeptieren eines gemeinsamen Anhangs](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-transit-gateways.html#tgw-accept-shared-attachment). | Netzwerkadministrator | 

### Routing konfigurieren
<a name="configure-routing"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie Routen in einem individuellen Konto VPCs. | Fügen Sie in jeder einzelnen Konto-VPC Routen zum lokalen Netzwerk und zu anderen VPC-Netzwerken hinzu, wobei Sie das Transit-Gateway als Ziel verwenden. Anweisungen finden [Sie unter Hinzufügen und Entfernen von Routen aus einer Routentabelle](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes). | Netzwerkadministrator | 
| Konfigurieren Sie Routen in der Transit-Gateway-Routentabelle. | Routen von VPCs und die VPN-Verbindung sollten weitergegeben werden und in der Standardroutentabelle des Transit-Gateways erscheinen. Erstellen Sie bei Bedarf statische Routen (ein Beispiel sind statische Routen für die statische VPN-Verbindung) in der Standardroutentabelle des Transit-Gateways. Anweisungen finden Sie unter [Erstellen einer statischen Route](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-route-tables.html#tgw-create-static-route). | Netzwerkadministrator | 
| Fügen Sie Regeln für Sicherheitsgruppen und Netzwerkzugriffskontrolllisten (Network Access Control List, ACL) hinzu. | Stellen Sie für die EC2 Instances und andere Ressourcen in der VPC sicher, dass die Sicherheitsgruppenregeln und die Netzwerk-ACL-Regeln den Datenverkehr sowohl zwischen dem lokalen Netzwerk VPCs als auch zwischen dem lokalen Netzwerk zulassen. Anweisungen finden Sie unter [Steuern des Datenverkehrs zu Ressourcen mithilfe von Sicherheitsgruppen](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#AddRemoveRules) und [Hinzufügen und Löschen von Regeln aus einer ACL](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#Rules). | Netzwerkadministrator | 

### Testen Sie die Konnektivität
<a name="test-connectivity"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie die Konnektivität zwischen VPCs. | Stellen Sie sicher, dass Netzwerk-ACL und Sicherheitsgruppen ICMP-Verkehr (Internet Control Message Protocol) zulassen, und pingen Sie dann von Instances in einer VPC an eine andere VPC, die ebenfalls mit dem Transit-Gateway verbunden ist. | Netzwerkadministrator | 
| Testen Sie die Konnektivität zwischen VPCs und dem lokalen Netzwerk. | Stellen Sie sicher, dass Netzwerk-ACL-Regeln, Sicherheitsgruppenregeln und alle Firewalls ICMP-Verkehr zulassen, und pingen Sie dann zwischen dem lokalen Netzwerk und den EC2 Instanzen im. VPCs Die Netzwerkkommunikation muss zuerst vom lokalen Netzwerk aus initiiert werden, um die VPN-Verbindung in den Status zu versetzen. `UP` | Netzwerkadministrator | 

## Zugehörige Ressourcen
<a name="centralize-network-connectivity-using-aws-transit-gateway-resources"></a>
+ [Aufbau einer skalierbaren und sicheren AWS-Netzwerkinfrastruktur mit mehreren VPC](https://d1.awsstatic.com/whitepapers/building-a-scalable-and-secure-multi-vpc-aws-network-infrastructure.pdf) (AWS-Whitepaper)
+ [Arbeiten mit gemeinsam genutzten Ressourcen](https://docs.aws.amazon.com/ram/latest/userguide/working-with.html) (AWS-RAM-Dokumentation)
+ [Arbeiten mit Transit-Gateways](https://docs.aws.amazon.com/vpc/latest/tgw/working-with-transit-gateways.html) (AWS Transit Gateway Gateway-Dokumentation)

# Konfigurieren Sie die HTTPS-Verschlüsselung für Oracle JD Edwards EnterpriseOne auf Oracle WebLogic mithilfe eines Application Load Balancer
<a name="configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer"></a>

*Thanigaivel Thirumalai, Amazon Web Services*

## Zusammenfassung
<a name="configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer-summary"></a>

Dieses Muster erklärt, wie die HTTPS-Verschlüsselung für SSL-Offloading in Oracle JD Edwards auf Oracle-Workloads konfiguriert wird. EnterpriseOne WebLogic Bei diesem Ansatz wird der Datenverkehr zwischen dem Browser des Benutzers und einem Load Balancer verschlüsselt, um die Server von der Verschlüsselungslast zu entlasten. EnterpriseOne 

Viele Benutzer skalieren die Stufe der EnterpriseOne JAVA Virtual Machine (JVM) horizontal mithilfe eines [AWS Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html).Der Load Balancer dient als zentrale Anlaufstelle für Kunden und verteilt den eingehenden Datenverkehr auf mehrere. JVMs Optional kann der Load Balancer den Datenverkehr auf mehrere Availability Zones verteilen und die Verfügbarkeit von erhöhen. EnterpriseOne

Der in diesem Muster beschriebene Prozess konfiguriert die Verschlüsselung zwischen dem Browser und dem Load Balancer, anstatt den Datenverkehr zwischen dem Load Balancer und dem zu verschlüsseln. EnterpriseOne JVMs *Dieser Ansatz wird als SSL-Offloading bezeichnet.* Die Auslagerung des SSL-Entschlüsselungsprozesses vom EnterpriseOne Web- oder Anwendungsserver auf den Application Load Balancer reduziert die Belastung der Anwendungsseite. Nach der SSL-Terminierung am Load Balancer wird der unverschlüsselte Datenverkehr an die Anwendung auf AWS weitergeleitet.

[Oracle JD Edwards EnterpriseOne](https://www.oracle.com/applications/jd-edwards-enterpriseone/) ist eine ERP-Lösung (Enterprise Resource Planning) für Unternehmen, die Produkte oder Sachanlagen herstellen, konstruieren, vertreiben, warten oder verwalten. JD Edwards EnterpriseOne unterstützt verschiedene Hardware, Betriebssysteme und Datenbankplattformen.

## Voraussetzungen und Einschränkungen
<a name="configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Eine AWS Identity and Access Management (IAM) -Rolle, die berechtigt ist, AWS-Serviceanrufe zu tätigen und AWS-Ressourcen zu verwalten
+ Ein SSL-Zertifikat

**Produktversionen**
+ Dieses Muster wurde mit Oracle WebLogic 12c getestet, Sie können aber auch andere Versionen verwenden.

## Architektur
<a name="configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer-architecture"></a>

Es gibt mehrere Ansätze, um SSL-Offloading durchzuführen. Dieses Muster verwendet einen Application Load Balancer und einen Oracle HTTP Server (OHS), wie in der folgenden Abbildung dargestellt.

![\[SSL-Offloading mit einem Load Balancer und OHS\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/c62b976b-31e4-42ca-b7e8-13f7c9d9a187/images/2ae2d0eb-b9f3-41f8-ad86-9af3aade7072.png)


Das folgende Diagramm zeigt das JVM-Layout von JD Edwards EnterpriseOne, Application Load Balancer und Java Application Server (JAS).

![\[EnterpriseOne, Load Balancer und JAS JVM-Layout\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/c62b976b-31e4-42ca-b7e8-13f7c9d9a187/images/72ea35b0-2907-48b3-aeb7-0c5d9a3b831b.png)


## Tools
<a name="configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer-tools"></a>

**AWS-Services**
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) verteilen den eingehenden Anwendungsdatenverkehr auf mehrere Ziele, z. B. Amazon Elastic Compute Cloud ( EC2 Amazon-Instances), in mehreren Availability Zones.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) unterstützt Sie bei der Erstellung, Speicherung und Erneuerung öffentlicher und privater SSL/TLS X.509-Zertifikate und -Schlüssel, die Ihre AWS-Websites und -Anwendungen schützen.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.

## Best Practices
<a name="configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer-best-practices"></a>
+ [Bewährte Methoden für ACM finden Sie in der ACM-Dokumentation.](https://docs.aws.amazon.com/acm/latest/userguide/acm-bestpractices.html)

## Epen
<a name="configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer-epics"></a>

### Einrichtung WebLogic und Arbeitsschutz
<a name="set-up-weblogic-and-ohs"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren und konfigurieren Sie Oracle-Komponenten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer.html) | JDE CNC, Administrator WebLogic  | 
| Aktivieren Sie das WebLogic Plugin auf Domainebene. | Das WebLogic Plugin ist für den Lastenausgleich erforderlich. Um das Plugin zu aktivieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer.html) | JDE CNC, Administrator WebLogic  | 
| Bearbeiten Sie die Konfigurationsdatei. | Die `mod_wl_ohs.conf` Datei konfiguriert Proxy-Anfragen von OHS an. WebLogic[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer.html)<pre><VirtualHost *:8000><br /><Location /jde><br />WLSRequest On<br />SetHandler weblogic-handler<br />WebLogicHost localhost<br />WebLogicPort 8000<br />WLProxySSL On<br />WLProxySSLPassThrough On<br /></Location><br /></VirtualHost></pre> | JDE CNC, Administrator WebLogic  | 
| Starten Sie OHS mit dem Enterprise Manager. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer.html) | JDE CNC, Administrator WebLogic  | 

### Den Application Load Balancer konfigurieren
<a name="configure-the-application-load-balancer"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie eine Zielgruppe ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer.html)Eine ausführliche Anleitung finden Sie in der [Elastic Load Balancing Balancing-Dokumentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html). | AWS-Administrator | 
| Richten Sie den Load Balancer ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer.html) | AWS-Administrator | 
| Fügen Sie einen Route 53 53-Eintrag (DNS) hinzu. | (Optional) Sie können einen Amazon Route 53 53-DNS-Eintrag für die Subdomain hinzufügen. Dieser Datensatz würde auf Ihren Application Load Balancer verweisen. Anweisungen finden Sie in der [Dokumentation zu Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) | AWS-Administrator | 

## Fehlerbehebung
<a name="configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Der HTTP-Server wird nicht angezeigt. | Wenn der **HTTP-Server** nicht in der **Zielnavigationsliste** der Enterprise Manager-Konsole erscheint, gehen Sie wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer.html)Wenn die Instanz erstellt und die Änderungen aktiviert wurden, können Sie den HTTP-Server im **Zielnavigationsbereich** sehen. | 

## Zugehörige Ressourcen
<a name="configure-https-encryption-for-oracle-jd-edwards-enterpriseone-on-oracle-weblogic-by-using-an-application-load-balancer-resources"></a>

**AWS-Dokumentation**
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)
+ [Arbeiten mit öffentlich gehosteten Zonen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/AboutHZWorkingWith.html)
+ [Arbeiten mit privaten Hosting-Zonen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)

**Oracle-Dokumentation:**
+ [Überblick über das Oracle WebLogic Server Proxy Plug-In](https://docs.oracle.com/middleware/1221/webtier/develop-plugin/overview.htm#PLGWL391)
+ [ WebLogic Server mit dem Infrastructure Installer installieren](https://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/wls/12c/12_2_1/02-01-004-InstallWLSInfrastructure/installweblogicinfrastructure.html)
+ [Installation und Konfiguration von Oracle HTTP Server](https://docs.oracle.com/middleware/1221/core/install-ohs/toc.htm)

# Stellen Sie über ein privates Netzwerk eine Connect zu Daten- und Steuerungsebenen des Application Migration Service her
<a name="connect-to-application-migration-service-data-and-control-planes-over-a-private-network"></a>

*Dipin Jain und Mike Kuznetsov, Amazon Web Services*

## Zusammenfassung
<a name="connect-to-application-migration-service-data-and-control-planes-over-a-private-network-summary"></a>

Dieses Muster erklärt, wie Sie mithilfe von VPC-Schnittstellen-Endpunkten eine Verbindung zu einer AWS Application Migration Service Daten- und Steuerungsebene in einem privaten, sicheren Netzwerk herstellen können.

Der Application Migration Service ist eine hochautomatisierte lift-and-shift (Rehost-) Lösung, die die Migration von Anwendungen nach vereinfacht, beschleunigt und die Kosten senkt. AWS Es ermöglicht Unternehmen, eine große Anzahl von physischen, virtuellen oder Cloud-Servern ohne Kompatibilitätsprobleme, Leistungsunterbrechungen oder lange Umstellungsfenster neu zu hosten. Der Anwendungsmigrationsdienst ist verfügbar unter. AWS-Managementkonsole Dies ermöglicht eine nahtlose Integration mit anderen AWS-Services Anbietern wie AWS CloudTrail Amazon CloudWatch und AWS Identity and Access Management (IAM).

Sie können über eine private Verbindung eine Verbindung von einem Quelldatencenter zu einer Datenebene herstellen, d. h. zu einem Subnetz, das als Staging-Bereich für die Datenreplikation in der Ziel-VPC dient AWS Direct Connect, indem Sie Site-to-Site VPN Dienste oder VPC-Peering im Application Migration Service verwenden. Sie können auch [Schnittstellen-VPC-Endpunkte](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html) verwenden, AWS PrivateLink um über ein privates Netzwerk eine Verbindung zu einer Application Migration Service-Kontrollebene herzustellen. 

## Voraussetzungen und Einschränkungen
<a name="connect-to-application-migration-service-data-and-control-planes-over-a-private-network-prereqs"></a>

**Voraussetzungen**
+ **Subnetz für den Staging-Bereich** — Bevor Sie den Application Migration Service einrichten, erstellen Sie ein Subnetz, das als Staging-Bereich für Daten verwendet werden soll, auf die von Ihren Quellservern repliziert werden AWS (d. h. auf eine Datenebene). Sie müssen dieses Subnetz in der [Vorlage für die Replikationseinstellungen](https://docs.aws.amazon.com/mgn/latest/ug/template-vs-server.html) angeben, wenn Sie zum ersten Mal auf die Application Migration Service-Konsole zugreifen. Sie können dieses Subnetz für bestimmte Quellserver in der Vorlage für Replikationseinstellungen überschreiben. Sie können zwar ein vorhandenes Subnetz in Ihrem verwenden AWS-Konto, wir empfehlen jedoch, zu diesem Zweck ein neues, dediziertes Subnetz zu erstellen.
+ **Netzwerkanforderungen** — Die Replikationsserver, die vom Application Migration Service in Ihrem Staging-Bereich-Subnetz gestartet werden, müssen in der Lage sein, Daten an den API-Endpunkt des Application Migration Service zu senden`https://mgn.<region>.amazonaws.com/`, auf den AWS-Region Sie replizieren (z. B.). `<region>` `https://mgn.us-east-1.amazonaws.com` Zum Herunterladen der Application Migration Service-Software ist der Amazon Simple Storage Service URLs (Amazon S3) -Service erforderlich.
  + Das AWS Replication Agent-Installationsprogramm sollte Zugriff auf die Amazon Simple Storage Service (Amazon S3) -Bucket-URL haben, die AWS-Region Sie mit dem Application Migration Service verwenden.
  + Das Staging-Area-Subnetz sollte Zugriff auf Amazon S3 haben.
  + Die Quellserver, auf denen der AWS Replication Agent installiert ist, müssen in der Lage sein, Daten an die Replikationsserver im Staging-Bereich-Subnetz und an den API-Endpunkt des Application Migration Service unter zu senden. `https://mgn.<region>.amazonaws.com/`

In der folgenden Tabelle sind die erforderlichen Ports aufgeführt.


| 
| 
| Quelle | Ziel | Port | Die Ausgabe des obigen Befehls sieht in etwa folgendermaßen aus (JSON format). | 
| --- |--- |--- |--- |
| Quellrechenzentrum | Amazon S3 S3-Dienst URLs | 443 (TCP) | [Kommunikation über TCP-Port 443](https://docs.aws.amazon.com/mgn/latest/ug/Network-Requirements.html#TCP-443) | 
| Quellrechenzentrum | AWS-Region-spezifische Konsolenadresse für den Application Migration Service | 443 (TCP) | [Kommunikation zwischen den Quellservern und dem Application Migration Service über TCP-Port 443](https://docs.aws.amazon.com/mgn/latest/ug/Network-Requirements.html#Source-Manager-TCP-443) | 
| Quellrechenzentrum | Subnetz für den Bereitstellungsbereich | 1500 (TCP) | [Kommunikation zwischen den Quellservern und dem Staging-Area-Subnetz über TCP-Port 1500](https://docs.aws.amazon.com/mgn/latest/ug/Network-Requirements.html#Communication-TCP-1500) | 
| Subnetz des Staging-Bereichs | AWS-Region-spezifische Konsolenadresse für den Application Migration Service | 443 (TCP) | [Kommunikation zwischen dem Staging-Area-Subnetz und dem Application Migration Service über TCP-Port 443](https://docs.aws.amazon.com/mgn/latest/ug/Network-Requirements.html#Communication-TCP-443-Staging) | 
| Subnetz des Staging-Bereichs | Amazon S3 S3-Dienst URLs | 443 (TCP) | [Kommunikation über TCP-Port 443](https://docs.aws.amazon.com/mgn/latest/ug/Network-Requirements.html#TCP-443) | 
| Subnetz des Staging-Bereichs | Amazon Elastic Compute Cloud (Amazon EC2) -Endpunkt des Subnetzes AWS-Region | 443 (TCP) | [Kommunikation über TCP-Port 443](https://docs.aws.amazon.com/mgn/latest/ug/Network-Requirements.html#TCP-443) | 

**-Einschränkungen**

Der Anwendungsmigrationsdienst ist derzeit nicht in allen AWS-Regionen Betriebssystemen verfügbar.
+ [Unterstützt AWS-Regionen](https://docs.aws.amazon.com/mgn/latest/ug/supported-regions.html)
+ [Unterstützte Betriebssysteme](https://docs.aws.amazon.com/mgn/latest/ug/Supported-Operating-Systems.html)

## Architektur
<a name="connect-to-application-migration-service-data-and-control-planes-over-a-private-network-architecture"></a>

Das folgende Diagramm zeigt die Netzwerkarchitektur für eine typische Migration. Weitere Informationen zu dieser Architektur finden Sie in der [Dokumentation zum Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/Network-Settings-Video.html) und im [Video zur Architektur und Netzwerkarchitektur des Application Migration Service](https://youtu.be/ao8geVzmmRo).

![\[Netzwerkarchitektur für Application Migration Service für eine typische Migration\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/21346c0f-0643-4f4f-b21f-fdfe24fc6a8f/images/546598b2-8026-4849-a441-eaa2bc2bf6bb.png)


Die folgende detaillierte Ansicht zeigt die Konfiguration der Schnittstellen-VPC-Endpunkte im Staging-Bereich VPC zur Verbindung von Amazon S3 und Application Migration Service.

![\[Netzwerkarchitektur für den Application Migration Service für eine typische Migration — detaillierte Ansicht\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/21346c0f-0643-4f4f-b21f-fdfe24fc6a8f/images/bd0dfd42-4ab0-466f-b696-804dedcf4513.png)


## Tools
<a name="connect-to-application-migration-service-data-and-control-planes-over-a-private-network-tools"></a>
+ [AWS Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)vereinfacht, beschleunigt und reduziert die Kosten für das Rehosten von Anwendungen auf. AWS
+ Mit [Schnittstellen-VPC-Endpunkten](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html) können Sie eine Verbindung zu Diensten herstellen, die von bereitgestellt werden, AWS PrivateLink ohne dass ein Internet-Gateway, ein NAT-Gerät, eine VPN-Verbindung oder AWS Direct Connect eine Verbindung erforderlich ist. Instances in Ihrer VPC benötigen keine öffentlichen IP-Adressen, um mit den Ressourcen in dem Service zu kommunizieren. Der Datenverkehr zwischen Ihrer VPC und dem anderen Service verlässt das Amazon-Netzwerk nicht.

## Epen
<a name="connect-to-application-migration-service-data-and-control-planes-over-a-private-network-epics"></a>

### Endpunkte für Application Migration Service EC2, Amazon und Amazon S3 erstellen
<a name="create-endpoints-for-mgn-ec2-and-s3"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie den Schnittstellenendpunkt für den Application Migration Service. | Das Quellrechenzentrum und die Staging-Bereichs-VPC stellen über den Schnittstellenendpunkt, den Sie in der Ziel-Staging-Bereichs-VPC erstellen, eine private Verbindung mit der Application Migration Service-Kontrollebene her. So erstellen Sie den Endpunkt:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/connect-to-application-migration-service-data-and-control-planes-over-a-private-network.html)Weitere Informationen finden Sie unter [Zugreifen und AWS-Service Verwenden eines VPC-Schnittstellen-Endpunkts in der Amazon VPC-Dokumentation](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html). | Leiter der Migration | 
| Konfigurieren Sie den Schnittstellenendpunkt für Amazon EC2. | Die Staging-Bereichs-VPC stellt über den Schnittstellenendpunkt, den Sie in der Ziel-Staging-Bereichs-VPC erstellen, eine private Verbindung zur EC2 Amazon-API her. Folgen Sie den Anweisungen in der vorherigen Geschichte, um den Endpunkt zu erstellen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/connect-to-application-migration-service-data-and-control-planes-over-a-private-network.html) | Leiter der Migration | 
| Konfigurieren Sie den Schnittstellenendpunkt für Amazon S3. | Das Quellrechenzentrum und die Staging-Bereichs-VPC stellen über den Schnittstellenendpunkt, den Sie in der Ziel-Staging-Bereichs-VPC erstellen, privat eine Verbindung zur Amazon S3 S3-API her. Folgen Sie den Anweisungen in der ersten Geschichte, um den Endpunkt zu erstellen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/connect-to-application-migration-service-data-and-control-planes-over-a-private-network.html)Sie verwenden einen Schnittstellenendpunkt, da Gateway-Endpunktverbindungen nicht von einer VPC aus erweitert werden können. (Einzelheiten finden Sie in der [AWS PrivateLink Dokumentation](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html).) | Leiter der Migration | 
| Konfigurieren Sie den Amazon S3 Gateway-Endpunkt. | Während der Konfigurationsphase muss der Replikationsserver eine Verbindung zu einem S3-Bucket herstellen, um die Softwareupdates des AWS Replication Servers herunterzuladen. Amazon S3 S3-Schnittstellenendpunkte unterstützen jedoch keine privaten DNS-Namen*, und es gibt keine Möglichkeit,* einem Replikationsserver einen Amazon S3 S3-Endpunkt-DNS-Namen zur Verfügung zu stellen. Um dieses Problem zu beheben, erstellen Sie einen Amazon S3 S3-Gateway-Endpunkt in der VPC, zu der das Staging-Bereichs-Subnetz gehört, und aktualisieren die Routing-Tabellen des Staging-Subnetzes mit den entsprechenden Routen. Weitere Informationen finden Sie in der Dokumentation unter Einen [Gateway-Endpunkt erstellen](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#create-gateway-endpoint-s3). AWS PrivateLink  | Cloud-Administrator | 
| Konfigurieren Sie lokales DNS, um private DNS-Namen für Endgeräte aufzulösen. | Die Schnittstellenendpunkte für Application Migration Service und Amazon EC2 haben private DNS-Namen, die in der VPC aufgelöst werden können. Sie müssen jedoch auch lokale Server konfigurieren, um private DNS-Namen für diese Schnittstellenendpunkte aufzulösen.Es gibt mehrere Möglichkeiten, diese Server zu konfigurieren. In diesem Muster haben wir diese Funktionalität getestet, indem wir lokale DNS-Abfragen an den Amazon Route 53 Resolver eingehenden Endpunkt im Staging-Bereich VPC weitergeleitet haben. Weitere Informationen finden Sie unter [Auflösen von DNS-Abfragen zwischen VPCs und Ihrem Netzwerk](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-overview-DSN-queries-to-vpc.html) in der Route 53-Dokumentation. | Ingenieur für Migration | 

### Stellen Sie über eine private Connect eine Verbindung zur Kontrollebene des Application Migration Service her
<a name="connect-to-the-mgn-control-plane-over-a-private-link"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie AWS Replication Agent mithilfe von AWS PrivateLink. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/connect-to-application-migration-service-data-and-control-planes-over-a-private-network.html)Hier ist ein Beispiel für Linux:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/connect-to-application-migration-service-data-and-control-planes-over-a-private-network.html)Nachdem Sie Ihre Verbindung mit Application Migration Service hergestellt und den AWS Replication Agent installiert haben, folgen Sie den Anweisungen in der [Dokumentation zum Application Migration Service](https://docs.aws.amazon.com/mgn/latest/ug/migration-workflow-gs.html), um Ihre Quellserver auf Ihre Ziel-VPC und Ihr Zielsubnetz zu migrieren. | Migrationsingenieur | 

## Zugehörige Ressourcen
<a name="connect-to-application-migration-service-data-and-control-planes-over-a-private-network-resources"></a>

**Dokumentation zum Anwendungsmigrationsdienst**
+ [Konzepte](https://docs.aws.amazon.com/mgn/latest/ug/CloudEndure-Concepts.html)
+ [Arbeitsablauf bei der Migration](https://docs.aws.amazon.com/mgn/latest/ug/migration-workflow-gs.html)
+ [Schnellstartanleitung](https://docs.aws.amazon.com/mgn/latest/ug/quick-start-guide-gs.html)
+ [HÄUFIG GESTELLTE FRAGEN](https://docs.aws.amazon.com/mgn/latest/ug/FAQ.html)
+ [Fehlersuche](https://docs.aws.amazon.com/mgn/latest/ug/troubleshooting.html)

**Weitere Ressourcen**
+ [Rehosten Ihrer Anwendungen in einer Architektur mit mehreren Konten unter Verwendung AWS von VPC-Schnittstellenendpunkten](https://docs.aws.amazon.com/prescriptive-guidance/latest/rehost-multi-account-architecture-interface-endpoints/) (AWS Prescriptive Guidance Guide Guide)
+ [AWS Application Migration Service — Eine technische Einführung](https://www.aws.training/Details/eLearning?id=71732) (Komplettlösung für Schulung und Zertifizierung)AWS 
+ [AWS Application Migration Service Architektur und Netzwerkarchitektur](https://youtu.be/ao8geVzmmRo) (Video)

## Zusätzliche Informationen
<a name="connect-to-application-migration-service-data-and-control-planes-over-a-private-network-additional"></a>

**Problembehandlung bei *AWS *****Replication Agent-Installationen auf Linux-Servern**

Wenn Sie auf einem Amazon Linux-Server einen **gcc-Fehler** erhalten, konfigurieren Sie das Paket-Repository und verwenden Sie den folgenden Befehl:

```
## sudo yum groupinstall "Development Tools"
```

# Erstellen Sie Infoblox-Objekte mithilfe von CloudFormation benutzerdefinierten AWS-Ressourcen und Amazon SNS
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns"></a>

*Tim Sutton, Amazon Web Services*

## Zusammenfassung
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-summary"></a>

**Hinweis**: AWS Cloud9 ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS Cloud9 können den Service weiterhin wie gewohnt nutzen. [Weitere Informationen](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

Mit dem Infoblox Domain Name System (DNS), dem Dynamic Host Configuration Protocol (DHCP) und der IP-Adressverwaltung ([Infoblox DDI](https://www.infoblox.com/products/ddi/)) können Sie eine komplexe Hybridumgebung zentralisieren und effizient steuern. Mit Infoblox DDI können Sie alle Netzwerkressourcen in einer autoritativen IP-Adressverwaltungsdatenbank (IPAM) ermitteln und aufzeichnen. Darüber hinaus können Sie DNS vor Ort und in der Amazon Web Services (AWS) Cloud verwalten, indem Sie dieselben Appliances verwenden.

Dieses Muster beschreibt, wie eine CloudFormation benutzerdefinierte AWS-Ressource verwendet wird, um Infoblox-Objekte (z. B. DNS-Einträge oder IPAM-Objekte) zu erstellen, indem die Infoblox WAPI-API aufgerufen wird. [Weitere Informationen zur Infoblox-WAPI finden Sie in der WAPI-Dokumentation in der Infoblox-Dokumentation.](https://www.infoblox.com/wp-content/uploads/infoblox-deployment-infoblox-rest-api.pdf)

Durch die Verwendung des Ansatzes dieses Musters erhalten Sie eine einheitliche Ansicht der DNS-Einträge und IPAM-Konfigurationen für Ihre AWS- und lokalen Umgebungen. Außerdem müssen Sie keine manuellen Prozesse mehr durchführen, die Datensätze erstellen und Ihre Netzwerke bereitstellen. Sie können den Ansatz dieses Musters für die folgenden Anwendungsfälle verwenden:
+ Hinzufügen eines A-Eintrags nach dem Erstellen einer Amazon Elastic Compute Cloud (Amazon EC2) -Instanz 
+ Hinzufügen eines CNAME-Eintrags nach der Erstellung eines Application Load Balancer
+ Hinzufügen eines Netzwerkobjekts nach dem Erstellen einer Virtual Private Cloud (VPC)
+ Bereitstellung des nächsten Netzwerkbereichs und Verwendung dieses Bereichs zur Erstellung von Subnetzen

Sie können dieses Muster auch erweitern und andere Infoblox-Gerätefunktionen verwenden, z. B. das Hinzufügen verschiedener DNS-Eintragstypen oder die Konfiguration von Infoblox vDiscovery. 

Das Muster verwendet ein hub-and-spoke Design, bei dem der Hub Konnektivität zur Infoblox-Appliance in der AWS-Cloud oder vor Ort benötigt und AWS Lambda verwendet, um die Infoblox-API aufzurufen. Der Spoke befindet sich in demselben oder einem anderen Konto in derselben Organisation in AWS Organizations und ruft die Lambda-Funktion mithilfe einer CloudFormation benutzerdefinierten AWS-Ressource auf.

## Voraussetzungen und Einschränkungen
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-prereqs"></a>

**Voraussetzungen**
+ Eine bestehende Infoblox-Appliance oder ein Infoblox-Grid, das in der AWS-Cloud, vor Ort oder in beiden installiert und mit einem Admin-Benutzer konfiguriert ist, der IPAM- und DNS-Aktionen verwalten kann. Weitere Informationen dazu finden Sie unter [Über Administratorkonten](https://docs.infoblox.com/display/nios86/About+Admin+Accounts) in der Infoblox-Dokumentation. 
+ Eine bestehende autoritative DNS-Zone, der Sie Datensätze auf der Infoblox-Appliance hinzufügen möchten. Weitere Informationen dazu finden Sie unter [Konfiguration autoritativer Zonen](https://docs.infoblox.com/display/nios86/Configuring+Authoritative+Zones) in der Infoblox-Dokumentation.  
+ Zwei aktive AWS-Konten in AWS Organizations. Ein Konto ist das Hub-Konto und das andere Konto ist das Spoke-Konto.
+ Die Hub- und Spoke-Konten müssen sich in derselben AWS-Region befinden. 
+ Die VPC des Hub-Kontos muss eine Verbindung zur Infoblox-Appliance herstellen, beispielsweise mithilfe von AWS Transit Gateway oder VPC-Peering.
+ [AWS Serverless Application Model (AWS SAM),](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) lokal installiert und konfiguriert mit AWS Cloud9 oder AWS. CloudShell
+ Die `ClientTest.yaml` Dateien `Infoblox-Hub.zip` und (angehängt), die in die lokale Umgebung heruntergeladen wurden, die AWS SAM enthält.

**Einschränkungen**
+ Das Service-Token der CloudFormation benutzerdefinierten AWS-Ressource muss aus derselben Region stammen, in der der Stack erstellt wurde. Wir empfehlen, dass Sie in jeder Region ein Hub-Konto verwenden, anstatt in einer Region ein Amazon Simple Notification Service (Amazon SNS) -Thema zu erstellen und die Lambda-Funktion in einer anderen Region aufzurufen.

**Produktversionen**
+ Infoblox WAPI-Version 2.7

## Architektur
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-architecture"></a>

Die folgenden Diagramme zeigen den Arbeitsablauf dieses Musters. 

![\[Erstellen von Infoblox-Objekten mithilfe von CloudFormation benutzerdefinierten AWS-Ressourcen und Amazon SNS.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/8d609d3f-6f5e-4084-849f-ca191db8055e/images/3594a064-e103-4211-84b7-da67c41ebb15.png)


Das Diagramm zeigt die folgenden Komponenten für die Lösung dieses Musters:

1. Mit CloudFormation benutzerdefinierten AWS-Ressourcen können Sie benutzerdefinierte Bereitstellungslogik in Vorlagen schreiben, die AWS CloudFormation ausführt, wenn Sie Stacks erstellen, aktualisieren oder löschen. Wenn Sie einen Stack erstellen, CloudFormation sendet AWS eine `create` Anfrage an ein SNS-Thema, das von einer Anwendung überwacht wird, die auf einer EC2 Instance ausgeführt wird.

1. Die Amazon SNS SNS-Benachrichtigung von der CloudFormation benutzerdefinierten AWS-Ressource wird mit einem bestimmten AWS Key Management Service (AWS KMS) -Schlüssel verschlüsselt, und der Zugriff ist auf Konten in Ihrer Organisation in Organizations beschränkt. Das SNS-Thema initiiert die Lambda-Ressource, die die Infoblox WAPI-API aufruft.

1. Amazon SNS ruft die folgenden Lambda-Funktionen auf, die die Infoblox-WAPI-URL, den Benutzernamen und das Passwort AWS Secrets Manager Amazon Resource Names () als Umgebungsvariablen verwenden: ARNs 
   + `dnsapi.lambda_handler`— Empfängt die `DNSName` `DNSType` ,- und `DNSValue` -Werte von der CloudFormation benutzerdefinierten AWS-Ressource und verwendet diese, um DNS-A-Einträge und CNAMES zu erstellen.
   + `ipaddr.lambda_handler`— Empfängt die`VPCCIDR`, `Type``SubnetPrefix`, und `Network Name` Werte von der CloudFormation benutzerdefinierten AWS-Ressource und verwendet diese, um die Netzwerkdaten zur Infoblox IPAM-Datenbank hinzuzufügen oder die benutzerdefinierte Ressource mit dem nächsten verfügbaren Netzwerk bereitzustellen, das zum Erstellen neuer Subnetze verwendet werden kann.
   + `describeprefixes.lambda_handler`— Ruft die `describe_managed_prefix_lists` AWS-API auf, indem der `"com.amazonaws."+Region+".s3"` Filter verwendet wird, um die erforderlichen Daten abzurufen`prefix ID`.
**Wichtig**  
Diese Lambda-Funktionen sind in Python geschrieben und ähneln sich, rufen aber unterschiedlich APIs auf.

1. Sie können das Infoblox-Grid als physische, virtuelle oder cloudbasierte Netzwerk-Appliances bereitstellen.  Es kann vor Ort oder als virtuelle Appliance mithilfe einer Reihe von Hypervisoren bereitgestellt werden, darunter Microsoft Hyper-V VMware ESXi, Linux KVM und Xen. Sie können das Infoblox-Grid auch mit einem Amazon Machine Image (AMI) in der AWS-Cloud bereitstellen.

1. Das Diagramm zeigt eine Hybridlösung für das Infoblox-Grid, die DNS und IPAM für Ressourcen in der AWS-Cloud und vor Ort bereitstellt.

**Technologie-Stack**
+ AWS CloudFormation
+ IAM
+ AWS KMS
+ AWS Lambda
+ AWS SAM
+ AWS Secrets Manager
+ Amazon SNS
+ Amazon VPC 

## Tools
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-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 Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS-Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) unterstützt Sie bei der Erstellung und Kontrolle kryptografischer Schlüssel, um Ihre Daten zu schützen.
+ [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 Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) ist ein Kontoverwaltungsservice, mit dem Sie mehrere AWS-Konten in einer Organisation konsolidieren können, die Sie erstellen und zentral verwalten.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) hilft Ihnen dabei, hartcodierte Anmeldeinformationen in Ihrem Code, einschließlich Passwörter, durch einen API-Aufruf an Secrets Manager zu ersetzen, um das Geheimnis programmgesteuert abzurufen.
+ Das [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) ist ein Open-Source-Framework, mit dem Sie serverlose Anwendungen in der AWS-Cloud erstellen können.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, mit den Vorteilen der skalierbaren Infrastruktur von AWS.

**Code**

Sie können die `ClientTest.yaml` CloudFormation AWS-Beispielvorlage (beigefügt) verwenden, um den Infoblox-Hub zu testen. Sie können die CloudFormation AWS-Vorlage so anpassen, dass sie die benutzerdefinierten Ressourcen aus der folgenden Tabelle enthält.


|  | 
| --- |
| Erstellen Sie einen A-Datensatz mithilfe der benutzerdefinierten Infoblox-Spoke-Ressource | Rückgabewerte: `infobloxref `— Infoblox-ReferenzenBeispielressource:

```
ARECORDCustomResource:

  Type: "Custom::InfobloxAPI"

  Properties:

    ServiceToken: !Sub  arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxDNSFunction

    DNSName: 'arecordtest.company.com'

    DNSType: 'ARecord' 

    DNSValue: '10.0.0.1'
``` | 
| --- |--- |
| Erstellen Sie einen CNAME-Eintrag mit der benutzerdefinierten Infoblox Spoke-Ressource | **Rückgabewerte:** `infobloxref `— Infoblox-Referenzen**Beispielressource:**<pre>CNAMECustomResource:<br /><br />  Type: "Custom::InfobloxAPI"<br /><br />  Properties:<br /><br />    ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfoblox    <br /><br />    DNSFunction<br /><br />    DNSName: 'cnametest.company.com'<br /><br />    DNSType: 'cname' <br /><br />    DNSValue: 'aws.amazon.com'</pre> | 
| Erstellen Sie ein Netzwerkobjekt mithilfe der benutzerdefinierten Infoblox Spoke-Ressource | **Rückgabewerte:**`infobloxref `— Infoblox-Referenzen`network`— Netzwerkreichweite (dieselbe wie) `VPCCIDR`**Beispielressource:**<pre>VPCCustomResource:<br /><br />  Type: 'Custom::InfobloxAPI'<br /><br />  Properties:<br /><br />    ServiceToken: !Sub  arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxNextSubnetFunction<br /><br />    VPCCIDR: !Ref VpcCIDR<br /><br />    Type: VPC<br /><br />    NetworkName: My-VPC</pre> | 
| Rufen Sie das nächste verfügbare Subnetz mithilfe der benutzerdefinierten Infoblox-Spoke-Ressource ab | **Rückgabewerte:**`infobloxref`— Infoblox-Referenzen`network `— Die Netzwerkreichweite des Subnetzes**Beispielressource:**<pre>Subnet1CustomResource:<br /><br />  Type: 'Custom::InfobloxAPI'<br /><br />  DependsOn: VPCCustomResource<br /><br />  Properties:<br /><br />    ServiceToken: !Sub  arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxNextSubnetFunction<br /><br />    VPCCIDR: !Ref VpcCIDR<br /><br />    Type: Subnet<br /><br />    SubnetPrefix: !Ref SubnetPrefix<br /><br />NetworkName: My-Subnet</pre> | 

## Epen
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-epics"></a>

### Erstellen und konfigurieren Sie die VPC des Hub-Kontos
<a name="create-and-configure-the-hub-accountrsquor-s-vpc"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine VPC mit einer Verbindung zur Infoblox-Appliance. | Melden Sie sich bei der AWS-Managementkonsole für Ihr Hub-Konto an und erstellen Sie eine VPC, indem Sie den Schritten in der [Referenzbereitstellung Amazon VPC on the AWS Cloud Quick Start](https://aws-quickstart.github.io/quickstart-aws-vpc/) von AWS Quick Starts folgen.Die VPC muss über eine HTTPS-Konnektivität zur Infoblox-Appliance verfügen. Wir empfehlen, für diese Verbindung ein privates Subnetz zu verwenden. | Netzwerkadministrator, Systemadministrator | 
| (Optional) Erstellen Sie die VPC-Endpoints für private Subnetze.  | VPC-Endpunkte bieten Konnektivität zu öffentlichen Diensten für Ihre privaten Subnetze. Die folgenden Endpunkte sind erforderlich:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns.html)Weitere Informationen zum Erstellen von Endpunkten für private Subnetze finden Sie unter [VPC-Endpunkte](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints.html) in der Amazon VPC-Dokumentation. | Netzwerkadministrator, Systemadministrator | 

### Stellen Sie den Infoblox-Hub bereit
<a name="deploy-the-infoblox-hub"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die AWS-SAM-Vorlage. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns.html) | Entwickler, Systemadministrator | 
| Stellen Sie die AWS-SAM-Vorlage bereit. | Der `sam deploy` Befehl verwendet die erforderlichen Parameter und speichert sie in der `samconfig.toml` Datei, speichert die CloudFormation AWS-Vorlage und die Lambda-Funktionen in einem S3-Bucket und stellt dann die CloudFormation AWS-Vorlage in Ihrem Hub-Konto bereit.  Der folgende Beispielcode zeigt, wie die AWS-SAM-Vorlage bereitgestellt wird:<pre>$ sam deploy --guided<br /><br />Configuring SAM deploy<br />======================<br />        Looking for config file [samconfig.toml] :  Found<br />        Reading default arguments  :  Success<br />        Setting default arguments for 'sam deploy'<br />        =========================================<br />        Stack Name [Infoblox-Hub]:<br />        AWS Region [eu-west-1]:<br />        Parameter InfobloxUsername:<br />        Parameter InfobloxPassword:<br />        Parameter InfobloxIPAddress [xxx.xxx.xx.xxx]:<br />        Parameter AWSOrganisationID [o-xxxxxxxxx]:<br />        Parameter VPCID [vpc-xxxxxxxxx]:<br />        Parameter VPCCIDR [xxx.xxx.xxx.xxx/16]:<br />        Parameter VPCSubnetID1 [subnet-xxx]:<br />        Parameter VPCSubnetID2 [subnet-xxx]:<br />        Parameter VPCSubnetID3 [subnet-xxx]:<br />        Parameter VPCSubnetID4 []: <br />        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy<br />        Confirm changes before deploy [Y/n]: y<br />        #SAM needs permission to be able to create roles to connect to the resources in your template<br />Allow SAM CLI IAM role creation [Y/n]: n<br />Capabilities [['CAPABILITY_NAMED_IAM']]:<br />        Save arguments to configuration file [Y/n]: y<br />        SAM configuration file [samconfig.toml]:<br />        SAM configuration environment [default]: </pre>Sie müssen die `--guided` Option jedes Mal verwenden, da die Infoblox-Anmeldeinformationen nicht in der Datei gespeichert sind. `samconfig.toml` | Entwickler, Systemadministrator | 

## Zugehörige Ressourcen
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-resources"></a>
+ [Erste Schritte mit der WAPIs Verwendung von Postman](https://blogs.infoblox.com/community/getting-started-with-wapis-using-postman/) (Infoblox Blog)
+ [Bereitstellung von VNIOs für AWS mithilfe des BYOL-Modells (Infoblox-Dokumentation](https://docs.infoblox.com/display/NAIG/Provisioning+vNIOS+for+AWS+Using+the+BYOL+Model))
+ [quickstart-aws-vpc](https://github.com/aws-quickstart/quickstart-aws-vpc)(GitHub Repo)
+ [describe\$1managed\$1prefix\$1lists](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.describe_managed_prefix_lists) (Dokumentation zum AWS-SDK für Python)

## Anlagen
<a name="attachments-8d609d3f-6f5e-4084-849f-ca191db8055e"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/8d609d3f-6f5e-4084-849f-ca191db8055e/attachments/attachment.zip)

# Erstellen Sie mithilfe von Terraform eine hierarchische IPAM-Architektur mit mehreren Regionen AWS
<a name="multi-region-ipam-architecture"></a>

*Donny Schreiber, Amazon Web Services*

## Zusammenfassung
<a name="multi-region-ipam-architecture-summary"></a>

Die *IP-Adressverwaltung (IPAM)* ist eine wichtige Komponente des Netzwerkmanagements und wird mit der Skalierung ihrer Cloud-Infrastruktur immer komplexer. Ohne richtiges IPAM riskieren Unternehmen IP-Adresskonflikte, verschwendeten Adressraum und komplexe Problemlösungen, die zu Ausfällen und Anwendungsausfällen führen können. Dieses Muster zeigt, wie Sie mithilfe von Terraform eine umfassende IPAM-Lösung für AWS Unternehmensumgebungen implementieren können. HashiCorp [Es hilft Unternehmen dabei, eine hierarchische IPAM-Architektur mit mehreren Regionen zu erstellen, die eine zentralisierte IP-Adressverwaltung für alle Bereiche einer Organisation ermöglicht. AWS-KontenAWS](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organization-structure)

Dieses Muster hilft Ihnen bei der Implementierung von [Amazon VPC IP Address Manager](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html) mit einer ausgeklügelten vierstufigen Poolhierarchie: Pool der obersten Ebene, regionale Pools, Geschäftsbereichspools und umgebungsspezifische Pools. Diese Struktur unterstützt die ordnungsgemäße Verwaltung von IP-Adressen und ermöglicht gleichzeitig die Delegierung der IP-Verwaltung an die entsprechenden Teams innerhalb der Organisation. Die Lösung verwendet AWS Resource Access Manager (AWS RAM) für die nahtlose gemeinsame Nutzung von IP Address Manager-Pools im gesamten Unternehmen. AWS RAM zentralisiert und standardisiert die IPAM-Spezifikationen, auf die Teams bei allen verwalteten Konten aufbauen können.

Dieses Muster kann Ihnen dabei helfen, Folgendes zu erreichen:
+ Automatisieren Sie die Zuweisung von IP-Adressen für verschiedene AWS-Regionen Geschäftsbereiche und Umgebungen.
+ Setzen Sie die Netzwerkrichtlinien Ihres Unternehmens durch programmatische Validierung durch.
+ Skalieren Sie die Netzwerkinfrastruktur effizient, wenn sich die Geschäftsanforderungen weiterentwickeln.
+ Reduzieren Sie den betrieblichen Aufwand durch die zentrale Verwaltung von IP-Adressräumen.
+ Beschleunigen Sie Cloud-native Workload-Bereitstellungen mit Self-Service-CIDR-Bereichszuweisung.
+ Vermeiden Sie Adresskonflikte durch richtlinienbasierte Kontrollen und Validierungen.

## Voraussetzungen und Einschränkungen
<a name="multi-region-ipam-architecture-prereqs"></a>

**Voraussetzungen**
+ Eine oder mehrere AWS-Konten, die als Organisation verwaltet werden in. AWS Organizations
+ Ein Netzwerk-Hub oder ein Netzwerkverwaltungskonto, das als delegierter IP Address Manager-Administrator dient.
+ AWS Command Line Interface (AWS CLI), [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
+ [Terraform Version 1.5.0 oder höher, installiert.](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ AWS [Anbieter für Terraform, konfiguriert.](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
+ Berechtigungen zur Verwaltung von [IP Address Manager](https://docs.aws.amazon.com/vpc/latest/ipam/iam-ipam.html) und [virtuellen privaten Clouds (VPCs)](https://docs.aws.amazon.com/vpc/latest/userguide/security-iam.html), konfiguriert in AWS Identity and Access Management (IAM). [AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/security-iam.html)

**Einschränkungen**
+ IP Address Manager unterliegt [Dienstkontingenten](https://docs.aws.amazon.com/vpc/latest/ipam/quotas-ipam.html). Das Standarddienstkontingent für Pools beträgt 50 pro Bereich. Wenn diese Bereitstellung für 6 Regionen, 2 Geschäftsbereiche und 4 Umgebungen ausgeführt würde, würden 67 Pools entstehen. Daher könnte eine Erhöhung des Kontingents erforderlich sein.
+ Das Ändern oder Löschen von IP Address Manager-Pools nach der Zuweisung von Ressourcen kann zu Abhängigkeitsproblemen führen. Sie müssen [die Zuweisung freigeben](https://docs.aws.amazon.com/vpc/latest/ipam/release-alloc-ipam.html), bevor Sie den Pool löschen können.
+ In IP Address Manager kann es bei der [Ressourcenüberwachung](https://docs.aws.amazon.com/vpc/latest/ipam/monitor-cidr-compliance-ipam.html) zu leichten Verzögerungen kommen, wenn Ressourcenänderungen berücksichtigt werden. Diese Verzögerung kann etwa 20 Minuten betragen.
+ IP Address Manager kann nicht automatisch die Eindeutigkeit von IP-Adressen in verschiedenen Bereichen erzwingen.
+ Benutzerdefinierte Tags müssen den Best Practices für [AWS Tagging](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html) entsprechen. Beispielsweise muss jeder Schlüssel einzigartig sein und darf nicht mit `aws:` beginnen.
+ Bei der Integration von IP Address Manager mit Konten außerhalb Ihrer Organisation gibt es [Überlegungen und Einschränkungen](https://docs.aws.amazon.com/vpc/latest/ipam/enable-integ-ipam-outside-org-considerations.html).

## Architektur
<a name="multi-region-ipam-architecture-architecture"></a>

**Zielarchitektur**

*Konfiguration und Poolhierarchie von IP Address Manager*

Das folgende Diagramm zeigt die logischen Konstrukte der Zielarchitektur. Ein *Bereich* ist der Container der höchsten Ebene in IP Address Manager. Jeder Bereich stellt den IP-Adressraum für ein einzelnes Netzwerk dar. Die *Pools* sind Sammlungen zusammenhängender IP-Adressbereiche (oder CIDR-Bereiche) innerhalb des Bereichs. Pools helfen Ihnen dabei, Ihre IP-Adressen entsprechend Ihren Routing- und Sicherheitsanforderungen zu organisieren. Dieses Diagramm zeigt vier hierarchische Ebenen von Pools: einen Pool der obersten Ebene, regionale Pools, Geschäftsbereichspools und Umgebungspools.

![\[Ein privater Bereich und vier Ebenen von Pools in einer einzigen AWS-Region in einem Netzwerkkonto.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/780e344e-37f7-4b70-8d7c-94ec67a29305/images/1e23b2a7-a274-4a19-9097-61d8a31dfbf8.png)


Diese Lösung erstellt eine klare Hierarchie von IP Address Manager-Pools:

1. Der Pool der obersten Ebene umfasst den gesamten IP-Adressraum der Organisation, z. B. `10.176.0.0/12`

1. Die regionalen Pools sind für regionsspezifische Zuweisungen vorgesehen, z. B. für. `10.176.0.0/15` `us-east-1`

1. Bei den Pools der Geschäftsbereiche handelt es sich um domänenspezifische Zuweisungen innerhalb der einzelnen Geschäftsbereiche. AWS-Region Das könnte beispielsweise die Finanzabteilung in der `us-east-1` Region getan haben. `10.176.0.0/16`

1. Bei den Umgebungspools handelt es sich um zweckspezifische Zuweisungen für verschiedene Umgebungen. Die Finanzabteilung in der `us-east-1` Region könnte beispielsweise `10.176.0.0/18` für eine Produktionsumgebung zuständig sein.

Diese Bereitstellungstopologie verteilt die Ressourcen von IP Address Manager geografisch und gewährleistet gleichzeitig die zentrale Steuerung. Im Folgenden sind ihre Funktionen aufgeführt:
+ IP Address Manager wird in einem einzigen Primärserver bereitgestellt AWS-Region.
+ Zusätzliche Regionen sind als [Betriebsregionen](https://docs.aws.amazon.com/vpc/latest/ipam/mod-ipam-region.html) registriert, in denen IP Address Manager Ressourcen verwalten kann.
+ Jede Betriebsregion erhält einen eigenen Adresspool aus dem Pool der obersten Ebene.
+ Ressourcen in allen Betriebsregionen werden zentral über den IP Address Manager in der primären Region verwaltet.
+ Jeder regionale Pool verfügt über eine Gebietsschemaeigenschaft, die mit seiner Region verknüpft ist, sodass Sie Ressourcen ordnungsgemäß zuweisen können.

*Erweiterte Validierung des CIDR-Bereichs*

Diese Lösung wurde entwickelt, um die Bereitstellung ungültiger Konfigurationen zu verhindern. Wenn Sie die Pools über Terraform bereitstellen, wird Folgendes während der Terraform-Planphase validiert:
+ Überprüft, ob alle CIDR-Bereiche der Umgebung in den CIDR-Bereichen der übergeordneten Geschäftseinheit enthalten sind
+ Bestätigt, dass alle CIDR-Bereiche der Geschäftseinheit in den CIDR-Bereichen der übergeordneten Region enthalten sind
+ Überprüft, ob alle regionalen CIDR-Bereiche in den CIDR-Bereichen der obersten Ebene enthalten sind
+ Prüft auf überlappende CIDR-Bereiche innerhalb derselben Hierarchieebene
+ Überprüft die korrekte Zuordnung der Umgebungen zu ihren jeweiligen Geschäftsbereichen

*CIDR-Bereichszuweisung*

Das folgende Diagramm zeigt ein Beispiel dafür, wie Entwickler oder Administratoren neue IP-Adressen erstellen VPCs und ihnen aus den Poolebenen zuweisen können.

![\[Ein privater Bereich und vier Ebenen von Pools in einer einzigen AWS-Region in einem Netzwerkkonto.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/780e344e-37f7-4b70-8d7c-94ec67a29305/images/7c3de2e3-e71b-4fc0-abcd-7e88cfab5c87.png)


Das Diagramm zeigt den folgenden Workflow:

1. Über die AWS-Managementkonsole AWS CLI, die oder über Infrastructure as Code (IaC) fordert ein Entwickler oder Administrator den nächsten verfügbaren CIDR-Bereich im `AY3` Umgebungspool an.

1. IP Address Manager weist der VPC den nächsten verfügbaren CIDR-Bereich in diesem Pool zu. `AY3-4` Dieser CIDR-Bereich kann nicht mehr verwendet werden.

**Automatisierung und Skalierung**

Diese Lösung ist auf folgende Skalierbarkeit ausgelegt:
+ **Regionale Erweiterung** — Fügen Sie neue Regionen hinzu, indem Sie die Terraform-Konfiguration um zusätzliche regionale Pooleinträge erweitern.
+ **Wachstum von Geschäftsbereichen** — Support Sie neue Geschäftsbereiche, indem Sie sie zur BU-Konfigurationsübersicht hinzufügen.
+ **Flexibilität der Umgebung** — Konfigurieren Sie verschiedene Umgebungstypen, z. B. Entwicklung oder Produktion, auf der Grundlage der organisatorischen Anforderungen.
+ **Unterstützung mehrerer Konten** — Teilen Sie Pools über alle Konten in Ihrer Organisation. AWS RAM
+ **Automatisierte VPC-Bereitstellung** — Integrieren Sie in VPC-Bereitstellungs-Workflows, um die CIDR-Bereichszuweisung zu automatisieren.

Die hierarchische Struktur ermöglicht auch verschiedene Ebenen der Delegierung und Kontrolle, wie z. B. die folgenden:
+ Netzwerkadministratoren können die Pools der obersten Ebene und die regionalen Pools verwalten.
+ IT-Teams der Geschäftsbereiche haben möglicherweise die Kontrolle über ihre jeweiligen Pools delegiert.
+ Anwendungsteams verwenden möglicherweise IP-Adressen aus ihren zugewiesenen Umgebungspools.

**Anmerkung**  
Sie können diese Lösung auch in [AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) integrieren. Weitere Informationen finden Sie unter *Integration mit AFT* im Abschnitt [Zusätzliche Informationen](#multi-region-ipam-architecture-additional) dieses Musters.

## Tools
<a name="multi-region-ipam-architecture-tools"></a>

**AWS-Services**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)ist ein Kontoverwaltungsdienst, mit dem Sie mehrere Konten zu einer Organisation AWS-Konten zusammenfassen können, die Sie erstellen und zentral verwalten.
+ [AWS Resource Access Manager (AWS RAM)](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) hilft Ihnen dabei, Ihre Ressourcen sicher gemeinsam zu nutzen AWS-Konten , um den betrieblichen Aufwand zu reduzieren und für Transparenz und Überprüfbarkeit zu sorgen.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS. [IP Address Manager](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html) ist eine Funktion von Amazon VPC. Es hilft Ihnen bei der Planung, Nachverfolgung und Überwachung von IP-Adressen für Ihre AWS Workloads.

**Andere Tools**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist ein Infrastructure-as-Code-Tool (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.

**Code-Repository**

Der Code für dieses Muster ist in der [Terraform-Beispielimplementierung für Hierarchical IPAM](https://github.com/aws-samples/sample-amazon-vpc-ipam-terraform) im Repository on verfügbar. AWS** GitHub** Die Repository-Struktur umfasst:
+ **Root-Modul** — Orchestrierung der Bereitstellung und Eingabevariablen.
+ **IPAM-Modul** — Kernimplementierung der in diesem Muster beschriebenen Architektur.
+ **Tags-Modul** — Standardisiertes Tagging für alle Ressourcen.

## Best Practices
<a name="multi-region-ipam-architecture-best-practices"></a>

Beachten Sie die folgenden bewährten Methoden für die Netzwerkplanung:
+ **Planen Sie zuerst** — Planen Sie Ihren IP-Adressraum vor der Bereitstellung gründlich. Weitere Informationen finden Sie unter [Plan für die Bereitstellung von IP-Adressen](https://docs.aws.amazon.com/vpc/latest/ipam/planning-ipam.html).
+ **Vermeiden Sie überlappende CIDR-Bereiche** — Stellen Sie sicher, dass sich die CIDR-Bereiche auf jeder Ebene nicht überschneiden.
+ **Reservieren Sie Pufferspeicher** — Ordnen Sie immer größere CIDR-Bereiche zu, als sofort benötigt werden, um dem Wachstum Rechnung zu tragen.
+ **Dokumentieren Sie die IP-Adresszuweisung** — Bewahren Sie die Dokumentation Ihrer IP-Adresszuweisungsstrategie auf.

Beachten Sie die folgenden bewährten Bereitstellungsmethoden:
+ **Beginnen Sie mit Nichtproduktionsumgebungen** — Stellen Sie die Lösung zunächst in Umgebungen außerhalb der Produktion bereit.
+ **Verwenden Sie die Terraform-Statusverwaltung** — Implementieren Sie die Speicherung und Sperrung von Zuständen aus der Ferne. Weitere Informationen finden Sie unter [State Storage and Locking](https://developer.hashicorp.com/terraform/language/state/backends) in der Terraform-Dokumentation.
+ Versionskontrolle **implementieren — Versionskontrolle** für den gesamten Terraform-Code.
+ ** CI/CD Integration implementieren** — Verwenden Sie CI/CD-Pipelines (Continuous Integration und Continuous Delivery) für wiederholbare Bereitstellungen.

Beachten Sie die folgenden bewährten Methoden für den Betrieb:
+ **Automatischen Import aktivieren** — Konfigurieren Sie einen IP Address Manager-Pool, um vorhandene Ressourcen automatisch zu erkennen und zu importieren. Folgen Sie den Anweisungen unter [Einen IPAM-Pool bearbeiten](https://docs.aws.amazon.com/vpc/latest/ipam/mod-pool-ipam.html), um den automatischen Import zu aktivieren.
+ **IP-Adressnutzung überwachen** — Richten Sie Alarme für Schwellenwerte für die IP-Adressnutzung ein. Weitere Informationen finden Sie unter [Überwachen von IPAM mit Amazon CloudWatch](https://docs.aws.amazon.com/vpc/latest/ipam/cloudwatch-ipam.html).
+ **Regelmäßige Prüfung** — Prüfen Sie regelmäßig die Nutzung von IP-Adressen und deren Einhaltung. Weitere Informationen finden Sie unter [Nachverfolgung der IP-Adressnutzung in IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/tracking-ip-addresses-ipam.html).
+ **Ungenutzte Zuweisungen bereinigen — Geben** Sie IP-Adresszuweisungen frei, wenn Ressourcen außer Betrieb genommen werden. Weitere Informationen finden Sie unter [Deprovision CIDRs ](https://docs.aws.amazon.com/vpc/latest/ipam/depro-pool-cidr-ipam.html) aus einem Pool.

Beachten Sie die folgenden bewährten Sicherheitsmethoden:
+ **Implementieren Sie die geringsten Rechte** — Verwenden Sie IAM-Rollen mit den erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie unter [Bewährte Sicherheitsmethoden in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) und [Identitäts- und Zugriffsmanagement in](https://docs.aws.amazon.com/vpc/latest/ipam/iam-ipam.html) IPAM.
+ **Dienststeuerungsrichtlinien verwenden** — Implementieren Sie Dienststeuerungsrichtlinien (SCPs), um die Verwendung von IP Address Manager in Ihrem Unternehmen durchzusetzen. Weitere Informationen finden Sie unter [IPAM-Verwendung für die VPC-Erstellung erzwingen](https://docs.aws.amazon.com/vpc/latest/ipam/scp-ipam.html) mit. SCPs
+ **Steuern Sie die gemeinsame Nutzung von Ressourcen** — Verwalten Sie den Umfang der gemeinsamen Nutzung von IP Address Manager-Ressourcen sorgfältig in. AWS RAM Weitere Informationen finden Sie unter [Einen IPAM-Pool gemeinsam nutzen mit AWS RAM](https://docs.aws.amazon.com/vpc/latest/ipam/share-pool-ipam.html).
+ **Tagging erzwingen** — Implementieren Sie obligatorisches Tagging für alle Ressourcen im Zusammenhang mit IP Address Manager. Weitere Informationen finden Sie unter *Tagging-Strategie im Abschnitt* [Zusätzliche](#multi-region-ipam-architecture-additional) Informationen.

## Epen
<a name="multi-region-ipam-architecture-epics"></a>

### Richten Sie ein delegiertes Administratorkonto für IP Address Manager ein
<a name="set-up-a-delegated-administrator-account-for-ip-address-manager"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  AWS Organizations Funktionen aktivieren. | Stellen Sie sicher, AWS Organizations dass alle Funktionen aktiviert sind. Anweisungen finden Sie AWS Organizations in der AWS Organizations Dokumentation unter [Alle Funktionen für eine Organisation aktivieren mit](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_support-all-features.html). | AWS-Administrator | 
| Aktivieren Sie die gemeinsame Nutzung von Ressourcen in AWS RAM. | Geben Sie mit dem den folgenden Befehl ein AWS CLI, um die gemeinsame Nutzung von AWS RAM Ressourcen für Ihre Organisation zu aktivieren:<pre>aws ram enable-sharing-with-aws-organization</pre>Weitere Informationen finden Sie AWS Organizations in der AWS RAM Dokumentation unter [Aktivieren der gemeinsamen Nutzung von Ressourcen innerhalb](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-orgs). | AWS-Administrator | 
| Benennen Sie einen Administrator für IP Address Manager. | Geben Sie im Verwaltungskonto der Organisation mit dem den AWS CLI folgenden Befehl ein. Dabei `123456789012` handelt es sich um die ID des Kontos, das IP Address Manager verwalten soll:<pre>aws ec2 enable-ipam-organization-admin-account \<br />    --delegated-admin-account-id 123456789012</pre>In der Regel wird ein Netzwerk- oder Netzwerk-Hub-Konto als delegierter Administrator für IP Address Manager verwendet.Weitere Informationen finden Sie unter [Integrieren von IPAM mit Konten in einer AWS Organisation in](https://docs.aws.amazon.com/vpc/latest/ipam/enable-integ-ipam.html) der IP Address Manager-Dokumentation. | AWS-Administrator | 

### Stellen Sie die Infrastruktur bereit
<a name="deploy-the-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Definieren Sie die Netzwerkarchitektur. | Definieren und dokumentieren Sie Ihre Netzwerkarchitektur, einschließlich der CIDR-Bereiche für Regionen, Geschäftsbereiche und Umgebungen. Weitere Informationen finden Sie unter [Plan für die IP-Adressbereitstellung](https://docs.aws.amazon.com/vpc/latest/ipam/planning-ipam.html) in der IP Address Manager-Dokumentation. | Netzwerkingenieur | 
| Klonen Sie das Repository | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-region-ipam-architecture.html) | DevOps Ingenieur | 
| Konfigurieren Sie die Variablen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-region-ipam-architecture.html) | Netzwerkingenieur, Terraform | 
| Stellen Sie die Ressourcen des IP Address Managers bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-region-ipam-architecture.html) | Terraform | 
| Bestätigen Sie die Bereitstellung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-region-ipam-architecture.html) | Allgemein AWS, Netzwerktechniker | 

### Überwachung erstellen VPCs und einrichten
<a name="create-vpcs-and-set-up-monitoring"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine VPC. | Folgen Sie den Schritten unter [Erstellen einer VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) in der Amazon VPC-Dokumentation. Wenn Sie den Schritt zur Auswahl eines CIDR-Bereichs für die VPC erreicht haben, weisen Sie den nächsten verfügbaren aus einem Ihrer Regional-, Geschäftsbereichs- und Umgebungspools zu. | Allgemein AWS, Netzwerkadministrator, Netzwerkingenieur | 
| Überprüfen Sie die CIDR-Bereichszuweisung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-region-ipam-architecture.html) | Allgemein AWS, Netzwerkadministrator, Netzwerkingenieur | 
| Überwachen Sie den IP-Adressmanager. | Konfigurieren Sie die Überwachung und Alarme im Zusammenhang mit der Zuweisung von IP Address Manager-Ressourcen. Weitere Informationen und Anweisungen finden Sie unter [Überwachen von IPAM mit Amazon CloudWatch](https://docs.aws.amazon.com/vpc/latest/ipam/cloudwatch-ipam.html) und [Überwachen der CIDR-Nutzung nach Ressourcen](https://docs.aws.amazon.com/vpc/latest/ipam/monitor-cidr-compliance-ipam.html) in der IP Address Manager-Dokumentation. | Allgemeines AWS | 
| Erzwingen Sie die Verwendung von IP Address Manager. | Erstellen Sie eine Service Control Policy (SCP) AWS Organizations , nach der Mitglieder in Ihrer Organisation IP Address Manager verwenden müssen, wenn sie eine VPC erstellen. Anweisungen finden Sie unter [IPAM-Verwendung für die VPC-Erstellung erzwingen mit SCPs](https://docs.aws.amazon.com/vpc/latest/ipam/scp-ipam.html) in der IP Address Manager-Dokumentation. | Allgemein AWS, AWS-Administrator | 

## Fehlerbehebung
<a name="multi-region-ipam-architecture-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Terraform schlägt fehl, da die IP Address Manager-Ressource nicht gefunden wurde | Stellen Sie sicher, dass das IP Address Manager-Administratorkonto ordnungsgemäß delegiert wurde und dass Ihr AWS Anbieter für dieses Konto authentifiziert ist. | 
| Die CIDR-Bereichszuweisung schlägt fehl | Stellen Sie sicher, dass der angeforderte CIDR-Bereich in den verfügbaren Bereich des IP Address Manager-Pools passt und sich nicht mit vorhandenen Zuweisungen überschneidet. | 
| AWS RAM Probleme teilen | Stellen Sie sicher, dass die gemeinsame Nutzung von Ressourcen für Ihre AWS Organisation aktiviert ist. Stellen Sie sicher, dass der richtige Prinzipal, der Amazon Resource Name (ARN) der Organisation, in der AWS RAM Freigabe verwendet wird. | 
| Fehler bei der Validierung der Poolhierarchie | Stellen Sie sicher, dass die CIDR-Bereiche des untergeordneten Pools ordnungsgemäß in den CIDR-Bereichen des übergeordneten Pools enthalten sind und sich nicht mit gleichgeordneten Pools überschneiden. | 
| Das Kontingentlimit für IP Address Manager wurde überschritten | Fordern Sie eine Erhöhung des Kontingents für IP Address Manager-Pools an. Weitere Informationen finden Sie unter [Beantragen einer Kontingenterhöhung](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html) im *Service-Quotas-Benutzerhandbuch*. | 

## Zugehörige Ressourcen
<a name="multi-region-ipam-architecture-resources"></a>

**AWS-Service Dokumentation**
+ [Dokumentation zu Amazon VPC IP Address Manager](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html)
+ [AWS Resource Access Manager Dokumentation](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)
+ [AWS Organizations Dokumentation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)

**AWS Blog-Beiträge**
+ [Verwaltung von IP-Pools über Regionen hinweg VPCs mit Amazon VPC IP Address Manager](https://aws.amazon.com/blogs/networking-and-content-delivery/managing-ip-pools-across-vpcs-and-regions-using-amazon-vpc-ip-address-manager/)
+ [Verwaltung und Prüfung von Netzwerkadressen in großem Umfang mit Amazon VPC IP Address Manager](https://aws.amazon.com/blogs/aws/network-address-management-and-auditing-at-scale-with-amazon-vpc-ip-address-manager/)

**Videos und Anleitungen**
+ [AWS re:Invent 2022: Bewährte Methoden für Amazon VPC-Design und IPAM (0) NET31](https://www.youtube.com/watch?v=XrEHsy_8RYs)
+ [AWS re:Invent 2022: Fortschrittliches VPC-Design und neue Funktionen (01) NET4](https://www.youtube.com/watch?v=tbXTVpwx87o)

## Zusätzliche Informationen
<a name="multi-region-ipam-architecture-additional"></a>

**Integration mit AFT**

Sie können diese Lösung in AWS Control Tower Account Factory for Terraform (AFT) integrieren, um sicherzustellen, dass neu bereitgestellte Konten automatisch die richtigen Netzwerkkonfigurationen erhalten. Durch die Bereitstellung dieser IPAM-Lösung in Ihrem Netzwerk-Hub-Konto können neue Konten, die über AFT erstellt wurden, bei der Erstellung auf die gemeinsam genutzten IP Address Manager-Pools verweisen. VPCs

Das folgende Codebeispiel veranschaulicht die AFT-Integration in eine Kontoanpassung mithilfe von AWS Systems Manager Parameter Store:

```
# Get the IP Address Manager pool ID from Parameter Store
data "aws_ssm_parameter" "dev_ipam_pool_id" {
  name = "/org/network/ipam/finance/dev/pool-id"
}

# Create a VPC using the IP Address Manager pool
resource "aws_vpc" "this" {
  ipv4_ipam_pool_id   = data.aws_ssm_parameter.dev_ipam_pool_id.value
  ipv4_netmask_length = 24
  
  tags = {
    Name = "aft-account-vpc"
  }
}
```

**Strategie zur Kennzeichnung**

Die Lösung implementiert eine umfassende Tagging-Strategie, um das Ressourcenmanagement zu vereinfachen. Das folgende Codebeispiel zeigt, wie es verwendet wird:

```
# Example tag configuration
module "tags" {
  source = "./modules/tags"
  
  # Required tags
  product_name  = "enterprise-network"
  feature_name  = "ipam"
  org_id        = "finance"
  business_unit = "network-operations"
  owner         = "network-team"
  environment   = "prod"
  repo          = "https://github.com/myorg/ipam-terraform"
  branch        = "main"
  cost_center   = "123456"
  dr_tier       = "tier1"
  
  # Optional tags
  optional_tags = {
    "project"    = "network-modernization"
    "stack_role" = "infrastructure"
  }
}
```

Diese Tags werden automatisch auf alle IP Address Manager-Ressourcen angewendet. Dies ermöglicht eine konsistente Steuerung, Kostenzuweisung und Ressourcenverwaltung.

# Passen Sie CloudWatch Amazon-Benachrichtigungen an für AWS Network Firewall
<a name="customize-amazon-cloudwatch-alerts-for-aws-network-firewall"></a>

*Jason Owens, Amazon Web Services*

## Zusammenfassung
<a name="customize-amazon-cloudwatch-alerts-for-aws-network-firewall-summary"></a>

Das Muster hilft Ihnen dabei, die CloudWatch Amazon-Benachrichtigungen anzupassen, die von generiert werden AWS Network Firewall. Sie können vordefinierte Regeln verwenden oder benutzerdefinierte Regeln erstellen, die die Nachricht, die Metadaten und den Schweregrad der Benachrichtigungen bestimmen. Sie können dann auf diese Benachrichtigungen reagieren oder die Antworten anderer Amazon-Dienste wie Amazon automatisieren EventBridge.

In diesem Muster generieren Sie Suricata-kompatible Firewall-Regeln. [Suricata](https://suricata.io/) ist eine Open-Source-Engine zur Erkennung von Bedrohungen. Sie erstellen zunächst einfache Regeln und testen sie dann, um sicherzustellen, dass die CloudWatch Warnungen generiert und protokolliert wurden. Nachdem Sie die Regeln erfolgreich getestet haben, ändern Sie sie, um benutzerdefinierte Meldungen, Metadaten und Schweregrade zu definieren. Anschließend testen Sie erneut, um die Aktualisierungen zu bestätigen.

## Voraussetzungen und Einschränkungen
<a name="customize-amazon-cloudwatch-alerts-for-aws-network-firewall-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ AWS Command Line Interface (AWS CLI) auf Ihrer Linux-, macOS- oder Windows-Workstation installiert und konfiguriert. Weitere Informationen finden Sie unter [Installieren oder Aktualisierung auf die neueste Version von AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ AWS Network Firewall für die Verwendung von CloudWatch Logs installiert und konfiguriert. Weitere Informationen finden Sie unter [Protokollieren des Netzwerkverkehrs von AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/firewall-logging.html).
+ Eine Amazon Elastic Compute Cloud (Amazon EC2) -Instance in einem privaten Subnetz einer Virtual Private Cloud (VPC), die durch eine Network Firewall geschützt ist.

**Produktversionen**
+ Verwenden Sie für Version 1 von AWS CLI 1.18.180 oder höher. Verwenden Sie für Version 2 von AWS CLI 2.1.2 oder höher.
+ Die Datei classification.config aus Suricata Version 5.0.2. [Eine Kopie dieser Konfigurationsdatei finden Sie im Abschnitt Zusätzliche Informationen.](#customize-amazon-cloudwatch-alerts-for-aws-network-firewall-additional)

## Architektur
<a name="customize-amazon-cloudwatch-alerts-for-aws-network-firewall-architecture"></a>

![\[Eine EC2 Instanzanforderung generiert eine Warnung in der Network Firewall, die die Warnung weiterleitet an CloudWatch\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/da6087a9-e942-4cfe-85e3-3b08de6f3ba5/images/778d85cd-bc87-4ed0-a161-d35eb5daa694.png)


Das Architekturdiagramm zeigt den folgenden Arbeitsablauf:

1. [Eine EC2 Amazon-Instance in einem privaten Subnetz stellt eine Anfrage entweder mit [curl](https://curl.se/) oder Wget.](https://www.gnu.org/software/wget/)

1. Die Network Firewall verarbeitet den Datenverkehr und generiert eine Warnung.

1. Die Network Firewall sendet die protokollierten Warnungen an CloudWatch Logs.

## Tools
<a name="customize-amazon-cloudwatch-alerts-for-aws-network-firewall-tools"></a>

**AWS-Services**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) hilft Ihnen dabei, die Protokolle all Ihrer Systeme und Anwendungen zu zentralisieren, AWS-Services sodass Sie sie überwachen und sicher archivieren können.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/what-is-aws-network-firewall.html)ist ein zustandsorientierter, verwalteter Dienst zur Netzwerk-Firewall sowie zur Erkennung und Verhinderung von Eindringlingen für virtuelle private Clouds () in der. VPCs AWS Cloud 

**Andere Tools**
+ [curl](https://curl.se/) ist ein Open-Source-Befehlszeilentool und eine Bibliothek.
+ [GNU Wget](https://www.gnu.org/software/wget/) ist ein kostenloses Befehlszeilentool.

## Epen
<a name="customize-amazon-cloudwatch-alerts-for-aws-network-firewall-epics"></a>

### Erstellen Sie die Firewallregeln und die Regelgruppe
<a name="create-the-firewall-rules-and-rule-group"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen von Regeln. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/customize-amazon-cloudwatch-alerts-for-aws-network-firewall.html) | AWS-Systemadministrator, Netzwerkadministrator | 
| Erstellen Sie die Regelgruppe. | Geben Sie in der AWS CLI den folgenden Befehl ein. Dadurch wird die Regelgruppe erstellt.<pre>❯ aws network-firewall create-rule-group \<br />        --rule-group-name custom --type STATEFUL \<br />        --capacity 10 --rules file://custom.rules \<br />        --tags Key=environment,Value=development</pre>Im Folgenden finden Sie eine Beispielausgabe. Notieren Sie sich die`RuleGroupArn`, die Sie in einem späteren Schritt benötigen.<pre>{<br />    "UpdateToken": "4f998d72-973c-490a-bed2-fc3460547e23",<br />    "RuleGroupResponse": {<br />        "RuleGroupArn": "arn:aws:network-firewall:us-east-2:1234567890:stateful-rulegroup/custom",<br />        "RuleGroupName": "custom",<br />        "RuleGroupId": "238a8259-9eaf-48bb-90af-5e690cf8c48b",<br />        "Type": "STATEFUL",<br />        "Capacity": 10,<br />        "RuleGroupStatus": "ACTIVE",<br />        "Tags": [<br />            {<br />                "Key": "environment",<br />                "Value": "development"<br />            }<br />        ]<br />    }</pre> | AWS-Systemadministrator | 

### Aktualisieren Sie die Firewall-Richtlinie
<a name="update-the-firewall-policy"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Rufen Sie den ARN der Firewall-Richtlinie ab. | Geben Sie im AWS CLI den folgenden Befehl ein. Dadurch wird der Amazon-Ressourcenname (ARN) der Firewall-Richtlinie zurückgegeben. Notieren Sie den ARN für die spätere Verwendung in diesem Muster.<pre>❯ aws network-firewall describe-firewall \<br />    --firewall-name aws-network-firewall-anfw \<br />    --query 'Firewall.FirewallPolicyArn'</pre>Im Folgenden finden Sie ein Beispiel für einen ARN, der von diesem Befehl zurückgegeben wird.<pre>"arn:aws:network-firewall:us-east-2:1234567890:firewall-policy/firewall-policy-anfw"</pre> | AWS-Systemadministrator | 
| Aktualisieren Sie die Firewall-Richtlinie. | Kopieren Sie in einem Texteditor den folgenden Code und fügen Sie ihn ein. Ersetze ihn `<RuleGroupArn>` durch den Wert, den du im vorherigen Epos aufgezeichnet hast. Speichern Sie die Datei als `firewall-policy-anfw.json`.<pre>{<br />    "StatelessDefaultActions": [<br />        "aws:forward_to_sfe"<br />    ],<br />    "StatelessFragmentDefaultActions": [<br />        "aws:forward_to_sfe"<br />    ],<br />    "StatefulRuleGroupReferences": [<br />        {<br />            "ResourceArn": "<RuleGroupArn>"<br />        }<br />    ]<br />}</pre>Geben Sie den folgenden Befehl in die ein AWS CLI. Für diesen Befehl ist ein [Aktualisierungstoken](https://docs.aws.amazon.com/cli/latest/reference/network-firewall/update-firewall-policy.html) erforderlich, um die neuen Regeln hinzuzufügen. Das Token wird verwendet, um zu bestätigen, dass sich die Richtlinie seit dem letzten Abruf nicht geändert hat.<pre>UPDATETOKEN=(`aws network-firewall describe-firewall-policy \<br />              --firewall-policy-name firewall-policy-anfw \<br />              --output text --query UpdateToken`)<br /> <br /> aws network-firewall update-firewall-policy \<br /> --update-token $UPDATETOKEN \<br /> --firewall-policy-name firewall-policy-anfw \<br /> --firewall-policy file://firewall-policy-anfw.json</pre> | AWS-Systemadministrator | 
| Bestätigen Sie die Richtlinienaktualisierungen. | (Optional) Wenn Sie überprüfen möchten, ob die Regeln hinzugefügt wurden, und das Richtlinienformat anzeigen möchten, geben Sie den folgenden Befehl in die Datei ein AWS CLI.<pre>❯ aws network-firewall describe-firewall-policy \<br />  --firewall-policy-name firewall-policy-anfw \<br />  --query FirewallPolicy</pre>Im Folgenden finden Sie eine Beispielausgabe.<pre>{<br />    "StatelessDefaultActions": [<br />        "aws:forward_to_sfe"<br />    ],<br />    "StatelessFragmentDefaultActions": [<br />        "aws:forward_to_sfe"<br />    ],<br />    "StatefulRuleGroupReferences": [<br />        {<br />            "ResourceArn": "arn:aws:network-firewall:us-east-2:1234567890:stateful-rulegroup/custom"<br />        }<br />    ]<br />}</pre> | AWS-Systemadministrator | 

### Testen Sie die Alarmfunktion
<a name="test-alert-functionality"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Generieren Sie Warnmeldungen zum Testen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/customize-amazon-cloudwatch-alerts-for-aws-network-firewall.html) | AWS-Systemadministrator | 
| Stellen Sie sicher, dass die Warnmeldungen protokolliert wurden. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/customize-amazon-cloudwatch-alerts-for-aws-network-firewall.html) | AWS-Systemadministrator | 

### Aktualisieren Sie die Firewall-Regeln und die Regelgruppe
<a name="update-the-firewall-rules-and-rule-group"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktualisieren Sie die Firewall-Regeln. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/customize-amazon-cloudwatch-alerts-for-aws-network-firewall.html) | AWS-Systemadministrator | 
| Aktualisieren Sie die Regelgruppe. | Führen Sie in der AWS CLI die folgenden Befehle aus. Verwenden Sie den ARN Ihrer Firewall-Richtlinie. Diese Befehle rufen ein Aktualisierungstoken ab und aktualisieren die Regelgruppe mit den Regeländerungen.<pre>❯ UPDATETOKEN=(`aws network-firewall \<br />                describe-rule-group \<br />--rule-group-arn arn:aws:network-firewall:us-east-2:123457890:stateful-rulegroup/custom \<br />--output text --query UpdateToken`)</pre><pre> ❯ aws network-firewall update-rule-group \<br />  --rule-group-arn arn:aws:network-firewall:us-east-2:1234567890:stateful-rulegroup/custom \<br />--rules file://custom.rules \<br />--update-token $UPDATETOKEN</pre>Im Folgenden finden Sie eine Beispielausgabe.<pre>{<br />    "UpdateToken": "7536939f-6a1d-414c-96d1-bb28110996ed",<br />    "RuleGroupResponse": {<br />        "RuleGroupArn": "arn:aws:network-firewall:us-east-2:1234567890:stateful-rulegroup/custom",<br />        "RuleGroupName": "custom",<br />        "RuleGroupId": "238a8259-9eaf-48bb-90af-5e690cf8c48b",<br />        "Type": "STATEFUL",<br />        "Capacity": 10,<br />        "RuleGroupStatus": "ACTIVE",<br />        "Tags": [<br />            {<br />                "Key": "environment",<br />                "Value": "development"<br />            }<br />        ]<br />    }<br />}</pre> | AWS-Systemadministrator | 

### Testen Sie die aktualisierte Warnfunktion
<a name="test-the-updated-alert-functionality"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Generieren Sie eine Warnung zum Testen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/customize-amazon-cloudwatch-alerts-for-aws-network-firewall.html) | AWS-Systemadministrator | 
| Bestätigen Sie, dass die Warnung geändert wurde. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/customize-amazon-cloudwatch-alerts-for-aws-network-firewall.html) | AWS-Systemadministrator | 

## Zugehörige Ressourcen
<a name="customize-amazon-cloudwatch-alerts-for-aws-network-firewall-resources"></a>

**Referenzen**
+ [Senden Sie Benachrichtigungen von AWS Network Firewall an einen Slack-Channel](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/send-alerts-from-aws-network-firewall-to-a-slack-channel.html) (AWS Prescriptive Guidance)
+ [Skalierung der Bedrohungsabwehr AWS mit Suricata](https://aws.amazon.com/blogs/opensource/scaling-threat-prevention-on-aws-with-suricata/) (Blogbeitrag)AWS 
+ [Bereitstellungsmodelle für AWS Network Firewall](https://aws.amazon.com/blogs/networking-and-content-delivery/deployment-models-for-aws-network-firewall/) (AWS Blogbeitrag)
+ [Suricata-Meta-Schlüsselwerke](https://suricata.readthedocs.io/en/suricata-6.0.1/rules/meta.html) (Suricata-Dokumentation)

**Tutorials und Videos**
+ [AWS Network Firewall Werkstatt](https://networkfirewall.workshop.aws/)

## Zusätzliche Informationen
<a name="customize-amazon-cloudwatch-alerts-for-aws-network-firewall-additional"></a>

Im Folgenden finden Sie die Konfigurationsdatei für die Klassifizierung von Suricata 5.0.2. Diese Klassifizierungen werden bei der Erstellung der Firewallregeln verwendet.

```
# config classification:shortname,short description,priority
 
config classification: not-suspicious,Not Suspicious Traffic,3
config classification: unknown,Unknown Traffic,3
config classification: bad-unknown,Potentially Bad Traffic, 2
config classification: attempted-recon,Attempted Information Leak,2
config classification: successful-recon-limited,Information Leak,2
config classification: successful-recon-largescale,Large Scale Information Leak,2
config classification: attempted-dos,Attempted Denial of Service,2
config classification: successful-dos,Denial of Service,2
config classification: attempted-user,Attempted User Privilege Gain,1
config classification: unsuccessful-user,Unsuccessful User Privilege Gain,1
config classification: successful-user,Successful User Privilege Gain,1
config classification: attempted-admin,Attempted Administrator Privilege Gain,1
config classification: successful-admin,Successful Administrator Privilege Gain,1
 
# NEW CLASSIFICATIONS
config classification: rpc-portmap-decode,Decode of an RPC Query,2
config classification: shellcode-detect,Executable code was detected,1
config classification: string-detect,A suspicious string was detected,3
config classification: suspicious-filename-detect,A suspicious filename was detected,2
config classification: suspicious-login,An attempted login using a suspicious username was detected,2
config classification: system-call-detect,A system call was detected,2
config classification: tcp-connection,A TCP connection was detected,4
config classification: trojan-activity,A Network Trojan was detected, 1
config classification: unusual-client-port-connection,A client was using an unusual port,2
config classification: network-scan,Detection of a Network Scan,3
config classification: denial-of-service,Detection of a Denial of Service Attack,2
config classification: non-standard-protocol,Detection of a non-standard protocol or event,2
config classification: protocol-command-decode,Generic Protocol Command Decode,3
config classification: web-application-activity,access to a potentially vulnerable web application,2
config classification: web-application-attack,Web Application Attack,1
config classification: misc-activity,Misc activity,3
config classification: misc-attack,Misc Attack,2
config classification: icmp-event,Generic ICMP event,3
config classification: inappropriate-content,Inappropriate Content was Detected,1
config classification: policy-violation,Potential Corporate Privacy Violation,1
config classification: default-login-attempt,Attempt to login by a default username and password,2
 
# Update
config classification: targeted-activity,Targeted Malicious Activity was Detected,1
config classification: exploit-kit,Exploit Kit Activity Detected,1
config classification: external-ip-check,Device Retrieving External IP Address Detected,2
config classification: domain-c2,Domain Observed Used for C2 Detected,1
config classification: pup-activity,Possibly Unwanted Program Detected,2
config classification: credential-theft,Successful Credential Theft Detected,1
config classification: social-engineering,Possible Social Engineering Attempted,2
config classification: coin-mining,Crypto Currency Mining Activity Detected,2
config classification: command-and-control,Malware Command and Control Activity Detected,1
```

# Bereitstellen von Ressourcen in einer AWS Wavelength Zone mithilfe von Terraform
<a name="deploy-resources-wavelength-zone-using-terraform"></a>

*Zahoor Chaudhrey und Luca Iannario, Amazon Web Services*

## Zusammenfassung
<a name="deploy-resources-wavelength-zone-using-terraform-summary"></a>

[AWS Wavelength](https://docs.aws.amazon.com/wavelength/latest/developerguide/what-is-wavelength.html)hilft Ihnen beim Aufbau einer Infrastruktur, die für Multi-Access Edge Computing (MEC) -Anwendungen optimiert ist. *Wellenlängenzonen* sind AWS Infrastrukturbereitstellungen, die AWS Rechen- und Speicherdienste in die 5G-Netzwerke von Kommunikationsdienstanbietern (CSP) einbetten. Der Anwendungsverkehr von 5G-Geräten erreicht Anwendungsserver, die in Wellenlängenzonen laufen, ohne das Telekommunikationsnetz zu verlassen. Folgendes erleichtert die Netzwerkkonnektivität über Wavelength:
+ **Virtuelle private Clouds (VPCs)** — AWS-Konto können VPCs sich über mehrere Availability Zones erstrecken, einschließlich Wellenlängenzonen. Amazon Elastic Compute Cloud (Amazon EC2) -Instances und zugehörige Services werden als Teil Ihrer regionalen VPC angezeigt. VPCs werden in [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) erstellt und verwaltet.
+ **Carrier-Gateway** — Ein Carrier-Gateway ermöglicht die Konnektivität vom Subnetz in der Wellenlängenzone zum CSP-Netzwerk, zum Internet oder AWS-Region über das Netzwerk des CSP. Das Carrier-Gateway dient zwei Zwecken. Es ermöglicht eingehenden Verkehr von einem CSP-Netzwerk an einem bestimmten Standort und ausgehenden Verkehr zum Telekommunikationsnetz und zum Internet.

Dieses Muster und der zugehörige Terraform-Code helfen Ihnen dabei, Ressourcen wie EC2 Amazon-Instances, Amazon Elastic Block Store (Amazon EBS) -Volumes VPCs, Subnetze und ein Carrier-Gateway in einer Wellenlängenzone zu starten.

## Voraussetzungen und Einschränkungen
<a name="deploy-resources-wavelength-zone-using-terraform-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Eine integrierte Entwicklungsumgebung (IDE)
+ [Wählen Sie die](https://docs.aws.amazon.com/wavelength/latest/developerguide/get-started-wavelength.html#enable-zone-group) Ziel-Wellenlängenzone aus
+ AWS Command Line Interface (AWS CLI), [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Terraform Version 1.8.4 oder höher, [installiert](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) (Terraform-Dokumentation)
+ [Terraform AWS Provider Version 5.32.1 oder höher, konfiguriert (Terraform-Dokumentation)](https://hashicorp.github.io/terraform-provider-aws/)
+ Git, [installiert](https://github.com/git-guides/install-git) (GitHub)
+ [Berechtigungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) zum Erstellen von Amazon VPC-, Wavelength- und Amazon-Ressourcen EC2 

**Einschränkungen**

Nicht alle AWS-Regionen unterstützen Wellenlängenzonen. Weitere Informationen finden Sie unter [Verfügbare Wellenlängenzonen](https://docs.aws.amazon.com/wavelength/latest/developerguide/available-wavelength-zones.html) in der Wellenlängen-Dokumentation.

## Architektur
<a name="deploy-resources-wavelength-zone-using-terraform-architecture"></a>

Das folgende Diagramm zeigt, wie Sie ein Subnetz und AWS Ressourcen in einer Wellenlängenzone erstellen können. VPCs die ein Subnetz in einer Wellenlängenzone enthalten, können eine Verbindung zu einem Carrier-Gateway herstellen. Mit einem Carrier-Gateway können Sie eine Verbindung zu den folgenden Ressourcen herstellen:
+ 4G/LTE- und 5G-Geräte im Netzwerk des Telekommunikationsanbieters.
+ Fester drahtloser Zugang für ausgewählte Wavelength Zone-Partner. Weitere Informationen finden Sie unter [Multi-Access AWS Wavelength](https://docs.aws.amazon.com/wavelength/latest/developerguide/multi-access.html).
+ Ausgehender Verkehr zu öffentlichen Internetressourcen.

![\[Ein Carrier-Gateway verbindet AWS-Ressourcen in der Wavelength Zone mit dem CSP-Netzwerk.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/8c507de1-208c-4563-bb58-52388ab2fa6d/images/a4cc0699-0cbc-4f15-ab14-3ae569ced7f4.png)


## Tools
<a name="deploy-resources-wavelength-zone-using-terraform-tools"></a>

**AWS-Services**
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS.
+ [AWS Wavelength](https://docs.aws.amazon.com/wavelength/latest/developerguide/what-is-wavelength.html)erweitert die AWS Cloud Infrastruktur auf die 5G-Netzwerke von Telekommunikationsanbietern. Auf diese Weise können Sie Anwendungen entwickeln, die Mobilgeräten und Endbenutzern extrem niedrige Latenzen bieten.

**Andere Tools**
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [Creating AWS Wavelength Infrastructure using Terraform](https://github.com/aws-samples/terraform-wavelength-infrastructure) verfügbar. Der Terraform-Code stellt die folgende Infrastruktur und Ressourcen bereit:
+ Eine VPC
+ Eine Wellenlängenzone
+ Ein öffentliches Subnetz in der Wellenlängenzone
+ Ein Carrier-Gateway in der Wellenlängenzone
+ Eine EC2 Amazon-Instance in der Wavelength Zone

## Best Practices
<a name="deploy-resources-wavelength-zone-using-terraform-best-practices"></a>
+ Vergewissern Sie sich vor der Bereitstellung, dass Sie die neuesten Versionen von Terraform und dem verwenden. AWS CLI
+ Verwenden Sie eine CI/CD-Pipeline (Continuous Integration and Continuous Delivery), um IaC bereitzustellen. Weitere Informationen finden Sie in Blogs unter [Bewährte Methoden für die Verwaltung von Terraform State-Dateien in AWS](https://aws.amazon.com/blogs/devops/best-practices-for-managing-terraform-state-files-in-aws-ci-cd-pipeline/) der CI/CD-Pipeline. AWS 

## Epen
<a name="deploy-resources-wavelength-zone-using-terraform-epics"></a>

### Stellen Sie die Infrastruktur bereit
<a name="provision-the-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Geben Sie den folgenden Befehl ein, um das Repository [Creating AWS Wavelength Infrastructure using Terraform](https://github.com/aws-samples/terraform-wavelength-infrastructure) in Ihre Umgebung zu klonen.`git clone git@github.com:aws-samples/terraform-wavelength-infrastructure.git` | DevOps Ingenieur | 
| Aktualisieren Sie die Variablen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-resources-wavelength-zone-using-terraform.html) | DevOps Ingenieur, Terraform | 
| Initialisieren Sie die Konfiguration. | Geben Sie den folgenden Befehl ein, um das Arbeitsverzeichnis zu initialisieren.<pre>terraform init</pre> | DevOps Ingenieur, Terraform | 
| Sehen Sie sich eine Vorschau des Terraform-Plans an. | Geben Sie den folgenden Befehl ein, um den Zielstatus mit dem aktuellen Status Ihrer AWS Umgebung zu vergleichen. Dieser Befehl generiert eine Vorschau der Ressourcen, die konfiguriert werden.<pre>terraform plan</pre> | DevOps Ingenieur, Terraform | 
| Verifizieren und bereitstellen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-resources-wavelength-zone-using-terraform.html) | DevOps Ingenieur, Terraform | 

### Validieren und bereinigen
<a name="validate-and-clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die Bereitstellung der Infrastruktur. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-resources-wavelength-zone-using-terraform.html) | AWS DevOps, DevOps Ingenieur | 
| (Optional) Bereinigen Sie die Infrastruktur. | Wenn Sie alle Ressourcen löschen müssen, die von Terraform bereitgestellt wurden, gehen Sie wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-resources-wavelength-zone-using-terraform.html) | DevOps Ingenieur, Terraform | 

## Fehlerbehebung
<a name="deploy-resources-wavelength-zone-using-terraform-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Konnektivität zu EC2 Amazon-Instances in der AWS-Region. | Weitere Informationen finden Sie unter [Problembehandlung bei der Verbindung mit Ihrer Linux-Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html) oder [Problembehandlung bei der Verbindung mit Ihrer Windows-Instance](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/troubleshooting-windows-instances.html). | 
| Konnektivität zu EC2 Amazon-Instances in der Wavelength Zone. | Weitere Informationen finden Sie unter [Fehlerbehebung bei der SSH- oder RDP-Konnektivität zu meinen EC2 Instances, die in einer Wellenlängenzone gestartet wurden](https://repost.aws/knowledge-center/ec2-wavelength-zone-connection-errors). | 
| Kapazität in der Wellenlängenzone. | Siehe [Kontingente und Überlegungen für Wellenlängenzonen](https://docs.aws.amazon.com/wavelength/latest/developerguide/wavelength-quotas.html). | 
| Mobil- oder Mobilfunkanbieterkonnektivität vom Mobilfunknetz zum AWS-Region. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-resources-wavelength-zone-using-terraform.html) | 

## Zugehörige Ressourcen
<a name="deploy-resources-wavelength-zone-using-terraform-resources"></a>
+ [Was ist AWS Wavelength?](https://docs.aws.amazon.com/wavelength/latest/developerguide/what-is-wavelength.html)
+ [Wie AWS Wavelength funktioniert](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html)
+ [Resilienz in AWS Wavelength](https://docs.aws.amazon.com/wavelength/latest/developerguide/disaster-recovery-resiliency.html)

# Massenmigrieren von DNS-Einträgen in eine private gehostete Zone von Amazon Route 53
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone"></a>

*Ram Kandaswamy, Amazon Web Services*

## Zusammenfassung
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-summary"></a>

Netzwerktechniker und Cloud-Administratoren benötigen eine effiziente und einfache Möglichkeit, DNS-Einträge (Domain Name System) zu privaten Hosting-Zonen in Amazon Route 53 hinzuzufügen. Das manuelle Kopieren von Einträgen aus einem Microsoft Excel-Arbeitsblatt an die entsprechenden Stellen in der Route 53 53-Konsole ist mühsam und fehleranfällig. Dieses Muster beschreibt einen automatisierten Ansatz, der den Zeit- und Arbeitsaufwand für das Hinzufügen mehrerer Datensätze reduziert. Es bietet auch eine wiederholbare Reihe von Schritten für die Erstellung mehrerer gehosteter Zonen.

Dieses Muster verwendet Amazon Simple Storage Service (Amazon S3) zum Speichern von Datensätzen. Um effizient mit Daten zu arbeiten, verwendet das Muster aufgrund seiner Einfachheit und der Fähigkeit, ein Python-Wörterbuch (`dict`Datentyp) zu unterstützen, das JSON-Format.

**Anmerkung**  
Wenn Sie eine Zonendatei von Ihrem System aus generieren können, sollten Sie stattdessen die [Route 53 53-Importfunktion](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating-import.html) verwenden.

## Voraussetzungen und Einschränkungen
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-prereqs"></a>

**Voraussetzungen**
+ Ein Excel-Arbeitsblatt, das private, gehostete Zoneneinträge enthält
+ Vertrautheit mit verschiedenen Typen von DNS-Einträgen wie A-Eintrag, NAPTR-Datensatz (Name Authority Pointer) und SRV-Eintrag (siehe [Unterstützte DNS-Eintragstypen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html))
+ Vertrautheit mit der Sprache Python und ihren Bibliotheken

**Einschränkungen**
+ Das Muster deckt nicht alle Anwendungsszenarien umfassend ab. Beispielsweise [verwendet der Aufruf change\$1resource\$1record\$1sets](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.change_resource_record_sets) nicht alle verfügbaren Eigenschaften der API.
+ Im Excel-Arbeitsblatt wird davon ausgegangen, dass der Wert in jeder Zeile eindeutig ist. Es wird erwartet, dass mehrere Werte für jeden vollqualifizierten Domänennamen (FQDN) in derselben Zeile erscheinen. Wenn das nicht der Fall ist, sollten Sie den in diesem Muster bereitgestellten Code ändern, um die erforderliche Verkettung durchzuführen.
+ Das Muster verwendet das AWS-SDK SDK for Python (Boto3), um den Route 53-Service direkt aufzurufen. Sie können den Code so erweitern, dass er einen CloudFormation AWS-Wrapper für die `update_stack` Befehle `create_stack` und verwendet und die JSON-Werte zum Auffüllen von Vorlagenressourcen verwenden.

## Architektur
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-architecture"></a>

**Technologie-Stack**
+ Route 53 private gehostete Zonen für die Weiterleitung des Datenverkehrs
+ Amazon S3 zum Speichern der JSON-Ausgabedatei

![\[Workflow für die Massenmigration von DNS-Einträgen in eine private gehostete Route 53 53-Zone.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a81c29ea-f0c5-4d4a-ba87-93111a0f1ee9/images/2ada844b-4147-4f9f-8883-d22605aa42d8.png)


Der Workflow besteht aus den folgenden Schritten, wie im vorherigen Diagramm dargestellt und im Abschnitt *Epics* beschrieben:

1. Laden Sie ein Excel-Arbeitsblatt mit den Datensatzinformationen in einen S3-Bucket hoch.

1. Erstellen Sie ein Python-Skript, das die Excel-Daten in das JSON-Format konvertiert, und führen Sie es aus.

1. Lesen Sie die Datensätze aus dem S3-Bucket und bereinigen Sie die Daten.

1. Erstellen Sie Datensätze in Ihrer privaten gehosteten Zone.

## Tools
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-tools"></a>
+ [Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) — Amazon Route 53 ist ein hochverfügbarer und skalierbarer DNS-Webservice, der die Domainregistrierung, das DNS-Routing und die Zustandsprüfung übernimmt.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) ist ein Objektspeicherservice. Mit Amazon S3 können Sie jederzeit beliebige Mengen von Daten von überall aus im Internet speichern und aufrufen.

## Epen
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-epics"></a>

### Bereiten Sie Daten für die Automatisierung vor
<a name="prepare-data-for-automation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Excel-Datei für Ihre Unterlagen. | Verwenden Sie die Datensätze, die Sie aus Ihrem aktuellen System exportiert haben, um ein Excel-Arbeitsblatt zu erstellen, das die erforderlichen Spalten für einen Datensatz enthält, z. B. den vollqualifizierten Domänennamen (FQDN), den Datensatztyp, die Gültigkeitsdauer (TTL) und den Wert. Bei NAPTR- und SRV-Datensätzen ist der Wert eine Kombination aus mehreren Eigenschaften. Verwenden Sie daher die `concat` Excel-Methode, um diese Eigenschaften zu kombinieren.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.html) | Dateningenieur, Excel-Kenntnisse | 
| Überprüfen Sie die Arbeitsumgebung. | Erstellen Sie in Ihrer IDE eine Python-Datei, um das Excel-Eingabearbeitsblatt in das JSON-Format zu konvertieren. (Anstelle einer IDE können Sie auch ein SageMaker Amazon-Notebook verwenden, um mit Python-Code zu arbeiten.)Stellen Sie sicher, dass die von Ihnen verwendete Python-Version Version 3.7 oder höher ist.<pre> python3 --version</pre>Installieren Sie das **Pandas-Paket**.<pre> pip3 install pandas --user</pre> | Allgemeines AWS | 
| Konvertiert die Excel-Arbeitsblattdaten in JSON. | Erstellen Sie eine Python-Datei, die den folgenden Code für die Konvertierung von Excel nach JSON enthält.<pre>import pandas as pd<br />data=pd.read_excel('./Book1.xls')<br />data.to_json(path_or_buf='my.json',orient='records')</pre>wobei `Book1` der Name des Excel-Arbeitsblatts und der Name der JSON-Ausgabedatei `my.json` steht. | Dateningenieur, Python-Kenntnisse | 
| Laden Sie die JSON-Datei in einen S3-Bucket hoch. | Laden Sie die Datei `my.json` zu einem S3-Bucket hoch. Weitere Informationen finden Sie unter [Bucket erstellen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) in der Amazon S3 S3-Dokumentation. | App-Developer | 
| FqdnName | RecordType | Wert | TTL | 
| something.example.org | A | 1.1.1.1 | 900 | 

### Datensätze einfügen
<a name="insert-records"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine private gehostete Zone. | Verwenden Sie die API [create\$1hosted\$1zone](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.create_hosted_zone) und den folgenden Python-Beispielcode, um eine private gehostete Zone zu erstellen. Ersetzen Sie die Parameter und `vpcId` durch `hostedZoneName` Ihre `vpcRegion` eigenen Werte.<pre>import boto3<br />import random<br />hostedZoneName ="xxx"<br />vpcRegion = "us-east-1"<br />vpcId="vpc-xxxx"<br />route53_client = boto3.client('route53')<br />response = route53_client.create_hosted_zone(<br />        Name= hostedZoneName,<br />        VPC={<br />            'VPCRegion: vpcRegion,<br />            'VPCId': vpcId<br />        },<br />        CallerReference=str(random.random()*100000),<br />        HostedZoneConfig={<br />            'Comment': "private hosted zone created by automation",<br />            'PrivateZone': True<br />        }<br />    )<br /> print(response)</pre>Sie können auch ein IaC-Tool (Infrastructure as Code) wie AWS verwenden, CloudFormation um diese Schritte durch eine Vorlage zu ersetzen, die einen Stack mit den entsprechenden Ressourcen und Eigenschaften erstellt. | Cloud-Architekt, Netzwerkadministrator, Python-Kenntnisse | 
| Rufen Sie Details als Wörterbuch von Amazon S3 ab. | Verwenden Sie den folgenden Code, um aus dem S3-Bucket zu lesen und die JSON-Werte als Python-Wörterbuch abzurufen. <pre>fileobj = s3_client.get_object(<br />        Bucket=bucket_name,<br />        Key='my.json'<br />        )<br />    filedata = fileobj['Body'].read()<br />    contents = filedata.decode('utf-8')<br />    json_content=json.loads(contents)<br />    print(json_content)</pre>wo `json_content` enthält das Python-Wörterbuch. | App-Entwickler, Python-Kenntnisse | 
| Saubere Datenwerte für Leerzeichen und Unicode-Zeichen. | Verwenden Sie als Sicherheitsmaßnahme zur Sicherstellung der Richtigkeit der Daten den folgenden Code, um eine Operation mit den Werten in durchzuführen`json_content`. Dieser Code entfernt die Leerzeichen am Anfang und Ende jeder Zeichenfolge. Außerdem wird die `replace` Methode verwendet, um harte (geschützte) Leerzeichen (die `\xa0` Zeichen) zu entfernen.<pre>for item in json_content:<br />    fqn_name = unicodedata.normalize("NFKD",item["FqdnName"].replace("u'", "'").replace('\xa0', '').strip())<br />    rec_type = item["RecordType"].replace('\xa0', '').strip()<br />    res_rec = {<br />                 'Value': item["Value"].replace('\xa0', '').strip()<br />                }</pre> | App-Entwickler, Python-Kenntnisse | 
| Datensätze einfügen. | Verwenden Sie den folgenden Code als Teil der vorherigen `for` Schleife.<pre>change_response = route53_client.change_resource_record_sets(<br />            HostedZoneId="xxxxxxxx",<br />            ChangeBatch={<br />                'Comment': 'Created by automation',<br />                'Changes': [<br />                    {<br />                        'Action': 'UPSERT',<br />                        'ResourceRecordSet': {<br />                            'Name': fqn_name,<br />                            'Type': rec_type,<br />                            'TTL': item["TTL"],<br />                            'ResourceRecords': res_rec<br />                        }<br />                    }<br />                ]<br />            }<br />    )</pre>Wo `xxxxxxx` ist die Hosting-Zonen-ID aus dem ersten Schritt dieses Epos? | App-Entwickler, Python-Kenntnisse | 

## Zugehörige Ressourcen
<a name="migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone-resources"></a>

**Referenzen**
+ [Erstellen von Datensätzen durch Import einer Zonendatei](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating-import.html) (Amazon Route 53 53-Dokumentation)
+ [Methode create\$1hosted\$1zone](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.create_hosted_zone) (Boto3-Dokumentation)
+ [Methode change\$1resource\$1record\$1sets](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html#Route53.Client.change_resource_record_sets) (Boto3-Dokumentation)

**Anleitungen und Videos**
+ [Das Python-Tutorial](https://docs.python.org/3/tutorial/) (Python-Dokumentation)
+ [DNS-Design mit Amazon Route 53](https://www.youtube.com/watch?v=2y_RBjDkRgY) (YouTube Video, *AWS Online Tech Talks*)

# Ändern Sie HTTP-Header, wenn Sie von F5 zu einem Application Load Balancer auf AWS migrieren
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws"></a>

*Sachin Trivedi, Amazon Web Services*

## Zusammenfassung
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-summary"></a>

Wenn Sie eine Anwendung, die einen F5 Load Balancer verwendet, zu Amazon Web Services (AWS) migrieren und einen Application Load Balancer auf AWS verwenden möchten, ist die Migration von F5-Regeln für Header-Änderungen ein häufiges Problem. Ein Application Load Balancer unterstützt keine Header-Änderungen, aber Sie können Amazon CloudFront als Content Delivery Network (CDN) und Lambda @Edge verwenden, um Header zu ändern.

Dieses Muster beschreibt die erforderlichen Integrationen und bietet Beispielcode für die Header-Änderung mithilfe von AWS CloudFront und Lambda @Edge.

## Voraussetzungen und Einschränkungen
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-prereqs"></a>

**Voraussetzungen**
+ Eine lokale Anwendung, die einen F5-Load Balancer mit einer Konfiguration verwendet, die den HTTP-Header-Wert ersetzt durch `if, else` Weitere Informationen zu dieser Konfiguration finden Sie unter [HTTP: :header](https://clouddocs.f5.com/api/irules/HTTP__header.html) in der F5-Produktdokumentation. 

**Einschränkungen**
+ Dieses Muster gilt für die Anpassung des F5-Load Balancer-Headers. Informationen zur Unterstützung anderer Load Balancer von Drittanbietern finden Sie in der Load Balancer-Dokumentation.
+ Die Lambda-Funktionen, die Sie für Lambda @Edge verwenden, müssen sich in der Region USA Ost (Nord-Virginia) befinden.

## Architektur
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-architecture"></a>

Das folgende Diagramm zeigt die Architektur auf AWS, einschließlich des Integrationsflusses zwischen dem CDN und anderen AWS-Komponenten.

![\[Architektur für Header-Modifikation mithilfe von Amazon CloudFront und Lambda @Edge\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/00abbe3c-2453-4291-9b24-b488dced4868/images/4ee9a19e-6da2-4c5a-a8bc-19d3918a166e.png)


## Tools
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-tools"></a>

**AWS-Services**
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) ─ Ein Application Load Balancer ist ein vollständig verwalteter AWS-Load-Balancing-Service, der auf der siebten Ebene des Open Systems Interconnection (OSI) -Modells funktioniert. Er verteilt den Datenverkehr auf mehrere Ziele und unterstützt erweiterte Routing-Anfragen, die auf HTTP-Headern und -Methoden, Abfragezeichenfolgen und host- oder pfadbasiertem Routing basieren.
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) — Amazon CloudFront ist ein Webservice, der die Verteilung Ihrer statischen und dynamischen Webinhalte wie .html-, .css-, .js- und Bilddateien an Ihre Benutzer beschleunigt. CloudFront stellt Ihre Inhalte über ein weltweites Netzwerk von Rechenzentren bereit, die als Edge-Standorte bezeichnet werden, um die Latenz zu verringern und die Leistung zu verbessern.
+ [Lambda @Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html) ─ Lambda @Edge ist eine Erweiterung von AWS Lambda, mit der Sie Funktionen ausführen können, um den bereitgestellten Inhalt anzupassen. CloudFront Sie können Funktionen in der Region USA Ost (Nord-Virginia) erstellen und die Funktion dann einer CloudFront Distribution zuordnen, um Ihren Code automatisch auf der ganzen Welt zu replizieren, ohne Server bereitstellen oder verwalten zu müssen. Dies reduziert die Latenz und verbessert die Benutzererfahrung.

**Code**

Der folgende Beispielcode bietet einen Blueprint zum Ändern von CloudFront Antwort-Headern. Folgen Sie den Anweisungen im Abschnitt *Epics*, um den Code bereitzustellen.

```
exports.handler = async (event, context) => {
    const response = event.Records[0].cf.response;
    const headers = response.headers;


    const headerNameSrc = 'content-security-policy';
    const headerNameValue = '*.xyz.com';


    if (headers[headerNameSrc.toLowerCase()]) {
        headers[headerNameSrc.toLowerCase()] = [{
            key: headerNameSrc,
            value: headerNameValue,
        }];
        console.log(`Response header "${headerNameSrc}" was set to ` +
                    `"${headers[headerNameSrc.toLowerCase()][0].value}"`);
    }
    else {
            headers[headerNameSrc.toLowerCase()] = [{
            key: headerNameSrc,
            value: headerNameValue,
            }];
    }
    return response;
};
```

## Epen
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-epics"></a>

### Erstellen Sie eine CDN-Distribution
<a name="create-a-cdn-distribution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine CloudFront Webdistribution.  | In diesem Schritt erstellen Sie eine CloudFront Verteilung, in der Sie angeben, von CloudFront wo aus Inhalte bereitgestellt werden sollen. Außerdem erfahren Sie, wie Sie die Inhaltsbereitstellung nachverfolgen und verwalten können.Um eine Verteilung mithilfe der Konsole zu erstellen, melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die [CloudFront Konsole](https://console.aws.amazon.com/cloudfront/v3/home) und folgen Sie dann den Schritten in der [CloudFront Dokumentation](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html). | Cloud-Administrator | 

### Lambda @Edge -Funktion erstellen und bereitstellen
<a name="create-and-deploy-the-lambda-edge-function"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Lambda @Edge -Funktion und stellen Sie sie bereit. | Sie können eine Lambda @Edge -Funktion erstellen, indem Sie einen Blueprint zum Ändern von CloudFront Antwortheadern verwenden. (Andere BluePrints sind für verschiedene Anwendungsfälle verfügbar; weitere Informationen finden Sie in der CloudFront Dokumentation unter [Lambda @Edge -Beispielfunktionen](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html).) Um eine Lambda @Edge -Funktion zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws.html) | AWS-Administrator | 
| Stellen Sie die Lambda @Edge -Funktion bereit. | Folgen Sie den Anweisungen in [Schritt 4](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works-tutorial.html#lambda-edge-how-it-works-tutorial-add-trigger) des *Tutorials: Erstellen einer einfachen Lambda @Edge -Funktion* in der CloudFront Amazon-Dokumentation, um den CloudFront Trigger zu konfigurieren und die Funktion bereitzustellen. | AWS-Administrator | 

## Zugehörige Ressourcen
<a name="modify-http-headers-when-you-migrate-from-f5-to-an-application-load-balancer-on-aws-resources"></a>

**CloudFront Dokumentation**
+ [Anfrage- und Antwortverhalten für benutzerdefinierte Ursprünge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html) 
+ [Mit Distributionen arbeiten](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-working-with.html) 
+ [Lambda @Edge -Beispielfunktionen](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html) 
+ [Anpassung am Edge mit Lambda @Edge](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html)
+ [Tutorial: Eine einfache Lambda @Edge -Funktion erstellen](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works-tutorial.html)

# Erstellen Sie einen Bericht mit den Ergebnissen von Network Access Analyzer für eingehenden Internetzugang in mehreren AWS-Konten
<a name="create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts"></a>

*Mike Virgilio, Amazon Web Services*

## Zusammenfassung
<a name="create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts-summary"></a>

Unbeabsichtigter eingehender Internetzugriff auf AWS Ressourcen kann Risiken für den Datenperimeter eines Unternehmens darstellen. [Network Access Analyzer](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/what-is-network-access-analyzer.html) ist eine Funktion von Amazon Virtual Private Cloud (Amazon VPC), mit der Sie unbeabsichtigte Netzwerkzugriffe auf Ihre Ressourcen auf Amazon Web Services (AWS) identifizieren können. Sie können Network Access Analyzer verwenden, um Ihre Netzwerkzugriffsanforderungen zu spezifizieren und potenzielle Netzwerkpfade zu identifizieren, die Ihren angegebenen Anforderungen nicht entsprechen. Sie können Network Access Analyzer verwenden, um Folgendes zu tun:

1. Identifizieren Sie AWS Ressourcen, auf die über Internet-Gateways über das Internet zugegriffen werden kann.

1. Stellen Sie sicher, dass Ihre virtuellen privaten Clouds (VPCs) angemessen segmentiert sind, z. B. durch die Isolierung von Produktions- und Entwicklungsumgebungen und die Trennung von Transaktionsworkloads.

Network Access Analyzer analysiert die Bedingungen der end-to-end Netzwerkerreichbarkeit und nicht nur eine einzelne Komponente. Um festzustellen, ob eine Ressource über das Internet zugänglich ist, bewertet Network Access Analyzer das Internet-Gateway, VPC-Routentabellen, Netzwerkzugriffskontrolllisten (ACLs), öffentliche IP-Adressen auf elastischen Netzwerkschnittstellen und Sicherheitsgruppen. Wenn eine dieser Komponenten den Internetzugang verhindert, generiert Network Access Analyzer kein Ergebnis. Wenn eine Amazon Elastic Compute Cloud (Amazon EC2) -Instance beispielsweise über eine offene Sicherheitsgruppe verfügt, die Datenverkehr zulässt, sich die Instance `0/0` aber in einem privaten Subnetz befindet, das von keinem Internet-Gateway aus routbar ist, würde Network Access Analyzer kein Ergebnis generieren. Dies liefert qualitativ hochwertige Ergebnisse, sodass Sie Ressourcen identifizieren können, auf die wirklich über das Internet zugegriffen werden kann.

Wenn Sie Network Access Analyzer ausführen, verwenden Sie [Network Access Scopes](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/what-is-network-access-analyzer.html#concepts), um Ihre Netzwerkzugriffsanforderungen zu spezifizieren. Diese Lösung identifiziert Netzwerkpfade zwischen einem Internet-Gateway und einer elastic network interface. Bei diesem Muster stellen Sie die Lösung in einer zentralen Umgebung Ihrer Organisation bereit, die von allen Konten AWS-Konto in der Organisation verwaltet wird AWS Organizations, und sie analysiert alle Konten in der Organisation. AWS-Region

Bei der Entwicklung dieser Lösung wurde Folgendes berücksichtigt:
+ Die AWS CloudFormation Vorlagen reduzieren den Aufwand, der für die Bereitstellung der AWS Ressourcen in diesem Muster erforderlich ist.
+ Sie können die Parameter in den CloudFormation Vorlagen und im Skript **naa-script.sh** zum Zeitpunkt der Bereitstellung anpassen, um sie an Ihre Umgebung anzupassen.
+ Bash-Scripting stellt automatisch die Network Access Scopes für mehrere Konten parallel bereit und analysiert sie.
+ Ein Python-Skript verarbeitet die Ergebnisse, extrahiert die Daten und konsolidiert dann die Ergebnisse. Sie können wählen, ob Sie den konsolidierten Bericht mit den Ergebnissen von Network Access Analyzer im CSV-Format oder in AWS Security Hub CSPMüberprüfen möchten. Ein Beispiel für den CSV-Bericht finden Sie im Abschnitt [Zusätzliche Informationen](#create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts-additional) dieses Musters.
+ Sie können Ergebnisse korrigieren oder sie von future Analysen ausschließen, indem Sie sie der Datei **naa-exclusions.csv** hinzufügen.

## Voraussetzungen und Einschränkungen
<a name="create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts-prereqs"></a>

**Voraussetzungen**
+ Ein AWS-Konto zum Hosten von Sicherheitsdiensten und -tools, das als Mitgliedskonto einer Organisation in AWS Organizations verwaltet wird. In diesem Muster wird dieses Konto als Sicherheitskonto bezeichnet.
+ Im Sicherheitskonto müssen Sie über ein privates Subnetz mit ausgehendem Internetzugang verfügen. Anweisungen finden Sie unter [Erstellen eines Subnetzes](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html) in der Amazon VPC-Dokumentation. Sie können den Internetzugang mithilfe eines [NAT-Gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) oder eines [VPC-Schnittstellen-Endpunkts](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) einrichten.
+ Zugriff auf das AWS Organizations Verwaltungskonto oder ein Konto, für das Administratorrechte delegiert wurden. CloudFormation Anweisungen finden Sie in der [Dokumentation unter Registrieren eines delegierten Administrators](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html). CloudFormation 
+ Aktivieren Sie den vertrauenswürdigen Zugriff zwischen AWS Organizations und CloudFormation. Anweisungen finden Sie AWS Organizations in der CloudFormation Dokumentation unter [Vertrauenswürdigen Zugriff aktivieren mit](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html).
+ Wenn Sie die Ergebnisse auf Security Hub CSPM hochladen, muss Security Hub CSPM für das Konto und den AWS-Region Ort, an dem die Amazon-Instance bereitgestellt wird, aktiviert sein. EC2 Weitere Informationen finden Sie unter [Einrichten AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-settingup.html).

**Einschränkungen**
+ Kontoübergreifende Netzwerkpfade werden derzeit aufgrund von Einschränkungen der Network Access Analyzer-Funktion nicht analysiert.
+ Das Ziel AWS-Konten muss als Organisation in AWS Organizations verwaltet werden. **Wenn Sie das nicht verwenden AWS Organizations, können Sie die CloudFormation Vorlage **naa-execrole.yaml** und das Skript naa-script.sh für Ihre Umgebung aktualisieren.** Stattdessen geben Sie eine Liste der Regionen an, in denen Sie das AWS-Konto IDs Skript ausführen möchten.
+ Die CloudFormation Vorlage ist für die Bereitstellung der EC2 Amazon-Instance in einem privaten Subnetz mit ausgehendem Internetzugang konzipiert. Der AWS Systems Manager Agent (SSM-Agent) benötigt ausgehenden Zugriff, um den Systems Manager-Dienstendpunkt zu erreichen, und Sie benötigen ausgehenden Zugriff, um das Code-Repository zu klonen und Abhängigkeiten zu installieren. Wenn Sie ein öffentliches Subnetz verwenden möchten, müssen Sie die Vorlage **naa-resources.yaml** ändern, um der Amazon-Instance eine [Elastic IP-Adresse](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) zuzuordnen. EC2 

## Architektur
<a name="create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts-architecture"></a>

**Zielarchitektur**

*Option 1: Auf Ergebnisse in einem Amazon S3 S3-Bucket zugreifen*

![\[Architekturdiagramm für den Zugriff auf den Network Access Analyzer-Ergebnisbericht in einem Amazon S3 S3-Bucket\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/eda6abba-632a-4e3d-92b9-31848fa6dead/images/d0b08437-e5b0-47a1-abdd-040c67b5da8f.png)


Das Diagramm zeigt den folgenden Prozess:

1. Wenn Sie die Lösung manuell ausführen, authentifiziert sich der Benutzer mit Session Manager bei der EC2 Amazon-Instance und führt dann das Skript **naa-script.sh** aus. Dieses Shell-Skript führt die Schritte 2—7 aus.

   Wenn Sie die Lösung automatisch ausführen, wird das Skript **naa-script.sh** automatisch nach dem Zeitplan gestartet, den Sie im Cron-Ausdruck definiert haben. Dieses Shell-Skript führt die Schritte 2 bis 7 aus. Weitere Informationen finden Sie unter *Automatisierung und Skalierung* am Ende dieses Abschnitts.

1. Die EC2 Amazon-Instance lädt die neueste Datei **naa-exception.csv** aus dem Amazon S3-Bucket herunter. Diese Datei wird später im Prozess verwendet, wenn das Python-Skript die Ausnahmen verarbeitet.

1. Die EC2 Amazon-Instance übernimmt die Rolle `NAAEC2Role` AWS Identity and Access Management (IAM), die Berechtigungen für den Zugriff auf den Amazon S3-Bucket und für die Übernahme der `NAAExecRole` IAM-Rollen in den anderen Konten in der Organisation gewährt.

1. Die EC2 Amazon-Instance übernimmt die `NAAExecRole` IAM-Rolle im Verwaltungskonto der Organisation und generiert eine Liste der Konten in der Organisation.

1. Die EC2 Amazon-Instance übernimmt die `NAAExecRole` IAM-Rolle in den Mitgliedskonten der Organisation (im Architekturdiagramm als *Workload-Konten* bezeichnet) und führt für jedes Konto eine Sicherheitsbewertung durch. Die Ergebnisse werden als JSON-Dateien auf der EC2 Amazon-Instance gespeichert.

1. Die EC2 Amazon-Instance verwendet ein Python-Skript, um die JSON-Dateien zu verarbeiten, die Datenfelder zu extrahieren und einen CSV-Bericht zu erstellen.

1. Die EC2 Amazon-Instance lädt die CSV-Datei in den Amazon S3-Bucket hoch.

1. Eine EventBridge Amazon-Regel erkennt den Datei-Upload und verwendet ein Amazon SNS-Thema, um eine E-Mail zu senden, die den Benutzer darüber informiert, dass der Bericht abgeschlossen ist.

1. Der Benutzer lädt die CSV-Datei aus dem Amazon S3 S3-Bucket herunter. Der Benutzer importiert die Ergebnisse in die Excel-Vorlage und überprüft die Ergebnisse.

*Option 2: Zugriff auf Ergebnisse in AWS Security Hub CSPM*

![\[Architekturdiagramm für den Zugriff auf die Ergebnisse von Network Access Analyzer über AWS Security Hub\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/eda6abba-632a-4e3d-92b9-31848fa6dead/images/9cb4f059-dfb6-4a33-9f8d-159fe5df0d64.png)


Das Diagramm zeigt den folgenden Prozess:

1. Wenn Sie die Lösung manuell ausführen, authentifiziert sich der Benutzer mit Session Manager bei der EC2 Amazon-Instance und führt dann das Skript **naa-script.sh** aus. Dieses Shell-Skript führt die Schritte 2—7 aus.

   Wenn Sie die Lösung automatisch ausführen, wird das Skript **naa-script.sh** automatisch nach dem Zeitplan gestartet, den Sie im Cron-Ausdruck definiert haben. Dieses Shell-Skript führt die Schritte 2 bis 7 aus. Weitere Informationen finden Sie unter *Automatisierung und Skalierung* am Ende dieses Abschnitts.

1. Die EC2 Amazon-Instance lädt die neueste Datei **naa-exception.csv** aus dem Amazon S3-Bucket herunter. Diese Datei wird später im Prozess verwendet, wenn das Python-Skript die Ausnahmen verarbeitet.

1. Die EC2 Amazon-Instance übernimmt die `NAAEC2Role` IAM-Rolle, die Berechtigungen für den Zugriff auf den Amazon S3-Bucket und für die Übernahme der `NAAExecRole` IAM-Rollen in den anderen Konten in der Organisation gewährt.

1. Die EC2 Amazon-Instance übernimmt die `NAAExecRole` IAM-Rolle im Verwaltungskonto der Organisation und generiert eine Liste der Konten in der Organisation.

1. Die EC2 Amazon-Instance übernimmt die `NAAExecRole` IAM-Rolle in den Mitgliedskonten der Organisation (im Architekturdiagramm als *Workload-Konten* bezeichnet) und führt für jedes Konto eine Sicherheitsbewertung durch. Die Ergebnisse werden als JSON-Dateien auf der EC2 Amazon-Instance gespeichert.

1. Die EC2 Amazon-Instance verwendet ein Python-Skript, um die JSON-Dateien zu verarbeiten und die Datenfelder für den Import in Security Hub CSPM zu extrahieren.

1. Die EC2 Amazon-Instance importiert die Ergebnisse von Network Access Analyzer in Security Hub CSPM.

1. Eine EventBridge Amazon-Regel erkennt den Import und verwendet ein Amazon SNS-Thema, um eine E-Mail zu senden, die den Benutzer darüber informiert, dass der Vorgang abgeschlossen ist.

1. Der Benutzer sieht sich die Ergebnisse in Security Hub CSPM an.

**Automatisierung und Skalierung**

Sie können diese Lösung so planen, dass das Skript **naa-script.sh** automatisch nach einem benutzerdefinierten Zeitplan ausgeführt wird. Um einen benutzerdefinierten Zeitplan festzulegen, ändern Sie in der CloudFormation Vorlage **naa-resources.yaml** den Parameter. `CronScheduleExpression` Der Standardwert von `0 0 * * 0` führt die Lösung beispielsweise jeden Sonntag um Mitternacht aus. Ein Wert von `0 0 * 1-12 0` würde die Lösung jeden ersten Sonntag im Monat um Mitternacht ausführen. Weitere Informationen zur Verwendung von Cron-Ausdrücken finden Sie unter [Cron- und Rate-Ausdrücke](https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html) in der Systems Manager Manager-Dokumentation.

Wenn Sie den Zeitplan nach der Bereitstellung des `NAA-Resources` Stacks anpassen möchten, können Sie den Cron-Zeitplan unter manuell bearbeiten. `/etc/cron.d/naa-schedule`

## Tools
<a name="create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts-tools"></a>

**AWS-Services**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) bietet skalierbare Rechenkapazität in der AWS Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)ist ein Kontoverwaltungsservice, mit dem Sie mehrere Konten zu einer Organisation AWS-Konten zusammenfassen können, die Sie erstellen und zentral verwalten.
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)bietet einen umfassenden Überblick über Ihren Sicherheitsstatus in AWS. Es hilft Ihnen auch dabei, Ihre AWS Umgebung anhand der Sicherheitsstandards und bewährten Verfahren der Branche zu überprüfen.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)hilft Ihnen bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der AWS Cloud ausgeführt werden. Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS Ressourcen sicher und in großem Umfang zu verwalten. Dieses Muster verwendet Session Manager, eine Funktion von Systems Manager.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [Network Access Analyzer Multi-Account Analysis-Repository](https://github.com/aws-samples/network-access-analyzer-multi-account-analysis) verfügbar. Das Code-Repository enthält die folgenden Dateien:
+ **naa-script.sh** — Dieses Bash-Skript wird verwendet, um eine Network Access Analyzer-Analyse mehrerer AWS-Konten parallel zu starten. Wie in der CloudFormation Vorlage **naa-resources.yaml** definiert, wird dieses Skript automatisch im `/usr/local/naa` Ordner auf der Amazon-Instance bereitgestellt. EC2 
+ **naa-resources.yaml** — Sie verwenden diese CloudFormation Vorlage, um einen Stack im Sicherheitskonto der Organisation zu erstellen. Diese Vorlage stellt alle erforderlichen Ressourcen für dieses Konto bereit, um die Lösung zu unterstützen. Dieser Stack muss vor der Vorlage **naa-execrole.yaml** bereitgestellt werden.
**Anmerkung**  
Wenn dieser Stack gelöscht und erneut bereitgestellt wird, müssen Sie den `NAAExecRole` Stacksatz neu erstellen, um die kontenübergreifenden Abhängigkeiten zwischen den IAM-Rollen wiederherzustellen.
+ **naa-execrole.yaml** — Sie verwenden diese CloudFormation Vorlage, um ein Stack-Set zu erstellen, das die `NAAExecRole` IAM-Rolle in allen Konten der Organisation, einschließlich des Verwaltungskontos, bereitstellt.
+ **naa-processfindings.py** — Das Skript **naa-script.sh** ruft dieses Python-Skript automatisch auf, um die JSON-Ausgaben von Network Access Analyzer zu verarbeiten, alle zweifelsfrei funktionierenden Ressourcen in der Datei **naa-exclusions.csv** auszuschließen und dann entweder eine CSV-Datei mit den konsolidierten Ergebnissen zu generieren oder die Ergebnisse in Security Hub CSPM zu importieren.

## Epen
<a name="create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts-epics"></a>

### Bereite dich auf den Einsatz vor
<a name="prepare-for-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Code-Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 
| Überprüfen Sie die Vorlagen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 

### Erstellen Sie die CloudFormation Stapel
<a name="create-the-cfnshort-stacks"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie Ressourcen im Sicherheitskonto bereit. | Mithilfe der Vorlage **naa-resources.yaml** erstellen Sie einen CloudFormation Stack, der alle erforderlichen Ressourcen im Sicherheitskonto bereitstellt. Anweisungen finden Sie in der Dokumentation unter [Einen Stack erstellen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). CloudFormation Beachten Sie bei der Bereitstellung dieser Vorlage Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 
| Stellen Sie die IAM-Rolle in den Mitgliedskonten bereit. | Verwenden Sie im AWS Organizations Verwaltungskonto oder einem Konto mit delegierten Administratorrechten für die Vorlage **naa-execrole.yaml CloudFormation**, um ein Stack-Set zu erstellen. CloudFormation Das Stack-Set stellt die `NAAExecRole` IAM-Rolle in allen Mitgliedskonten der Organisation bereit. Anweisungen finden Sie in der Dokumentation unter [Erstellen eines Stack-Sets mit vom Service verwalteten Berechtigungen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-getting-started-create.html#stacksets-orgs-associate-stackset-with-org). CloudFormation Beachten Sie bei der Bereitstellung dieser Vorlage Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 
| Stellen Sie die IAM-Rolle im Verwaltungskonto bereit. | Mithilfe der Vorlage **naa-execrole.yaml** erstellen Sie einen CloudFormation Stack, der die `NAAExecRole` IAM-Rolle im Verwaltungskonto der Organisation bereitstellt. Das Stack-Set, das Sie zuvor erstellt haben, stellt die IAM-Rolle nicht im Verwaltungskonto bereit. Anweisungen finden Sie in der CloudFormation Dokumentation unter [Einen Stack erstellen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). Beachten Sie bei der Bereitstellung dieser Vorlage Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 

### Führen Sie die Analyse durch
<a name="perform-the-analysis"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Passen Sie das Shell-Skript an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 
| Analysieren Sie die Zielkonten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 
| Option 1 — Rufen Sie die Ergebnisse aus dem Amazon S3 S3-Bucket ab. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 
| Option 2 — Überprüfen Sie die Ergebnisse in Security Hub CSPM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 

### Ergebnisse korrigieren und ausschließen
<a name="remediate-and-exclude-findings"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Korrigieren Sie die Ergebnisse. | Korrigieren Sie alle Ergebnisse, die Sie korrigieren möchten. Weitere Informationen und bewährte Methoden zur Einrichtung eines Perimeters rund um Ihre AWS Identitäten, Ressourcen und Netzwerke finden Sie unter [Building a data perimeter on AWS](https://docs.aws.amazon.com/whitepapers/latest/building-a-data-perimeter-on-aws/building-a-data-perimeter-on-aws.html) (Whitepaper).AWS  | AWS DevOps | 
| Schließen Sie Ressourcen mit zweifelsfrei funktionierenden Netzwerkpfaden aus. | Wenn Network Access Analyzer Ergebnisse für Ressourcen generiert, auf die über das Internet zugegriffen werden sollte, können Sie diese Ressourcen zu einer Ausschlussliste hinzufügen. Wenn Network Access Analyzer das nächste Mal ausgeführt wird, wird kein Ergebnis für diese Ressource generiert.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 

### (Optional) Aktualisieren Sie das Skript naa-script.sh
<a name="optional-update-the-naa-script-sh-script"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktualisieren Sie das Skript naa-script.sh. | Wenn Sie das Skript **naa-script.sh** auf die neueste Version im Repository aktualisieren möchten, gehen Sie wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 

### (Optional) Bereinigen
<a name="optional-clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie alle bereitgestellten Ressourcen. | Sie können die bereitgestellten Ressourcen in den Konten belassen.Wenn Sie die Bereitstellung aller Ressourcen aufheben möchten, gehen Sie wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | AWS DevOps | 

## Fehlerbehebung
<a name="create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Es konnte keine Verbindung mit der EC2 Amazon-Instance mithilfe des Sitzungsmanagers hergestellt werden. | Der SSM-Agent muss in der Lage sein, mit dem Systems Manager Manager-Endpunkt zu kommunizieren. Gehen Sie wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts.html) | 
| Bei der Bereitstellung des Stack-Sets werden Sie von der CloudFormation Konsole dazu aufgefordert. `Enable trusted access with AWS Organizations to use service-managed permissions` | Dies weist darauf hin, dass der vertrauenswürdige Zugriff zwischen AWS Organizations und CloudFormation nicht aktiviert wurde. Für die Bereitstellung des vom Service verwalteten Stack-Sets ist ein vertrauenswürdiger Zugriff erforderlich. Wählen Sie die Schaltfläche, um den vertrauenswürdigen Zugriff zu aktivieren. Weitere Informationen finden Sie in der CloudFormation Dokumentation unter [Vertrauenswürdigen Zugriff aktivieren](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html). | 

## Zugehörige Ressourcen
<a name="create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts-resources"></a>
+ [Neu — Amazon VPC Network Access Analyzer](https://aws.amazon.com/blogs/aws/new-amazon-vpc-network-access-analyzer/) (AWS Blogbeitrag)
+ [AWS re:INFORCE 2022 — Validieren Sie effektive Netzwerkzugriffskontrollen auf AWS (NIS202) (Video)](https://youtu.be/aN2P2zeQek0)
+ [Demo — Unternehmensweite Analyse von eingehenden Internetdaten mithilfe des Network Access Analyzer](https://youtu.be/1IFNZWy4iy0) (Video)

## Zusätzliche Informationen
<a name="create-a-report-of-network-access-analyzer-findings-for-inbound-internet-access-in-multiple-aws-accounts-additional"></a>

**Beispiel für eine Konsolenausgabe**

Das folgende Beispiel zeigt die Ausgabe der Generierung der Liste der Zielkonten und der Analyse der Zielkonten.

```
[root@ip-10-10-43-82 naa]# ./naa-script.sh
download: s3://naa-<account ID>-us-east-1/naa-exclusions.csv to ./naa-exclusions.csv

AWS Management Account: <Management account ID>

AWS Accounts being processed...
<Account ID 1> <Account ID 2> <Account ID 3>

Assessing AWS Account: <Account ID 1>, using Role: NAAExecRole
Assessing AWS Account: <Account ID 2>, using Role: NAAExecRole
Assessing AWS Account: <Account ID 3>, using Role: NAAExecRole
Processing account: <Account ID 1> / Region: us-east-1
Account: <Account ID 1> / Region: us-east-1 – Detecting Network Analyzer scope...
Processing account: <Account ID 2> / Region: us-east-1
Account: <Account ID 2> / Region: us-east-1 – Detecting Network Analyzer scope...
Processing account: <Account ID 3> / Region: us-east-1
Account: <Account ID 3> / Region: us-east-1 – Detecting Network Analyzer scope...
Account: <Account ID 1> / Region: us-east-1 – Network Access Analyzer scope detected.
Account: <Account ID 1> / Region: us-east-1 – Continuing analyses with Scope ID. Accounts with many resources may take up to one hour
Account: <Account ID 2> / Region: us-east-1 – Network Access Analyzer scope detected.
Account: <Account ID 2> / Region: us-east-1 – Continuing analyses with Scope ID. Accounts with many resources may take up to one hour
Account: <Account ID 3> / Region: us-east-1 – Network Access Analyzer scope detected.
Account: <Account ID 3> / Region: us-east-1 – Continuing analyses with Scope ID. Accounts with many resources may take up to one hour
```

**Beispiele für CSV-Berichte**

Die folgenden Bilder sind Beispiele für die CSV-Ausgabe.

![\[Beispiel 1 des mit dieser Lösung generierten CSV-Berichts.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/eda6abba-632a-4e3d-92b9-31848fa6dead/images/55e02e61-054e-4da6-aaae-c9a8b6f4f272.png)


![\[Beispiel 2 des mit dieser Lösung generierten CSV-Berichts.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/eda6abba-632a-4e3d-92b9-31848fa6dead/images/95f980ad-92c1-4392-92d4-9c742755aab2.png)


# Richten Sie die DNS-Auflösung für Hybridnetzwerke in einer Umgebung mit mehreren Konten AWS ein
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment"></a>

*Anvesh Koganti, Amazon Web Services*

## Zusammenfassung
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-summary"></a>

Dieses Muster bietet eine umfassende Lösung für die Einrichtung der DNS-Auflösung in hybriden Netzwerkumgebungen, die mehrere Amazon Web Services (AWS) -Konten umfassen. Es ermöglicht die bidirektionale DNS-Auflösung zwischen lokalen Netzwerken und der AWS Umgebung über Amazon Route 53 Resolver Endpunkte. Das Muster bietet zwei Lösungen, um die DNS-Auflösung in einer zentralisierten Architektur mit [mehreren Konten](https://docs.aws.amazon.com/whitepapers/latest/hybrid-cloud-dns-options-for-vpc/scaling-dns-management-across-multiple-accounts-and-vpcs.html#multi-account-centralized) zu ermöglichen:
+ Bei der *Grundkonfiguration* werden keine Route 53 53-Profile verwendet. Es hilft, die Kosten für kleine bis mittlere Bereitstellungen mit geringerer Komplexität zu optimieren.
+ Das *erweiterte Setup* verwendet Route 53 53-Profile, um den Betrieb zu vereinfachen. Es eignet sich am besten für größere oder komplexere DNS-Bereitstellungen.

**Anmerkung**  
Informieren Sie sich vor der Implementierung im Abschnitt *Einschränkungen* über Diensteinschränkungen und Kontingente. Berücksichtigen Sie bei Ihrer Entscheidung Faktoren wie Verwaltungsaufwand, Kosten, betriebliche Komplexität und Teamkompetenz.

## Voraussetzungen und Einschränkungen
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-prereqs"></a>

**Voraussetzungen**
+ Eine Umgebung mit AWS mehreren Konten mit Amazon Virtual Private Cloud (Amazon VPC), die für Shared Services- und Workload-Konten bereitgestellt wird (vorzugsweise über [AWS Control Tower eingerichtet, wobei AWS bewährte Methoden für die Kontostruktur befolgt werden](https://docs.aws.amazon.com/controltower/latest/userguide/aws-multi-account-landing-zone.html)).
+ Bestehende hybride Konnektivität (AWS Direct Connect oder AWS Site-to-Site VPN) zwischen Ihrem lokalen Netzwerk und der Umgebung. AWS 
+ Amazon VPC-Peering oder AWS Cloud WAN für Layer-3-Netzwerkkonnektivität zwischen. AWS Transit Gateway VPCs (Diese Konnektivität ist für den Anwendungsdatenverkehr erforderlich. Sie ist nicht erforderlich, damit die DNS-Auflösung funktioniert. Die DNS-Auflösung funktioniert unabhängig von der Netzwerkkonnektivität zwischen den VPCs.)
+ DNS-Server, die in der lokalen Umgebung ausgeführt werden.

**Einschränkungen**
+ Die Endpunkte, Regeln und Profile von Route 53 Resolver sind regionale Konstrukte und erfordern für globale Organisationen möglicherweise mehrere AWS-Regionen Replikationen.
+ Eine umfassende Liste der Dienstkontingente für Route 53 Resolver, private gehostete Zonen und Profile finden Sie in der Route 53-Dokumentation unter [Kontingente](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html).

## Architektur
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-architecture"></a>

**Zieltechnologie-Stack**
+ Routet 53 ausgehende und eingehende Endpunkte
+ Route 53 Resolver-Regeln für die bedingte Weiterleitung
+ AWS Resource Access Manager (AWS RAM)
+ Private gehostete Zone von Route 53

**Zielarchitektur**

**Endpunkte für ausgehenden und eingehenden Datenverkehr**

Das folgende Diagramm zeigt den DNS-Auflösungsfluss von AWS zu vor Ort. Dies ist das Konnektivitäts-Setup für ausgehende Auflösungen, bei denen die Domäne lokal gehostet wird. Im Folgenden finden Sie einen allgemeinen Überblick über den Prozess, der bei der Einrichtung erforderlich ist. Einzelheiten finden Sie im Abschnitt [Epics](#set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-epics).

1. Stellen Sie ausgehende Route 53-Resolver-Endpunkte in der Shared Services-VPC bereit.

1. Erstellen Sie Route 53 Resolver-Regeln (Weiterleitungsregeln) im Shared Services-Konto für Domänen, die lokal gehostet werden.

1. Teilen und verknüpfen Sie die Regeln mit VPCs anderen Konten, die Ressourcen hosten, die für die Auflösung lokal gehosteter Domänen erforderlich sind. Dies kann je nach Anwendungsfall auf unterschiedliche Weise geschehen, wie später in diesem Abschnitt beschrieben wird.

![\[Eingehende und ausgehende Endpunkte in einem DNS-Auflösungsfluss von AWS zum lokalen Standort.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/01e700cd-be8c-4a5d-bc89-b901a260d045/images/d69d4cad-5e2c-4481-9370-2708e8a4f8c1.png)


Nachdem Sie die Konnektivität eingerichtet haben, sind die folgenden Schritte für die Lösung ausgehender Nachrichten erforderlich:

1. Die Amazon Elastic Compute Cloud (Amazon EC2) -Instance sendet eine DNS-Auflösungsanfrage `db.onprem.example.com` an den Route 53-Resolver der VPC an der VPC\$12-Adresse.

1. Route 53 Resolver überprüft die Resolver-Regeln und leitet die Anfrage mithilfe des ausgehenden Endpunkts an den lokalen DNS-Server weiter. IPs 

1. Der ausgehende Endpunkt leitet die Anfrage an den lokalen DNS weiter. IPs Der Datenverkehr wird über die etablierte hybride Netzwerkkonnektivität zwischen der Shared Services-VPC und dem lokalen Rechenzentrum übertragen.

1. Der lokale DNS-Server antwortet auf den ausgehenden Endpunkt, der die Antwort dann zurück an den Route 53-Resolver der VPC weiterleitet. Der Resolver gibt die Antwort an die Instanz zurück. EC2 

Das nächste Diagramm zeigt den DNS-Auflösungsfluss von der lokalen Umgebung zur. AWS Dies ist das Konnektivitäts-Setup für eingehende Auflösungen, auf denen die Domain gehostet wird. AWS Hier finden Sie einen allgemeinen Überblick über den Prozess, der bei der Einrichtung erforderlich ist. Einzelheiten finden Sie im Abschnitt [Epics](#set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-epics).

1. Stellen Sie Resolver-Endpoints für eingehende Anfragen in der Shared Services-VPC bereit.

1. Erstellen Sie private gehostete Zonen im Shared Services-Konto (zentralisierter Ansatz).

1. Ordnen Sie die privat gehosteten Zonen der Shared Services-VPC zu. Teilen Sie diese Zonen und ordnen Sie sie VPCs für die VPC-to-VPC DNS-Auflösung kontoübergreifend zu. Dies kann je nach Anwendungsfall auf unterschiedliche Weise geschehen, wie später in diesem Abschnitt beschrieben wird.

![\[Eingehende und ausgehende Endpunkte in einem lokalen DNS-Auflösungsfluss zu AWS.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/01e700cd-be8c-4a5d-bc89-b901a260d045/images/a6f5348c-2041-453e-8939-2b4ee0b7ebd8.png)


Nachdem Sie die Konnektivität eingerichtet haben, sind die folgenden Schritte für die Auflösung eingehender E-Mails erforderlich:

1. Die lokale Ressource sendet eine DNS-Auflösungsanforderung für `ec2.prod.aws.example.com` an den lokalen DNS-Server.

1. Der lokale DNS-Server leitet die Anfrage über die hybride Netzwerkverbindung an den eingehenden Resolver-Endpunkt in der Shared Services-VPC weiter.

1. Der eingehende Resolver-Endpunkt sucht mithilfe des VPC Route 53 Resolvers nach der Anfrage in der zugehörigen privaten gehosteten Zone und erhält die entsprechende IP-Adresse.

1. Diese IP-Adressen werden an den lokalen DNS-Server zurückgesendet, der die Antwort an die lokale Ressource zurückgibt.

Diese Konfiguration ermöglicht es lokalen Ressourcen, AWS private Domainnamen aufzulösen, indem sie Abfragen über die eingehenden Endpunkte an die entsprechende private gehostete Zone weiterleiten. In dieser Architektur sind private gehostete Zonen in einer Shared Services-VPC zentralisiert, was eine zentrale DNS-Verwaltung durch ein einzelnes Team ermöglicht. Diese Zonen können vielen Zonen zugeordnet werden VPCs , um den Anwendungsfall der VPC-to-VPC DNS-Auflösung zu lösen. Alternativ können Sie den Besitz und die Verwaltung der DNS-Domäne an beide delegieren. AWS-Konto In diesem Fall verwaltet jedes Konto seine eigenen privaten gehosteten Zonen und ordnet jede Zone der zentralen Shared Services-VPC zu, um eine einheitliche Lösung mit der lokalen Umgebung zu erreichen. Dieser dezentrale Ansatz würde den Rahmen dieses Musters sprengen. Weitere Informationen finden Sie unter [Skalierung der DNS-Verwaltung auf mehrere Konten und VPCs](https://docs.aws.amazon.com/whitepapers/latest/hybrid-cloud-dns-options-for-vpc/scaling-dns-management-across-multiple-accounts-and-vpcs.html) im Whitepaper *Hybrid Cloud DNS-Optionen für Amazon VPC*.

Wenn Sie die grundlegenden DNS-Auflösungsabläufe mithilfe von Resolver-Endpunkten einrichten, müssen Sie festlegen, wie Sie die gemeinsame Nutzung und Zuordnung von Resolver-Regeln und privaten Hosting-Zonen in Ihrem System verwalten. AWS-Konten Sie können dies auf zwei Arten angehen: durch selbstverwaltetes Teilen, indem AWS RAM Sie Resolver-Regeln und direkte private Hosting-Zonenzuordnungen verwenden, wie im Abschnitt *Grundeinstellungen* beschrieben, oder über Route 53 53-Profile, wie im Abschnitt *Erweiterte Konfiguration* beschrieben. Die Wahl hängt von den DNS-Verwaltungseinstellungen und den betrieblichen Anforderungen Ihres Unternehmens ab. Die folgenden Architekturdiagramme veranschaulichen eine skalierte Umgebung, die mehrere VPCs verschiedene Konten umfasst, was einer typischen Unternehmensumgebung entspricht.

**Grundlegende Einrichtung**

In der Grundkonfiguration werden bei der Implementierung der Hybrid-DNS-Auflösung in einer AWS Umgebung mit mehreren Konten Resolver-Weiterleitungsregeln und private Hosting-Zonenzuordnungen gemeinsam genutzt AWS RAM , um DNS-Abfragen zwischen lokalen Standorten und Ressourcen zu verwalten. AWS Bei dieser Methode werden zentralisierte Route 53 Resolver-Endpunkte in einer Shared Services-VPC verwendet, die mit Ihrem lokalen Netzwerk verbunden ist, um sowohl eingehende als auch ausgehende DNS-Auflösungen effizient zu handhaben.
+ Für die Auflösung ausgehender Nachrichten werden Resolver-Weiterleitungsregeln im Shared Services-Konto erstellt und dann mit anderen Benutzern gemeinsam genutzt. AWS-Konten AWS RAM Diese gemeinsame Nutzung ist auf Konten innerhalb derselben Region beschränkt. Die Zielkonten können diese Regeln dann ihren eigenen zuordnen VPCs und den Ressourcen in diesen Regeln ermöglichen VPCs , lokale Domainnamen aufzulösen.
+ Für die Auflösung eingehender Nachrichten werden private Hosting-Zonen im Shared Services-Konto erstellt und der Shared Services-VPC zugeordnet. Diese Zonen können dann mithilfe VPCs der Route 53-API oder der AWS Command Line Interface ()AWS CLI anderen Konten zugeordnet werden. AWS SDKs Die zugewiesenen Ressourcen VPCs können dann DNS-Einträge auflösen, die in den privaten gehosteten Zonen definiert sind, wodurch eine einheitliche DNS-Ansicht in Ihrer gesamten AWS Umgebung entsteht.

Das folgende Diagramm zeigt die DNS-Auflösungsflüsse in dieser Basiskonfiguration.

![\[Verwendung der Basiskonfiguration für die Hybrid-DNS-Auflösung in einer AWS-Umgebung mit mehreren Konten.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/01e700cd-be8c-4a5d-bc89-b901a260d045/images/258e4bcd-e9c6-43b5-bab8-856ca22206b9.png)


Dieses Setup funktioniert gut, wenn Sie in begrenztem Umfang mit einer DNS-Infrastruktur arbeiten. Die Verwaltung kann jedoch schwierig werden, wenn Ihre Umgebung wächst. Der betriebliche Aufwand für die Verwaltung der gemeinsamen Nutzung und Zuordnung von Regeln für private gehostete Zonen und Resolver nimmt mit VPCs der Skalierung erheblich zu. Darüber hinaus können Dienstkontingente wie das Zuweisungslimit von 300 VPC pro privat gehosteter Zone bei groß angelegten Bereitstellungen zu einschränkenden Faktoren werden. Das verbesserte Setup bewältigt diese Herausforderungen.

**Verbessertes Setup**

Route 53 53-Profile bieten eine optimierte Lösung für die Verwaltung der DNS-Auflösung in hybriden Netzwerken über mehrere AWS-Konten Netzwerke hinweg. Anstatt private Hosting-Zonen und Resolver-Regeln einzeln zu verwalten, können Sie DNS-Konfigurationen in einem einzigen Container gruppieren, der problemlos gemeinsam genutzt und auf mehrere Konten in einer VPCs Region angewendet werden kann. Dieses Setup behält die zentralisierte Resolver-Endpunktarchitektur in einer Shared Services-VPC bei und vereinfacht gleichzeitig die Verwaltung von DNS-Konfigurationen erheblich.

Das folgende Diagramm zeigt DNS-Auflösungsflüsse in einer erweiterten Konfiguration.

![\[Verwendung eines erweiterten Setups mit Route 53 53-Profilen für die hybride DNS-Auflösung in einer AWS-Umgebung mit mehreren Konten.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/01e700cd-be8c-4a5d-bc89-b901a260d045/images/55b9681d-ddb4-4a55-b4ec-fc9afa9870fa.png)


Mit Route 53 53-Profilen können Sie private Hosting-Zonenzuordnungen, Resolver-Weiterleitungsregeln und DNS-Firewallregeln in einer einzigen, gemeinsam nutzbaren Einheit zusammenfassen. Sie können Profile im Shared Services-Konto erstellen und sie mit Mitgliedskonten teilen, indem Sie AWS RAM Wenn ein Profil geteilt und auf Target angewendet wird VPCs, werden alle erforderlichen Verknüpfungen und Konfigurationen automatisch vom Dienst verarbeitet. Dadurch wird der betriebliche Aufwand für die DNS-Verwaltung erheblich reduziert und eine hervorragende Skalierbarkeit für wachsende Umgebungen gewährleistet.

**Automatisierung und Skalierung**

Verwenden Sie Infrastructure-as-Code-Tools (IaC) wie CloudFormation oder Terraform, um Route 53 Resolver-Endpunkte, Regeln, private gehostete Zonen und Profile automatisch bereitzustellen und zu verwalten. Integrieren Sie die DNS-Konfiguration in CI/CD-Pipelines (Continuous Integration and Continuous Delivery), um Konsistenz, Wiederholbarkeit und schnelle Updates zu gewährleisten.

## Tools
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-tools"></a>

**AWS-Services**
+ [AWS Resource Access Manager (AWS RAM)](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) hilft Ihnen dabei, Ihre Ressourcen sicher gemeinsam zu nutzen, um den betrieblichen Aufwand AWS-Konten zu reduzieren und für Transparenz und Überprüfbarkeit zu sorgen.
+ [Amazon Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html)reagiert rekursiv auf DNS-Abfragen von AWS Ressourcen und ist standardmäßig in allen verfügbar. VPCs Sie können Resolver-Endpunkte und Regeln für bedingte Weiterleitungen erstellen, um DNS-Namespaces zwischen Ihrem lokalen Rechenzentrum und Ihrem aufzulösen. VPCs
+ Die [private gehostete Zone von Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) ist ein Container, der Informationen darüber enthält, wie Route 53 auf DNS-Anfragen für eine Domain und deren Subdomains reagieren soll.
+ Mit [Amazon Route 53 53-Profilen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/profiles.html) können Sie DNS-bezogene Route 53-Konfigurationen für viele VPCs und unterschiedliche AWS-Konten Konfigurationen auf vereinfachte Weise anwenden und verwalten.

## Best Practices
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-best-practices"></a>

Dieser Abschnitt enthält einige der bewährten Methoden zur Optimierung von Route 53 Resolver. Diese stellen einen Teil der bewährten Methoden für Route 53 dar. Eine umfassende Liste finden Sie unter [Bewährte Methoden für Amazon Route 53.](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/best-practices.html)

**Vermeiden Sie Loop-Konfigurationen mit Resolver-Endpunkten**
+ Entwerfen Sie Ihre DNS-Architektur so, dass rekursives Routing verhindert wird, indem Sie VPC-Zuordnungen sorgfältig planen. Wenn eine VPC einen eingehenden Endpunkt hostet, vermeiden Sie es, ihn mit Resolver-Regeln zu verknüpfen, die Zirkelverweise erzeugen könnten.
+ Verwenden Sie diese AWS RAM Option strategisch, wenn Sie DNS-Ressourcen für mehrere Konten gemeinsam nutzen, um saubere Routingpfade aufrechtzuerhalten.

Weitere Informationen finden Sie in der Route 53-Dokumentation unter [Vermeiden von Schleifenkonfigurationen mit Resolver-Endpunkten](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/best-practices-resolver-endpoints.html).

**Skalieren Sie Resolver-Endpunkte**
+ Beachten Sie bei Umgebungen, die eine hohe Anzahl von Abfragen pro Sekunde (QPS) erfordern, dass auf einem Endpunkt ein Limit von 10.000 QPS pro ENI gilt. Einem Endpunkt ENIs können weitere hinzugefügt werden, um DNS QPS zu skalieren.
+ Amazon CloudWatch stellt `InboundQueryVolume` `OutboundQueryVolume` Metriken zur Verfügung (siehe [CloudWatch Dokumentation](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/monitoring-resolver-with-cloudwatch.html)). Wir empfehlen Ihnen, Überwachungsregeln einzurichten, die Sie benachrichtigen, wenn der Schwellenwert einen bestimmten Wert überschreitet (z. B. 80 Prozent von 10.000 QPS).
+ Konfigurieren Sie statusbehaftete Sicherheitsgruppenregeln für Resolver-Endpunkte, um zu verhindern, dass Grenzwerte für die Verbindungsverfolgung bei hohem Datenvolumen zu einer Drosselung von DNS-Abfragen führen. Weitere Informationen darüber, wie die Verbindungsverfolgung in Sicherheitsgruppen funktioniert, finden Sie unter [Amazon EC2 Security Group Connection Tracking](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html) in der EC2 Amazon-Dokumentation.

Weitere Informationen finden Sie unter [Resolver Endpoint Scaling](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/best-practices-resolver-endpoint-scaling.html) in der Route 53-Dokumentation.

**Stellen Sie eine hohe Verfügbarkeit für Resolver-Endpunkte bereit**
+ Erstellen Sie aus Redundanzgründen eingehende Endpunkte mit IP-Adressen in mindestens zwei Availability Zones.
+ Stellen Sie zusätzliche Netzwerkschnittstellen bereit, um die Verfügbarkeit bei Wartungsarbeiten oder bei hohem Datenaufkommen sicherzustellen.

Weitere Informationen finden Sie unter [Hochverfügbarkeit für Resolver-Endpunkte](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/best-practices-resolver-endpoint-high-availability.html) in der Route 53-Dokumentation.

## Epen
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-epics"></a>

### Stellen Sie Route 53 Resolver-Endpunkte bereit
<a name="deploy-r53r-endpoints"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie einen Endpunkt für eingehenden Datenverkehr bereit. | Route 53 Resolver verwendet den eingehenden Endpunkt, um DNS-Anfragen von lokalen DNS-Resolvern zu empfangen. Anweisungen finden Sie in der Route 53-Dokumentation unter [Weiterleiten eingehender DNS-Abfragen VPCs an Ihren](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html). Notieren Sie sich die IP-Adresse des eingehenden Endpunkts. | AWS-Administrator, Cloud-Administrator | 
| Stellen Sie einen ausgehenden Endpunkt bereit. | Route 53 Resolver verwendet den ausgehenden Endpunkt, um DNS-Abfragen an lokale DNS-Resolver zu senden. Anweisungen finden Sie in der Route 53-Dokumentation unter [Weiterleiten ausgehender DNS-Abfragen an Ihr Netzwerk](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-outbound-queries.html). Notieren Sie sich die ID des Ausgabeendpunkts. | AWS-Administrator, Cloud-Administrator | 

### Private Hosting-Zonen von Route 53 konfigurieren und gemeinsam nutzen
<a name="configure-and-share-r53-private-hosted-zones"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine private Hosting-Zone für eine Domain, die auf gehostet wird AWS. | Diese Zone enthält die DNS-Einträge für Ressourcen in einer AWS-gehosteten Domäne (z. B.`prod.aws.example.com`), die von der lokalen Umgebung aus aufgelöst werden sollten. Anweisungen finden Sie in der Route 53-Dokumentation unter [Erstellen einer privaten gehosteten Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html).Wenn Sie eine private gehostete Zone erstellen, müssen Sie der Hosting-Zone, die demselben Konto gehört, eine VPC zuordnen. Wählen Sie die Shared Services-VPC für diesen Zweck aus. | AWS-Administrator, Cloud-Administrator | 
| Grundlegende Einrichtung: Ordnen Sie die privat gehostete VPCs Zone anderen Konten zu. | Wenn Sie die Basiskonfiguration verwenden (siehe Abschnitt [Architektur](#set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-architecture)):Damit Ressourcen im Mitgliedskonto VPCs DNS-Einträge in dieser privaten Hosting-Zone auflösen können, müssen Sie Ihre VPCs mit der Hosting-Zone verknüpfen. Sie müssen die Zuordnung autorisieren und die Zuordnung dann programmgesteuert vornehmen. Anweisungen finden Sie in der Route 53-Dokumentation unter [Zuordnen einer Amazon-VPC und einer privaten gehosteten Zone, die Sie mit different AWS-Konten erstellt haben](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-associate-vpcs-different-accounts.html). | AWS-Administrator, Cloud-Administrator | 
| Verbessertes Setup: Konfiguration und gemeinsame Nutzung von Route 53 53-Profilen. | Wenn Sie das erweiterte Setup verwenden (siehe Abschnitt [Architektur](#set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-architecture)):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment.html)Je nach Struktur und DNS-Anforderungen Ihrer Organisation müssen Sie möglicherweise mehrere Profile für unterschiedliche Konten oder Workloads erstellen und verwalten. | AWS-Administrator, Cloud-Administrator | 

### Konfigurieren und teilen Sie die Route 53 Resolver-Weiterleitungsregeln
<a name="configure-and-share-r53r-forwarding-rules"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Weiterleitungsregel für eine Domain, die lokal gehostet wird. | Diese Regel weist Route 53 Resolver an, alle DNS-Abfragen für lokale Domänen (z. B.`onprem.example.com`) an lokale DNS-Resolver weiterzuleiten. Um diese Regel zu erstellen, benötigen Sie die IP-Adressen der lokalen DNS-Resolver und die ausgehende Endpunkt-ID. Anweisungen finden Sie in der Route 53-Dokumentation unter [Erstellen von Weiterleitungsregeln](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing-creating-rules.html). | AWS-Administrator, Cloud-Administrator | 
| Grundlegende Einrichtung: Teilen Sie die Weiterleitungsregel und verknüpfen Sie sie mit Ihren Konten VPCs in anderen Konten. | Wenn du die Basiskonfiguration verwendest:Damit die Weiterleitungsregel wirksam wird, müssen Sie die Regel mit Ihren VPCs anderen Konten teilen und sie mit ihnen verknüpfen. Route 53 Resolver berücksichtigt die Regel dann bei der Auflösung einer Domäne. Anweisungen finden Sie unter [Resolver-Regeln mit anderen teilen AWS-Konten und gemeinsam genutzte Regeln verwenden](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing-sharing.html) und [Weiterleitungsregeln mit einer VPC verknüpfen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing-associating-rules.html) in der Route 53-Dokumentation. | AWS-Administrator, Cloud-Administrator | 
| Verbessertes Setup: Konfiguration und gemeinsame Nutzung von Route 53 53-Profilen. | Wenn Sie das erweiterte Setup verwenden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment.html)Je nach Struktur und DNS-Anforderungen Ihrer Organisation müssen Sie möglicherweise mehrere Profile für unterschiedliche Konten oder Workloads erstellen und verwalten. | AWS-Administrator, Cloud-Administrator | 

### Konfigurieren Sie lokale DNS-Resolver für die Integration AWS
<a name="configure-on-premises-dns-resolvers-for-aws-integration"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  Konfigurieren Sie die bedingte Weiterleitung in den lokalen DNS-Resolvern. | Damit DNS-Abfragen zur Auflösung AWS von der lokalen Umgebung aus gesendet werden können, müssen Sie die bedingte Weiterleitung in den lokalen DNS-Resolvern so konfigurieren, dass sie auf die IP-Adresse des eingehenden Endpunkts verweist. Dadurch werden die DNS-Resolver angewiesen, alle DNS-Abfragen für die AWS-gehostete Domäne (z. B. für`prod.aws.example.com`) an die IP-Adresse des eingehenden Endpunkts weiterzuleiten, damit sie vom Route 53-Resolver aufgelöst werden.  | Netzwerkadministrator | 

### Überprüfen Sie die end-to-end DNS-Auflösung in einer Hybridumgebung
<a name="verify-end-to-end-dns-resolution-in-a-hybrid-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie die DNS-Auflösung AWS von der lokalen Umgebung aus. | Führen Sie von einer Instanz in einer VPC aus, der die Weiterleitungsregel zugeordnet ist, eine DNS-Abfrage für eine lokal gehostete Domäne (z. B. für`db.onprem.example.com`). | Netzwerkadministrator | 
| Testen Sie die DNS-Auflösung von der lokalen Umgebung bis. AWS | Führen Sie von einem lokalen Server aus die DNS-Auflösung für eine AWS-gehostete Domäne durch (z. B. für). `ec2.prod.aws.example.com` | Netzwerkadministrator | 

## Zugehörige Ressourcen
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment-resources"></a>
+ [Hybrid-Cloud-DNS-Optionen für Amazon VPC](https://docs.aws.amazon.com/whitepapers/latest/hybrid-cloud-dns-options-for-vpc/hybrid-cloud-dns-options-for-vpc.html) (AWS Whitepaper)
+ [Arbeiten mit privat gehosteten Zonen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) (Route 53-Dokumentation)
+ [Erste Schritte mit Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-getting-started.html) (Route 53-Dokumentation)
+ [Vereinfachen Sie die DNS-Verwaltung in einer Umgebung mit mehreren Konten mit Route 53 Resolver (Blogbeitrag](https://aws.amazon.com/blogs/security/simplify-dns-management-in-a-multiaccount-environment-with-route-53-resolver/))AWS 
+ [Vereinheitlichen Sie die DNS-Verwaltung mithilfe von Amazon Route 53 53-Profilen mit mehreren VPCs und AWS-Konten](https://aws.amazon.com/blogs/aws/unify-dns-management-using-amazon-route-53-profiles-with-multiple-vpcs-and-aws-accounts/) (AWS Blogbeitrag)
+ [Migration Ihrer DNS-Umgebung mit mehreren Konten zu Amazon Route 53 Profiles](https://aws.amazon.com/blogs/networking-and-content-delivery/migrating-your-multi-account-dns-environment-to-amazon-route-53-profiles/) (AWS Blogbeitrag)
+ [Verwendung von Amazon Route 53 53-Profilen für skalierbare AWS Umgebungen mit mehreren Konten](https://aws.amazon.com/blogs/networking-and-content-delivery/using-amazon-route-53-profiles-for-scalable-multi-account-aws-environments/) (AWS Blogbeitrag)

 

# Stellen Sie sicher, dass ELB-Load Balancer eine TLS-Terminierung erfordern
<a name="verify-that-elb-load-balancers-require-tls-termination"></a>

*Priyanka Chaudhary, Amazon Web Services*

## Zusammenfassung
<a name="verify-that-elb-load-balancers-require-tls-termination-summary"></a>

In der Amazon Web Services (AWS) -Cloud verteilt Elastic Load Balancing (ELB) den eingehenden Anwendungsdatenverkehr automatisch auf mehrere Ziele, z. B. Amazon Elastic Compute Cloud (Amazon EC2) -Instances, Container, IP-Adressen und AWS Lambda Lambda-Funktionen. Die Load Balancer verwenden Listener, um die Ports und Protokolle zu definieren, die der Load Balancer verwendet, um Traffic von Benutzern anzunehmen. Application Load Balancer treffen Routing-Entscheidungen auf Anwendungsebene und verwenden die Protokolle. HTTP/HTTPS Classic Load Balancer treffen Routing-Entscheidungen entweder auf der Transportschicht, indem sie die Protokolle TCP oder Secure Sockets Layer (SSL) verwenden, oder auf Anwendungsebene, indem sie HTTP/HTTPS verwenden.

Dieses Muster bietet eine Sicherheitskontrolle, die mehrere Ereignistypen für Application Load Balancers und Classic Load Balancers untersucht. Wenn die Funktion aufgerufen wird, überprüft AWS Lambda das Ereignis und stellt sicher, dass der Load Balancer konform ist.

Die Funktion initiiert ein Amazon CloudWatch Events-Ereignis bei den folgenden API-Aufrufen: [CreateLoadBalancer[CreateLoadBalancerListeners](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_CreateLoadBalancerListeners.html)](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_CreateLoadBalancer.html), [DeleteLoadBalancerListeners](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_DeleteLoadBalancerListeners.html), [CreateLoadBalancerPolicy](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_CreateLoadBalancerPolicy.html), [SetLoadBalancerPoliciesOfListener](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_SetLoadBalancerPoliciesOfListener.html), [CreateListener[DeleteListener](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DeleteListener.html)](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_CreateListener.html), und [ModifyListener](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_ModifyListener.html). Wenn das Ereignis eines davon erkennt APIs, ruft es AWS Lambda auf, das ein Python-Skript ausführt. Das Python-Skript überprüft, ob der Listener ein SSL-Zertifikat enthält und ob die angewendete Richtlinie Transport Layer Security (TLS) verwendet. Wenn festgestellt wird, dass es sich bei der SSL-Richtlinie um etwas anderes als TLS handelt, sendet die Funktion eine Amazon Simple Notification Service (Amazon SNS) -Benachrichtigung mit den entsprechenden Informationen an den Benutzer. 

## Voraussetzungen und Einschränkungen
<a name="verify-that-elb-load-balancers-require-tls-termination-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto

**Einschränkungen**
+ Diese Sicherheitskontrolle sucht nicht nach vorhandenen Load Balancers, es sei denn, die Load Balancer-Listener werden aktualisiert.
+ Diese Sicherheitskontrolle ist regional. Sie müssen es in jeder AWS-Region bereitstellen, die Sie überwachen möchten.

## Architektur
<a name="verify-that-elb-load-balancers-require-tls-termination-architecture"></a>

**Zielarchitektur**

![\[Sicherstellen, dass Load Balancer eine TLS-Terminierung erfordern.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/da99cda2-ac34-4791-a2bd-d37264d8d3d9/images/af92b3c8-32bb-45eb-a2a8-d8276fb3e824.png)


**Automatisierung und Skalierung**
+ Wenn Sie [AWS Organizations](https://aws.amazon.com/organizations/) verwenden, können Sie [AWS Cloudformation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) verwenden, StackSets um diese Vorlage in mehreren Konten bereitzustellen, die Sie überwachen möchten.

## Tools
<a name="verify-that-elb-load-balancers-require-tls-termination-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation hilft Ihnen dabei, Ihre AWS-Ressourcen zu modellieren und einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus zu verwalten. Sie können eine Vorlage verwenden, um Ihre Ressourcen und ihre Abhängigkeiten zu beschreiben und sie zusammen als Stapel zu starten und zu konfigurieren, anstatt Ressourcen einzeln zu verwalten.
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — Amazon CloudWatch Events bietet einen Stream von Systemereignissen, die Änderungen an AWS-Ressourcen beschreiben, nahezu in Echtzeit.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) — AWS Lambda ist ein Rechenservice, der die Ausführung von Code unterstützt, ohne Server bereitzustellen oder zu verwalten.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) — Amazon Simple Storage Service (Amazon S3) ist ein hoch skalierbarer Objektspeicherservice, der für eine Vielzahl von Speicherlösungen verwendet werden kann, darunter Websites, mobile Anwendungen, Backups und Data Lakes.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) — Amazon Simple Notification Service (Amazon SNS) koordiniert und verwaltet die Zustellung oder den Versand von Nachrichten zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen. Abonnenten erhalten die veröffentlichten Mitteilungen zu den Themen, die sie abonniert haben. Alle Abonnenten eines Themas erhalten dieselben Mitteilungen.

**Code**

Dieses Muster umfasst die folgenden Anlagen:
+ `ELBRequirestlstermination.zip`— Der Lambda-Code für die Sicherheitskontrolle.
+ `ELBRequirestlstermination.yml`— Die CloudFormation Vorlage, die das Ereignis und die Lambda-Funktion einrichtet.

## Epen
<a name="verify-that-elb-load-balancers-require-tls-termination-epics"></a>

### Richten Sie den S3-Bucket ein
<a name="set-up-the-s3-bucket"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Definieren Sie den S3-Bucket. | Wählen oder erstellen Sie in der [Amazon S3 S3-Konsole](https://console.aws.amazon.com/s3/) einen S3-Bucket, um die Lambda-Code-ZIP-Datei zu hosten. Dieser S3-Bucket muss sich in derselben AWS-Region befinden wie der Load Balancer, den Sie auswerten möchten. Ein S3-Bucket-Name ist weltweit eindeutig, und der Namespace wird von allen AWS-Konten gemeinsam genutzt. Der S3-Bucket-Name darf keine führenden Schrägstriche enthalten. | Cloud-Architekt | 
| Laden Sie den Lambda-Code hoch. | Laden Sie den Lambda-Code (`ELBRequirestlstermination.zip`Datei), der im Abschnitt *Anlagen* bereitgestellt wird, in den S3-Bucket hoch. | Cloud-Architekt | 

### Stellen Sie die CloudFormation Vorlage bereit
<a name="deploy-the-cloudformation-template"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Starten Sie die CloudFormation AWS-Vorlage. | Öffnen Sie die [ CloudFormation AWS-Konsole](https://console.aws.amazon.com/cloudformation/) in derselben AWS-Region wie Ihr S3-Bucket und stellen Sie die angehängte Vorlage bereit`ELBRequirestlstermination.yml`. Weitere Informationen zur Bereitstellung von CloudFormation AWS-Vorlagen finden Sie in der CloudFormation Dokumentation unter [Erstellen eines Stacks auf der CloudFormation AWS-Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). | Cloud-Architekt | 
| Vervollständigen Sie die Parameter in der Vorlage. | Wenn Sie die Vorlage starten, werden Sie zur Eingabe der folgenden Informationen aufgefordert:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/verify-that-elb-load-balancers-require-tls-termination.html) | Cloud-Architekt | 

### Bestätigen Sie das Abonnement
<a name="confirm-the-subscription"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bestätigen Sie das Abonnement. | Wenn die CloudFormation Vorlage erfolgreich bereitgestellt wurde, sendet sie eine Abonnement-E-Mail an die von Ihnen angegebene E-Mail-Adresse. Sie müssen dieses E-Mail-Abonnement bestätigen, um Benachrichtigungen über Verstöße zu erhalten. | Cloud-Architekt | 

## Zugehörige Ressourcen
<a name="verify-that-elb-load-balancers-require-tls-termination-resources"></a>
+ [Einen Stack auf der CloudFormation AWS-Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) erstellen ( CloudFormation AWS-Dokumentation)
+ [Was ist AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) (AWS Lambda Lambda-Dokumentation)
+ [Was ist ein Classic Load Balancer?](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html) (ELB-Dokumentation)
+ [Was ist ein Application Load Balancer?](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) (ELB-Dokumentation)

## Anlagen
<a name="attachments-da99cda2-ac34-4791-a2bd-d37264d8d3d9"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/da99cda2-ac34-4791-a2bd-d37264d8d3d9/attachments/attachment.zip)

# AWS-Netzwerk-Firewall-Protokolle und -Metriken mithilfe von Splunk anzeigen
<a name="view-aws-network-firewall-logs-and-metrics-by-using-splunk"></a>

*Ivo Pinto, Amazon Web Services*

## Zusammenfassung
<a name="view-aws-network-firewall-logs-and-metrics-by-using-splunk-summary"></a>

Viele Unternehmen verwenden [Splunk Enterprise](https://www.splunk.com/en_us/products/splunk-enterprise.html) als zentralisiertes Aggregations- und Visualisierungstool für Logs und Metriken aus verschiedenen Quellen. Dieses Muster hilft Ihnen, Splunk so zu konfigurieren, dass mithilfe des Splunk-Add-Ons für [AWS Protokolle und Metriken der AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/what-is-aws-network-firewall.html) von [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) abgerufen werden. 

Um dies zu erreichen, erstellen Sie eine schreibgeschützte AWS Identity and Access Management (IAM) -Rolle. Splunk Add-On für AWS verwendet diese Rolle für den Zugriff. CloudWatch Sie konfigurieren das Splunk Add-On für AWS zum Abrufen von Metriken und Protokollen von. CloudWatch Schließlich erstellen Sie Visualisierungen in Splunk aus den abgerufenen Protokolldaten und Metriken.

## Voraussetzungen und Einschränkungen
<a name="view-aws-network-firewall-logs-and-metrics-by-using-splunk-prereqs"></a>

**Voraussetzungen**
+ [Ein Splunk-Konto](https://www.splunk.com/)
+ Eine Splunk Enterprise-Instanz, Version 8.2.2 oder höher 
+ Ein aktives AWS-Konto
+ Network Firewall, [eingerichtet](https://docs.aws.amazon.com/network-firewall/latest/developerguide/getting-started.html) und [konfiguriert](https://docs.aws.amazon.com/network-firewall/latest/developerguide/logging-cw-logs.html), um Protokolle an Logs zu CloudWatch senden

**Einschränkungen**
+ Splunk Enterprise muss als Cluster von Amazon Elastic Compute Cloud (Amazon EC2) -Instances in der AWS-Cloud bereitgestellt werden.
+ Das Sammeln von Daten mithilfe einer automatisch erkannten IAM-Rolle für Amazon EC2 wird in den AWS-Regionen China nicht unterstützt.

## Architektur
<a name="view-aws-network-firewall-logs-and-metrics-by-using-splunk-architecture"></a>

![\[AWS-Netzwerk-Firewall und Splunk-Protokollierungsarchitektur\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/c6ce254a-841f-4bed-8f9f-b35e99f22e56/images/3dd420e9-70af-4a42-b24d-c54872c55e0b.png)


Das Diagramm veranschaulicht folgende Vorgänge:

1. Die Network Firewall veröffentlicht CloudWatch Protokolle in Logs.

1. Splunk Enterprise ruft Metriken und Protokolle von ab. CloudWatch

Um Beispielmetriken und Logs in dieser Architektur aufzufüllen, generiert ein Workload Traffic, der über den Netzwerk-Firewall-Endpunkt ins Internet geleitet wird. Dies wird durch die Verwendung von [Routentabellen](https://docs.aws.amazon.com/network-firewall/latest/developerguide/vpc-config.html#vpc-config-route-tables) erreicht. Obwohl dieses Muster eine einzelne Amazon EC2 EC2-Instance als Workload verwendet, kann dieses Muster für jede Architektur gelten, sofern die Network Firewall so konfiguriert ist, dass sie CloudWatch Protokolle an Logs sendet.

Diese Architektur verwendet auch eine Splunk Enterprise-Instanz in einer anderen Virtual Private Cloud (VPC). Die Splunk-Instance kann sich jedoch an einem anderen Standort befinden, z. B. in derselben VPC wie der Workload, sofern sie den erreichen kann. CloudWatch APIs

## Tools
<a name="view-aws-network-firewall-logs-and-metrics-by-using-splunk-tools"></a>

**AWS-Services**
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) hilft Ihnen dabei, die Protokolle all Ihrer Systeme, Anwendungen und AWS-Services zu zentralisieren, sodass Sie sie überwachen und sicher archivieren können.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) bietet skalierbare Rechenkapazität in der AWS-Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ Die [AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/what-is-aws-network-firewall.html) ist ein zustandsbehafteter, verwalteter Netzwerk-Firewall sowie Service zur Erkennung und Verhinderung von Eindringlingen VPCs in der AWS-Cloud.

**Andere Tools**
+ [Splunk](https://www.splunk.com/) unterstützt Sie bei der Überwachung, Visualisierung und Analyse von Protokolldaten.

## Epen
<a name="view-aws-network-firewall-logs-and-metrics-by-using-splunk-epics"></a>

### Erstellen einer IAM-Rolle
<a name="create-an-iam-role"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die IAM-Richtlinie. | Folgen Sie den Anweisungen [unter Richtlinien mit dem JSON-Editor](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) erstellen, um die IAM-Richtlinie zu erstellen, die schreibgeschützten Zugriff auf die CloudWatch Logs-Daten und -Metriken gewährt. CloudWatch Fügen Sie die folgende -Richtlinie in den JSON-Editor ein.<pre>{<br />    "Statement": [<br />        {<br />            "Action": [<br />                "cloudwatch:List*",<br />                "cloudwatch:Get*",<br />                "network-firewall:List*",<br />                "logs:Describe*",<br />                "logs:Get*",<br />                "logs:List*",<br />                "logs:StartQuery",<br />                "logs:StopQuery",<br />                "logs:TestMetricFilter",<br />                "logs:FilterLogEvents",<br />                "network-firewall:Describe*"<br />            ],<br />            "Effect": "Allow",<br />            "Resource": "*"<br />        }<br />    ],<br />    "Version": "2012-10-17"<br />}</pre> | AWS-Administrator | 
| Erstellen Sie eine neue IAM-Rolle. | Folgen Sie den Anweisungen unter [Erstellen einer Rolle zum Delegieren von Berechtigungen an einen AWS-Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html), um die IAM-Rolle zu erstellen, auf die das Splunk Add-On für AWS zugreift. CloudWatch Wählen Sie für **Berechtigungsrichtlinien die** Richtlinie aus, die Sie zuvor erstellt haben. | AWS-Administrator | 
| Weisen Sie den EC2-Instances im Splunk-Cluster die IAM-Rolle zu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/view-aws-network-firewall-logs-and-metrics-by-using-splunk.html) | AWS-Administrator | 

### Installieren Sie das Splunk-Add-On für AWS
<a name="install-the-splunk-add-on-for-aws"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Das -Add-on installieren. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/view-aws-network-firewall-logs-and-metrics-by-using-splunk.html) | Splunk-Administrator | 
| Konfigurieren Sie die AWS-Anmeldeinformationen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/view-aws-network-firewall-logs-and-metrics-by-using-splunk.html)Weitere Informationen [finden Sie in der Splunk-Dokumentation unter Suchen Sie eine IAM-Rolle in Ihrer Splunk-Plattform-Instance](https://splunk.github.io/splunk-add-on-for-amazon-web-services/#Find_an_IAM_role_within_your_Splunk_platform_instance). | Splunk-Administrator | 

### Konfigurieren Sie den Splunk-Zugriff auf CloudWatch
<a name="configure-splunk-access-to-cloudwatch"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie den Abruf von Netzwerk-Firewall-Protokollen aus CloudWatch Protokollen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/view-aws-network-firewall-logs-and-metrics-by-using-splunk.html)Standardmäßig ruft Splunk die Protokolldaten alle 10 Minuten ab. **Dies ist ein konfigurierbarer Parameter unter Erweiterte Einstellungen.** Weitere Informationen finden [Sie in der Splunk-Dokumentation unter Konfiguration einer CloudWatch Log-Eingabe mit Splunk Web](https://splunk.github.io/splunk-add-on-for-amazon-web-services/#Configure_a_CloudWatch_Logs_input_using_Splunk_Web). | Splunk-Administrator | 
| Konfigurieren Sie den Abruf von Netzwerk-Firewall-Metriken von CloudWatch. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/view-aws-network-firewall-logs-and-metrics-by-using-splunk.html)Standardmäßig ruft Splunk die Metrikdaten alle 5 Minuten ab. **Dies ist ein konfigurierbarer Parameter unter Erweiterte Einstellungen.** Weitere Informationen finden Sie in der Splunk-Dokumentation unter [Eine CloudWatch Eingabe mithilfe von Splunk Web konfigurieren](https://splunk.github.io/splunk-add-on-for-amazon-web-services/#Configure_a_CloudWatch_input_using_Splunk_Web). | Splunk-Administrator | 

### Erstellen Sie Splunk-Visualisierungen mithilfe von Abfragen
<a name="create-splunk-visualizations-by-using-queries"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Sehen Sie sich die wichtigsten Quell-IP-Adressen an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/view-aws-network-firewall-logs-and-metrics-by-using-splunk.html) | Splunk-Administrator | 
| Paketstatistiken anzeigen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/view-aws-network-firewall-logs-and-metrics-by-using-splunk.html) | Splunk-Administrator | 
| Sehen Sie sich die am häufigsten verwendeten Quellports an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/view-aws-network-firewall-logs-and-metrics-by-using-splunk.html) | Splunk-Administrator | 

## Zugehörige Ressourcen
<a name="view-aws-network-firewall-logs-and-metrics-by-using-splunk-resources"></a>

**AWS-Dokumentation**
+ [Eine Rolle zum Delegieren von Berechtigungen an einen AWS-Service erstellen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) (IAM-Dokumentation)
+ [IAM-Richtlinien erstellen (IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-start))
+ [Protokollierung und Überwachung in der AWS-Netzwerk-Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/logging-monitoring.html) (Netzwerk-Firewall-Dokumentation)
+ [Routentabellenkonfigurationen für die AWS-Netzwerk-Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/route-tables.html) (Netzwerk-Firewall-Dokumentation)

**AWS-Blogbeiträge**
+ [Bereitstellungsmodelle für AWS Network Firewall](https://aws.amazon.com/pt/blogs/networking-and-content-delivery/deployment-models-for-aws-network-firewall/)

**AWS Marketplace**
+ [Splunk Enterprise Amazon Machine Image (AMI)](https://aws.amazon.com/marketplace/pp/prodview-l6oos72bsyaks)

# Mehr Muster
<a name="networking-more-patterns-pattern-list"></a>

**Topics**
+ [Greifen Sie mithilfe von Session Manager und Amazon EC2 Instance Connect auf einen Bastion-Host zu](access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.md)
+ [Greifen Sie privat auf Container-Anwendungen auf Amazon ECS zu, indem Sie AWS Fargate PrivateLink, AWS und einen Network Load Balancer verwenden](access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.md)
+ [Greifen Sie mithilfe von AWS PrivateLink und einem Network Load Balancer privat auf Container-Anwendungen auf Amazon ECS zu](access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.md)
+ [Zentralisieren Sie die DNS-Auflösung mithilfe von AWS Managed Microsoft AD und vor Ort von Microsoft Active Directory](centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.md)
+ [Erstellen Sie ein Portal für Mikro-Frontends mithilfe AWS Amplify von Angular und Module Federation](create-amplify-micro-frontend-portal.md)
+ [Stellen Sie eine Amazon API Gateway Gateway-API auf einer internen Website mithilfe von privaten Endpunkten und einem Application Load Balancer bereit](deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.md)
+ [Stellen Sie detektivattributebasierte Zugriffskontrollen für öffentliche Subnetze bereit, indem Sie AWS Config](deploy-detective-attribute-based-access-controls-for-public-subnets-by-using-aws-config.md)
+ [Implementieren Sie präventive attributebasierte Zugriffskontrollen für öffentliche Subnetze](deploy-preventative-attribute-based-access-controls-for-public-subnets.md)
+ [Aktivieren Sie verschlüsselte Verbindungen für PostgreSQL-DB-Instances in Amazon RDS](enable-encrypted-connections-for-postgresql-db-instances-in-amazon-rds.md)
+ [Erweitern VRFs Sie mit AWS Transit Gateway Connect auf AWS](extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.md)
+ [Migrieren Sie einen F5 BIG-IP-Workload zu F5 BIG-IP VE auf dem AWS Cloud](migrate-an-f5-big-ip-workload-to-f5-big-ip-ve-on-the-aws-cloud.md)
+ [Migrieren Sie NGINX Ingress Controller, wenn Sie den Amazon EKS Auto Mode aktivieren](migrate-nginx-ingress-controller-eks-auto-mode.md)
+ [Beibehaltung von routingfähigem IP-Speicherplatz in VPC-Designs mit mehreren Konten für Subnetze ohne Arbeitslast](preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets.md)
+ [Verhindern Sie den Internetzugang auf Kontoebene mithilfe einer Dienststeuerungsrichtlinie](prevent-internet-access-at-the-account-level-by-using-a-service-control-policy.md)
+ [Benachrichtigungen von der AWS-Netzwerk-Firewall an einen Slack-Channel senden](send-alerts-from-aws-network-firewall-to-a-slack-channel.md)
+ [Statische Inhalte in einem Amazon S3 S3-Bucket über eine VPC mithilfe von Amazon bereitstellen CloudFront](serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront.md)
+ [Richten Sie die Notfallwiederherstellung für Oracle JD Edwards EnterpriseOne mit AWS Elastic Disaster Recovery ein](set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.md)
+ [Verwenden Sie BMC Discovery-Abfragen, um Migrationsdaten für die Migrationsplanung zu extrahieren](use-bmc-discovery-queries-to-extract-migration-data-for-migration-planning.md)
+ [Verwenden Sie die Network Firewall, um die DNS-Domänennamen aus der Servernamenanzeige für ausgehenden Datenverkehr zu erfassen](use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.md)

# Bereitstellung von Inhalten
<a name="contentdelivery-pattern-list"></a>

**Topics**
+ [AWS WAF Logs mithilfe AWS Firewall Manager von Amazon Data Firehose an Splunk senden](send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose.md)
+ [Statische Inhalte in einem Amazon S3 S3-Bucket über eine VPC mithilfe von Amazon bereitstellen CloudFront](serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront.md)
+ [Mehr Muster](contentdelivery-more-patterns-pattern-list.md)

# AWS WAF Logs mithilfe AWS Firewall Manager von Amazon Data Firehose an Splunk senden
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose"></a>

*Michael Friedenthal, Aman Kaur Gandhi und JJ Johnson, Amazon Web Services*

## Zusammenfassung
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-summary"></a>

In der Vergangenheit gab es zwei Möglichkeiten, Daten in Splunk zu verschieben: eine Push- oder eine Pull-Architektur. Eine *Pull-Architektur* bietet garantierte Lieferdaten durch Wiederholungsversuche, erfordert jedoch spezielle Ressourcen in Splunk, die Daten abfragen. Pull-Architekturen funktionieren aufgrund des Pollings in der Regel nicht in Echtzeit. Eine *Push-Architektur* hat in der Regel eine geringere Latenz, ist skalierbarer und reduziert die betriebliche Komplexität und die Kosten. Sie garantiert jedoch nicht die Lieferung und erfordert in der Regel Agenten.

Die Splunk-Integration mit Amazon Data Firehose liefert Streaming-Daten in Echtzeit über einen HTTP Event Collector (HEC) an Splunk. Diese Integration bietet die Vorteile von Push- und Pull-Architekturen: Sie garantiert die Datenübermittlung durch Wiederholungsversuche, erfolgt nahezu in Echtzeit und zeichnet sich durch geringe Latenz und geringe Komplexität aus. Die HEC sendet Daten schnell und effizient über HTTP oder HTTPS direkt an Splunk. HECs sind tokenbasiert, wodurch die Notwendigkeit entfällt, Anmeldeinformationen in einer Anwendung oder in unterstützenden Dateien fest zu codieren.

In einer AWS Firewall Manager Richtlinie können Sie die Protokollierung für den gesamten AWS WAF Web-ACL-Verkehr in all Ihren Konten konfigurieren. Anschließend können Sie einen Firehose-Zustellungsstream verwenden, um diese Protokolldaten zur Überwachung, Visualisierung und Analyse an Splunk zu senden. Diese Lösung bietet die folgenden Vorteile:
+ Zentrale Verwaltung und Protokollierung des AWS WAF Web-ACL-Datenverkehrs in all Ihren Konten
+ Splunk-Integration mit einem einzigen AWS-Konto
+ Skalierbarkeit
+ Bereitstellung von Protokolldaten nahezu in Echtzeit
+ Kostenoptimierung durch den Einsatz einer serverlosen Lösung, sodass Sie nicht für ungenutzte Ressourcen bezahlen müssen.

## Voraussetzungen und Einschränkungen
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-prereqs"></a>

**Voraussetzungen**
+ Eine aktive Person AWS-Konto , die Teil einer Organisation in AWS Organizations ist.
+ Sie benötigen die folgenden Berechtigungen, um die Protokollierung mit Firehose zu aktivieren:
  + `iam:CreateServiceLinkedRole`
  + `firehose:ListDeliveryStreams`
  + `wafv2:PutLoggingConfiguration`
+ AWS WAF und sein Web ACLs muss konfiguriert sein. Anweisungen finden Sie unter [Erste Schritte mit AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started.html).
+ AWS Firewall Manager muss eingerichtet sein. Anweisungen finden Sie unter [AWS Firewall Manager Voraussetzungen](https://docs.aws.amazon.com/waf/latest/developerguide/fms-prereq.html).
+ Die Firewall Manager Manager-Sicherheitsrichtlinien für AWS WAF müssen konfiguriert werden. Anweisungen finden Sie unter [Erste Schritte mit AWS Firewall ManagerAWS WAF Richtlinien](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html).
+ Splunk muss mit einem öffentlichen HTTP-Endpunkt eingerichtet werden, der von Firehose erreicht werden kann.

**Einschränkungen**
+ Der AWS-Konten muss in einer einzigen Organisation verwaltet werden. AWS Organizations
+ Die Web-ACL muss sich in derselben Region wie der Lieferstream befinden. Wenn Sie Protokolle für Amazon erfassen CloudFront, erstellen Sie den Firehose-Lieferstream in der Region USA Ost (Nord-Virginia). `us-east-1`
+ Das Splunk-Add-on für Firehose ist für kostenpflichtige Splunk Cloud-Implementierungen, verteilte Splunk Enterprise-Bereitstellungen und Splunk Enterprise-Implementierungen mit einer einzigen Instanz verfügbar. Dieses Add-on wird für kostenlose Testversionen von Splunk Cloud nicht unterstützt.

## Architektur
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-architecture"></a>

**Zieltechnologie-Stack**
+ Firewall Manager
+ Firehose
+ Amazon Simple Storage Service (Amazon-S3)
+ AWS WAF
+ Splunk

**Zielarchitektur**

Die folgende Abbildung zeigt, wie Sie den Firewall Manager verwenden können, um alle AWS WAF Daten zentral zu protokollieren und über Firehose an Splunk zu senden.

![\[Architekturdiagramm, das das Senden von AWS WAF WAF-Protokolldaten an Splunk über Amazon Data Firehose zeigt\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/3dfeaae0-985a-42b8-91c4-ece081f0b51b/images/669169b1-caa4-419b-9988-19806ded54eb.png)


1. Das AWS WAF Web ACLs sendet Firewall-Protokolldaten an Firewall Manager.

1. Firewall Manager sendet die Protokolldaten an Firehose.

1. Der Firehose-Lieferstream leitet die Protokolldaten an Splunk und an einen S3-Bucket weiter. Der S3-Bucket dient als Backup im Falle eines Fehlers im Firehose-Lieferstream.

**Automatisierung und Skalierung**

Diese Lösung ist so konzipiert, dass sie skaliert werden kann und alle AWS WAF Websites ALCs innerhalb des Unternehmens berücksichtigt. Sie können alle Websites so konfigurieren ACLs , dass sie dieselbe Firehose-Instanz verwenden. Wenn Sie jedoch mehrere Firehose-Instanzen einrichten und verwenden möchten, können Sie dies tun.

## Tools
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-tools"></a>

**AWS-Services**
+ [AWS Firewall Manager](https://docs.aws.amazon.com/waf/latest/developerguide/fms-chapter.html)ist ein Sicherheitsverwaltungsdienst, mit dem Sie Firewallregeln für Ihre Konten und Anwendungen zentral konfigurieren und verwalten können. AWS Organizations
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) unterstützt Sie bei der Bereitstellung von [Echtzeit-Streaming-Daten](https://aws.amazon.com/streaming-data/) an andere AWS-Services, benutzerdefinierte HTTP-Endpunkte und HTTP-Endpunkte, die von unterstützten Drittanbietern wie Splunk betrieben werden.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html)ist eine Firewall für Webanwendungen, mit der Sie HTTP- und HTTPS-Anfragen überwachen können, die an Ihre geschützten Webanwendungsressourcen weitergeleitet werden.

**Andere Tools**
+ [Splunk](https://docs.splunk.com/Documentation) unterstützt Sie bei der Überwachung, Visualisierung und Analyse von Protokolldaten.

## Epen
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-epics"></a>

### Splunk konfigurieren
<a name="configure-splunk"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die Splunk-App für. AWS | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose.html) | Sicherheitsadministrator, Splunk-Administrator | 
| Installieren Sie das Add-on für. AWS WAF | Wiederholen Sie die vorherigen Anweisungen, um das **AWS Web Application Firewall Add-on** für Splunk zu installieren. | Sicherheitsadministrator, Splunk-Administrator | 
| Installieren und konfigurieren Sie das Splunk-Add-on für Firehose. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose.html) | Sicherheitsadministrator, Splunk-Administrator | 

### Erstellen Sie den Firehose-Lieferstream
<a name="create-the-akf-delivery-stream"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Gewähren Sie Firehose Zugriff auf ein Splunk-Ziel. | Konfigurieren Sie die Zugriffsrichtlinie, die es Firehose ermöglicht, auf ein Splunk-Ziel zuzugreifen und die Protokolldaten in einem S3-Bucket zu sichern. Weitere Informationen finden Sie unter [Firehose Zugriff auf ein Splunk-Ziel gewähren](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-splunk). | Sicherheitsadministrator | 
| Erstellen Sie einen Firehose-Lieferstream. | Erstellen Sie in demselben Konto AWS WAF, ACLs für das Sie das Web verwalten, einen Lieferstream in Firehose. Sie müssen eine IAM-Rolle besitzen, wenn Sie einen Bereitstellungsdatenstrom erstellen. Firehose nimmt diese IAM-Rolle an und erhält Zugriff auf den angegebenen S3-Bucket. Anweisungen finden Sie unter [Einen Lieferstream erstellen](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html). Beachten Sie Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose.html)Wiederholen Sie diesen Vorgang für jedes Token, das Sie im HTTP-Event-Collector konfiguriert haben. | Sicherheitsadministrator | 
| Testen Sie den Lieferstream. | Testen Sie den Lieferstream, um sicherzustellen, dass er richtig konfiguriert ist. Anweisungen finden Sie unter [Testen mit Splunk als Ziel in der](https://docs.aws.amazon.com/firehose/latest/dev/test-drive-firehose.html#test-drive-destination-splunk) Firehose-Dokumentation. | Sicherheitsadministrator | 

### Konfigurieren Sie den Firewall Manager für die Protokollierung von Daten
<a name="configure-firewall-manager-to-log-data"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie die Firewall Manager Manager-Richtlinien. | Die Firewall Manager Manager-Richtlinien müssen so konfiguriert sein, dass sie die Protokollierung aktivieren und Protokolle an den richtigen Firehose-Lieferstream weiterleiten. Weitere Informationen und Anweisungen finden Sie unter [Konfiguration der Protokollierung für eine AWS WAF Richtlinie](https://docs.aws.amazon.com/waf/latest/developerguide/waf-policies.html#waf-policies-logging-config). | Sicherheitsadministrator | 

## Zugehörige Ressourcen
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-resources"></a>

**AWS Ressourcen**
+ [Web-ACL-Verkehr protokollieren](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html) (AWS WAF Dokumentation)
+ [Konfiguration der Protokollierung für eine AWS WAF Richtlinie](https://docs.aws.amazon.com/waf/latest/developerguide/waf-policies.html#waf-policies-logging-config) (AWS WAF Dokumentation)
+ [Tutorial: Mit Amazon Data Firehose VPC-Flow-Logs an Splunk senden (Firehose-Dokumentation](https://docs.aws.amazon.com/firehose/latest/dev/vpc-splunk-tutorial.html))
+ [Wie übertrage ich VPC-Flow-Logs mit Amazon Data Firehose an Splunk?](https://aws.amazon.com/premiumsupport/knowledge-center/push-flow-logs-splunk-firehose/) (Wissenszentrum)AWS 
+ Optimieren Sie die [Datenaufnahme in Splunk mithilfe von Amazon Data Firehose](https://aws.amazon.com/blogs/big-data/power-data-ingestion-into-splunk-using-amazon-kinesis-data-firehose/) (Blogbeitrag)AWS 

**Splunk-Dokumentation**
+ [Splunk-Add-on für Amazon Data Firehose](https://docs.splunk.com/Documentation/AddOns/released/Firehose/About)

# Statische Inhalte in einem Amazon S3 S3-Bucket über eine VPC mithilfe von Amazon bereitstellen CloudFront
<a name="serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront"></a>

*Angel Emmanuel Hernández Cebrian, Amazon Web Services*

## Zusammenfassung
<a name="serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront-summary"></a>

Wenn Sie statische Inhalte bereitstellen, die auf Amazon Web Services (AWS) gehostet werden, wird empfohlen, einen Amazon Simple Storage Service (S3) -Bucket als Quelle zu verwenden und Amazon für die Verteilung der Inhalte CloudFront zu verwenden. Diese Lösung bietet zwei Hauptvorteile: die Bequemlichkeit, statische Inhalte an Edge-Standorten zwischenzuspeichern, und die Möglichkeit, [Web-Zugriffskontrolllisten](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) (Web ACLs) für die CloudFront Verteilung zu definieren, wodurch Sie Anfragen zu den Inhalten mit minimalem Konfigurations- und Verwaltungsaufwand sichern können.

Der empfohlene Standardansatz weist jedoch häufig eine architektonische Einschränkung auf. In einigen Umgebungen möchten Sie, dass virtuelle Firewall-Appliances, die in einer Virtual Private Cloud (VPC) bereitgestellt werden, den gesamten Inhalt überprüfen, einschließlich statischer Inhalte. Der Standardansatz leitet den Datenverkehr nicht zur Inspektion durch die VPC. Dieses Muster bietet eine alternative architektonische Lösung. Sie verwenden immer noch eine CloudFront Distribution, um statische Inhalte in einem S3-Bucket bereitzustellen, aber der Datenverkehr wird mithilfe eines Application Load Balancer über die VPC geleitet. Eine AWS-Lambda-Funktion ruft dann den Inhalt aus dem S3-Bucket ab und gibt ihn zurück.

## Voraussetzungen und Einschränkungen
<a name="serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Statischer Website-Inhalt, der in einem S3-Bucket gehostet wird.

**Einschränkungen**
+ Die Ressourcen in diesem Muster müssen sich in einer einzigen AWS-Region befinden, sie können jedoch in verschiedenen AWS-Konten bereitgestellt werden.
+ Es gelten Grenzwerte für die maximale Anfrage- und Antwortgröße, die die Lambda-Funktion empfangen bzw. senden kann. Weitere Informationen finden Sie unter *Grenzwerte* in [Lambda-Funktionen als Ziele](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html) (Elastic Load Balancing Balancing-Dokumentation).
+ Bei der Verwendung dieses Ansatzes ist es wichtig, ein ausgewogenes Verhältnis zwischen Leistung, Skalierbarkeit, Sicherheit und Kosteneffektivität zu finden. Trotz der hohen Skalierbarkeit von Lambda werden einige Anfragen gedrosselt, wenn die Anzahl gleichzeitiger Lambda-Aufrufe das maximale Kontingent überschreitet. Weitere Informationen finden Sie unter Lambda-Kontingente (Lambda-Dokumentation). Bei der Verwendung von Lambda müssen Sie auch die Preisgestaltung berücksichtigen. Um Lambda-Aufrufe zu minimieren, stellen Sie sicher, dass Sie den Cache für die Distribution richtig definieren. CloudFront Weitere Informationen finden Sie unter [Optimierung von Caching und Verfügbarkeit](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ConfiguringCaching.html) (Dokumentation). CloudFront 

## Architektur
<a name="serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront-architecture"></a>

**Zieltechnologie-Stack**
+ CloudFront
+ Amazon Virtual Private Cloud (Amazon VPC)
+ Application Load Balancer
+ Lambda
+ Amazon S3

**Zielarchitektur**

Die folgende Abbildung zeigt die vorgeschlagene Architektur, wenn Sie statische Inhalte aus einem S3-Bucket über eine VPC bereitstellen müssen. CloudFront 

![\[Der Datenverkehr fließt über Application Load Balancer in der VPC zur Lambda-Funktion.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e0dd6928-4fe0-47ab-954f-9de5563349d8/images/b42c7dd9-4a72-4998-bf88-195c8f90ed3e.png)


1. Der Client fordert die URL der CloudFront Verteilung an, um eine bestimmte Website-Datei im S3-Bucket abzurufen.

1. CloudFront sendet die Anfrage an AWS WAF. AWS WAF filtert die Anfrage mithilfe des Webs, das auf die CloudFront Verteilung ACLs angewendet wurde. Wenn sich herausstellt, dass die Anfrage gültig ist, wird der Ablauf fortgesetzt. Wenn festgestellt wird, dass die Anfrage ungültig ist, erhält der Client einen 403-Fehler.

1. CloudFront überprüft seinen internen Cache. Wenn es einen gültigen Schlüssel gibt, der der eingehenden Anfrage entspricht, wird der zugehörige Wert als Antwort an den Client zurückgesendet. Wenn nicht, wird der Fluss fortgesetzt.

1. CloudFront leitet die Anfrage an die URL des angegebenen Application Load Balancer weiter.

1. Der Application Load Balancer hat einen Listener, der auf einer Lambda-Funktion einer Zielgruppe zugeordnet ist. Der Application Load Balancer ruft die Lambda-Funktion auf.

1. Die Lambda-Funktion stellt eine Verbindung zum S3-Bucket her, führt eine `GetObject` Operation darauf aus und gibt den Inhalt als Antwort zurück.

**Automatisierung und Skalierung**

Um die Bereitstellung statischer Inhalte mit diesem Ansatz zu automatisieren, erstellen Sie CI/CD Pipelines zur Aktualisierung der Amazon S3 S3-Buckets, die Websites hosten.

Die Lambda-Funktion skaliert automatisch, um die gleichzeitigen Anfragen innerhalb der Kontingente und Einschränkungen des Dienstes zu verarbeiten. Weitere Informationen finden Sie unter [Lambda-Funktionsskalierung](https://docs.aws.amazon.com/lambda/latest/dg/invocation-scaling.html) und [Lambda-Kontingente (Lambda-Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)). Für die anderen AWS-Services und -Funktionen wie CloudFront den Application Load Balancer skaliert AWS diese automatisch.

## Tools
<a name="serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront-tools"></a>
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) beschleunigt die Verteilung Ihrer Webinhalte, indem es sie über ein weltweites Netzwerk von Rechenzentren bereitstellt, was die Latenz senkt und die Leistung verbessert.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) verteilt eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele. In diesem Muster verwenden Sie einen [Application Load Balancer, der über Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) bereitgestellt wird, um den Datenverkehr an die Lambda-Funktion weiterzuleiten.
+ [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.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, mit den Vorteilen der skalierbaren Infrastruktur von AWS.

## Epen
<a name="serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront-epics"></a>

### Wird verwendet CloudFront , um statische Inhalte von Amazon S3 über eine VPC bereitzustellen
<a name="use-cloudfront-to-serve-static-content-from-amazon-s3-through-a-vpc"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine VPC. | Erstellen Sie eine VPC zum Hosten der in diesem Muster bereitgestellten Ressourcen, z. B. des Application Load Balancer und der Lambda-Funktion.  Anweisungen finden Sie unter [Erstellen einer VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC) (Amazon VPC-Dokumentation). | Cloud-Architekt | 
| Erstellen Sie eine AWS WAF WAF-Web-ACL. | Erstellen Sie eine AWS WAF WAF-Web-ACL. Später in diesem Muster wenden Sie diese Web-ACL auf die CloudFront Distribution an. Anweisungen finden Sie unter [Erstellen einer Web-ACL](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-creating.html) (AWS-WAF-Dokumentation). | Cloud-Architekt | 
| So erstellen Sie die Lambda-Funktion: | Erstellen Sie die Lambda-Funktion, die den im S3-Bucket gehosteten statischen Inhalt als Website bereitstellt. Verwenden Sie den Code, der im Abschnitt [Zusätzliche Informationen](#serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront-additional) dieses Musters bereitgestellt wird. Passen Sie den Code an, um Ihren Ziel-S3-Bucket zu identifizieren. | Allgemeines AWS | 
| Laden Sie die Lambda-Funktion hoch. | Geben Sie den folgenden Befehl ein, um den Lambda-Funktionscode in ein ZIP-Dateiarchiv in Lambda hochzuladen.<pre>aws lambda update-function-code \<br />--function-name  \ <br />--zip-file fileb://lambda-alb-s3-website.zip</pre> | Allgemeines AWS | 
| Erstellen Sie einen Application Load Balancer. | Erstellen Sie einen mit dem Internet verbundenen Application Load Balancer, der auf die Lambda-Funktion verweist. Anweisungen finden Sie unter [Eine Zielgruppe für die Lambda-Funktion erstellen](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html#register-lambda-function) (Elastic Load Balancing Balancing-Dokumentation). Für eine Hochverfügbarkeitskonfiguration erstellen Sie den Application Load Balancer und fügen ihn privaten Subnetzen in verschiedenen Availability Zones hinzu. | Cloud-Architekt | 
| Erstellen Sie eine CloudFront Distribution. | Erstellen Sie eine CloudFront Verteilung, die auf den von Ihnen erstellten Application Load Balancer verweist.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront.html) | Cloud-Architekt | 

## Zugehörige Ressourcen
<a name="serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront-resources"></a>

**AWS-Dokumentation**
+ [Optimierung von Caching und Verfügbarkeit](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ConfiguringCaching.html) (CloudFront Dokumentation)
+ [Lambda-Funktionen als Ziele](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html) (Dokumentation zu Elastic Load Balancing)
+ [Lambda-Kontingente](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) (Lambda-Dokumentation)

**AWS-Servicewebsites**
+ [Application Load Balancer](https://aws.amazon.com/es/elasticloadbalancing/application-load-balancer/)
+ [Lambda](https://aws.amazon.com/en/lambda/)
+ [CloudFront](https://aws.amazon.com/en/cloudfront/)
+ [Amazon S3](https://aws.amazon.com/en/s3/)
+ [AWS WAF](https://aws.amazon.com/en/waf/)
+ [Amazon VPC](https://aws.amazon.com/en/vpc/)

## Zusätzliche Informationen
<a name="serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront-additional"></a>

**Code**

Die folgende Lambda-Beispielfunktion ist in Node.js geschrieben. Diese Lambda-Funktion fungiert als Webserver, der eine `GetObject` Operation für einen S3-Bucket ausführt, der die Website-Ressourcen enthält. 

```
/**

 * This is an AWS Lambda function created for demonstration purposes.

 * It retrieves static assets from a defined Amazon S3 bucket.

 * To make the content available through a URL, use an Application Load Balancer with a Lambda integration.
 * 
 * Set the S3_BUCKET environment variable in the Lambda function definition.
 */

var AWS = require('aws-sdk');

exports.handler = function(event, context, callback) {

    var bucket = process.env.S3_BUCKET;    
    var key = event.path.replace('/', '');
    
    if (key == '') {
        key = 'index.html';
    }

    // Fetch from S3
    var s3 = new AWS.S3();
    return s3.getObject({Bucket: bucket, Key: key},
       function(err, data) {

            if (err) {
                return err;
            }

            var isBase64Encoded = false;
            var encoding = 'utf8';
            
            if (data.ContentType.indexOf('image/') > -1) {
                isBase64Encoded = true;
                encoding = 'base64'
            }
    
            var resp = {
                statusCode: 200,
                headers: {
                    'Content-Type': data.ContentType,
                },
                body: new Buffer(data.Body).toString(encoding),
                isBase64Encoded: isBase64Encoded
            };

            callback(null, resp);
        }
    );
};
```

# Mehr Muster
<a name="contentdelivery-more-patterns-pattern-list"></a>

**Topics**
+ [Suchen Sie in einer CloudFront Amazon-Distribution nach Zugriffsprotokollierung, HTTPS- und TLS-Version](check-an-amazon-cloudfront-distribution-for-access-logging-https-and-tls-version.md)
+ [Stellen Sie eine GRPC-basierte Anwendung auf einem Amazon EKS-Cluster bereit und greifen Sie mit einem Application Load Balancer darauf zu](deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer.md)
+ [Implementieren Sie präventive attributebasierte Zugriffskontrollen für öffentliche Subnetze](deploy-preventative-attribute-based-access-controls-for-public-subnets.md)
+ [Bereitstellen von Ressourcen in einer AWS Wavelength Zone mithilfe von Terraform](deploy-resources-wavelength-zone-using-terraform.md)
+ [Stellen Sie die Security Automations for AWS WAF Solution mithilfe von Terraform bereit](deploy-the-security-automations-for-aws-waf-solution-by-using-terraform.md)
+ [Richten Sie einen serverlosen Mobilfunkrouter für eine zellenbasierte Architektur ein](serverless-cell-router-architecture.md)
+ [Verwenden Sie Amazon Q Developer als Programmierassistenten, um Ihre Produktivität zu steigern](use-q-developer-as-coding-assistant-to-increase-productivity.md)
+ [AWS-Netzwerk-Firewall-Protokolle und -Metriken mithilfe von Splunk anzeigen](view-aws-network-firewall-logs-and-metrics-by-using-splunk.md)