Creación e implementación mediante AWS CLI

AWS CLIes una herramienta de línea de comandos que ayuda a trabajar con los servicios de AWS. Podemos usarlo para crear, actualizar, eliminar, invocar la función aws lambda. En este capítulo, analizará la instalación y el uso de AWS CLI en detalle.

Instalación de AWS CLI

Esta sección lo guiará a través de la instalación de AWS CLI en varios sistemas operativos. Siga los pasos dados y observe las capturas de pantalla correspondientes dondequiera que estén adjuntas.

Para ventanas

Verifique su configuración de Windows y elija uno de los siguientes enlaces para instalar AWS CLI MSI -

Una vez que elija el enlace correspondiente y haga clic en él, puede encontrar una ventana como se muestra aquí:

A continuación, configure el Environment path in windows como se muestra en las capturas de pantalla a continuación -

Una vez hecho esto, puede usar el siguiente comando en el símbolo del sistema para ver si aws cli está instalado -

aws --version

Muestra los detalles de la versión de aws-cli como se muestra en la siguiente captura de pantalla:

Para Linux / Mac

Para instalar en Linux y Mac, necesita Python 2.6.3 o una versión superior. Luego, use los siguientes comandos para otros procesos de instalación:

$ 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

Ahora, necesitamos configurar los ajustes de AWS. Puede utilizar el siguiente comando para este propósito:

aws configure

Para este propósito, requiere detalles como:

  • ID de clave de acceso de AWS
  • Clave de acceso secreta de AWS
  • Nombre de región predeterminado
  • Salida predeterminada del formato

Puede obtener estos detalles en su consola aws. Vaya a su nombre de cuenta en la esquina superior derecha como se muestra -

Ahora, haga clic en My Security Credentialsy seleccione usuarios del lado izquierdo. Agregue al usuario con los detalles solicitados.

Agregue el usuario y obtenga la clave de acceso y la clave secreta. Para ver la nueva clave de acceso, elijaShow. Sus credenciales se verán como se muestra a continuación:

Access key ID − AOSAIOSFOCDD7Example

Secret access key − aJuirCVtnROUN/K7MDENG/bPxRfiCYExampleKEY

Comandos de referencia para AWS CLIS

La siguiente tabla dará referencias de comandos disponibles para trabajar con aws cli.

Nombre del comando aws cli Referencia de comando
create-function create-function --function-name <valor> --runtime <value> --role <value> --handler <value> [--code <value>] [--description <value>] [--timeout < valor>] [--memory-size <valor>] [--environment <valor>] [--kms-key-arn <valor>] [--tags <valor>] [--zip-file <valor> ] [--cli-input-json <valor>]
list-functions lista-funciones [--master-region <valor>] [--function-version <valor>] [--max-items <valor>] [--cli-input-json <valor>] [--starting- token <valor>] [--page-size <valor>] [--generate-cli-skeleton <valor>]
get-function get-function --nombre-función <valor> [--qualifier <valor>] [--cli-input-json <valor>] [--generate-cli-skeleton <valor>]
get-function-configuration get-function-configuration --nombre-función <valor> [--qualifier <valor>] [--cli-input-json <valor>] [--generate-cli-skeleton <valor>]
get-account-settings get-account-settings [--cli-input-json <valor>] [--generate-cli-skeleton <valor>]
update-function-configuration actualizar-configuración-función --nombre-función <valor> [--role <valor>] [--handler <valor>] [--descripción <valor>] [--tiempo de espera <valor>] [--memoria- tamaño <valor>] [--vpc-config <valor>] [--environment <valor>] [--runtime <valor>] [--dead-letter-config <valor>] [--kms-key- arn <valor>] [--tracing-config <valor>] [--revision-id <valor>] [--cli-input-json <valor>] [--generate-cli-skeleton <valor>]
update-function-code update-function-code --function-name <valor> [--zip-file <valor>] [--s3-bucket <valor>] [--s3-key <valor>] [--s3-object- versión <valor>] [--publish | --no-publicar] [--dry-run | --no-dry-run] [--revision-id <valor>] [- cli-input-json <value>] [- generate-cli-skeleton <valor>]
delete-function eliminar-función --nombre-función <valor> [--qualifier <valor>] [--cli-input-json <valor>] [--generate-cli-skeleton <valor>]

Ahora, analicemos estos comandos uno por uno en detalle.

función de creación

Esta api creará una nueva función lambda. El código debe presentarse en formato zip. Si la función que se va a crear ya existe, la API fallará. Tenga en cuenta que el nombre de la función distingue entre mayúsculas y minúsculas.

Comandos incluidos

La lista de comandos que puede usar con create-function se proporciona aquí:

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>]

Opciones incluidas

Varias opciones que puede utilizar con las funciones anteriores son las siguientes:

--function-name (string)- Toma el nombre de la función. El nombre puede tener caracteres de 64 bits.

--runtime(string)- Aquí debe especificar el entorno de ejecución, es decir, la selección de idioma. Los detalles del tiempo de ejecución son los que se indican a continuación:

Opciones disponibles tiempo de ejecución
Python v3.6 python3.6
Python v2.7 python2.7
NodeJS v6.10 nodejs6.10
NodeJS v8.10 nodejs8.10
Java java8
C # 1 dotnetcore1.0
C # 2 dotnetcore2.0
Vamos go1.x

--role(string)- Este será el nombre de la política lambda, es decir, el rol que se le dará a la función lambda para acceder a otros servicios. Tendrá el permiso según el rol especificado.

--handler (string) - Este es el nombre del controlador donde comenzará la ejecución del código lambda.

  • Para nodejs, el nombre del controlador es el nombre del módulo que exportamos.
  • Para java, es package.classname :: handler o package.classname
  • Para Python, el controlador es el nombre del archivo.

--code (structure) −Código Lambda AWS

--description (string) - descripción de la función AWS Lambda

--timeout (integer)- timeout tendrá el tiempo en el que la función lambda tiene que terminar la ejecución. El valor predeterminado es 3 segundos.

--memory-size (integer)- Esta es la memoria que se le da a la función lambda aws. AWS asignará la cantidad de CPU y la asignación de memoria en función de la memoria proporcionada.

--environment (structure) - es un objeto con detalles de entorno requeridos en la función lambda de AWS.

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

--kms-key-arn (string): Este es el nombre de recurso de Amazon (ARN) que se utiliza para cifrar las variables de entorno. Si no se proporciona, se necesitará la configuración predeterminada para cifrar.

--zip-file (blob) - ruta del archivo zip que tiene los detalles del código.

--cli-input-json (string): Realiza la operación del servicio según la cadena JSON proporcionada. La cadena JSON sigue el formato proporcionado por --generate-cli-skeleton. Si se proporcionan otros argumentos en la línea de comando, los valores de CLI anularán los valores proporcionados por JSON.

Ahora, creemos una función AWS Lambda simple usando el tiempo de ejecución como nodej y agreguemos algunos console.logs para imprimir.

Considere un código de muestra para comprender lo mismo:

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

Ahora, comprima el archivo y guárdelo como awscli.zip.

Obteniendo ARN

Para el papel, usemos el arndel rol existente que hemos creado. Para obtener el ARN, deberá seguir los pasos que se muestran aquí. Observe las capturas de pantalla respectivas siempre que se adjunten:

Paso 1

Vaya a IAM y seleccione la función que desee. Roles. Los detalles del ARN para el rol se muestran como se muestra a continuación. UtilizarRole ARN con create-function en aws cli.

Observe aquí que el rol arn es: arn: aws: iam :: 625297745038: role / lambdaapipolicy

El comando con valores para create-function es como sigue -

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"

Ahora, si ejecuta el comando en aws cli, puede encontrar un resultado como se muestra a continuación:

En la consola de AWS, la función Lambda se muestra como se muestra a continuación:

Los detalles de las funciones se muestran aquí:

Los detalles de la configuración son los que se indican a continuación:

Puede probar la función y verificar la salida como se muestra:

La salida de registro correspondiente se muestra aquí:

funciones de lista

Esta API proporciona la lista de funciones creadas hasta ahora en AWS Lambda.

Comandos incluidos

Los siguientes son los comandos asociados con esta API:

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

Opciones en funciones de lista

Las siguientes son varias opciones que puede usar en esta API de funciones de lista:

--master-region(string)- opcional. La región desde la que se deben mostrar las funciones.

--function-version(string)- opcional. Esto le dará la versión de la función.

--max-items(integer)- opcional. Esto le dará los elementos según el valor especificado.

--cli-input-json(string)- opcional. Realizará la operación basada en el archivo json proporcionado.

El comando con valores list-functions es como sigue -

aws lambda list-functions --max-items 3

El comando muestra los detalles de la siguiente manera:

get-function

Esta API dará detalles de las funciones y también un enlace URL que tiene un archivo zip cargado usando la función create. La URL con los detalles del zip será válida solo durante 10 minutos.

Comandos incluidos

Los siguientes son los comandos asociados con esta API:

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

Opciones incluidas

--function-name- Nombre de la función AWS Lambda. También puede especificar el nombre de recurso de Amazon de la función.

--qualifier(string)- Opcional. La versión de la función se puede utilizar para obtener los detalles de la función.

El comando con valores para obtener la función son:

aws lambda get-function --function-name awslambdausingcli

Los detalles de la pantalla de comandos son los siguientes:

Da la URL que tiene el código postal cargado. En el caso anterior, la URL es:

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

Esto proporcionará los detalles de configuración de la función AWS Lambda.

Los siguientes son los comandos utilizados junto con esta api:

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

The following are the options used with

--function-name (string) −nombre de la función lambda aws. También puede especificar el nombre de recurso de Amazon de la función.

--qualifier(string) − Opcional La versión de la función se puede utilizar para obtener los detalles de la función.

El comando con valores para obtener la función son:

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

El comando muestra los detalles de la siguiente manera:

get-account-settings

Esta API proporciona la configuración de las cuentas.

Comandos involucrados

El comando que puede usar con esta api es:

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

Opciones involucradas

Puede usar las siguientes opciones con esta api:

--cli-input-json(string) − Realiza el servicio en función de la cadena json proporcionada.

--generate-cli-skeleton(string) − Imprime la salida json sin enviar la solicitud de API.

Puede usar el siguiente comando para get-account-settings -

aws lambda get-account-settings

Puede ver el siguiente resultado cuando ejecuta el comando dado anteriormente:

configuración-función-actualización

Esta API ayuda a actualizar los detalles de configuración de la función AWS Lambda creada. Puede cambiar la memoria, el tiempo de espera, el controlador, el rol, el tiempo de ejecución, la descripción, etc.

Comandos involucrados

Los siguientes son los comandos involucrados en la API de configuración de función de actualización:

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>]

Opciones involucradas

Las siguientes son las opciones involucradas en la API de configuración de función de actualización:

--function-name − nombre de la función lambda aws

--role (string) −Opcional. Es necesario actualizar el ARN del rol.

--handler (string) −Opcional. Los detalles del controlador de la función lambda aws.

--description(string) −Opcional. Descripción de la función.

--timeout(integer) −Opcional. Tiempo necesario para que la función aws lambda pueda finalizar.

--memory-size(integer) −Opcional. Esta es la memoria dada a la función lambda aws. AWS asignará la cantidad de CPU y la asignación de memoria en función de la memoria proporcionada.

--environment (structure) −Opcional. Es un objeto con detalles de entorno requeridos en la función lambda de aws.

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

--runtime(string) − Aquí debe especificar el entorno de ejecución, es decir, la selección de idioma.

Los detalles del tiempo de ejecución se muestran en la tabla siguiente:

Opciones disponibles tiempo de ejecución
Python v3.6 python3.6
Python v2.7 python2.7
NodeJS v6.10 nodejs6.10
NodeJS v8.10 nodejs8.10
Java java8
C # 1 dotnetcore1.0
C # 2 dotnetcore2.0
Vamos go1.x

--cli-input-json (string) −Opcional. Esto realizará la operación en la API como se especifica en la cadena json proporcionada.

--generate-cli-skeleton (string) −Opcional. Esto generará el esqueleto JSON de todos los detalles sin ejecutar la API. La salida se puede utilizar como entrada para--cli-input-json.

Ahora, cambiemos la memoria y el tiempo de espera de la función AWS Lambda que hemos creado anteriormente. Siga los pasos que se indican a continuación y observe las capturas de pantalla correspondientes adjuntas para este propósito:

Paso 1

La memoria y el tiempo de espera antes de que ocurriera el cambio son los siguientes:

Paso 2

Ahora con update-function-configuration, cambiemos la memoria y el tiempo de espera a 320 MB y el tiempo de espera a 10 segundos. Para este propósito, use el siguiente comando con valores:

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

Paso 3

Entonces puede ver la siguiente salida como pantalla:

Paso 4

La pantalla en la consola de AWS después de usar update-function-configuration es como sigue -

Código de función de actualización

Esta API actualizará el código de una función de AWS Lambda existente.

Comandos involucrados

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>]

Opciones involucradas

Las siguientes son las opciones involucradas con la api update-function-code:

--function-name(string) − nombre de la función lambda aws

--zip-file (blob) −Opcional. Ruta del archivo zip que tiene el código a actualizar.

--s3-bucket(string) −Opcional. Nombre del depósito de S3 que tiene el archivo zip con el código cargado.

--s3-key(string) −Opcional. Nombre de clave de objeto de AWS s3 que se debe cargar.

--s3-object-version (string) −Opcional. Versión del objeto AWS s3.

--cli-input-json (string) −Opcional. Esto realizará la operación en la API como se especifica en la cadena json proporcionada.

--generate-cli-skeleton (string) −Opcional. Esto generará el esqueleto JSON de todos los detalles sin ejecutar la API. La salida se puede usar como entrada para --cli-input-json.

El código actualizado es como se muestra a continuación:

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

Puede utilizar lo siguiente command with values for this purpose -

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

La salida correspondiente es como se muestra aquí:

La pantalla de la consola de AWS es como se muestra aquí:

La salida de registro correspondiente es la que se muestra a continuación:

función de eliminación

los delete aws cli api eliminará la función dada.

Comandos incluidos

Los detalles del comando para el mismo se dan aquí:

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

Opciones incluidas

Las opciones incluidas en esta API son las siguientes:

--function-name(string) − esto tomará el nombre de la función lambda o el arn de la función lambda aws.

--qualifier (string) −Esto es opcional. Aquí puede especificar la versión de aws lambda que debe eliminarse.

-- cli-input-json(string) −Realiza la operación del servicio según la cadena JSON proporcionada. La cadena JSON sigue el formato proporcionado por --generate-cli-skeleton. Si se proporcionan otros argumentos en la línea de comando, los valores de CLI anularán los valores proporcionados por JSON.

--generate-cli-skeleton(string) − imprime el esqueleto json en la salida estándar sin enviar la solicitud de API.

Puede usar el siguiente comando con valores para este propósito:

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

Ahora, observe que la función no se verá en la lista de funciones de AWS Lambda: