Criação e implantação usando AWS CLI

AWS CLIé uma ferramenta de linha de comando que ajuda a trabalhar com os serviços da AWS. Podemos usá-lo para criar, atualizar, excluir, invocar a função lambda aws. Neste capítulo, você discutirá sobre a instalação e o uso do AWS CLI em detalhes.

Instalação do AWS CLI

Esta seção o guiará pela instalação do AWS CLI em vários sistemas operacionais. Siga as etapas fornecidas e observe as capturas de tela correspondentes sempre que estiverem anexadas.

Para Windows

Verifique a configuração do Windows e escolha um dos seguintes links para instalar o AWS CLI MSI -

Depois de escolher o link correspondente e clicar nele, você pode encontrar uma janela conforme mostrado aqui -

Em seguida, defina o Environment path in windows como mostrado nas imagens abaixo -

Uma vez feito isso, você pode usar o seguinte comando no prompt de comando, para ver se aws cli está instalado -

aws --version

Ele exibe os detalhes da versão do aws-cli, conforme mostrado na imagem a seguir -

Para Linux / Mac

Para instalar no Linux e Mac, você precisa do Python 2.6.3 ou versão superior. Em seguida, use os seguintes comandos para outros processos de instalação -

$ 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

Agora, precisamos definir as configurações da AWS. Você pode usar o seguinte comando para esta finalidade -

aws configure

Para este efeito, requer detalhes como -

  • AWS Access Key ID
  • Chave de acesso secreta da AWS
  • Nome da região padrão
  • Saída padrão do formato

Você pode obter esses detalhes no console do aws. Vá para o seu nome de conta no canto superior direito, conforme mostrado -

Agora clique My Security Credentialse selecione os usuários do lado esquerdo. Adicione o usuário com os detalhes solicitados.

Adicione o usuário e para obter a chave de acesso e a chave secreta. Para ver a nova chave de acesso, escolhaShow. Suas credenciais serão semelhantes às mostradas abaixo -

Access key ID − AOSAIOSFOCDD7Example

Secret access key − aJuirCVtnROUN/K7MDENG/bPxRfiCYExampleKEY

Comandos de referência para AWS CLIS

A tabela a seguir fornecerá referências de comando disponíveis para trabalhar com aws cli.

Nome do comando aws cli Referência de comando
create-function função de criação - nome da função <valor> - tempo de execução <valor> --role <valor> --handler <valor> [--code <valor>] [--descrição <valor>] [--timeout < valor>] [--memory-size <valor>] [--environment <value>] [--kms-key-arn <value>] [--tags <value>] [--zip-file <value> ] [--cli-input-json <valor>]
list-functions list-functions [--master-region <value>] [--function-version <value>] [--max-items <value>] [--cli-input-json <value>] [--starting- token <valor>] [--page-size <value>] [--generate-cli-skeleton <value>]
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 <value>] [--generate-cli-skeleton <value>]
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 update-function-code --function-name <value> [--zip-file <value>] [--s3-bucket <value>] [--s3-key <value>] [--s3-object- versão <valor>] [--publish | --no-publish] [--dry-run | --no-dry-run] [--revision-id <valor>] [- cli-input-json <value>] [- generate-cli-skeleton <value>]
delete-function delete-function --function-name <value> [--qualifier <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>]

Agora, vamos discutir esses comandos um por um em detalhes.

função de criação

Esta api criará uma nova função lambda. O código deve ser fornecido em formato zip. Se a função a ser criada já existe, a API falhará. Observe que o nome da função diferencia maiúsculas de minúsculas.

Comandos Incluídos

A lista de comandos que você pode usar com a função de criação é fornecida aqui -

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

Opções Incluídas

Várias opções que você pode usar com as funções acima são as seguintes -

--function-name (string)- Isso leva o nome da função. O nome pode ter caracteres de 64 bits.

--runtime(string)- Aqui você precisa especificar o ambiente de execução, ou seja, a seleção do idioma. Os detalhes do tempo de execução são fornecidos abaixo -

Opções disponíveis tempo de execução
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
Vai go1.x

--role(string)- Este será o nome da política lambda, ou seja, a função a ser atribuída à função lambda para acessar outros serviços. Ele terá a permissão de acordo com a função especificada.

--handler (string) - Este é o nome do manipulador onde a execução do código lambda começará.

  • Para nodejs, o nome do manipulador é o nome do módulo que exportamos.
  • Para java, é package.classname :: handler ou package.classname
  • Para python, handler é nameofthefile.

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

