Configura le funzioni durevoli Lambda - AWS Lambda

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à.

Configura le funzioni durevoli Lambda

Per consentire l'esecuzione duratura della funzione Lambda, è necessario configurare impostazioni specifiche che controllino per quanto tempo può essere eseguita la funzione, per quanto tempo vengono conservati i dati sullo stato e quali autorizzazioni sono richieste.

Abilita un'esecuzione duratura

Per abilitare l'esecuzione durevole della tua funzione Lambda, configurala DurableConfig nella configurazione della tua funzione. Questa impostazione controlla il timeout di esecuzione, il mantenimento dello stato e il comportamento di controllo delle versioni.

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

Parametri di configurazione:

  • ExecutionTimeout- Tempo massimo di esecuzione in secondi (fino a 31.536.000 per un anno)

  • RetentionPeriodInDays- Per quanto tempo conservare lo stato e la cronologia di esecuzione (1-365 giorni)

  • AllowInvokeLatest- Se consentire l'invocazione della versione $LATEST per un'esecuzione duratura

Autorizzazioni IAM per funzioni durevoli

Le funzioni durevoli richiedono autorizzazioni IAM aggiuntive oltre ai ruoli di esecuzione Lambda standard. Il ruolo di esecuzione della funzione deve includere le autorizzazioni per la gestione dello stato e l'esecuzione duratura. APIs

Autorizzazioni minime richieste:

{ "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 esempio di ruolo di esecuzione:

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: '*'

Best practice per la configurazione

Segui queste best practice per configurare funzioni durevoli per l'uso in produzione:

  • Imposta i timeout di esecuzione appropriati: configura ExecutionTimeout in base alla durata massima prevista del flusso di lavoro. Non impostate timeout inutilmente lunghi poiché influiscono sull'allocazione dei costi e delle risorse.

  • Bilancia la conservazione con i costi di archiviazione: imposta in RetentionPeriodInDays base ai requisiti di debug e audit. Periodi di conservazione più lunghi aumentano i costi di storage.

  • Usa il controllo delle versioni in produzione: imposta l'AllowInvokeLatestopzione false negli ambienti di produzione e utilizza versioni di funzioni o alias specifici per esecuzioni durature.

  • Monitora le dimensioni dello stato: gli oggetti a stato di grandi dimensioni aumentano i costi di storage e possono influire sulle prestazioni. Riduci al minimo lo stato e utilizza lo storage esterno per dati di grandi dimensioni.

  • Configura la registrazione appropriata: abilita la registrazione dettagliata per la risoluzione dei problemi dei flussi di lavoro a lunga durata, ma fai attenzione al volume e ai costi dei log.

Esempio di configurazione di produzione:

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