/* * Copyright 2015-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.amazonaws.services.lambda.invoke; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.apache.commons.logging.LogFactory; import com.amazonaws.services.lambda.model.InvocationType; import com.amazonaws.services.lambda.model.InvokeRequest; import com.amazonaws.services.lambda.model.LogType; /** * An annotation that marks methods of an interface that are meant to be proxied to remote code * running on AWS Lambda. Methods may accept zero or one arguments, and may return zero or one * values. Inputs and outputs will be converted to/from JSON using the Jackson {@code ObjectMapper}. */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface LambdaFunction { /** * The name of the Lambda function to invoke for this annotated method. If not explicitly set, * the name of the interface method is used. *
*
* public interface LambdaFunctions {
*
* @LambdaFunction(functionName="ActualFunctionName") void notTheRealFunctionName(); }
* @see InvokeRequest#setFunctionName(String)
*/
String functionName() default "";
/**
* The type of invocation to use. If unspecified, defaults to {@code RequestResponse}. If a
* {@code logType} of anything other than {@code None} is specified, the invocation type may
* only be set to {@code RequestResponse}.
*
*
* public interface LambdaFunctions {
*
* @LambdaFunction(functionName="DoIt") void doIt();
* @LambdaFunction(functionName="DoIt", invocationType=InvocationType.Event) void
* doItAsynchronously();
* @LambdaFunction(functionName="DoIt", invocationType=InvocationType.DryRun) void dryRunIt(); }
*
* @see InvokeRequest#setInvocationType(InvocationType)
*/
InvocationType invocationType() default InvocationType.RequestResponse;
/**
* The type of log to request from the service. If unspecified, no logs will be requested. If
* specified, the invocation type may only be set to {@code RequestResponse}.
*
* When specified, the log information returned by the Lambda function will be emitted to the * JCL log for the interface class at the {@code INFO} level. * * @see InvokeRequest#setLogType(LogType) * @see LogFactory#getLog(Class) */ LogType logType() default LogType.None; }