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à.
Attuazione AWS Lambda Processi
Argomenti
Informazioni AWS Lambda
AWS Lambda è un servizio di elaborazione completamente gestito che esegue il codice in risposta a eventi generati da codice personalizzato o da vari AWS servizi 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'attività Lambda che consente di eseguire funzioni Lambda al posto o insieme alle attività tradizionali di Amazon SWF.
Importante
Il tuo AWS all'account verranno addebitate le esecuzioni (richieste) Lambda eseguite da Amazon SWF per tuo conto. Per informazioni dettagliate sui prezzi di Lambda, consulta https://aws.amazon.com/lambda/pricing/
Vantaggi e limiti dell'utilizzo delle attività Lambda
L'utilizzo delle attività Lambda al posto di un'attività Amazon SWF tradizionale offre numerosi vantaggi:
-
Le attività Lambda non devono essere registrate o sottoposte a versioni come i tipi di attività Amazon SWF.
-
Puoi utilizzare qualsiasi funzione Lambda esistente che hai già definito nei tuoi flussi di lavoro.
-
Le funzioni Lambda vengono richiamate direttamente da Amazon SWF; non è necessario implementare un programma di lavoro per eseguirle, come invece avviene con le attività tradizionali.
-
Lambda fornisce metriche e log per tracciare e analizzare le esecuzioni delle funzioni.
L'utilizzo di task Lambda comporta anche alcuni limiti che è necessario conoscere:
-
Le attività Lambda possono essere eseguite solo in AWS regioni che forniscono supporto per Lambda. Vedi Regioni ed endpoint Lambda nel Riferimento generale di Amazon Web Services per informazioni dettagliate sulle regioni attualmente supportate per Lambda.
-
Le attività Lambda sono attualmente supportate solo dall'API HTTP SWF di base e nel AWS Flow Framework per Java. Al momento non è disponibile alcun supporto per le attività Lambda in AWS Flow Framework per Ruby.
Usare le attività Lambda nel tuo AWS Flow Framework per flussi di lavoro Java
Esistono tre requisiti per utilizzare le attività Lambda nel tuo AWS Flow Framework per i flussi di lavoro Java:
-
Una funzione Lambda da eseguire. Puoi usare qualsiasi funzione Lambda che hai definito. Per ulteriori informazioni su come creare funzioni Lambda, consulta la AWS Lambda Guida per gli sviluppatori.
-
Un ruolo IAM che fornisce l'accesso per eseguire funzioni Lambda dai flussi di lavoro Amazon SWF.
-
Codice per pianificare l'attività Lambda dall'interno del flusso di lavoro.
Configurazione di un ruolo IAM
Prima di poter richiamare le funzioni Lambda da Amazon SWF, devi fornire un ruolo IAM che fornisca 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.
-
definisci la tua policy e il ruolo associato per autorizzare i flussi di lavoro a richiamare particolari funzioni Lambda, specificate dai relativi Amazon Resource Names (ARN).
Limita le autorizzazioni su un ruolo IAM
Puoi limitare le autorizzazioni su un ruolo IAM che fornisci ad Amazon SWF utilizzando SourceArn e SourceAccount chiavi di contesto nella tua politica di fiducia delle risorse. Queste chiavi limitano l'utilizzo di una policy IAM in modo che venga utilizzata solo dalle esecuzioni di Amazon Simple Workflow Service che appartengono al dominio ARN specificato. Se utilizzi entrambe le chiavi di contesto delle condizioni globali, aws:SourceAccount valore e l'account a cui si fa riferimento in aws:SourceArn value deve utilizzare lo stesso ID account se utilizzato nella stessa dichiarazione politica.
Nel seguente esempio, SourceArn la chiave di contesto limita il ruolo del servizio IAM a essere utilizzato solo nelle esecuzioni di Amazon Simple Workflow Service che appartengono a someDomain nell'account, 123456789012.
-
Dichiarazione 1
Preside :
"Service": "swf.amazonaws.com"Operazione:
sts:AssumeRole
"Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:swf:*:123456789012:/domain/someDomain" } }
Nel seguente esempio, SourceAccount la chiave di contesto limita il ruolo del servizio IAM a essere utilizzato solo nelle esecuzioni di Amazon Simple Workflow Service nell'account, 123456789012.
"Condition": { "StringLike": { "aws:SourceAccount": "123456789012" } }
Fornire ad Amazon SWF l'accesso per richiamare qualsiasi ruolo Lambda
Puoi usare il ruolo predefinito, AWSLambdaRole, per dare ai tuoi flussi di lavoro Amazon SWF la possibilità di richiamare qualsiasi funzione Lambda associata al tuo account.
Da usare AWSLambdaRole per consentire ad Amazon SWF di accedere alle funzioni Lambda
-
Apri la console IAM
. -
Scegli Roles (Ruoli), quindi Create New Role (Crea nuovo ruolo).
-
Assegna un nome al ruolo, come
swf-lambda, quindi scegli Next Step (Fase successiva). -
Sotto AWS Ruoli di servizio, scegli Amazon SWFe scegli Passaggio successivo.
-
Sul Allega politica schermo, scegli AWSLambdaRole dall'elenco.
-
Scegli Next Step (Fase successiva), quindi Create Role (Crea ruolo) dopo aver esaminato il ruolo.
Definizione di un ruolo IAM per fornire l'accesso per invocare una funzione Lambda specifica
Se desideri fornire l'accesso per richiamare una funzione Lambda specifica dal tuo flusso di lavoro, dovrai definire la tua policy IAM.
Per creare una policy IAM per fornire l'accesso a una particolare funzione Lambda
-
Apri la console IAM
. -
Scegli Policies (Policy), quindi Create Policy (Crea policy).
-
Scegli Copia un AWS Politica gestita e seleziona AWSLambdaRole dall'elenco. Viene generata una policy. Se necessario, modificane il nome e la descrizione.
-
Nel Risorsa campo del Documento politico, aggiungi l'ARN delle tue funzioni Lambda. Ad esempio:
-
Risorsa:
arn:aws:lambda:us-east-1:111122223333:function:hello_lambda_function
Nota
Per una descrizione completa di come specificare le risorse in un ruolo IAM, consulta Panoramica delle politiche IAM nel Usare IAM.
-
-
Scegli Create Policy (Crea policy) per completare la creazione della policy.
Puoi quindi selezionare questa policy quando crei un nuovo ruolo IAM e utilizzarlo per consentire a invoke di accedere ai tuoi flussi di lavoro Amazon SWF. Questa procedura è molto simile alla creazione di un ruolo con AWSLambdaRole policy. invece, scegli la tua politica quando crei il ruolo.
Per creare un ruolo Amazon SWF utilizzando la tua policy Lambda
-
Apri la console IAM
. -
Scegli Roles (Ruoli), quindi Create New Role (Crea nuovo ruolo).
-
Assegna un nome al ruolo, come
swf-lambda-function, quindi scegli Next Step (Fase successiva). -
Sotto AWS Ruoli di servizio, scegli Amazon SWFe scegli Passaggio successivo.
-
Sul Allega politica schermata, scegli la tua policy specifica per la funzione Lambda dall'elenco.
-
Scegli Next Step (Fase successiva), quindi Create Role (Crea ruolo) dopo aver esaminato il ruolo.
Pianifica l'esecuzione di un task Lambda
Dopo aver definito un ruolo IAM che ti consente di richiamare le funzioni Lambda, puoi pianificarne l'esecuzione come parte del tuo flusso di lavoro.
Nota
Questo processo è pienamente dimostrato da HelloLambda provare nel AWS SDK per Java.
Per pianificare l'esecuzione di un task Lambda
-
Nell'implementazione di flusso di lavoro, ottieni un'istanza di
LambdaFunctionClientchiamandogetLambdaFunctionClient()su un'istanzaDecisionContext.// Get a LambdaFunctionClient instance DecisionContextProvider decisionProvider = new DecisionContextProviderImpl(); DecisionContext decisionContext = decisionProvider.getDecisionContext(); LambdaFunctionClient lambdaClient = decisionContext.getLambdaFunctionClient(); -
Pianifica l'attività utilizzando il
scheduleLambdaFunction()metodo suLambdaFunctionClient, passandogli il nome della funzione Lambda che hai creato e gli eventuali dati di input per il task Lambda.// Schedule the Lambda function for execution, using your IAM role for access. String lambda_function_name = "The name of your Lambda function."; String lambda_function_input = "Input data for your Lambda task."; lambdaClient.scheduleLambdaFunction(lambda_function_name, lambda_function_input); -
Nel tuo programma di avvio dell'esecuzione del flusso di lavoro, aggiungi il ruolo lambda IAM alle opzioni di flusso di lavoro predefinite utilizzando
StartWorkflowOptions.withLambdaRole(), quindi passa le opzioni all'avvio del flusso di lavoro.// Workflow client classes are generated for you when you use the @Workflow // annotation on your workflow interface declaration. MyWorkflowClientExternalFactory clientFactory = new MyWorkflowClientExternalFactoryImpl(sdk_swf_client, swf_domain); MyWorkflowClientExternal workflow_client = clientFactory.getClient(); // Give the ARN of an IAM role that allows SWF to invoke Lambda functions on // your behalf. String lambda_iam_role = "arn:aws:iam::111111000000:role/swf_lambda_role"; StartWorkflowOptions workflow_options = new StartWorkflowOptions().withLambdaRole(lambda_iam_role); // Start the workflow execution workflow_client.helloWorld("User", workflow_options);
Visualizza il HelloLambda provare
Un esempio che fornisce un'implementazione di un flusso di lavoro che utilizza un'attività Lambda è fornito nella AWS SDK per Java. Da visualizzare and/or eseguilo, scarica il codice sorgente
Una descrizione completa di come creare ed eseguire HelloLambda l'esempio è fornito nel file README fornito con AWS Flow Framework per esempi Java.