

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.

# AWS SAM Anatomie der Vorlage
<a name="sam-specification-template-anatomy"></a>

Eine AWS SAM Vorlagendatei folgt weitgehend dem Format einer CloudFormation Vorlagendatei, das im *AWS CloudFormation Benutzerhandbuch* unter [Anatomie der Vorlage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html) beschrieben wird. Die Hauptunterschiede zwischen AWS SAM Vorlagendateien und CloudFormation Vorlagendateien sind die folgenden:
+ **Deklaration transformieren.** Die Deklaration `Transform: AWS::Serverless-2016-10-31` ist für AWS SAM Vorlagendateien erforderlich. Diese Deklaration identifiziert eine CloudFormation Vorlagendatei als AWS SAM Vorlagendatei. Weitere Informationen zu Transformationen finden Sie unter [Transform](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-section-structure.html) im *AWS CloudFormation Benutzerhandbuch*.
+ **Abschnitt „Globals“.** Der `Globals` Abschnitt ist einzigartig für AWS SAM. Er definiert Eigenschaften, die allen Ihren serverlosen Funktionen gemeinsam sind, und APIs. Alle `AWS::Serverless::StateMachine` Ressourcen`AWS::Serverless::Function`,`AWS::Serverless::Api`,`AWS::Serverless::CapacityProvider`, `AWS::Serverless::HttpApi``AWS::Serverless::SimpleTable`, und erben die Eigenschaften, die `Globals` im Abschnitt definiert sind. Weitere Informationen zu diesem Abschnitt finden Sie unter[Abschnitt „Globals“ der Vorlage AWS SAM](sam-specification-template-anatomy-globals.md).
+ **Abschnitt „Ressourcen“.** In AWS SAM Vorlagen kann der `Resources` Abschnitt eine Kombination aus CloudFormation Ressourcen und AWS SAM Ressourcen enthalten. Weitere Informationen zu CloudFormation Ressourcen finden Sie in der [Referenz zu AWS Ressourcen- und Eigenschaftstypen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) im *AWS CloudFormation Benutzerhandbuch*. Weitere Informationen zu AWS SAM Ressourcen finden Sie unter[AWS SAM Ressourcen und Immobilien](sam-specification-resources-and-properties.md).

Alle anderen Abschnitte einer AWS SAM Vorlagendatei entsprechen dem gleichnamigen Abschnitt der CloudFormation Vorlagendatei.

## YAML
<a name="template-anatomy-outline.yaml"></a>

Das folgende Beispiel zeigt ein in YAML formatiertes Vorlagenfragment.

```
Transform: AWS::Serverless-2016-10-31

Globals:
  set of globals

Description:
  String

Metadata:
  template metadata

Parameters:
  set of parameters

Mappings:
  set of mappings

Conditions:
  set of conditions

Resources:
  set of resources

Outputs:
  set of outputs
```

## Abschnitte einer Vorlage
<a name="template-anatomy-sections"></a>

AWS SAM Vorlagen können mehrere Hauptabschnitte enthalten. Nur die `Resources` Abschnitte `Transform` und sind erforderlich.

Sie können die Vorlagenabschnitte in beliebiger Reihenfolge einfügen. Wenn Sie jedoch Spracherweiterungen verwenden, sollten Sie `AWS::LanguageExtensions` *sie vor* der serverlosen Transformation (also vor`AWS::Serverless-2016-10-31`) hinzufügen, wie im folgenden Beispiel gezeigt:

```
Transform:
  - AWS::LanguageExtensions
  - AWS::Serverless-2016-10-31
```

Beim Erstellen Ihrer Vorlage kann es hilfreich sein, die logische Reihenfolge zu verwenden, die in der folgenden Liste aufgeführt ist. Das liegt daran, dass sich die Werte in einem Abschnitt möglicherweise auf Werte aus einem vorherigen Abschnitt beziehen.

**[Transformieren (erforderlich)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-section-structure.html)**  
Bei AWS SAM Vorlagen müssen Sie diesen Abschnitt mit einem Wert von einschließen`AWS::Serverless-2016-10-31`.  
Zusätzliche Transformationen sind optional. Weitere Informationen zu Transformationen finden Sie unter [Transform](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-section-structure.html) im *AWS CloudFormation Benutzerhandbuch*.