--description (string) - descrição da função AWS Lambda

--timeout (integer)- timeout terá o tempo em que a função lambda deve terminar a execução. O padrão é 3s.

--memory-size (integer)- Esta é a memória atribuída à função lambda de aws. A AWS alocará a quantidade de CPU e alocação de memória com base na memória fornecida.

--environment (structure) - é um objeto com detalhes de ambiente exigidos na função aws lambda.

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

--kms-key-arn (string)- este é o nome de recurso amazon (ARN) usado para criptografar as variáveis ​​de ambiente. Se não for fornecido, serão usadas as configurações padrão para criptografar.

--zip-file (blob) - caminho do arquivo zip que contém os detalhes do código.

--cli-input-json (string): Executa a operação do serviço com base na string JSON fornecida. A string JSON segue o formato fornecido por --generate-cli-skeleton. Se outros argumentos forem fornecidos na linha de comando, os valores CLI substituirão os valores fornecidos por JSON.

Agora, vamos criar uma função simples do AWS Lambda usando o tempo de execução como nodejs e adicionar alguns console.logs a serem impressos.

Considere um código de amostra para entender o mesmo -

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

Agora, compacte o arquivo e armazene-o como awscli.zip.

Obtendo ARN

Para a função, vamos usar o arnda função existente que criamos. Para obter o ARN, você terá que seguir as etapas mostradas aqui. Observe as respectivas capturas de tela sempre que estiverem anexadas -

Passo 1

Vá para IAM e selecione a função que deseja Roles. Os detalhes do ARN para a função são exibidos conforme mostrado abaixo. UsarRole ARN com create-function no aws cli.

Observe aqui que a função arn é: arn: aws: iam :: 625297745038: role / lambdaapipolicy

O comando com valores para create-function é o seguinte -

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"

Agora, se você executar o comando no aws cli, poderá encontrar uma saída conforme mostrado abaixo -

No console AWS, a função Lambda é exibida conforme mostrado abaixo -

Os detalhes das funções são mostrados aqui -

Os detalhes da configuração são fornecidos abaixo -

Você pode testar a função e verificar a saída conforme mostrado -

A saída de log correspondente é mostrada aqui -

funções de lista

Esta API fornece a lista de funções criadas até agora no AWS Lambda.

Comandos Incluídos

A seguir estão os comandos associados a esta API -

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

Opções nas funções de lista

A seguir estão várias opções que você pode usar nesta lista de funções api -

--master-region(string)- opcional. A região da qual as funções precisam ser exibidas.

--function-version(string)- opcional. Isso fornecerá a versão da função.

--max-items(integer)- opcional. Isso dará os itens de acordo com o valor especificado.

--cli-input-json(string)- opcional. Executará a operação com base no arquivo json fornecido.

O comando com valores list-functions é o seguinte -

aws lambda list-functions --max-items 3

O comando exibe os detalhes da seguinte forma -

get-function

Esta API fornecerá detalhes das funções e também um link de url que contém o arquivo zip carregado usando a função de criação. O url com os detalhes do CEP será válido apenas por 10 minutos.

Comandos Incluídos

A seguir estão os comandos associados a esta api -

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

Opções Incluídas

--function-name- Nome da função AWS Lambda. Você também pode especificar o nome do recurso Amazon da função.

--qualifier(string)- Opcional. A versão da função pode ser usada para obter os detalhes da função.

O comando com valores para get-function são -

aws lambda get-function --function-name awslambdausingcli

Os detalhes de exibição do comando são os seguintes -

Ele fornece o url com o código postal carregado. No caso acima, o 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

Isso fornecerá os detalhes de configuração da função AWS Lambda.

A seguir estão os comandos usados ​​junto com esta api -

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

The following are the options used with

--function-name (string) −nome da função lambda do aws. Você também pode especificar o nome do recurso Amazon da função.

--qualifier(string) − A versão opcional.Função pode ser usada para obter os detalhes da função.

O comando com valores para get-function são -

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

O comando exibe os detalhes da seguinte forma -

get-account-settings

Esta api fornece as configurações de contas.

Comandos Envolvidos

Os comandos que você pode usar com esta API são -

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

Opções Envolvidas

Você pode usar as seguintes opções com esta API -

--cli-input-json(string) − Executa o serviço com base na string json fornecida.

--generate-cli-skeleton(string) − Ele imprime a saída json sem enviar a solicitação de API.

