Dauerhafte Lambda-Funktionen konfigurieren - AWS Lambda

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.

Dauerhafte Lambda-Funktionen konfigurieren

Um eine dauerhafte Ausführung Ihrer Lambda-Funktion zu ermöglichen, müssen Sie spezifische Einstellungen konfigurieren, die steuern, wie lange Ihre Funktion ausgeführt werden kann, wie lange Statusdaten aufbewahrt werden und welche Berechtigungen erforderlich sind.

Ermöglichen Sie eine dauerhafte Ausführung

Um eine dauerhafte Ausführung für Ihre Lambda-Funktion zu ermöglichen, konfigurieren Sie die DurableConfig in Ihrer Funktionskonfiguration. Diese Einstellung steuert das Ausführungstimeout, die Beibehaltung des Status und das Versionsverhalten.

AWS CLI
aws lambda update-function-configuration \ --function-name my-durable-function \ --durable-config '{ "ExecutionTimeout": 3600, "RetentionPeriodInDays": 30, "AllowInvokeLatest": true }'
CloudFormation
Resources: MyDurableFunction: Type: AWS::Lambda::Function Properties: FunctionName: my-durable-function Runtime: nodejs18.x Handler: index.handler Code: ZipFile: | // Your durable function code DurableConfig: ExecutionTimeout: 3600 RetentionPeriodInDays: 30 AllowInvokeLatest: true

Konfigurationsparameter:

  • ExecutionTimeout- Maximale Ausführungszeit in Sekunden (bis zu 31.536.000 für ein Jahr)

  • RetentionPeriodInDays- Wie lange sollen der Ausführungsstatus und der Ausführungsverlauf beibehalten werden (1—365 Tage)

  • AllowInvokeLatest- Ob der Aufruf der $LATEST-Version für eine dauerhafte Ausführung zulässig sein soll

IAM-Berechtigungen für dauerhafte Funktionen

Dauerhafte Funktionen erfordern zusätzliche IAM-Berechtigungen, die über die standardmäßigen Lambda-Ausführungsrollen hinausgehen. Die Ausführungsrolle Ihrer Funktion muss Berechtigungen für die Statusverwaltung und die dauerhafte Ausführung beinhalten. APIs

Erforderliche Mindestberechtigungen:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction", "lambda:ManageDurableState", "lambda:GetDurableExecution", "lambda:ListDurableExecutions" ], "Resource": "arn:aws:lambda:*:*:function:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }

CloudFormation Beispiel für eine Ausführungsrolle:

DurableFunctionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Policies: - PolicyName: DurableFunctionPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - lambda:ManageDurableState - lambda:GetDurableExecution - lambda:ListDurableExecutions Resource: '*'

Bewährte Methoden für die Konfiguration

Folgen Sie diesen bewährten Methoden, wenn Sie langlebige Funktionen für den Produktionseinsatz konfigurieren:

  • Legen Sie geeignete Ausführungszeitlimits fest — Konfigurieren Sie sie auf der ExecutionTimeout Grundlage der maximal zu erwartenden Dauer Ihres Workflows. Legen Sie keine unnötig langen Timeouts fest, da sich diese auf die Kosten und die Ressourcenzuweisung auswirken.

  • Sorgen Sie für ein ausgewogenes Verhältnis zwischen Aufbewahrung und Speicherkosten — Legen Sie diese auf der RetentionPeriodInDays Grundlage Ihrer Debugging- und Prüfanforderungen fest. Längere Aufbewahrungsfristen erhöhen die Speicherkosten.

  • Versionierung in der Produktion verwenden — Wählen Sie AllowInvokeLatest diese Option false in Produktionsumgebungen aus und verwenden Sie spezifische Funktionsversionen oder Aliase für dauerhafte Ausführungen.

  • Statusgröße überwachen — Große Zustandsobjekte erhöhen die Speicherkosten und können die Leistung beeinträchtigen. Halten Sie den Status minimal und verwenden Sie externen Speicher für große Datenmengen.

  • Konfigurieren Sie die entsprechende Protokollierung — Aktivieren Sie die detaillierte Protokollierung zur Fehlerbehebung bei lang andauernden Workflows, achten Sie dabei jedoch auf das Protokollvolumen und die Kosten.

Beispiel für eine Produktionskonfiguration:

{ "ExecutionTimeout": 86400, "RetentionPeriodInDays": 7, "AllowInvokeLatest": false }