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.
Erstelle deine AWS SAM Vorlage
Erstellen Sie eine AWS SAM Vorlagendatei, die die Komponenten in Ihrer Infrastruktur spezifiziert.
So erstellen Sie Ihre AWS SAM-Vorlage
-
Erstellen Sie ein Verzeichnis mit dem Namen
SAM-Tutorial
. -
Erstellen Sie in Ihrem Verzeichnis
SAM-Tutorial
eine Datei namenstemplate.yml
. -
Kopieren Sie den folgenden YAML Code in
template.yml
. Dies ist Ihre AWS SAM -Vorlage.AWSTemplateFormatVersion : '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: A sample SAM template for deploying Lambda functions. Resources: # Details about the myDateTimeFunction Lambda function myDateTimeFunction: Type: AWS::Serverless::Function Properties: Handler: myDateTimeFunction.handler Runtime: nodejs18.x # Instructs your myDateTimeFunction is published to an alias named "live". AutoPublishAlias: live # Grants this function permission to call lambda:InvokeFunction Policies: - Version: "2012-10-17" Statement: - Effect: "Allow" Action: - "lambda:InvokeFunction" Resource: '*' DeploymentPreference: # Specifies the deployment configuration Type: Linear10PercentEvery1Minute # Specifies Lambda functions for deployment lifecycle hooks Hooks: PreTraffic: !Ref beforeAllowTraffic PostTraffic: !Ref afterAllowTraffic # Specifies the BeforeAllowTraffic lifecycle hook Lambda function beforeAllowTraffic: Type: AWS::Serverless::Function Properties: Handler: beforeAllowTraffic.handler Policies: - Version: "2012-10-17" # Grants this function permission to call codedeploy:PutLifecycleEventHookExecutionStatus Statement: - Effect: "Allow" Action: - "codedeploy:PutLifecycleEventHookExecutionStatus" Resource: !Sub 'arn:aws:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServerlessDeploymentApplication}/*' - Version: "2012-10-17" # Grants this function permission to call lambda:InvokeFunction Statement: - Effect: "Allow" Action: - "lambda:InvokeFunction" Resource: !Ref myDateTimeFunction.Version Runtime: nodejs18.x # Specifies the name of the Lambda hook function FunctionName: 'CodeDeployHook_beforeAllowTraffic' DeploymentPreference: Enabled: false Timeout: 5 Environment: Variables: NewVersion: !Ref myDateTimeFunction.Version # Specifies the AfterAllowTraffic lifecycle hook Lambda function afterAllowTraffic: Type: AWS::Serverless::Function Properties: Handler: afterAllowTraffic.handler Policies: - Version: "2012-10-17" Statement: # Grants this function permission to call codedeploy:PutLifecycleEventHookExecutionStatus - Effect: "Allow" Action: - "codedeploy:PutLifecycleEventHookExecutionStatus" Resource: !Sub 'arn:aws:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServerlessDeploymentApplication}/*' - Version: "2012-10-17" Statement: # Grants this function permission to call lambda:InvokeFunction - Effect: "Allow" Action: - "lambda:InvokeFunction" Resource: !Ref myDateTimeFunction.Version Runtime: nodejs18.x # Specifies the name of the Lambda hook function FunctionName: 'CodeDeployHook_afterAllowTraffic' DeploymentPreference: Enabled: false Timeout: 5 Environment: Variables: NewVersion: !Ref myDateTimeFunction.Version
Diese Vorlage gibt Folgendes an. Weitere Informationen finden Sie unter AWS SAM Vorlagenkonzepte.
- Eine Lambda-Funktion namens
myDateTimeFunction
-
Wenn diese Lambda-Funktion veröffentlicht wird, verknüpft sie die
AutoPublishAlias
Zeile in der Vorlage mit einem Alias namenslive
. Später in diesem Tutorial löst ein Update dieser Funktion eine Bereitstellung aus, bei der der Produktionsdatenverkehr schrittweise von der Originalversion auf die aktualisierte Version verlagert wird. AWS CodeDeploy - Zwei Validierungsfunktionen für die Lambda-Bereitstellung
-
Die folgenden Lambda-Funktionen werden während CodeDeploy Lifecycle-Hooks ausgeführt. Die Funktionen enthalten Code, der die Bereitstellung der aktualisierten
myDateTimeFunction
validiert. Das Ergebnis der Validierungstests wird an die CodeDeploy entsprechendePutLifecycleEventHookExecutionStatus
API Methode übergeben. Wenn ein Validierungstest fehlschlägt, schlägt die Bereitstellung fehl und wird zurückgesetzt.-
CodeDeployHook_beforeAllowTraffic
wird während desBeforeAllowTraffic
-Hooks ausgeführt. -
CodeDeployHook_afterAllowTraffic
wird während desAfterAllowTraffic
-Hooks ausgeführt.
Der Name beider Funktionen beginnt mit
CodeDeployHook_
. DieCodeDeployRoleForLambda
Rolle erlaubt Aufrufe derinvoke
Lambda-Methode nur in Lambda-Funktionen, deren Namen mit diesem Präfix beginnen. Weitere Informationen finden Sie unter AppSpec Abschnitt „Hooks“ für eine AWS Lambda-Bereitstellung und PutLifecycleEventHookExecutionStatusin der CodeDeploy API Referenz. -
- Automatische Erkennung einer aktualisierten Lambda-Funktion
-
Der
AutoPublishAlias
-Begriff weist das Framework an, zu erkennen, wenn sich diemyDateTimeFunction
-Funktion ändert, und sie dann mit demlive
-Alias bereitzustellen. - Eine Bereitstellungskonfiguration
-
Die Bereitstellungskonfiguration bestimmt die Geschwindigkeit, mit der Ihre CodeDeploy Anwendung den Datenverkehr von der ursprünglichen Version der Lambda-Funktion auf die neue Version verlagert. Diese Vorlage gibt die vordefinierte Bereitstellungskonfiguration
Linear10PercentEvery1Minute
an.Anmerkung
Sie können keine benutzerdefinierte Bereitstellungskonfiguration in einer AWS SAM Vorlage angeben. Weitere Informationen finden Sie unter Create a Deployment Configuration.
- Funktionen von Bereitstellungslebenszyklus-Hooks
-
Der
Hooks
-Abschnitt gibt die Funktionen an, die während Lebenszyklusereignis-Hooks ausgeführt werden.PreTraffic
gibt die Funktion an, die während desBeforeAllowTraffic
-Hooks ausgeführt wird.PostTraffic
gibt die Funktion an, die während desAfterAllowTraffic
-Hooks ausgeführt wird. - Berechtigungen für Lambda zum Aufrufen einer anderen Lambda-Funktion
-
Die angegebene
lambda:InvokeFunction
Berechtigung gewährt der von der AWS SAM Anwendung verwendeten Rolle die Berechtigung, eine Lambda-Funktion aufzurufen. Dies ist erforderlich, wenn dieCodeDeployHook_afterAllowTraffic
FunktionenCodeDeployHook_beforeAllowTraffic
und die bereitgestellte Lambda-Funktion während der Validierungstests aufrufen.