Creazione e distribuzione utilizzando AWS CLI

AWS CLIè uno strumento a riga di comando che aiuta a lavorare con i servizi AWS. Possiamo usarlo per creare, aggiornare, eliminare, invocare la funzione lambda aws. In questo capitolo, parlerai in dettaglio dell'installazione e dell'utilizzo di AWS CLI.

Installazione di AWS CLI

Questa sezione ti guiderà attraverso l'installazione di AWS CLI su vari sistemi operativi. Segui i passaggi indicati e osserva gli screenshot corrispondenti ovunque allegati.

Per Windows

Controlla la configurazione di Windows e scegli uno dei seguenti collegamenti per l'installazione di AWS CLI MSI:

Una volta scelto il collegamento corrispondente e fatto clic su di esso, è possibile trovare una finestra come mostrato qui -

Quindi, imposta il file Environment path in windows come mostrato negli screenshot qui sotto -

Una volta terminato, è possibile utilizzare il seguente comando sul prompt dei comandi, per vedere se aws cli è installato -

aws --version

Visualizza i dettagli della versione di aws-cli come mostrato nella seguente schermata:

Per Linux / Mac

Per l'installazione su Linux e Mac, è necessario Python 2.6.3 o versione successiva. Quindi, utilizzare i seguenti comandi per ulteriori processi di installazione:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

Ora dobbiamo configurare le impostazioni di AWS. È possibile utilizzare il seguente comando per questo scopo:

aws configure

A tal fine, richiede dettagli come:

  • ID chiave di accesso AWS
  • Chiave di accesso segreta AWS
  • Nome della regione predefinito
  • Output predefinito dal formato

Puoi ottenere questi dettagli dalla tua console aws. Vai al nome del tuo account nell'angolo in alto a destra come mostrato -

Ora fai clic su My Security Credentialse seleziona gli utenti dal lato sinistro. Aggiungi utente con i dettagli come richiesto.

Aggiungi l'utente e per ottenere la chiave di accesso e la chiave segreta. Per vedere la nuova chiave di accesso, scegliShow. Le tue credenziali appariranno come mostrato di seguito:

Access key ID − AOSAIOSFOCDD7Example

Secret access key − aJuirCVtnROUN/K7MDENG/bPxRfiCYExampleKEY

Comandi di riferimento per AWS CLIS

La tabella seguente fornirà i riferimenti ai comandi disponibili con cui lavorare aws cli.

Nome del comando aws cli Riferimento ai comandi
create-function create-function --function-name <value> --runtime <value> --role <value> --handler <value> [--code <value>] [--description <value>] [--timeout < valore>] [--memory-size <valore>] [--environment <value>] [--kms-key-arn <value>] [--tags <value>] [--zip-file <value> ] [--cli-input-json <valore>]
list-functions list-functions [--master-region <value>] [--function-version <value>] [--max-items <value>] [--cli-input-json <value>] [--starting- token <valore>] [--page-size <valore>] [--generate-cli-skeleton <valore>]
get-function get-function --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]
get-function-configuration get-function-configuration --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]
get-account-settings get-account-settings [--cli-input-json <valore>] [--generate-cli-skeleton <valore>]
update-function-configuration update-function-configuration --function-name <value> [--role <value>] [--handler <value>] [--description <value>] [--timeout <value>] [--memory- size <value>] [--vpc-config <value>] [--environment <value>] [--runtime <value>] [--dead-letter-config <value>] [--kms-key- arn <value>] [--tracing-config <value>] [--revision-id <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]
update-function-code codice-funzione-aggiornamento - nome-funzione <valore> [--zip-file <valore>] [--s3-bucket <valore>] [--s3-key <valore>] [--s3-oggetto- versione <valore>] [--publish | --no-publish] [--dry-run | --no-dry-run] [--revision-id <valore>] [- cli-input-json <valore>] [- generate-cli-skeleton <valore>]
delete-function funzione-cancellazione - nome-funzione <valore> [--qualifier <valore>] [--cli-input-json <valore>] [--generate-cli-skeleton <valore>]

