

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

# AWS Lambda Attività di implementazione
<a name="lambda-task"></a>

**Topics**
+ [Informazioni su AWS Lambda](#about-aws-lambda)
+ [Vantaggi e limiti dell'utilizzo delle attività Lambda](#benefits-limitations-lambda-tasks)
+ [Utilizzo delle attività Lambda nei flussi di lavoro AWS Flow Framework per Java](#using-lambda-tasks-in-java-flow-workflows)
+ [Visualizza l'esempio HelloLambda](#see-lambda-sample)

## Informazioni su AWS Lambda
<a name="about-aws-lambda"></a>

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](https://docs.aws.amazon.com/lambda/latest/dg/).

Amazon Simple Workflow Service fornisce un task Lambda che consente di eseguire funzioni Lambda al posto o insieme alle attività tradizionali di Amazon SWF.

**Importante**  
Sul tuo AWS 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/.](https://aws.amazon.com/lambda/pricing/)

## Vantaggi e limiti dell'utilizzo delle attività Lambda
<a name="benefits-limitations-lambda-tasks"></a>

L'utilizzo delle attività Lambda al posto di un'attività tradizionale di Amazon SWF offre numerosi vantaggi:
+ Le attività Lambda non devono essere registrate o sottoposte a versioni come i tipi di attività di 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 è necessario fare 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 nelle AWS regioni che forniscono supporto per Lambda. Consulta [le regioni e gli endpoint Lambda](https://docs.aws.amazon.com/general/latest/gr/rande.html#lambda_region) nel *riferimento generale di Amazon Web Services* per dettagli sulle regioni attualmente supportate per Lambda.
+ Le attività Lambda sono attualmente supportate solo dall'API HTTP SWF di base e in Java. AWS Flow Framework Al momento non è disponibile alcun supporto per le attività Lambda in AWS Flow Framework for Ruby.

## Utilizzo delle attività Lambda nei flussi di lavoro AWS Flow Framework per Java
<a name="using-lambda-tasks-in-java-flow-workflows"></a>

Esistono tre requisiti per utilizzare le attività Lambda nei flussi di lavoro AWS Flow Framework per Java:
+ Una funzione Lambda da eseguire. Puoi usare qualsiasi funzione Lambda che hai definito. Per ulteriori informazioni su come creare funzioni Lambda, consulta la Guida per gli [AWS Lambda sviluppatori](https://docs.aws.amazon.com/lambda/latest/dg/).
+ 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
<a name="set-up-lambda-role"></a>

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, Ruolo, AWSLambda per autorizzare i flussi di lavoro a richiamare qualsiasi funzione Lambda associata al tuo account.*
+ definisci la tua politica e il ruolo associato per autorizzare i flussi di lavoro a richiamare particolari funzioni Lambda, specificate dai rispettivi Amazon Resource Names (). ARNs

#### Limita le autorizzazioni su un ruolo IAM
<a name="limit-iam-role-permissions"></a>

Puoi limitare le autorizzazioni su un ruolo IAM che fornisci ad Amazon SWF utilizzando `SourceArn` le chiavi `SourceAccount` e context nella tua policy 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 che appartengono all'ARN del dominio specificato. Se utilizzi entrambe le chiavi di contesto della condizione globale, il `aws:SourceAccount` valore e l'account a cui si fa riferimento nel `aws:SourceArn` valore devono utilizzare lo stesso ID account quando vengono utilizzati nella stessa dichiarazione politica.

Nel seguente esempio, la chiave di `SourceArn` contesto limita l'utilizzo del ruolo del servizio IAM solo nelle esecuzioni di Amazon Simple Workflow Service che appartengono `someDomain` all'account,. `123456789012`


+ **Dichiarazione 1**

  **Preside**: `"Service": "swf.amazonaws.com"` 

  **Operazione:** `sts:AssumeRole` 

```
"Condition": {
   "ArnLike": {
     "aws:SourceArn": "arn:aws:swf:*:123456789012:/domain/someDomain"
   }
}
```

Nell'esempio seguente, la chiave di `SourceAccount` contesto limita l'utilizzo del ruolo del servizio IAM 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
<a name="providing-swf-access-invoke-any-lambda-role"></a>

Puoi utilizzare il ruolo predefinito, Role, per dare ai flussi di lavoro Amazon SWF la possibilità di richiamare qualsiasi *AWSLambdafunzione* Lambda associata al tuo account.

**Utilizzare AWSLambda Role per consentire ad Amazon SWF l'accesso per richiamare le funzioni Lambda**

1. Apri la [console Amazon IAM](https://console.aws.amazon.com/iam/).

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

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

1. In **AWS Service Roles**, scegli **Amazon SWF** e scegli **Next** Step.

1. Nella schermata **Allach Policy**, scegli **AWSLambdaRuolo** dall'elenco.

1. 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 richiamare una funzione Lambda specifica
<a name="defining-iam-role-provide-access-invoke-specific-lambda-function"></a>

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

**Creare una policy IAM per fornire l'accesso a una particolare funzione Lambda**

1. Apri la [console Amazon IAM](https://console.aws.amazon.com/iam/).

1. Scegli **Policies** (Policy), quindi **Create Policy** (Crea policy).

1. Scegli **Copia una policy AWS gestita** e seleziona **AWSLambdaRuolo** dall'elenco. Viene generata una policy. Se necessario, modificane il nome e la descrizione.

1. Nel campo *Resource* del **Policy Document**, aggiungi l'ARN delle tue funzioni Lambda. Per 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_overview.html) nell'*uso* di IAM.

1. 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 concedere a invoke l'accesso ai tuoi flussi di lavoro Amazon SWF. Questa procedura è molto simile alla creazione di un ruolo con la politica *AWSLambdaRole*. Scegli invece la tua policy quando crei il ruolo.

**Per creare un ruolo Amazon SWF utilizzando la tua policy Lambda**

1. Apri la [console Amazon IAM](https://console.aws.amazon.com/iam/).

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

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

1. In **AWS Service Roles**, scegli **Amazon SWF** e scegli **Next** Step.

1. Nella schermata **Allega policy**, scegli la policy specifica per la funzione Lambda dall'elenco.

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

### Pianifica l'esecuzione di un'attività Lambda
<a name="schedule-lambda-tasks-for-execution"></a>

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 è ampiamente dimostrato dall'[HelloLambda esempio](#see-lambda-sample) contenuto in. AWS SDK per Java

**Per pianificare l'esecuzione di un'attività Lambda**

1. Nell'implementazione di flusso di lavoro, ottieni un'istanza di `LambdaFunctionClient` chiamando `getLambdaFunctionClient()` su un'istanza `DecisionContext`.

   ```
   // Get a LambdaFunctionClient instance
   DecisionContextProvider decisionProvider = new DecisionContextProviderImpl();
   DecisionContext decisionContext = decisionProvider.getDecisionContext();
   LambdaFunctionClient lambdaClient = decisionContext.getLambdaFunctionClient();
   ```

1. Pianifica l'attività utilizzando il `scheduleLambdaFunction()` metodo su`LambdaFunctionClient`, passandole il nome della funzione Lambda che hai creato e tutti i dati di input per l'attività 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);
   ```

1. Nel programma di avvio dell'esecuzione del workflow, aggiungi il ruolo IAM lambda alle opzioni di workflow 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 l'esempio HelloLambda
<a name="see-lambda-sample"></a>

Un esempio che fornisce un'implementazione di un flusso di lavoro che utilizza un'attività Lambda è fornito in. AWS SDK per Java Per visualizzarlo, and/or eseguilo, [scarica il codice sorgente](https://aws.amazon.com/code/3015904745387737).

Una descrizione completa di come creare ed eseguire l'*HelloLambda*esempio è fornita nel file README fornito con AWS Flow Framework gli esempi Java.