Trasformazione AWS::Serverless - AWS CloudFormation

Questa è la nuova Guida di riferimento ai modelli CloudFormation . Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la Guida AWS CloudFormation per l'utente.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Trasformazione AWS::Serverless

Questo argomento descrive come utilizzare la AWS::Serverless trasformazione per elaborare un modello scritto nella sintassi AWS Serverless Application Model (AWS SAM) e trasformarlo in un modello conforme. CloudFormation

Per ulteriori informazioni su come utilizzare la trasformazione AWS::Serverless, consulta AWS SAM transform su GitHub.

Utilizzo

Per utilizzare la AWS::Serverless trasformazione, è necessario dichiararla al livello più alto del modello. CloudFormation Non è possibile utilizzare AWS::Serverless come trasformazione incorporata in qualsiasi altra sezione del modello.

La dichiarazione deve utilizzare la stringa letterale AWS::Serverless-2016-10-31 come valore. Non è possibile utilizzare un parametro o una funzione per specificare un valore di trasformazione.

Sintassi

Per dichiarare questa trasformazione nel CloudFormation modello, utilizzate la seguente sintassi:

JSON

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

YAML

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

La trasformazione AWS::Serverless è una dichiarazione autonoma senza parametri aggiuntivi.

Esempi

L’esempio seguente mostra come utilizzare la trasformazione AWS::Serverless e la sintassi AWS SAM per semplificare la dichiarazione di una funzione Lambda e il relativo ruolo di esecuzione.

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'

Quando si crea un set di modifiche dal modello, CloudFormation espande la AWS SAM sintassi, come definita dalla trasformazione. Il modello elaborato espande la risorsa AWS::Serverless::Function, dichiarando una funzione Lambda e un ruolo di esecuzione.

{ "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"] } }] } } } } }

Uso di AWS::Serverless con AWS::LanguageExtensions

Quando si utilizzano entrambe le trasformazioni AWS::Serverless e AWS::LanguageExtensions, il riferimento a risorse come AWS::ApiGateway::Stage richiede una sintassi speciale quando il nome dello stadio viene passato come valore NoEcho senza parametro.

Invece di utilizzare la AWS SAM sintassi per il riferimento (MyApi.Stage), utilizzatelo per generare il riferimento Fn::Sub all'ID logico. Ad esempio, "Ref": {"Fn::Sub": "${MyApi}${StageName}Stage"}. Questo crea l’ID logico corretto durante il runtime.

Il motivo di questo formato speciale è che queste due trasformazioni gestiscono i valori in modo diverso:

  • AWS::LanguageExtensions risolve le funzioni intrinseche ai loro valori effettivi.

  • AWS::Serverlesscrea logiche diverse IDs a seconda che riceva un valore statico o una funzione intrinseca.

Per ulteriori informazioni sulle applicazioni serverless e sul Serverless Application Model AWS (AWS SAM), consulta la Developer Guide.AWS Serverless Application Model

Per i tipi di risorse e proprietà specifici AWS SAM, consulta AWS SAM le risorse e le proprietà nella Guida per gli AWS Serverless Application Model sviluppatori.

Per informazioni generali sull'uso delle macro, consulta Eseguire l'elaborazione personalizzata sui CloudFormation modelli con le macro dei modelli nella Guida per l'AWS CloudFormation utente.