Ora, discutiamo questi comandi uno per uno in dettaglio.

funzione di creazione

Questa API creerà una nuova funzione lambda. Il codice deve essere fornito in formato zip. Se la funzione da creare esiste già, l'api fallirà. Notare che il nome della funzione fa distinzione tra maiuscole e minuscole.

Comandi inclusi

L'elenco dei comandi che puoi usare con create-function è fornito qui:

create-function 
--function-name <value>
--runtime <value>
--role <value>
--handler <value>
[--code <value>] 
[--description <value>] 
[--timeout <value>] 
[--memory-size <value>] 
[--environment <value>] 
[--kms-key-arn <value>] 
[--tags <value>] 
[--zip-file <value>] 
[--cli-input-json <value>]

Opzioni incluse

Le varie opzioni che è possibile utilizzare con le funzioni di cui sopra sono le seguenti:

--function-name (string)- Questo prende il nome della funzione. Il nome può contenere caratteri a 64 bit.

--runtime(string)- Qui è necessario specificare l'ambiente di runtime, ovvero la selezione della lingua. I dettagli del runtime sono indicati di seguito:

Opzioni disponibili runtime
Python v3.6 python3.6
Python v2.7 python2.7
NodeJS v6.10 nodejs6.10
NodeJS v8.10 nodejs8.10
Giava java8
C # 1 dotnetcore1.0
C # 2 dotnetcore2.0
Partire go1.x

--role(string)- Questo sarà il nome della lambda policy ovvero il ruolo da attribuire alla funzione lambda per l'accesso ad altri servizi. Avrà l'autorizzazione secondo il ruolo specificato.

--handler (string) - Questo è il nome del gestore da cui inizierà l'esecuzione del codice lambda.

  • Per nodejs, il nome del gestore è il nome del modulo che esportiamo.
  • Per java, è package.classname :: handler o package.classname
  • Per python, il gestore è il nome del file.

--code (structure) −Codice Lambda AWS

--description (string) - descrizione per la funzione AWS Lambda

--timeout (integer)- timeout avrà il momento in cui la funzione lambda deve terminare l'esecuzione. L'impostazione predefinita è 3s.

--memory-size (integer)- Questa è la memoria data alla funzione aws lambda. AWS allocherà la quantità di CPU e allocazione di memoria in base alla memoria fornita.

--environment (structure) - è un oggetto con i dettagli dell'ambiente richiesti nella funzione lambda aws.

e.g : Variables = {Name1 = string, Name2 = string}

--kms-key-arn (string)- questo è il nome della risorsa Amazon (ARN) utilizzato per crittografare le variabili di ambiente. Se non fornito, verranno utilizzate le impostazioni predefinite per la crittografia.

--zip-file (blob) - percorso del file zip che contiene i dettagli del codice.

--cli-input-json (string): Esegue l'operazione di servizio in base alla stringa JSON fornita. La stringa JSON segue il formato fornito da --generate-cli-skeleton. Se vengono forniti altri argomenti sulla riga di comando, i valori CLI sovrascriveranno i valori forniti da JSON.

Ora, creiamo una semplice funzione AWS Lambda utilizzando il runtime come nodejs e aggiungiamo alcuni console.log da stampare.

Considera un codice di esempio per capire lo stesso -

exports.handler = async (event) => {
   console.log("Using aws cli");
   return 'Hello from Lambda from aws cli!'
};

Ora, comprimi il file e memorizzalo come awscli.zip.

Ottenere ARN

Per il ruolo, usiamo il arndal ruolo esistente che abbiamo creato. Per ottenere l'ARN, dovrai seguire i passaggi come mostrato qui. Osserva i rispettivi screenshot ovunque allegati -

Passo 1

Vai a IAM e seleziona il ruolo da cui desideri Roles. I dettagli ARN per il ruolo vengono visualizzati come mostrato di seguito. UsoRole ARN con create-function in aws cli.

