

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.

# Schritt 3: Erstellen Sie eine Lifecycle-Hook-Lambda-Funktion
<a name="tutorial-ecs-with-hooks-create-hooks"></a>

In diesem Abschnitt implementieren Sie eine Lambda-Funktion für den `AfterAllowTestTraffic` Hook Ihrer Amazon ECS-Bereitstellung. Die Lambda-Funktion führt einen Validierungstest durch, bevor die aktualisierte Amazon ECS-Anwendung installiert wird. Für dieses Tutorial kehrt die Lambda-Funktion zurück`Succeeded`. Während einer realen Bereitstellung geben Validierungstests `Succeeded` oder `Failed` zurück, abhängig vom Ergebnis des Validierungstests. Während einer realen Bereitstellung können Sie auch eine Lambda-Testfunktion für einen oder mehrere der anderen Event-Hooks (`BeforeInstall`, `AfterInstall``BeforeAllowTraffic`, und`AfterAllowTraffic`) des Amazon ECS-Bereitstellungslebenszyklus implementieren. Weitere Informationen finden Sie unter [Liste der Lifecycle-Event-Hooks für eine Amazon ECS-Bereitstellung](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-list-ecs).

 Eine IAM-Rolle ist erforderlich, um Ihre Lambda-Funktion zu erstellen. Die Rolle gewährt der Lambda-Funktion die Berechtigung, in CloudWatch Logs zu schreiben und den Status eines CodeDeploy Lifecycle-Hooks festzulegen. 

**So erstellen Sie eine IAM-Rolle**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie im Navigationsbereich **Roles (Rollen)** und dann **Create role (Rolle erstellen)** aus.

1.  Erstellen Sie eine Rolle mit den folgenden Eigenschaften: 
   +  **Trusted entity (Vertrauenswürdige Entität)**: **AWS Lambda**. 
   +  **Berechtigungen**: **AWSLambdaBasicExecutionRole**. Dadurch wird Ihrer Lambda-Funktion die Berechtigung erteilt, in CloudWatch Logs zu schreiben. 
   +  **Role name (Name der Rolle)**: **`lambda-cli-hook-role`**. 

   Weitere Informationen finden Sie unter [Eine AWS Lambda Ausführungsrolle erstellen](https://docs.aws.amazon.com/lambda/latest/dg/with-userapp.html#with-userapp-walkthrough-custom-events-create-iam-role). 

1.  Fügen Sie die Berechtigung `codedeploy:PutLifecycleEventHookExecutionStatus` an die Rolle an, die Sie erstellt haben. Dadurch erhalten Ihre Lambda-Funktionen die Berechtigung, den Status eines CodeDeploy Lifecycle-Hooks während einer Bereitstellung festzulegen. Weitere Informationen finden Sie unter [Hinzufügen von IAM-Identitätsberechtigungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) im *AWS Identity and Access Management Benutzerhandbuch* und [PutLifecycleEventHookExecutionStatus](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_PutLifecycleEventHookExecutionStatus.html)in der *CodeDeploy API-Referenz*. 

**Um eine `AfterAllowTestTraffic` Hook-Lambda-Funktion zu erstellen**

1.  Erstellen Sie eine Datei mit dem Namen `AfterAllowTestTraffic.js` und dem folgenden Inhalt. 

   ```
   'use strict';
    
    const AWS = require('aws-sdk');
    const codedeploy = new AWS.CodeDeploy({apiVersion: '2014-10-06'});
    
    exports.handler = (event, context, callback) => {
    
    	console.log("Entering AfterAllowTestTraffic hook.");
    	
    	// Read the DeploymentId and LifecycleEventHookExecutionId from the event payload
     var deploymentId = event.DeploymentId;
    	var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId;
    	var validationTestResult = "Failed";
    	
    	// Perform AfterAllowTestTraffic validation tests here. Set the test result 
    	// to "Succeeded" for this tutorial.
    	console.log("This is where AfterAllowTestTraffic validation tests happen.")
    	validationTestResult = "Succeeded";
    	
    	// Complete the AfterAllowTestTraffic hook by sending CodeDeploy the validation status
    	var params = {
    		deploymentId: deploymentId,
    		lifecycleEventHookExecutionId: lifecycleEventHookExecutionId,
    		status: validationTestResult // status can be 'Succeeded' or 'Failed'
    	};
    	
    	// Pass CodeDeploy the prepared validation test results.
    	codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) {
    		if (err) {
    			// Validation failed.
    			console.log('AfterAllowTestTraffic validation tests failed');
    			console.log(err, err.stack);
    			callback("CodeDeploy Status update failed");
    		} else {
    			// Validation succeeded.
    			console.log("AfterAllowTestTraffic validation tests succeeded");
    			callback(null, "AfterAllowTestTraffic validation tests succeeded");
    		}
    	});
    }
   ```

1.  Erstellen Sie ein Lambda-Bereitstellungspaket. 

   ```
   zip AfterAllowTestTraffic.zip AfterAllowTestTraffic.js 
   ```

1.  Verwenden Sie den `create-function` Befehl, um eine Lambda-Funktion für Ihren `AfterAllowTestTraffic` Hook zu erstellen. 

   ```
   aws lambda create-function --function-name AfterAllowTestTraffic \
          --zip-file fileb://AfterAllowTestTraffic.zip \
          --handler AfterAllowTestTraffic.handler \
          --runtime nodejs10.x \
          --role arn:aws:iam::aws-account-id:role/lambda-cli-hook-role
   ```

1.  Notieren Sie sich den ARN Ihrer Lambda-Funktion in der `create-function` Antwort. Sie verwenden diesen ARN, wenn Sie die AppSpec Datei Ihres CodeDeploy Deployments im nächsten Schritt aktualisieren. 