AWS::Serverless-Transformation - AWS CloudFormation

Dies ist das neue CloudFormation Template Reference Guide. Bitte aktualisieren Sie Ihre Lesezeichen und Links. Hilfe zu den ersten CloudFormation Schritten finden Sie im AWS CloudFormation Benutzerhandbuch.

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::Serverless-Transformation

In diesem Thema wird beschrieben, wie Sie die AWS::Serverless-Transformation verwenden, um eine in der Syntax des AWS Serverless Application Model (AWS SAM) geschriebene Vorlage zu verarbeiten und in eine konforme CloudFormation-Vorlage zu verwandeln.

Weitere Informationen zur Verwendung der AWS::Serverless-Transformation finden Sie unter AWS SAM transform on GitHub.

Verwendung

Um die Transformation AWS::Serverless zu verwenden, müssen Sie sie auf der obersten Ebene Ihrer CloudFormation-Vorlage deklarieren. Sie können AWS::Serverless nicht als Transformation verwenden, die in einem anderen Vorlagenabschnitt eingebettet ist.

Die Deklaration muss die Zeichenkette AWS::Serverless-2016-10-31 als Wert verwenden. Parameter oder Funktionen dürfen nicht zur Angabe eines Transformationswerts verwendet werden.

Syntax

Um diese Transformation in Ihrer CloudFormation-Vorlage zu deklarieren, verwenden Sie die folgende Syntax:

JSON

{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{ ... } }

YAML

Transform: AWS::Serverless-2016-10-31 Resources: ...

Die Transformation AWS::Serverless ist eine eigenständige Deklaration ohne zusätzliche Parameter.

Beispiele

Die folgenden Beispiele zeigen, wie Sie die AWS::Serverless-Transformation und die AWS SAM-Syntax verwenden, um die Deklaration einer Lambda-Funktion und ihre Ausführungsrolle zu vereinfachen.

JSON

{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{ "MyFunction":{ "Type":"AWS::Serverless::Function", "Properties":{ "Handler":"index.handler", "Runtime":"nodejs20.x", "CodeUri":"s3://amzn-s3-demo-bucket/MySourceCode.zip" } } } }

YAML

Transform: AWS::Serverless-2016-10-31 Resources: MyFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs20.x CodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip'

Bei der Erstellung eines Änderungssatzes aus der Vorlage erweitert CloudFormation die AWS SAM-Syntax, wie in der Transformation definiert. Die verarbeitete Vorlage erweitert die Ressource AWS::Serverless::Function und deklariert eine Lambda-Funktion und eine Ausführungsrolle.

{ "Resources": { "MyFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Code": { "S3Bucket": "amzn-s3-demo-bucket", "S3Key": "MySourceCode.zip" }, "Role": { "Fn::GetAtt": ["MyFunctionRole", "Arn"] }, "Runtime": "nodejs20.x" } }, "MyFunctionRole": { "Type": "AWS::IAM::Role", "Properties": { "ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"], "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Action": ["sts:AssumeRole"], "Effect": "Allow", "Principal": { "Service": ["lambda.amazonaws.com"] } }] } } } } }

Verwenden von AWS::Serverless mit AWS::LanguageExtensions

Wenn Sie die Transformationen AWS::Serverless und AWS::LanguageExtensions verwenden, erfordert die Referenzierung von Ressourcen wie AWS::ApiGateway::Stage eine spezielle Syntax, wenn der Stufenname als Nicht-NoEcho-Parameterwert übergeben wird.

Verwenden Sie statt der AWS SAM-Syntax für die Referenz (MyApi.Stage) Fn::Sub, um die logische ID-Referenz zu erzeugen. Beispiel, "Ref": {"Fn::Sub": "${MyApi}${StageName}Stage"}. Dadurch wird zur Laufzeit die richtige logische ID erstellt.

Der Grund für dieses spezielle Format ist, dass diese beiden Transformationen Werte unterschiedlich behandeln:

  • AWS::LanguageExtensions löst intrinsische Funktionen in ihre tatsächlichen Werte auf.

  • AWS::Serverless erzeugt unterschiedliche logische IDs, je nachdem, ob es einen statischen Wert oder eine intrinsische Funktion erhält.

Weitere Informationen über Serverless-Anwendungen und das AWS Serverless Application Model (AWS SAM) finden Sie im AWS Serverless Application Model Developer Guide.

Für die Ressourcen- und Eigenschaftstypen, die spezifisch für AWS SAMsind, siehe AWS SAM Ressourcen und Eigenschaften im AWS Serverless Application Model Entwicklerhandbuch.

Allgemeine Informationen zur Verwendung von Makros finden Sie unter Benutzerdefinierte Verarbeitung von CloudFormation-Vorlagen mit Vorlagenmakros im AWS CloudFormation Benutzerhandbuch.