**[Globale Werte (optional)](sam-specification-template-anatomy-globals.md)**  
Eigenschaften, die all Ihren serverlosen Funktionen und einfachen Tabellen APIs gemeinsam sind. Alle `AWS::Serverless::StateMachine` Ressourcen`AWS::Serverless::Function`,`AWS::Serverless::Api`, `AWS::Serverless::CapacityProvider` `AWS::Serverless::HttpApi``AWS::Serverless::SimpleTable`, und erben die Eigenschaften, die `Globals` im Abschnitt definiert sind.  
Dieser Abschnitt ist einzigartig für AWS SAM. In CloudFormation Vorlagen gibt es keinen entsprechenden Abschnitt.

**[Description (optional)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-description-structure.html)**  
Gibt eine Textzeichenfolge als Beschreibung der Vorlage an.  
Dieser Abschnitt entspricht direkt dem `Description` Abschnitt CloudFormation Vorlagen.

**[Metadata (optional)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html)**  
Gibt Objekte an, die zusätzliche Informationen über die Vorlage liefern.  
Dieser Abschnitt entspricht direkt dem `Metadata` Abschnitt der CloudFormation Vorlagen.

**[Parameters (optional)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)**  
Werte, die zur Laufzeit an die Vorlage übergeben werden sollen (also bei der Erstellung oder Aktualisierung eines Stacks). Hier können Sie Parameter aus den Vorlagenabschnitten `Resources` und `Outputs` referenzieren. Objekte, die in diesem `Parameters` Abschnitt deklariert sind, veranlassen den **sam deploy --guided** Befehl, dem Benutzer zusätzliche Eingabeaufforderungen anzuzeigen.  
Werte, die mithilfe des `--parameter-overrides` `sam deploy` Befehlsparameters übergeben werden, und Einträge in der Konfigurationsdatei haben Vorrang vor Einträgen in der Vorlagendatei. AWS SAM Weitere Informationen zu dem `sam deploy` Befehl finden Sie [sam deploy](sam-cli-command-reference-sam-deploy.md) in der Befehlsreferenz. AWS SAMCLI Weitere Informationen zur Konfigurationsdatei finden Sie unter [AWS SAMCLIKonfigurationsdatei](serverless-sam-cli-config.md).

**[Mappings (optional)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html)**  
Eine Sammlung von Zuweisungen ähnlich einer Lookup-Tabelle, die Schlüssel und die ihnen zugeordneten Werte enthält. Mit ihrer Hilfe lassen sich Werte für bedingte Parameter festlegen. Sie können einen Schlüssel einem entsprechenden Wert zuordnen, indem Sie die [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-findinmap.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-findinmap.html)systeminterne Funktion in den Abschnitten `Resources` und `Outputs` verwenden.  
Dieser Abschnitt entspricht direkt dem `Mappings` Abschnitt mit den Vorlagen. CloudFormation 

**[Conditions (optional)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html)**  
Bedingungen, die steuern, ob während der Erstellung oder Aktualisierung eines Stacks bestimmte Ressourcen erstellt werden oder ein Wert für bestimmte Ressourceneigenschaften festgelegt wird. Beispielsweise könnten Sie über Bedingungen festlegen, wie eine Ressource erstellt wird, wenn der Stack für eine Produktionsumgebung gedacht ist, und wie sie erstellt wird, wenn der Stack für eine Testumgebung gedacht ist.  
Dieser Abschnitt entspricht direkt dem `Conditions` Abschnitt der CloudFormation Vorlagen.

**[Resources (erforderlich)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html)**  
Die Stack-Ressourcen und ihre Eigenschaften, z. B. eine Amazon Elastic Compute Cloud (Amazon EC2) -Instance oder ein Amazon Simple Storage Service (Amazon S3) -Bucket. Hier können Sie Ressourcen aus den Vorlagenabschnitten `Resources` und `Outputs` referenzieren.  
Dieser Abschnitt ähnelt dem `Resources` Abschnitt mit CloudFormation Vorlagen. In AWS SAM Vorlagen kann dieser Abschnitt zusätzlich zu AWS SAM Ressourcen CloudFormation Ressourcen enthalten.

**[Outputs (optional)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)**  
Die Werte, die zurückgegeben werden, wenn Sie sich die Eigenschaften Ihres Stacks ansehen. Sie können beispielsweise eine Ausgabe für einen S3-Bucket-Namen deklarieren und dann den Befehl `aws cloudformation describe-stacks` AWS Command Line Interface (AWS CLI) aufrufen, um den Namen anzuzeigen.  
Dieser Abschnitt entspricht direkt dem `Outputs` Abschnitt der CloudFormation Vorlagen.

