

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.

# Layer-1-Konstrukte
<a name="layer-1"></a>

[L1-Konstrukte](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html#constructs_l1_using) sind die Bausteine von AWS CDK und lassen sich anhand des Präfixes leicht von anderen Konstrukten unterscheiden. `Cfn` Beispielsweise AWS CDK enthält das Amazon DynamoDB-Paket im ein `Table` Konstrukt, bei dem es sich um ein L2-Konstrukt handelt. Das entsprechende L1-Konstrukt wird aufgerufen `CfnTable` und stellt direkt eine CloudFormation DynamoDB `Table` dar. Es ist unmöglich, das zu verwenden, AWS CDK ohne auf diese erste Ebene zuzugreifen, obwohl eine AWS CDK Anwendung normalerweise nie direkt ein L1-Konstrukt verwendet. In den meisten Fällen stützen sich die L2- und L3-Konstrukte, die Entwickler üblicherweise verwenden, jedoch stark auf L1-Konstrukten. Sie können sich L1-Konstrukte also als Brücke zwischen und vorstellen. CloudFormation AWS CDK

Der einzige Zweck von besteht darin, CloudFormation Vorlagen mithilfe von Standard-Codierungssprachen zu generieren. AWS CDK Nachdem Sie den Befehl **cdk synth** CLI ausgeführt haben und die resultierenden CloudFormation Vorlagen generiert wurden, AWS CDK ist der Job abgeschlossen. Der Befehl **cdk deploy** dient lediglich der Annehmlichkeit, aber was Sie tun, wenn Sie diesen Befehl ausführen, geschieht vollständig innerhalb von selbst. CloudFormation Das Puzzleteil, das AWS CDK Code in das Format übersetzt, das er CloudFormation versteht, ist das L1-Konstrukt.

## Der AWS CDK— CloudFormation Lebenszyklus für L1-Konstrukte
<a name="l1-lifecycle"></a>

Der Prozess zur Erstellung und Verwendung von L1-Konstrukten besteht aus den folgenden Schritten:

1. Der AWS CDK Build-Prozess wandelt CloudFormation Spezifikationen in Form von L1-Konstrukten in programmgesteuerten Code um.

1. Entwickler schreiben Code, der entweder direkt oder indirekt auf L1-Konstrukte als Teil einer Anwendung verweist. AWS CDK 

1. Entwickler führen den Befehl **cdk synth** aus, um Programmcode wieder in das durch die Spezifikationen (Vorlagen) vorgegebene Format zu konvertieren. CloudFormation 

1. Entwickler führen den Befehl **cdk deploy** aus, um die CloudFormation Stacks in diesen Vorlagen in Kontenumgebungen bereitzustellen. AWS 

Lass uns eine kleine Übung machen. Gehen Sie zum [AWS CDK Open-Source-Repository](https://github.com/aws/aws-cdk) auf GitHub, wählen Sie einen zufälligen AWS Dienst aus und gehen Sie dann zu dem AWS CDK Paket für diesen Dienst (im Ordner`packages`,`aws-cdk-lib`,`aws-<servicename>`,`lib`). Für dieses Beispiel wählen wir Amazon S3, aber das funktioniert für jeden Service. Wenn Sie sich die [index.ts-Hauptdatei](https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/aws-s3/lib/index.ts) für dieses Paket ansehen, sehen Sie eine Zeile, die lautet:

```
export * from './s3.generated';
```

Sie werden die `s3.generated` Datei jedoch nirgends im entsprechenden Verzeichnis sehen. Dies liegt daran, dass L1-Konstrukte während des Build-Prozesses automatisch anhand der [CloudFormation Ressourcenspezifikation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) generiert werden. AWS CDK Sie werden es also erst `s3.generated` im Paket sehen, nachdem Sie den AWS CDK Build-Befehl für das Paket ausgeführt haben.

## Die AWS CloudFormation Ressourcenspezifikation
<a name="l1-spec"></a>

Die AWS CloudFormation Ressourcenspezifikation definiert Infrastruktur als Code (IAC) für AWS und legt fest, wie Code in CloudFormation Vorlagen in Ressourcen in einem AWS Konto umgewandelt wird. Diese Spezifikation definiert AWS Ressourcen im [JSON-Format](https://www.json.org/json-en.html) auf regionaler Ebene. Jeder Ressource wird ein eindeutiger [Ressourcentypname zugewiesen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html), der dem Format `provider::service::resource` folgt. Beispielsweise wäre `AWS::S3::Bucket` der Ressourcentypname für einen Amazon S3 S3-Bucket und der Ressourcentypname für einen Amazon S3 S3-Zugriffspunkt`AWS::S3::AccessPoint`. Diese Ressourcentypen können in einer CloudFormation Vorlage gerendert werden, indem die in der AWS CloudFormation Ressourcenspezifikation definierte Syntax verwendet wird. Wenn der AWS CDK Build-Prozess ausgeführt wird, wird jeder Ressourcentyp ebenfalls zu einem L1-Konstrukt.

Folglich ist jedes L1-Konstrukt ein programmatisches Spiegelbild der entsprechenden Ressource. CloudFormation Jede Eigenschaft, die Sie in einer CloudFormation Vorlage anwenden würden, ist verfügbar, wenn Sie ein L1-Konstrukt instanziieren, und jede erforderliche CloudFormation Eigenschaft ist auch als Argument erforderlich, wenn Sie das entsprechende L1-Konstrukt instanziieren. In der folgenden Tabelle wird ein S3-Bucket, wie er in einer CloudFormation Vorlage dargestellt wird, mit demselben S3-Bucket verglichen, der als L1-Konstrukt definiert ist. AWS CDK 


| 
| 
| **CloudFormation Vorlage** | **L1-Konstrukt** | 
| --- |--- |
| <pre>"amzns3demobucket": {<br />    "Type": "AWS::S3::Bucket",<br />    "Properties": {<br />      "BucketName": "amzn-s3-demo-bucket",<br />      "BucketEncryption": {<br />        "ServerSideEncryptionConfiguration": [<br />          {<br />            "ServerSideEncryptionByDefault": {<br />              "SSEAlgorithm": "AES256"<br />            }<br />          }<br />        ]<br />      },<br />      "MetricsConfigurations": [<br />        {<br />          "Id": "myConfig"<br />        }<br />      ],<br />      "OwnershipControls": {<br />        "Rules": [<br />          {<br />            "ObjectOwnership": "BucketOwnerPreferred"<br />          }<br />        ]<br />      },<br />      "PublicAccessBlockConfiguration": {<br />        "BlockPublicAcls": true,<br />        "BlockPublicPolicy": true,<br />        "IgnorePublicAcls": true,<br />        "RestrictPublicBuckets": true<br />      },<br />      "VersioningConfiguration": {<br />        "Status": "Enabled"<br />      }<br />    }<br />  }</pre> | <pre>new CfnBucket(this, "amzns3demobucket", {<br />  bucketName: "amzn-s3-demo-bucket",<br />  bucketEncryption: {<br />    serverSideEncryptionConfiguration: [<br />      {<br />        serverSideEncryptionByDefault: {<br />          sseAlgorithm: "AES256"<br />        }<br />      }<br />    ]<br />  },<br />  metricsConfigurations: [<br />    {<br />      id: "myConfig"<br />    }<br />  ],<br />  ownershipControls: {<br />    rules: [<br />      {<br />        objectOwnership: "BucketOwnerPreferred"<br />      }<br />    ]<br />  },<br />  publicAccessBlockConfiguration: {<br />    blockPublicAcls: true,<br />    blockPublicPolicy: true,<br />    ignorePublicAcls: true,<br />    restrictPublicBuckets: true<br />  },<br />  versioningConfiguration: {<br />    status: "Enabled"<br />  }<br />});</pre> | 

Wie Sie sehen können, ist das L1-Konstrukt die exakte Ausprägung der Ressource im Code. CloudFormation Es gibt keine Abkürzungen oder Vereinfachungen, sodass die Menge an Textbausteinen, die geschrieben werden muss, ungefähr die gleiche ist. Einer der großen Vorteile der Verwendung von soll jedoch AWS CDK darin bestehen, dass sie dazu beiträgt, einen Großteil dieser Boilerplate-Syntax zu eliminieren. CloudFormation Wie passiert das also? Hier kommt das L2-Konstrukt ins Spiel.