Task di AWS Lambda - Amazon Simple Workflow Service

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

Task di AWS Lambda

Informazioni su AWS Lambda

AWS Lambdaè un servizio di elaborazione gestito che esegue il codice in risposta a eventi generati dal codice personalizzato o da variAWSservizi come Amazon S3, DynamoDB, Amazon Kinesis, Amazon SNS e Amazon Cognito. Per ulteriori informazioni su Lambda, consulta la Guida per gli sviluppatori di AWS Lambda.

Amazon Simple Workflow Service fornisce un task Lambda in modo da permetterti di eseguire funzioni Lambda in sostituzione o insieme alle tradizionali attività Amazon SWF.

Importante

Il tuoAWSl'account verrà addebitato per le esecuzioni Lambda (richieste) eseguite da Amazon SWF per tuo conto. Per i dettagli sui prezzi di Lambda, consulta la sezionehttps://aws.amazon.com/lambda/pricing/.

Vantaggi e limiti inerenti all'utilizzo di task Lambda

Esistono numerosi vantaggi nell'utilizzo di task Lambda anziché di un'attività Amazon SWF tradizionale:

  • I task Lambda non devono essere registrati o avere una versione come i tipi di attività Amazon SWF.

  • Puoi utilizzare qualsiasi funzione Lambda esistente già definita nei tuoi flussi di lavoro.

  • Le funzioni Lambda sono chiamate direttamente da Amazon SWF; in base alle attività tradizionali, non devi implementare un programma lavoratore per eseguirle.

  • Lambda fornisce parametri e log per monitorare e analizzare le esecuzioni delle funzioni.

L'utilizzo di task Lambda comporta anche alcuni limiti che è necessario conoscere:

  • I task Lambda possono essere eseguiti solo inAWSregioni che supportano Lambda. Consulta .Regioni ed endpoint LambdanellaRiferimento generale di Amazon Web Servicesper i dettagli sulle regioni attualmente supportate per Lambda.

  • I task Lambda sono attualmente supportati solo dall'API HTTP di SWF di base e in AWS Flow Framework per Java. I task Lambda non sono supportati in AWS Flow Framework per Ruby.

Utilizzo di task Lambda nei flussi di lavoro di

Per utilizzare task Lambda nei flussi di lavoro Amazon SWF, devi eseguire le operazioni elencate di seguito:

  1. Configurare ruoli IAM per fornire ad Amazon SWF l'autorizzazione per richiamare le funzioni Lambda.

  2. Collegare i ruoli IAM ai tuoi flussi di lavoro.

  3. Chiamare la funzione Lambda durante un'esecuzione di flusso di lavoro.

Configurazione di un ruolo IAM

Prima di richiamare le funzioni Lambda da Amazon SWF devi fornire un ruolo IAM che consente l'accesso a Lambda da Amazon SWF. Puoi eseguire una delle seguenti operazioni:

  • scegli un ruolo predefinito,AWSLambdaRole, per autorizzare i tuoi flussi di lavoro a richiamare qualsiasi funzione Lambda associata al tuo account.

  • definire una policy e il ruolo associato per autorizzare i flussi di lavoro a richiamare particolari funzioni Lambda, specificate in base ai relativi nomi ARN.

Limita delle autorizzazioni per un ruolo IAM

Puoi limitare le autorizzazioni per un ruolo IAM che fornisci ad Amazon SWF utilizzando ilSourceArneSourceAccountchiavi di contesto nel criterio di attendibilità delle risorse. Queste chiavi limitano l'utilizzo di una policy IAM in modo che venga utilizzata solo dalle esecuzioni di Amazon Simple Workflow Service appartenenti al dominio ARN specificato. Se si utilizzano entrambe le chiavi di contesto delle condizioni globali, la procedura diaws:SourceAccountvalore e il conto a cui si fa riferimento nelaws:SourceArnvalue deve utilizzare lo stesso ID account quando viene utilizzato nella stessa dichiarazione di policy.

Nell'esempio seguente di policy di trust, viene utilizzato l'operazione diSourceArnchiave di contesto per limitare l'utilizzo del ruolo del servizio IAM solo nelle esecuzioni di Amazon Simple Workflow Service appartenentisomeDomainnel conto,123456789012.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "swf.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:swf:*:123456789012:/domain/someDomain" } } } ] }

Nell'esempio seguente di policy di trust, viene utilizzato l'operazione diSourceAccountchiave di contesto per limitare l'utilizzo del ruolo del servizio IAM solo nelle esecuzioni di Amazon Simple Workflow Service nell'account,123456789012.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "swf.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceAccount": "123456789012" } } } ] }

Fornire ad Amazon SWF l'accesso per richiamare qualsiasi ruolo Lambda

Puoi utilizzare il ruolo predefinito,AWSLambdaRole, per consentire ai flussi di lavoro di Amazon SWF di richiamare qualsiasi funzione Lambda associata al tuo account.

Per utilizzareAWSLambdaRoleper consentire ad Amazon SWF di richiamare le funzioni Lambda
  1. Apri la console Amazon IAM.

  2. Scegli Roles (Ruoli), quindi Create New Role (Crea nuovo ruolo).

  3. Assegna un nome al ruolo, come swf-lambda, quindi scegli Next Step (Fase successiva).

  4. UNDERAWSRuoli dei servizi, scegliAmazon SWFe scegliFase successiva.

  5. Sulcollegamento di policyschermo, scegliAWSLambdaRoledall'elenco.

  6. Scegli Next Step (Fase successiva), quindi Create Role (Crea ruolo) dopo aver esaminato il ruolo.