## Nächste Schritte
<a name="template-anatomy-next-steps"></a>

Informationen zum Herunterladen und Bereitstellen einer serverlosen Beispielanwendung, die eine AWS SAM Vorlagendatei enthält, finden [Erste Schritte mit AWS SAM](serverless-getting-started.md) Sie in [Tutorial: Stellen Sie eine Hello World-Anwendung bereit mit AWS SAM](serverless-getting-started-hello-world.md) den Anweisungen unter.

# Abschnitt „Globals“ der Vorlage AWS SAM
<a name="sam-specification-template-anatomy-globals"></a>

Manchmal haben Ressourcen, die Sie in einer AWS SAM Vorlage deklarieren, gemeinsame Konfigurationen. Beispielsweise haben Sie möglicherweise eine Anwendung mit mehreren `AWS::Serverless::Function` Ressourcen, die identische`Runtime`,`Memory`, `VPCConfig``Environment`, und `Cors` Konfigurationen haben. Anstatt diese Informationen in jeder Ressource zu duplizieren, können Sie sie einmal in dem `Globals` Abschnitt deklarieren und Ihre Ressourcen sie erben lassen.

Der `Globals` Abschnitt unterstützt die folgenden AWS SAM Ressourcentypen:
+ `AWS::Serverless::Api`
+ `AWS::Serverless::CapacityProvider`
+ `AWS::Serverless::Function`
+ `AWS::Serverless::HttpApi`
+ `AWS::Serverless::SimpleTable`
+ `AWS::Serverless::StateMachine`

Beispiel:

```
Globals:
  Function:
    Runtime: nodejs12.x
    Timeout: 180
    Handler: index.handler
    Environment:
      Variables:
        TABLE_NAME: data-table

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      Environment:
        Variables:
          MESSAGE: "Hello From SAM"

  ThumbnailFunction:
    Type: AWS::Serverless::Function
    Properties:
      Events:
        Thumbnail:
          Type: Api
          Properties:
            Path: /thumbnail
            Method: POST
```

In diesem Beispiel `ThumbnailFunction` verwenden Sie beide `HelloWorldFunction` und „nodejs12.x“ für`Runtime`, „180" Sekunden für und „index.handler“ für`Timeout`. `Handler` `HelloWorldFunction`fügt die Umgebungsvariable MESSAGE zusätzlich zur geerbten Datei TABLE\$1NAME hinzu. `ThumbnailFunction`erbt alle `Globals` Eigenschaften und fügt eine API-Ereignisquelle hinzu.

## Unterstützte Ressourcen und Eigenschaften
<a name="sam-specification-template-anatomy-globals-supported-resources-and-properties"></a>

AWS SAM unterstützt die folgenden Ressourcen und Eigenschaften.

```
Globals:
  Api:
    AccessLogSetting:
    Auth:
    BinaryMediaTypes:
    CacheClusterEnabled:
    CacheClusterSize:
    CanarySetting:
    Cors:
    DefinitionUri:
    Domain:
    EndpointConfiguration:
    GatewayResponses:
    MethodSettings:
    MinimumCompressionSize:
    Name:
    OpenApiVersion:
    PropagateTags:
    TracingEnabled:
    Variables:
  
  CapacityProvider:
    InstanceRequirements:
    KmsKeyArn:
    OperatorRole:
    PropagateTags:
    ScalingConfig:
    Tags:
    VpcConfig:
  
  Function:
    Architectures:
    AssumeRolePolicyDocument:
    AutoPublishAlias:
    AutoPublishAliasAllProperties:
    CapacityProviderConfig:
    CodeSigningConfigArn:
    CodeUri:
    DeadLetterQueue:
    DeploymentPreference:
    Description:
    DurableConfig:
    Environment:
    EphemeralStorage:
    EventInvokeConfig:
    FileSystemConfigs:
    FunctionScalingConfig:
    FunctionUrlConfig:
    Handler:
    KmsKeyArn:
    Layers:
    LoggingConfig:
    MemorySize:
    PermissionsBoundary:
    PropagateTags:
    ProvisionedConcurrencyConfig:
    PublishToLatestPublished:
    RecursiveLoop:
    ReservedConcurrentExecutions:
    RolePath:
    Runtime:
    RuntimeManagementConfig:
    SnapStart:
    SourceKMSKeyArn:
    Tags:
    TenancyConfig:
    Timeout:
    Tracing:
    VersionDeletionPolicy:
    VpcConfig:

  HttpApi:
    AccessLogSettings:
    Auth:
    PropagateTags:
    StageVariables:
    Tags:

  SimpleTable:
    SSESpecification:
    
  StateMachine:
    PropagateTags:
```

