Passen Sie Standardrollennamen mithilfe von AWS CDK Aspekten und Escape-Schraffuren an - AWS Prescriptive Guidance

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

Passen Sie Standardrollennamen mithilfe von AWS CDK Aspekten und Escape-Schraffuren an

Erstellt von SANDEEP SINGH (AWS) und James Jacob () AWS

Code-Repository: cdk-aspects-override-example

Umgebung: Produktion

Technologien: Infrastruktur DevOps; Management und Unternehmensführung

AWSdienstleistungen: AWSCDK; AWS CloudFormation; AWS Lambda

Übersicht

Dieses Muster zeigt, wie die Standardnamen von Rollen, die durch AWS Cloud Development Kit (AWS CDK) Konstrukte erstellt werden, angepasst werden können. Das Anpassen von Rollennamen ist häufig erforderlich, wenn in Ihrer Organisation bestimmte Einschränkungen gelten, die auf Namenskonventionen basieren. Beispielsweise könnte Ihre Organisation AWS Identity and Access Management (IAM) Berechtigungsgrenzen oder Dienststeuerungsrichtlinien (SCPs) festlegen, die ein bestimmtes Präfix in Rollennamen erfordern. In solchen Fällen entsprechen die durch AWS CDK Konstrukte generierten Standardrollennamen möglicherweise nicht diesen Konventionen und müssen möglicherweise geändert werden. Dieses Muster erfüllt diese Anforderungen durch die Verwendung von Notluken und Aspekten in der. AWS CDK Sie verwenden Schraffuren, um benutzerdefinierte Rollennamen zu definieren, und Aspekte, um allen Rollen einen benutzerdefinierten Namen zuzuweisen, um sicherzustellen, dass die Richtlinien und Einschränkungen Ihrer Organisation eingehalten werden.

Voraussetzungen und Einschränkungen

Voraussetzungen

Einschränkungen

  • Aspekte filtern Ressourcen auf der Grundlage von Ressourcentypen, sodass alle Rollen dasselbe Präfix verwenden. Wenn Sie unterschiedliche Rollenpräfixe für verschiedene Rollen benötigen, ist eine zusätzliche Filterung auf der Grundlage anderer Eigenschaften erforderlich. Um beispielsweise Rollen, die mit AWS Lambda Funktionen verknüpft sind, unterschiedliche Präfixe zuzuweisen, könnten Sie nach bestimmten Rollenattributen oder Tags filtern und ein Präfix für Lambda-bezogene Rollen und ein anderes Präfix für andere Rollen anwenden.

  • IAMRollennamen haben eine maximale Länge von 64 Zeichen. Daher müssen modifizierte Rollennamen gekürzt werden, um diese Einschränkung zu erfüllen.

  • 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. Informationen zu bestimmten Endpunkten finden Sie auf der Seite Dienstendpunkte und Kontingente. Wählen Sie dort den Link für den Dienst aus.

Architektur

Zieltechnologie-Stack

  • AWS CDK

  • AWS CloudFormation

Zielarchitektur

Architektur für die Verwendung von Escape-Schraffuren und Aspekten zur Anpassung von AWS CDK zugewiesenen Rollennamen.
  • Eine AWS CDK App besteht aus einem oder mehreren AWS CloudFormation Stacks, die synthetisiert und zur Verwaltung von Ressourcen bereitgestellt werden. AWS

  • Um eine Eigenschaft einer AWS CDK verwalteten Ressource zu ändern, die nicht durch ein Layer-2-Konstrukt (L2) offengelegt wird, verwenden Sie eine Escape-Hatch, um die zugrunde liegenden CloudFormation Eigenschaften (in diesem Fall den Rollennamen) zu überschreiben, und einen Aspekt, um die Rolle während der Stack-Synthese auf alle Ressourcen in der AWS CDK App anzuwenden. AWS CDK

Tools

AWS-Services

  • AWS Cloud Development Kit (AWS CDK)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen.

  • AWS CDK Command Line Interface (AWS CDK CLI) (auch als AWS CDK Toolkit bezeichnet) ist ein Befehlszeilen-Cloud-Entwicklungskit, mit dem Sie mit Ihrer AWS CDK App interagieren können. Der CLI cdk Befehl ist das wichtigste Tool für die Interaktion mit Ihrer AWS CDK App. Es führt Ihre App aus, fragt das von Ihnen definierte Anwendungsmodell ab und erstellt und stellt die CloudFormation Vorlagen bereit, die von der generiert werden. AWS CDK

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

Code-Repository

Der Quellcode und die Vorlagen für dieses Muster sind im GitHub CDKAspects Override-Repository verfügbar.

Bewährte Methoden

Weitere Informationen finden Sie auf der AWS Prescriptive Guidance-Website unter Bewährte Methoden für die Verwendung von AWS CDK in TypeScript zur Erstellung von IaC-Projekten.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Installiere das AWS CDK CLI.

Um das AWS CDK CLI global zu installieren, führen Sie den folgenden Befehl aus:

npm install -g aws-cdk
AWS DevOps

Überprüfen Sie die Version.

Führen Sie den Befehl aus:

cdk --version

Vergewissern Sie sich, dass Sie Version 2 von verwenden AWS CDK CLI.

AWS DevOps

Bootstrap für die AWS CDK Umgebung.

Bevor Sie die AWS CloudFormation Vorlagen bereitstellen, bereiten Sie das Konto vor AWS-Region , das Sie verwenden möchten. Führen Sie den Befehl aus:

cdk bootstrap <account>/<Region>

Weitere Informationen finden Sie in der AWS CDK Dokumentation unter Bootstrapping. AWS

AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Richten Sie das Projekt ein.

  1. Klonen Sie das GitHub Repository für dieses Muster auf Ihren lokalen Computer:

    git clone https://github.com/aws-samples/cdk-aspects-override
  2. Navigieren Sie zum Projektverzeichnis auf Ihrem lokalen Computer.

  3. Installieren Sie die Projektabhängigkeiten:

    npm ci
AWS DevOps

Stellen Sie Stacks mit Standardrollennamen bereit, die AWS CDK von der zugewiesen wurden.

Stellen Sie zwei CloudFormation Stacks (ExampleStack1undExampleStack2) bereit, die die Lambda-Funktionen und die zugehörigen Rollen enthalten:

npm run deploy:ExampleAppWithoutAspects

Der Code übergibt Rolleneigenschaften nicht explizit, sodass die Rollennamen von erstellt werden. AWS CDK

Ein Beispiel für die Ausgabe finden Sie im Abschnitt Zusätzliche Informationen.

AWS DevOps

Stellen Sie Stapel mit Aspekten bereit.

In diesem Schritt wenden Sie einen Aspekt an, der eine Konvention für Rollennamen erzwingt, indem Sie allen IAM Rollen, die im Projekt bereitgestellt werden, ein Präfix hinzufügen. AWS CDK Der Aspekt ist in der lib/aspects.ts Datei definiert. Der Aspekt verwendet eine Escape-Schraffur, um den Rollennamen durch Hinzufügen eines Präfixes zu überschreiben. Der Aspekt wird auf die Stapel in der bin/app-with-aspects.ts Datei angewendet. Das in diesem Beispiel verwendete Präfix für den Rollennamen lautetdev-unicorn.

  1. Bearbeiten Sie die bin/app-with-aspects.ts-Datei.

  2. Aktualisieren Sie in der Datei die Variable ROLE_NAME_PREFIX mit dem Präfixdev-unicorn:

    const app = new cdk.App(); // Define a prefix for the role names const ROLE_NAME_PREFIX = 'dev-unicorn'; // Instantiate the RoleNamingConventionAspect with the desired prefix const roleNamingConventionAspect = new RoleNamingConventionAspect(ROLE_NAME_PREFIX);
  3. Stellen Sie die AWS CDK App mit folgenden Aspekten bereit:

    npm run deploy:ExampleAppWithAspects

Ein Beispiel für die Ausgabe finden Sie im Abschnitt Zusätzliche Informationen.

AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Lösche deine AWS CloudFormation Stapel.

Wenn Sie dieses Muster nicht mehr verwenden, führen Sie den folgenden Befehl aus, um Ressourcen zu bereinigen und zusätzliche Kosten zu vermeiden:

cdk destroy --all -f && cdk --app npx ts-node bin/app-with-aspects.ts' destroy --all -f
AWS DevOps

Fehlerbehebung

ProblemLösung

Bei der Verwendung von treten Probleme auf. AWS CDK

Weitere Informationen finden Sie in der AWS CDK Dokumentation unter Behebung häufig auftretender AWS CDK Probleme.

Zugehörige Ressourcen

Zusätzliche Informationen

Rollennamen, die von AWS CloudFormation Without Aspects erstellt wurden

Outputs: ExampleStack1WithoutAspects.Function1RoleName = example-stack1-without-as-Function1LambdaFunctionSe-y7FYTY6FXJXA ExampleStack1WithoutAspects.Function2RoleName = example-stack1-without-as-Function2LambdaFunctionSe-dDZV4rkWqWnI ... Outputs: ExampleStack2WithoutAspects.Function3RoleName = example-stack2-without-as-Function3LambdaFunctionSe-ygMv49iTyMq0

Rollennamen, die von AWS CloudFormation with aspects erstellt wurden

Outputs: ExampleStack1WithAspects.Function1RoleName = dev-unicorn-Function1LambdaFunctionServiceRole783660DC ExampleStack1WithAspects.Function2RoleName = dev-unicorn-Function2LambdaFunctionServiceRole2C391181 ... Outputs: ExampleStack2WithAspects.Function3RoleName = dev-unicorn-Function3LambdaFunctionServiceRole4CAA721C