

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

# Creazione di un sistema di elaborazione degli ordini con Lambda Durable Functions
<a name="order-processing-app"></a>

**Nota**  
ESIGENZA: Aggiungi un diagramma di architettura che mostri API Gateway, il flusso di lavoro Durable Function e i servizi di supporto (DynamoDB,) EventBridge

## Prerequisiti
<a name="order-processing-prerequisites"></a>
+ AWS CLI installato e configurato
+ ESIGENZA: Requisiti specifici per le funzioni durevoli

## Creare i file del codice sorgente
<a name="order-processing-source"></a>

Crea i seguenti file nella directory del tuo progetto:
+ `lambda_function.py`- il codice della funzione
+ `requirements.txt`- manifesto delle dipendenze

### Codice della funzione
<a name="order-processing-function-code"></a>

```
# NEED: Verify correct imports
import boto3
import json

def lambda_handler(event, context):
    # NEED: Verify DurableContext syntax
    durable = context.durable
    
    try:
        # Validate and store order
        order = await durable.step('validate', async () => {
            return validate_order(event['order'])
        })
        
        # Process payment
        # NEED: Verify wait syntax
        await durable.wait(/* wait configuration */)
        
        # Additional steps
        # NEED: Complete implementation
        
    except Exception as e:
        # NEED: Error handling patterns
        raise e

def validate_order(order_data):
    # NEED: Implementation
    pass
```

### File di requisiti
<a name="order-processing-requirements"></a>

```
# NEED: List of required packages
```

## Distribuire l'app
<a name="order-processing-deploy"></a>

### Creare una tabella DynamoDB per gli ordini
<a name="order-processing-dynamodb"></a>

1. Apri la console DynamoDB all'indirizzo [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1. **Scegli Crea tabella**

1. Per **Nome tabella**, inserisci **Orders**

1. Per la **chiave di partizione, immettere** **orderId**

1. Lascia le altre impostazioni come predefinite

1. Scegli **Crea tabella**

### Creazione della funzione Lambda
<a name="order-processing-lambda"></a>

1. Apri la console Lambda all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)

1. Selezionare **Create function (Crea funzione)**.

1. Seleziona l'**autore da zero**

1. Nel campo **Nome funzione**, inserisci **ProcessOrder**.

1. Per **Runtime**, scegli il tuo runtime preferito

1. NECESSITÀ: Aggiungi una configurazione specifica per Durable Functions

1. Selezionare **Create function (Crea funzione)**.

### Crea l'endpoint API Gateway
<a name="order-processing-apigateway"></a>

1. Apri la console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway/](https://console.aws.amazon.com/apigateway/)

1. Scegli **Crea API**

1. Seleziona **HTTP API**

1. Scegli **Build**

1. Aggiungi un'integrazione con la tua funzione Lambda

1. Configura i percorsi per l'elaborazione degli ordini

1. Distribuzione dell'API

## Eseguire il test dell'app
<a name="order-processing-test"></a>

Invia un ordine di prova:

```
{
    "orderId": "12345",
    "items": [
        {
            "productId": "ABC123",
            "quantity": 1
        }
    ]
}
```

NECESSITÀ: Aggiungi istruzioni di monitoraggio specifiche per Durable Functions

## Fasi successive
<a name="order-processing-next-steps"></a>

### Aggiungi business Logic
<a name="order-processing-business-logic"></a>

Implementa la gestione dell'inventario:

```
async def check_inventory(order):
    # Add inventory check logic
    pass
```

Aggiungi calcoli dei prezzi:

```
async def calculate_total(order):
    # Add pricing logic
    pass
```

### Migliora la gestione degli errori
<a name="order-processing-error-handling"></a>

Aggiungi logica di compensazione:

```
async def reverse_payment(order):
    # Add payment reversal logic
    pass
```

Gestisci gli annullamenti degli ordini:

```
async def cancel_order(order):
    # Add cancellation logic
    pass
```

### Integrazione di sistemi esterni
<a name="order-processing-integrations"></a>

```
async def notify_shipping_provider(order):
    # Add shipping integration
    pass

async def send_customer_notification(order):
    # Add notification logic
    pass
```

### Migliora il monitoraggio
<a name="order-processing-monitoring"></a>
+ Crea CloudWatch dashboard
+ Imposta le metriche per i tempi di elaborazione degli ordini
+ Configura gli avvisi per gli ordini in ritardo