Osserva qui che il ruolo arn è: arn: aws: iam :: 625297745038: role / lambdaapipolicy

Il comando con valori per create-function è il seguente -

aws lambda create-function 
--function-name "awslambdausingcli" 
--runtime "nodejs8.10" 
--role "arn:aws:iam::625297745038:role/lambdaapipolicy" 
--handler "awscli.handler" 
--timeout 5 
--memory-size 256 
--zip-file "fileb://awscli.zip"

Ora, se esegui il comando in aws cli, puoi trovare un output come mostrato di seguito:

Nella console AWS, la funzione Lambda viene visualizzata come mostrato di seguito:

I dettagli delle funzioni sono come mostrato qui -

I dettagli della configurazione sono i seguenti:

È possibile testare la funzione e controllare l'output come mostrato -

L'output del registro corrispondente è mostrato qui -

funzioni-lista

Questa API fornisce l'elenco delle funzioni create finora in AWS Lambda.

Comandi inclusi

I seguenti sono i comandi associati a questa API:

list-functions
[--master-region <value>]
[--function-version <value>]
[--max-items <value>]
[--cli-input-json <value>]

Opzioni sotto funzioni elenco

Le seguenti sono varie opzioni che puoi usare in questa API di funzioni elenco:

--master-region(string)- facoltativo. La regione da cui devono essere visualizzate le funzioni.

--function-version(string)- facoltativo. Questo darà la versione della funzione.

--max-items(integer)- facoltativo. Questo darà gli articoli come per il valore specificato.

--cli-input-json(string)- opzionale. Eseguirà l'operazione in base al file json fornito.

Il comando con i valori list-functions è il seguente -

aws lambda list-functions --max-items 3

Il comando visualizza i dettagli come segue:

get-function

Questa API fornirà i dettagli delle funzioni e anche un collegamento URL che ha il file zip caricato utilizzando create-function. L'URL con i dettagli dello zip sarà valido solo per 10 minuti.

Comandi inclusi

Di seguito sono riportati i comandi associati a questa API:

get-function
--function-name <value>
[--qualifier <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

Opzioni incluse

--function-name- Nome della funzione AWS Lambda. Puoi anche specificare Amazon Resource Name della funzione.

--qualifier(string)- Facoltativo. La versione della funzione può essere utilizzata per ottenere i dettagli della funzione.

Il comando con i valori per get-function sono -

aws lambda get-function --function-name awslambdausingcli

I dettagli di visualizzazione dei comandi sono i seguenti:

Fornisce l'URL con il codice postale caricato. Nel caso precedente l'URL è:

https://prod-04-2014-
tasks.s3.amazonaws.com/snapshots/625297745038/awslambdausingcli-97048f8d-4a08
-4ed9-99d9-acb00d2063d2?versionId=d04HKvPu9S2zz8pzjbW6Rmf5o5fxnc_r&X-Amz-Security
-Token=FQoDYXdzEKT%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDCpTmGvtwKToPBiWcyK3A96UcJEnwvYDhMbbxu
%2Bg2gffK2ocfnlEeiCHak8QqqE1RFpbKrdks9NzxP9gNbagL4M9RValxJ1a9PUY%2FOdAekscRHOiX00MVAxUlI8
2pKryhdOwLJWSj0uRzqvOxCcBwJenHrSNPeG6lMa2ZDo0qZFEUDONSaTg4nuSnJK1f6t3pMAKu4vF9wPvf92G%2BU
60rUxwleggigISmD9l1IlZse3%2BVF1JlNuN%2F5d85v0y2Q%2F%2BO515CybcZpn91sHPYG8JMJ00LsrkQ2Ww4VU
9Zz5c5QYH4JYPj0CyEgSz9b%2FMceMPpOoPUAMjctb%2FEwQqcShZeqAr9%2Fcd2ZI%2BXl2%2Bs4ri0ucgPvQQvs
eGIIiZbX3GqdwR2jb1nylrAEIfiuFMoSWfcFYoYtuL0MZnjGR9jy2GNkp6MB%2BlHHr7%2BnuFRUzU26rgDYmdE1w
Rb3%2B21Jm49WGDa9opRLvUxFaux57Or70haib2FuKzN6Gf3Vzzk5KPdWsYUpaLyf%2B1ovEytOZhB1JEXuCs%2FG
IlOXS88yxT%2BpOKmyxweiezpGgI%2FAkSAQTbSRsYQKIOFyIJNHzplwrJKhy28vy60numIBIo9Zqq2AU%3D
&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20180527T112426Z&X-Amz-
SignedHeaders=host&X-Amz-Expires=600&X-Amz-
Credential=ASIAICSQHLSBWFP37U4Q%2F20180527%2Fus-
east-1%2Fs3%2Faws4_request&X-Amz-Signature=
8b97e7d6d7da13313068e027894d2c875be5e50a0c5a62550f55307985bdc1aa

get-function-configuration

Ciò fornirà i dettagli di configurazione della funzione AWS Lambda.

Di seguito sono riportati i comandi utilizzati insieme a questa API:

get-function-configuration
--function-name <value>
[--qualifier <value>]

The following are the options used with

--function-name (string) −nome della funzione lambda aws. Puoi anche specificare Amazon Resource Name della funzione.

--qualifier(string) − Opzionale La versione della funzione può essere utilizzata per ottenere i dettagli della funzione.

Il comando con i valori per get-function sono -

aws lambda get-function-configuration --function-name awslambdausingcli

Il comando visualizza i dettagli come segue:

get-account-settings

Questa API fornisce le impostazioni degli account.

Comandi coinvolti

I comandi che puoi usare con questa API sono:

get-account-settings
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

Opzioni coinvolte

È possibile utilizzare le seguenti opzioni con questa API:

--cli-input-json(string) − Esegue il servizio in base alla stringa json fornita.

--generate-cli-skeleton(string) − Stampa l'output json senza inviare la richiesta API.

È possibile utilizzare il seguente comando per get-account-settings -

aws lambda get-account-settings

Puoi vedere il seguente output quando esegui il comando dato sopra -

aggiornamento-funzione-configurazione

Questa API aiuta ad aggiornare i dettagli di configurazione per la funzione AWS Lambda creata. È possibile modificare la memoria, il timeout, il gestore, il ruolo, il runtime, la descrizione ecc.

Comandi coinvolti

Di seguito sono riportati i comandi coinvolti nell'api di configurazione della funzione di aggiornamento:

update-function-configuration
--function-name <value>
[--role <value>]
[--handler <value>]
[--description <value>]
[--timeout <value>]
[--memory-size <value>]
[--environment <value>]
[--runtime <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

Opzioni coinvolte

Le seguenti sono le opzioni coinvolte nell'API di configurazione della funzione di aggiornamento:

--function-name − nome della funzione lambda aws

--role (string) −opzionale. È necessario aggiornare l'ARN del ruolo.

--handler (string) −opzionale. I dettagli del gestore della funzione lambda aws.

--description(string) −opzionale. Descrizione della funzione.

--timeout(integer) −opzionale. Tempo necessario affinché la funzione aws lambda possa terminare.

--memory-size(integer) −opzionale. Questa è la memoria data alla funzione aws lambda. AWS allocherà la quantità di CPU e allocazione di memoria in base alla memoria fornita.

--environment (structure) −opzionale. È un oggetto con i dettagli dell'ambiente richiesti nella funzione lambda aws.

e.g: Variables = {Name1 = string, Name2 = string}

--runtime(string) − Qui è necessario specificare l'ambiente di runtime, ovvero la selezione della lingua.

I dettagli del runtime sono mostrati nella tabella sotto riportata -

Opzioni disponibili runtime
Python v3.6 python3.6
Python v2.7 python2.7
NodeJS v6.10 nodejs6.10
NodeJS v8.10 nodejs8.10
Giava java8
C # 1 dotnetcore1.0
C # 2 dotnetcore2.0
Partire go1.x

--cli-input-json (string) −opzionale. Questo eseguirà l'operazione sull'API come specificato nella stringa json fornita.

--generate-cli-skeleton (string) −opzionale. Questo produrrà lo scheletro JSON di tutti i dettagli senza eseguire l'API. L'output può essere utilizzato come input per--cli-input-json.

Ora, cambiamo la memoria e il timeout della funzione AWS Lambda che abbiamo creato in precedenza. Segui i passaggi indicati di seguito e osserva gli screenshot corrispondenti allegati a questo scopo:

Passo 1

La memoria e il timeout prima che si verifichi la modifica sono i seguenti:

Passo 2

Ora, con update-function-configuration, cambiamo la memoria e il timeout a 320 MB e il timeout a 10 s. A tale scopo, utilizzare il seguente comando con i valori:

aws lambda update-function-configuration --function-name “awslambdusingcli” 
--timeout 10 --memory-size 320

Passaggio 3

Quindi puoi vedere il seguente output come display:

Passaggio 4

La visualizzazione nella console AWS dopo l'utilizzo update-function-configuration è il seguente -

Aggiorna codice funzione

Questa API aggiornerà il codice per una funzione AWS Lambda esistente.

Comandi coinvolti

update-function-code
--function-name <value>
[--zip-file <value>]
[--s3-bucket <value>]
[--s3-key <value>]
[--s3-object-version <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

Opzioni coinvolte

Le seguenti sono le opzioni coinvolte con l'API del codice funzione di aggiornamento:

--function-name(string) − nome della funzione lambda aws

--zip-file (blob) −opzionale. Percorso del file zip che ha il codice da aggiornare.

--s3-bucket(string) −opzionale. Nome del bucket S3 in cui è caricato il file zip con il codice.

--s3-key(string) −opzionale. Nome della chiave dell'oggetto AWS s3 che deve essere caricato.

--s3-object-version (string) −opzionale. Versione oggetto AWS s3.

--cli-input-json (string) −opzionale. Questo eseguirà l'operazione sull'API come specificato nella stringa json fornita.

--generate-cli-skeleton (string) −opzionale. Questo produrrà lo scheletro JSON di tutti i dettagli senza eseguire l'API. L'output può essere utilizzato come input per --cli-input-json.

Il codice aggiornato è come mostrato di seguito:

exports.handler = async (event, context) => {
   console.log("Using aws cli");
   console.log()
   return 'Hello from Lambda from aws cli!'
};

Puoi usare quanto segue command with values for this purpose -

aws lambda update-function-code --function-name "awslambdausingcli" 
--zip-file "fileb://awscli.zip"

L'output corrispondente è come mostrato qui -

Il display dalla console AWS è come mostrato qui:

L'output del registro corrispondente è come mostrato di seguito:

funzione di cancellazione

Il delete aws cli api eliminerà la funzione data.

Comandi inclusi

I dettagli del comando per lo stesso sono forniti qui -

delete-function
--function-name <value>
[--qualifier <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

Opzioni incluse

Le opzioni incluse in questa API sono le seguenti:

--function-name(string) − questo prenderà il nome della funzione lambda o l'arn della funzione lambda aws.

--qualifier (string) −Questo è opzionale. Qui puoi specificare la versione di aws lambda che deve essere eliminata.

-- cli-input-json(string) −Esegue l'operazione di servizio in base alla stringa JSON fornita. La stringa JSON segue il formato fornito da --generate-cli-skeleton. Se vengono forniti altri argomenti sulla riga di comando, i valori CLI sovrascriveranno i valori forniti da JSON.

--generate-cli-skeleton(string) − stampa lo scheletro json sull'output standard senza inviare la richiesta API.

È possibile utilizzare il seguente comando con i valori per questo scopo:

aws lambda delete-function --function-name "lambdatestcli"

Ora, osserva che la funzione non verrà visualizzata nell'elenco delle funzioni AWS Lambda -