Tutorial: Creazione di una funzione Lambda con un URL della funzione - 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à.

Tutorial: Creazione di una funzione Lambda con un URL della funzione

In questo tutorial viene creata una funzione Lambda definita come archivio di file .zip con un endpoint URL della funzione pubblico che restituisce il prodotto di due numeri. Per ulteriori informazioni sulla configurazione degli URL della funzione, consulta Creazione e gestione degli URL della funzione.

Prerequisiti

Questo tutorial presuppone una certa conoscenza delle operazioni di base di Lambda e della console relativa. Se non lo si è già fatto, seguire le istruzioni riportate in Creare una funzione Lambda con la console per creare la prima funzione Lambda.

Per completare i passaggi seguenti, è necessaria l'AWS Command Line Interface (AWS CLI) versione 2. I comandi e l'output previsto sono elencati in blocchi separati:

aws --version

Verrà visualizzato l'output seguente:

aws-cli/2.13.27 Python/3.11.6 Linux/4.14.328-248.540.amzn2.x86_64 exe/x86_64.amzn.2

Per i comandi lunghi viene utilizzato un carattere di escape (\) per dividere un comando su più righe.

In Linux e macOS utilizzare la propria shell e il proprio programma di gestione dei pacchetti preferiti.

Nota

Su Windows, alcuni comandi della CLI Bash utilizzati comunemente con Lambda (ad esempio, zip) non sono supportati dai terminali integrati del sistema operativo. Per ottenere una versione integrata su Windows di Ubuntu e Bash, installa il sottosistema Windows per Linux. I comandi della CLI di esempio in questa guida utilizzano la formattazione Linux. Se si utilizza la CLI di Windows, i comandi che includono documenti JSON in linea dovranno essere riformattati.

Creazione di un ruolo di esecuzione

Creare il ruolo di esecuzione che offre l'autorizzazione alla funzione Lambda per accedere alle risorse AWS .

Creazione di un ruolo di esecuzione
  1. Apri la pagina Ruoli della console AWS Identity and Access Management (IAM).

  2. Scegli Crea ruolo.

  3. Per il tipo di entità affidabile seleziona AWS servizio, quindi per Use case, seleziona Lambda.

  4. Seleziona Successivo.

  5. Nel riquadro Politiche di autorizzazione, inserisci AWSLambdaBasicExecutionRole nella casella di ricerca.

  6. Seleziona la casella di controllo accanto alla politica AWSLambdaBasicExecutionRole AWS gestita, quindi scegli Avanti.

  7. Inserisci lambda-url-role il nome del ruolo, quindi scegli Crea ruolo.

La AWSLambdaBasicExecutionRole policy dispone delle autorizzazioni necessarie alla funzione per scrivere log su Amazon CloudWatch Logs. Più avanti nel tutorial, avrai bisogno dell'Amazon Resource Name (ARN) del ruolo per creare la tua funzione Lambda.

Per trovare l'ARN del tuo ruolo esecutivo
  1. Apri la pagina Ruoli della console AWS Identity and Access Management (IAM).

  2. Seleziona il ruolo che hai appena creato (lambda-url-role).

  3. Nel riquadro Riepilogo, copia l'ARN.

Crea una funzione Lambda con un URL della funzione (archivio di file.zip)

Crea una funzione Lambda con un endpoint URL della funzione utilizzando un archivio di file .zip.

Creazione della funzione
  1. Copiare il codice di esempio seguente in un file denominato index.js.

    Esempio index.js
    exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; };
  2. Crea un pacchetto di implementazione.

    zip function.zip index.js
  3. Creare una funzione Lambda con il comando create-function. Assicurati di sostituire il ruolo ARN con l'ARN del tuo ruolo di esecuzione che hai copiato in precedenza nel tutorial.

    aws lambda create-function \ --function-name my-url-function \ --runtime nodejs18.x \ --zip-file fileb://function.zip \ --handler index.handler \ --role arn:aws:iam::123456789012:role/lambda-url-role
  4. Aggiungi una policy basata sulle risorse alla funzione che concede le autorizzazioni per consentire l'accesso pubblico all'URL della funzione.

    aws lambda add-permission \ --function-name my-url-function \ --action lambda:InvokeFunctionUrl \ --principal "*" \ --function-url-auth-type "NONE" \ --statement-id url
  5. Crea un endpoint URL per la funzione con il comando create-function-url-config.

    aws lambda create-function-url-config \ --function-name my-url-function \ --auth-type NONE

Verifica l'endpoint URL della funzione

Richiama la funzione Lambda chiamando l'endpoint URL della funzione utilizzando un client HTTP, ad esempio curl o Postman.

curl 'https://abcdefg.lambda-url.us-east-1.on.aws/' \ -H 'Content-Type: application/json' \ -d '{"num1": "10", "num2": "10"}'

Verrà visualizzato l'output seguente:

The product of 10 and 10 is 100

Crea una funzione Lambda con una funzione URL () CloudFormation

Puoi anche creare una funzione Lambda con un endpoint URL della funzione utilizzando il tipo. AWS CloudFormation AWS::Lambda::Url

Resources: MyUrlFunction: Type: AWS::Lambda::Function Properties: Handler: index.handler Runtime: nodejs18.x Role: arn:aws:iam::123456789012:role/lambda-url-role Code: ZipFile: | exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; }; Description: Create a function with a URL. MyUrlFunctionPermissions: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref MyUrlFunction Action: lambda:InvokeFunctionUrl Principal: "*" FunctionUrlAuthType: NONE MyFunctionUrl: Type: AWS::Lambda::Url Properties: TargetFunctionArn: !Ref MyUrlFunction AuthType: NONE

Crea una funzione Lambda con un URL della funzione (AWS SAM)

Puoi anche creare una funzione Lambda configurata con un URL di funzione utilizzando AWS Serverless Application Model ()AWS SAM.

ProductFunction: Type: AWS::Serverless::Function Properties: CodeUri: function/. Handler: index.handler Runtime: nodejs18.x AutoPublishAlias: live FunctionUrlConfig: AuthType: NONE

Pulizia delle risorse

Ora è possibile eliminare le risorse create per questo tutorial, a meno che non si voglia conservarle. Eliminando AWS le risorse che non utilizzi più, eviti addebiti inutili ai tuoi. Account AWS

Come eliminare il ruolo di esecuzione
  1. Aprire la pagina Ruoli della console IAM.

  2. Selezionare il ruolo di esecuzione creato.

  3. Scegliere Elimina.

  4. Inserisci il nome del ruolo nel campo di immissione testo e seleziona Delete (Elimina).

Per eliminare la funzione Lambda
  1. Aprire la pagina Functions (Funzioni) della console Lambda.

  2. Selezionare la funzione creata.

  3. Scegliere Operazioni, Elimina.

  4. Digita delete nel campo di immissione testo e scegli Delete (Elimina).