Definizione di un ruolo IAM per consentire l'accesso per richiamare una specifica funzione Lambda

Se desideri fornire l'accesso per richiamare una specifica funzione Lambda dal flusso di lavoro, devi definire la policy IAM.

Per creare una policy IAM allo scopo di fornire l'accesso a una particolare funzione Lambda
  1. Apri la console Amazon IAM.

  2. Scegli Policies (Policy), quindi Create Policy (Crea policy).

  3. ScegliereCopiare un'AWSPolicy gestitae selezionaAWSLambdaRoledall'elenco. Viene generata una policy. Se necessario, modificane il nome e la descrizione.

  4. NellaResource (Risorsa)campo dellaPolicy Document (Documento policy), aggiungi l'ARN delle funzioni Lambda. Ad esempio:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:111111000000:function:hello_lambda_function" ] } ] }
    Nota

    Per una descrizione completa di come specificare le risorse in un ruolo IAM, consulta la sezionePanoramica delle policy IAMnelUso di IAM.

  5. Scegli Create Policy (Crea policy) per completare la creazione della policy.

Puoi quindi selezionare questa policy quando crei un nuovo ruolo IAM e utilizzare il ruolo per fornire ai flussi di lavoro Amazon SWF l'accesso per richiamare le funzioni Amazon SWF. Questa procedura è molto simile alla creazione di un ruolo con laAWSLambdaRole. La differenza è che qui scegli la policy quando crei il ruolo.

Per creare un ruolo Amazon SWF utilizzando la tua politica Lambda
  1. Apri la console Amazon IAM.

  2. Scegli Roles (Ruoli), quindi Create New Role (Crea nuovo ruolo).

  3. Assegna un nome al ruolo, come swf-lambda-function, quindi scegli Next Step (Fase successiva).

  4. UNDERAWSRuoli dei servizi, scegliAmazon SWFe scegliFase successiva.

  5. Sulcollegamento di policy, scegliere la policy specifica alle funzioni Lambda dall'elenco.

  6. Scegli Next Step (Fase successiva), quindi Create Role (Crea ruolo) dopo aver esaminato il ruolo.

Collegamento del ruolo IAM al flusso di lavoro

Dopo aver definito il ruolo IAM, devi collegarlo al flusso di lavoro che lo utilizzerà per chiamare le funzioni Lambda a Amazon SWF è autorizzato a accedere.

È possibile effettuare il collegamento del ruolo al flusso di lavoro:

  • Durante la registrazione del tipo di flusso di lavoro. Questo ruolo può quindi essere utilizzato come ruolo Lambda di default per ogni esecuzione di quel tipo di flusso di lavoro.

  • All'avvio di un'esecuzione di flusso di lavoro. Questo ruolo sarà utilizzato esclusivamente durante l'esecuzione di quel flusso di lavoro (e nel corso dell'intera esecuzione).

Per impostare un ruolo Lambda di default per un tipo di flusso di lavoro
  • Quando si chiamaRegisterWorkflowDigita, imposta ildefaultLambdaRolenell'ARN del ruolo che hai definito.

Per impostare un ruolo Lambda da utilizzare durante un'esecuzione di flusso di lavoro
  • Quando si chiamaStartWorkflowEsecuzione, imposta il campo LambdaRole sull'ARN del ruolo che hai definito.

Nota

se l'account chiamaRegisterWorkflowTipo oStartWorkflowL'esecuzione non dispone dell'autorizzazione per utilizzare il ruolo specificato, quindi la chiamata non riuscirà con un errore diOperationNotPermittedFault.

Chiamata della funzione Lambda da un flusso di lavoro Amazon SWF

Puoi utilizzare il pluginScheduleLambdaFunctionDecisionAttributi di tipo di dati per identificare la funzione Lambda da chiamare durante un'esecuzione di flusso di lavoro.

Durante una chiamata aRespondDecisionTaskCompleted, fornire unScheduleLambdaFunctionDecisionAttributi all'elenco delle decisioni. Ad esempio:

{ "decisions": [{ "ScheduleLambdaFunctionDecisionAttributes": { "id": "lambdaTaskId", "name": "myLambdaFunctionName", "input": "inputToLambdaFunction", "startToCloseTimeout": "30" }, }], }

Imposta i seguenti parametri:

  • id con un identificatore per il task Lambda. Deve essere una stringa che contiene da 1 a 256 caratteri ma non i caratteri : (due punti), / (barra obliqua), | (barra verticale), i caratteri di controllo (\u0000 - \u001f e \u007f - \u009f) e la stringa letterale arn.

  • name con il nome della funzione Lambda. Il flusso di lavoro Amazon SWF deve essere dotato di un ruolo IAM che consente l'accesso per chiamare la funzione Lambda. Il nome specificato deve rispettare i vincoli delFunctionNameparametro come nell'operazione Lambda Invoke.

  • input con dati di input facoltativi per la funzione. Se impostato, deve rispettare i vincoli delClientContextparametro come nell'operazione Lambda Invoke.

  • startToCloseTimeoutcon un periodo massimo facoltativo, in secondi, che la funzione deve essere eseguita prima che l'operazione non riesca con un'eccezione di timeout. Il valore NONE può essere utilizzato per specificare una durata illimitata.

Per ulteriori informazioni, consultaImplementazioneAWS LambdaAttività