Quando o Lambda executa a função, ele transmite um objeto de contexto para o handler. Esse objeto fornece métodos e propriedades que fornecem informações sobre a invocação, a função e o ambiente de execução.
Métodos de contexto
-
getRemainingTimeInMillis()
— Retorna o número de milissegundos restantes antes do tempo limite da execução. -
getFunctionName()
: retorna o nome da função do Lambda. -
getFunctionVersion()
— Retorna oversionda função do. -
getInvokedFunctionArn()
: retorna o nome do recurso da Amazon (ARN) usado para invocar a função. Indica se o invocador especificou um número de versão ou alias. -
getMemoryLimitInMB()
— Retorna a quantidade de memória alocada para a função. -
getAwsRequestId()
— Retorna o identificador de invocação da solicitação. -
getLogGroupName()
— Retorna o grupo de logs para a função do. -
getLogStreamName()
— Retorna o stream de log para a instância da função. -
getIdentity()
— (aplicativos móveis) Retorna informações sobre a identidade do Amazon Cognito que autorizou a solicitação. -
getClientContext()
— (aplicativos móveis) Retorna o contexto do cliente que é fornecido ao Lambda pelo aplicativo cliente. -
getLogger()
: retorna o objeto logger para a função.
O exemplo a seguir mostra uma função que usa o objeto de contexto para acessar o logger do Lambda.
exemplo Handler.java
package example;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import java.util.Map;
// Handler value: example.Handler
public class Handler implements RequestHandler<Map<String,String>, Void>{
@Override
public Void handleRequest(Map<String,String> event, Context context)
{
LambdaLogger logger = context.getLogger();
logger.log("EVENT TYPE: " + event.getClass());
return null;
}
}
A função registra em log o tipo de classe do evento de entrada antes de retornar null
.
exemplo saída do log
EVENT TYPE: class java.util.LinkedHashMap
A interface para o objeto de contexto está disponível na biblioteca aws-lambda-java-core
exemplo src/test/java/example/TestContext.java
package example;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.CognitoIdentity;
import com.amazonaws.services.lambda.runtime.ClientContext;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
public class TestContext implements Context{
public TestContext() {}
public String getAwsRequestId(){
return new String("495b12a8-xmpl-4eca-8168-160484189f99");
}
public String getLogGroupName(){
return new String("/aws/lambda/my-function");
}
public String getLogStreamName(){
return new String("2020/02/26/[$LATEST]704f8dxmpla04097b9134246b8438f1a");
}
public String getFunctionName(){
return new String("my-function");
}
public String getFunctionVersion(){
return new String("$LATEST");
}
public String getInvokedFunctionArn(){
return new String("arn:aws:lambda:us-east-2:123456789012:function:my-function");
}
public CognitoIdentity getIdentity(){
return null;
}
public ClientContext getClientContext(){
return null;
}
public int getRemainingTimeInMillis(){
return 300000;
}
public int getMemoryLimitInMB(){
return 512;
}
public LambdaLogger getLogger(){
return new TestLogger();
}
}
Para obter mais informações sobre registro em log, consulte Registrar em log e monitorar funções do Lambda em Java.
Contexto em aplicativos de exemplo
O repositório do GitHub para este guia inclui aplicativos de exemplo que demonstram o uso do objeto de contexto. Cada aplicativo de exemplo inclui scripts para fácil implantação e limpeza, um modelo do AWS Serverless Application Model (AWS SAM) e recursos de suporte.
Aplicações de exemplo do Lambda em Java
-
example-java
: uma função Java que demonstra como você pode usar o Lambda para processar pedidos. Essa função ilustra como definir e desserializar um objeto de evento de entrada personalizado, usar o AWS SDK e gerar logs de saída. -
java-basic
: uma coleção de funções Java mínimas com testes de unidade e configuração de registro em log variável. -
java-events
: uma coleção de funções do Java contendo código básico sobre como lidar com eventos de vários serviços, como o Amazon API Gateway, o Amazon SQS e o Amazon Kinesis. Essas funções usam a versão mais recente da biblioteca aws-lambda-java-events (3.0.0 e versões mais recentes). Estes exemplos não exigem o AWS SDK como dependência. -
s3-java
: uma função em Java que processa eventos de notificação do Amazon S3 e usa a Java Class Library (JCL) para criar miniaturas de arquivos de imagem enviados por upload. -
layer-java
: uma função Java que ilustra como usar uma camada do Lambda para empacotar dependências separadamente do código da função principal.