Você pode usar o seguinte comando para get-account-settings -

aws lambda get-account-settings

Você pode ver a seguinte saída ao executar o comando fornecido acima -

update-function-configuration

Esta api ajuda a atualizar os detalhes de configuração para a função AWS Lambda criada. Você pode alterar a memória, tempo limite, manipulador, função, tempo de execução, descrição etc.

Comandos Envolvidos

A seguir estão os comandos envolvidos na api update-function-configuration -

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

Opções Envolvidas

A seguir estão as opções envolvidas na atualização-função-configuração api -

--function-name − nome da função aws lambda

--role (string) −opcional. O ARN da função precisa ser atualizado.

--handler (string) −opcional. Os detalhes do manipulador da função aws lambda.

--description(string) −opcional. Descrição da função.

--timeout(integer) −opcional. Tempo necessário para que a função aws lambda possa terminar.

--memory-size(integer) −opcional. Esta é a memória dada à função lambda de aws. A AWS alocará a quantidade de CPU e alocação de memória com base na memória fornecida.

--environment (structure) −opcional. É um objeto com detalhes de ambiente exigidos na função aws lambda.

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

--runtime(string) − Aqui você precisa especificar o ambiente de execução, ou seja, a seleção do idioma.

Os detalhes do tempo de execução são mostrados na tabela abaixo -

Opções disponíveis tempo de execução
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
Vai go1.x

--cli-input-json (string) −opcional. Isso executará a operação na api conforme especificado na string json fornecida.

--generate-cli-skeleton (string) −opcional. Isso produzirá o esqueleto JSON de todos os detalhes sem executar a API. A saída pode ser usada como uma entrada para--cli-input-json.

Agora, vamos alterar a memória e o tempo limite da função AWS Lambda que criamos anteriormente. Siga as etapas fornecidas abaixo e observe as capturas de tela correspondentes anexadas para este propósito -

Passo 1

A memória e o tempo limite antes da mudança ocorrer são os seguintes -

Passo 2

Agora com update-function-configuration, vamos alterar a memória e o tempo limite para 320 MB e o tempo limite para 10s. Para este propósito, use o seguinte comando com valores -

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

etapa 3

Então você pode ver a seguinte saída como o display -

Passo 4

A exibição no console AWS após usar update-function-configuration é o seguinte -

Código da função de atualização

Esta api atualizará o código para uma função existente do AWS Lambda.

Comandos Envolvidos

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

Opções Envolvidas

A seguir estão as opções envolvidas com a API update-function-code -

--function-name(string) − nome da função aws lambda

--zip-file (blob) −opcional. Caminho do arquivo zip que contém o código a ser atualizado.

--s3-bucket(string) −opcional. Nome do intervalo S3 que contém o arquivo zip com o código carregado.

--s3-key(string) −opcional. Nome da chave do objeto AWS s3 que deve ser carregado.

--s3-object-version (string) −opcional. Versão do objeto AWS s3.

--cli-input-json (string) −opcional. Isso executará a operação na api conforme especificado na string json fornecida.

--generate-cli-skeleton (string) −opcional. Isso produzirá o esqueleto JSON de todos os detalhes sem executar a API. A saída pode ser usada como uma entrada para --cli-input-json.

O código atualizado é mostrado abaixo -

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

Você pode usar o seguinte command with values for this purpose -

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

A saída correspondente é como mostrado aqui -

A exibição do console AWS é mostrada aqui -

A saída de registro correspondente é mostrada abaixo -

função de exclusão

o delete aws cli api excluirá a função fornecida.

Comandos Incluídos

Os detalhes do comando para o mesmo são fornecidos aqui -

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

Opções Incluídas

As opções incluídas nesta api são as fornecidas abaixo -

--function-name(string) − isso levará o nome da função lambda ou o arn da função aws lambda.

--qualifier (string) −Isso é opcional. Aqui você pode especificar a versão de aws lambda que precisa ser excluída.

-- cli-input-json(string) −Executa a operação de serviço com base na string JSON fornecida. A string JSON segue o formato fornecido por --generate-cli-skeleton. Se outros argumentos forem fornecidos na linha de comando, os valores CLI substituirão os valores fornecidos por JSON.

--generate-cli-skeleton(string) − ele imprime o esqueleto json na saída padrão sem enviar a solicitação de API.

Você pode usar o seguinte comando com valores para esta finalidade -

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

Agora, observe que a função não será vista na lista de funções do AWS Lambda -