Fassaden - AWS Cloud Development Kit (AWS CDK) v2

Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 gewartet und der Support wurde am 1. Juni 2023 eingestellt.

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.

Fassaden

Fassaden sind Klassen, die eine Ressource mit anderen Teilen Ihrer Anwendung verbinden. Jede Fassade zielt auf einen Ressourcentyp ab. Die Klasse wird beispielsweise benannt, BucketGrants weil sie Zugriff auf Amazon S3 S3-Buckets gewährt. Fassaden funktionieren sowohl mit L1-Konstrukten (CloudFormation-Ebene) als auch mit L2-Konstrukten (absichtsbasiert).

Einige Fassaden sind für die meisten Ressourcen generiert und sofort einsatzbereit, z. B. für Kurse zu Metriken und reflections. Andere werden manuell für Ressourcen erstellt, die eine benutzerdefinierte Logik benötigen, wie z. B. Grants-Klassen.

Gewährt Klassen

Die am häufigsten verwendeten Klassen für Fassaden sind Zuschüsse. Mit ihnen können Sie mit einfachen Methoden Zugriff auf AWS Ressourcen gewähren. Sie können es beispielsweise für Amazon S3 S3-Buckets und BucketGrants TopicGrants für Amazon SNS SNS-Themen verwenden.

L2-Konstrukte verfügen über eine grants Eigenschaft für den einfachen Zugriff. Sie können mithilfe der Factory-Methode auch eine Grants-Klasse aus einem L1-Konstrukt erstellen. Das folgende Beispiel zeigt beide Ansätze:

Beispiel
TypeScript
import * as s3 from 'aws-cdk-lib/aws-s3'; import * as iam from 'aws-cdk-lib/aws-iam'; // myRole is an IAM role defined elsewhere in your app // Using grants on an L2 construct (via the grants property) const l2Bucket = new s3.Bucket(this, 'L2Bucket'); l2Bucket.grants.read(myRole); // Using grants on an L1 construct (via the factory method) const l1Bucket = new s3.CfnBucket(this, 'L1Bucket'); s3.BucketGrants.fromBucket(l1Bucket).read(myRole);
JavaScript
const s3 = require('aws-cdk-lib/aws-s3'); const iam = require('aws-cdk-lib/aws-iam'); // myRole is an IAM role defined elsewhere in your app // Using grants on an L2 construct (via the grants property) const l2Bucket = new s3.Bucket(this, 'L2Bucket'); l2Bucket.grants.read(myRole); // Using grants on an L1 construct (via the factory method) const l1Bucket = new s3.CfnBucket(this, 'L1Bucket'); s3.BucketGrants.fromBucket(l1Bucket).read(myRole);
Python
import aws_cdk.aws_s3 as s3 import aws_cdk.aws_iam as iam # my_role is an IAM role defined elsewhere in your app # Using grants on an L2 construct (via the grants property) l2_bucket = s3.Bucket(self, "L2Bucket") l2_bucket.grants.read(my_role) # Using grants on an L1 construct (via the factory method) l1_bucket = s3.CfnBucket(self, "L1Bucket") s3.BucketGrants.from_bucket(l1_bucket).read(my_role)
Java
import software.amazon.awscdk.services.s3.*; import software.amazon.awscdk.services.iam.*; // myRole is an IAM role defined elsewhere in your app // Using grants on an L2 construct (via the grants property) Bucket l2Bucket = new Bucket(this, "L2Bucket"); l2Bucket.getGrants().read(myRole); // Using grants on an L1 construct (via the factory method) CfnBucket l1Bucket = new CfnBucket(this, "L1Bucket"); BucketGrants.fromBucket(l1Bucket).read(myRole);
C#
using Amazon.CDK.AWS.S3; using Amazon.CDK.AWS.IAM; // myRole is an IAM role defined elsewhere in your app // Using grants on an L2 construct (via the grants property) var l2Bucket = new Bucket(this, "L2Bucket"); l2Bucket.Grants.Read(myRole); // Using grants on an L1 construct (via the factory method) var l1Bucket = new CfnBucket(this, "L1Bucket"); BucketGrants.FromBucket(l1Bucket).Read(myRole);
Go
import ( "github.com/aws/jsii-runtime-go" awss3 "github.com/aws/aws-cdk-go/awscdk/v2/awss3" ) // myRole is an IAM role defined elsewhere in your app l2Bucket := awss3.NewBucket(stack, jsii.String("L2Bucket"), nil) l2Bucket.Grants().Read(myRole, nil) l1Bucket := awss3.NewCfnBucket(stack, jsii.String("L1Bucket"), nil) awss3.BucketGrants_FromBucket(l1Bucket).Read(myRole, nil)

Weitere Informationen zu Zuschüssen und Berechtigungen finden Sie unter Zuschüsse.

Verwenden Sie Fassaden mit Mixins

Sie können Fassaden mit Mixins kombinieren, um ein vollständiges L2-ähnliches Erlebnis mit L1-Konstrukten zu erhalten. Verwende Mixins, um die Ressource einzurichten, und Facades, um Zugriff zu gewähren:

Beispiel
TypeScript
import * as s3 from 'aws-cdk-lib/aws-s3'; import * as iam from 'aws-cdk-lib/aws-iam'; // Configure the resource with Mixins const bucket = new s3.CfnBucket(this, 'MyBucket') .with(new s3.mixins.BucketVersioning()) .with(new s3.mixins.BucketBlockPublicAccess()); // Grant permissions using a Facade const role = new iam.Role(this, 'MyRole', { assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'), }); s3.BucketGrants.fromBucket(bucket).read(role);
JavaScript
const s3 = require('aws-cdk-lib/aws-s3'); const iam = require('aws-cdk-lib/aws-iam'); // Configure the resource with Mixins const bucket = new s3.CfnBucket(this, 'MyBucket') .with(new s3.mixins.BucketVersioning()) .with(new s3.mixins.BucketBlockPublicAccess()); // Grant permissions using a Facade const role = new iam.Role(this, 'MyRole', { assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'), }); s3.BucketGrants.fromBucket(bucket).read(role);
Python
import aws_cdk.aws_s3 as s3 import aws_cdk.aws_iam as iam # Configure the resource with Mixins bucket = s3.CfnBucket(self, "MyBucket") \ .with_(s3.mixins.BucketVersioning()) \ .with_(s3.mixins.BucketBlockPublicAccess()) # Grant permissions using a Facade role = iam.Role(self, "MyRole", assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"), ) s3.BucketGrants.from_bucket(bucket).read(role)
Java
import software.amazon.awscdk.services.s3.*; import software.amazon.awscdk.services.iam.*; // Configure the resource with Mixins CfnBucket bucket = new CfnBucket(this, "MyBucket"); bucket.with(new BucketVersioning()); bucket.with(new BucketBlockPublicAccess()); // Grant permissions using a Facade Role role = Role.Builder.create(this, "MyRole") .assumedBy(new ServicePrincipal("lambda.amazonaws.com")) .build(); BucketGrants.fromBucket(bucket).read(role);
C#
using Amazon.CDK.AWS.S3; using Amazon.CDK.AWS.IAM; // Configure the resource with Mixins var bucket = new CfnBucket(this, "MyBucket"); bucket.With(new BucketVersioning()); bucket.With(new BucketBlockPublicAccess()); // Grant permissions using a Facade var role = new Role(this, "MyRole", new RoleProps { AssumedBy = new ServicePrincipal("lambda.amazonaws.com") }); BucketGrants.FromBucket(bucket).Read(role);
Go
bucket := awss3.NewCfnBucket(stack, jsii.String("MyBucket"), nil) bucket.With(awss3.NewBucketVersioning()) bucket.With(awss3.NewBucketBlockPublicAccess()) role := awsiam.NewRole(stack, jsii.String("MyRole"), &awsiam.RoleProps{ AssumedBy: awsiam.NewServicePrincipal(jsii.String("lambda.amazonaws.com"), nil), }) awss3.BucketGrants_FromBucket(bucket).Read(role, nil)
  • Mixins — Fügt wiederverwendbare Funktionen zu L1- und L2-Konstrukten hinzu.

  • Zuschüsse — Gewähren Sie Berechtigungen zwischen Ressourcen.

  • Konstrukte — Erfahren Sie mehr über L1-, L2- und L3-Konstrukte.