**Anmerkung**  
Ressourcen und Eigenschaften, die nicht in der vorherigen Liste enthalten sind, werden nicht unterstützt. Zu den Gründen, warum sie nicht unterstützt werden, gehören: 1) Sie führen zu potenziellen Sicherheitsproblemen oder 2) Sie machen die Vorlage schwer verständlich.

## Implizit APIs
<a name="sam-specification-template-anatomy-globals-implicit-apis"></a>

AWS SAM erzeugt *implizit, APIs* wenn Sie eine API in dem `Events` Abschnitt deklarieren. Sie können verwenden`Globals`, um alle Eigenschaften von implicit APIs zu überschreiben.

## Überschreibbare Eigenschaften
<a name="sam-specification-template-anatomy-globals-overrideable"></a>

Ressourcen können die Eigenschaften, die Sie im Abschnitt deklarieren, außer Kraft setzen. `Globals` Sie können beispielsweise einer Umgebungsvariablenübersicht neue Variablen hinzufügen oder global deklarierte Variablen überschreiben. Die Ressource kann jedoch keine Eigenschaft entfernen, die im `Globals` Abschnitt angegeben ist.

Allgemeiner ausgedrückt werden in `Globals` diesem Abschnitt Eigenschaften deklariert, die alle Ihre Ressourcen gemeinsam nutzen. Einige Ressourcen können neue Werte für global deklarierte Eigenschaften bereitstellen, sie können sie jedoch nicht entfernen. Wenn einige Ressourcen eine Eigenschaft verwenden, andere jedoch nicht, dürfen Sie sie nicht in dem `Globals` Abschnitt deklarieren.

In den folgenden Abschnitten wird beschrieben, wie das Überschreiben für verschiedene Datentypen funktioniert.

### Primitive Datentypen werden ersetzt
<a name="sam-specification-template-anatomy-globals-overrideable-primitives"></a>

Zu den primitiven Datentypen gehören Zeichenketten, Zahlen, Boolesche Werte usw.

Der im `Resources` Abschnitt angegebene Wert ersetzt den Wert im `Globals` Abschnitt.

Beispiel:

```
Globals:
  Function:
    Runtime: nodejs12.x

Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Runtime: python3.9
```

Der `Runtime` Wert für `MyFunction` ist auf gesetzt`python3.9`.

### Karten werden zusammengeführt
<a name="sam-specification-template-anatomy-globals-overrideable-maps"></a>

Karten werden auch als Wörterbücher oder Sammlungen von Schlüssel-Wert-Paaren bezeichnet.

Karteneinträge in `Resources` diesem Abschnitt werden mit globalen Karteneinträgen zusammengeführt. Wenn Duplikate vorhanden sind, überschreibt der `Resource` Abschnittseintrag den `Globals` Abschnittseintrag.

Beispiel:

```
Globals:
  Function:
    Environment:
      Variables:
        STAGE: Production
        TABLE_NAME: global-table

Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Environment:
        Variables:
          TABLE_NAME: resource-table
          NEW_VAR: hello
```

Die Umgebungsvariablen von `MyFunction` sind wie folgt gesetzt:

```
{
  "STAGE": "Production",
  "TABLE_NAME": "resource-table",
  "NEW_VAR": "hello"
}
```

### Listen sind additiv
<a name="sam-specification-template-anatomy-globals-overrideable-lists"></a>

Listen werden auch als Arrays bezeichnet.

Listeneinträge im `Globals` Abschnitt werden der Liste im Abschnitt vorangestellt. `Resources`

Beispiel:

```
Globals:
  Function:
    VpcConfig:
      SecurityGroupIds:
        - sg-123
        - sg-456

Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      VpcConfig:
        SecurityGroupIds:
          - sg-first
```

Die `SecurityGroupIds` `MyFunction` For-Werte `VpcConfig` sind wie folgt festgelegt:

```
[ "sg-123", "sg-456", "sg-first" ]
```