

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.

# Verwenden AWS Lambda mit CloudFormation
<a name="services-cloudformation"></a>

In einer AWS CloudFormation Vorlage können Sie eine Lambda-Funktion als Ziel einer benutzerdefinierten Ressource angeben. Verwenden Sie benutzerdefinierte Ressourcen, um Parameter zu verarbeiten, Konfigurationswerte abzurufen oder andere AWS-Services während Stack-Lifecycle-Ereignissen aufzurufen.

Das folgende Beispiel ruft eine Funktion auf, die an anderer Stelle in der Vorlage definiert ist.

**Example – benutzerdefinierte Ressourcendefinition**  

```
Resources:
  primerinvoke:
    Type: [AWS::CloudFormation::CustomResource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cfn-customresource.html)
    Version: "1.0"
    Properties:
      ServiceToken: !GetAtt primer.Arn
      FunctionName: !Ref randomerror
```

Das Service-Token ist der Amazon-Ressourcenname (ARN) der Funktion, die CloudFormation aufgerufen wird, wenn Sie den Stack erstellen, aktualisieren oder löschen. Sie können auch zusätzliche Eigenschaften hinzufügen`FunctionName`, wie z. B., was CloudFormation unverändert an Ihre Funktion übergeben wird.

CloudFormation ruft Ihre Lambda-Funktion [asynchron](invocation-async.md) mit einem Ereignis auf, das eine Callback-URL enthält.

**Example CloudFormation — Nachrichtenereignis**  

```
{
    "RequestType": "Create",
    "ServiceToken": "arn:aws:lambda:us-east-1:123456789012:function:lambda-error-processor-primer-14ROR2T3JKU66",
    "ResponseURL": "https://cloudformation-custom-resource-response-useast1.s3-us-east-1.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-east-1%3A123456789012%3Astack/lambda-error-processor/1134083a-2608-1e91-9897-022501a2c456%7Cprimerinvoke%7C5d478078-13e9-baf0-464a-7ef285ecc786?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Expires=1555451971&Signature=28UijZePE5I4dvukKQqM%2F9Rf1o4%3D",
    "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/lambda-error-processor/1134083a-2608-1e91-9897-022501a2c456",
    "RequestId": "5d478078-13e9-baf0-464a-7ef285ecc786",
    "LogicalResourceId": "primerinvoke",
    "ResourceType": "AWS::CloudFormation::CustomResource",
    "ResourceProperties": {
        "ServiceToken": "arn:aws:lambda:us-east-1:123456789012:function:lambda-error-processor-primer-14ROR2T3JKU66",
        "FunctionName": "lambda-error-processor-randomerror-ZWUC391MQAJK"
    }
}
```

Die Funktion ist für die Rückgabe einer Antwort an die Rückruf-URL zuständig, die Erfolg oder Misserfolg bedeutet. Die vollständige Antwortsyntax finden Sie unter [Benutzerdefinierte Ressourcenantwortobjekte](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/crpg-ref-responses.html).

**Example — CloudFormation benutzerdefinierte Ressourcenantwort**  

```
{
    "Status": "SUCCESS",
    "PhysicalResourceId": "2019/04/18/[$LATEST]b3d1bfc65f19ec610654e4d9b9de47a0",
    "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/lambda-error-processor/1134083a-2608-1e91-9897-022501a2c456",
    "RequestId": "5d478078-13e9-baf0-464a-7ef285ecc786",
    "LogicalResourceId": "primerinvoke"
}
```

CloudFormation stellt eine aufgerufene Bibliothek bereit`cfn-response`, die das Senden der Antwort übernimmt. Wenn Sie Ihre Funktion innerhalb einer Vorlage definieren, können Sie die Bibliothek anhand des Namens angeben. CloudFormation fügt dann die Bibliothek dem Bereitstellungspaket hinzu, das sie für die Funktion erstellt.

Wenn Ihre Funktion, die eine benutzerdefinierte Ressource verwendet, mit einer [Elastic Network Interface](configuration-vpc.md#configuration-vpc-enis) verbunden ist, fügen Sie die folgenden Ressourcen zur VPC-Richtlinie hinzu, wobei **region** die Region ist, in der sich die Funktion befindet, ohne Bindestriche angegeben ist. Zum Beispie, `us-east-1` ist `useast1`. Dadurch kann die benutzerdefinierte Ressource auf die Callback-URL antworten, die ein Signal zurück an den CloudFormation Stack sendet.

```
arn:aws:s3:::cloudformation-custom-resource-response-region",
"arn:aws:s3:::cloudformation-custom-resource-response-region/*",
```

Die folgende Beispielfunktion ruft eine zweite Funktion auf. Wenn der Aufruf erfolgreich ist, sendet die Funktion eine Erfolgsantwort an CloudFormation, und das Stack-Update wird fortgesetzt. Die Vorlage verwendet den [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)Ressourcentyp, der von bereitgestellt wird AWS Serverless Application Model.

**Example – Benutzerdefinierte Ressourcenfunktion**  

```
Transform: 'AWS::Serverless-2016-10-31'
Resources:
  primer:
    Type: [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)
    Properties:
      Handler: index.handler
      Runtime: nodejs16.x
      InlineCode: |
        var aws = require('aws-sdk');
        var response = require('cfn-response');
        exports.handler = function(event, context) {
            // For Delete requests, immediately send a SUCCESS response.
            if (event.RequestType == "Delete") {
                response.send(event, context, "SUCCESS");
                return;
            }
            var responseStatus = "FAILED";
            var responseData = {};
            var functionName = event.ResourceProperties.FunctionName
            var lambda = new aws.Lambda();
            lambda.invoke({ FunctionName: functionName }, function(err, invokeResult) {
                if (err) {
                    responseData = {Error: "Invoke call failed"};
                    console.log(responseData.Error + ":\n", err);
                }
                else responseStatus = "SUCCESS";
                response.send(event, context, responseStatus, responseData);
            });
        };
      Description: Invoke a function to create a log stream.
      MemorySize: 128
      Timeout: 8
      Role: !GetAtt role.Arn
      Tracing: Active
```

Wenn die Funktion, die die benutzerdefinierte Ressource aufruft, nicht in einer Vorlage definiert ist, können Sie den Quellcode für `cfn-response` das [Modul cfn-response im AWS CloudFormation Benutzerhandbuch](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html) abrufen.

Weitere Informationen zu benutzerdefinierten Ressourcen finden Sie unter [Benutzerdefinierte Ressourcen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html) im *AWS CloudFormation -Benutzerhandbuch*.