All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.lambda.AWSLambdaClient Maven / Gradle / Ivy

Go to download

The AWS Java SDK for AWS Lambda module holds the client classes that are used for communicating with AWS Lambda Service

There is a newer version: 1.12.780
Show newest version
/*
 * Copyright 2010-2016 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;

import org.w3c.dom.*;

import java.net.*;
import java.util.*;
import java.util.Map.Entry;

import org.apache.commons.logging.*;

import com.amazonaws.*;
import com.amazonaws.auth.*;
import com.amazonaws.handlers.*;
import com.amazonaws.http.*;
import com.amazonaws.internal.*;
import com.amazonaws.metrics.*;
import com.amazonaws.regions.*;
import com.amazonaws.transform.*;
import com.amazonaws.util.*;
import com.amazonaws.protocol.json.*;
import com.amazonaws.util.AWSRequestMetrics.Field;
import com.amazonaws.annotation.ThreadSafe;

import com.amazonaws.services.lambda.model.*;
import com.amazonaws.services.lambda.model.transform.*;

/**
 * Client for accessing AWS Lambda. All service calls made using this client are
 * blocking, and will not return until the service call completes.
 * 

* AWS Lambda *

* Overview *

*

* This is the AWS Lambda API Reference. The AWS Lambda Developer Guide * provides additional information. For the service overview, go to What is AWS * Lambda, and for information about how the service works, go to AWS Lambda: How it Works in the AWS Lambda Developer Guide. *

*/ @ThreadSafe public class AWSLambdaClient extends AmazonWebServiceClient implements AWSLambda { /** Provider for AWS credentials. */ private AWSCredentialsProvider awsCredentialsProvider; private static final Log log = LogFactory.getLog(AWSLambda.class); /** Default signing name for the service. */ private static final String DEFAULT_SIGNING_NAME = "lambda"; /** The region metadata service name for computing region endpoints. */ private static final String DEFAULT_ENDPOINT_PREFIX = "lambda"; /** * Client configuration factory providing ClientConfigurations tailored to * this client */ protected static final ClientConfigurationFactory configFactory = new ClientConfigurationFactory(); private final SdkJsonProtocolFactory protocolFactory = new SdkJsonProtocolFactory( new JsonClientMetadata() .withProtocolVersion("1.1") .withSupportsCbor(false) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("ResourceConflictException") .withModeledClass( com.amazonaws.services.lambda.model.ResourceConflictException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "CodeStorageExceededException") .withModeledClass( com.amazonaws.services.lambda.model.CodeStorageExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("ServiceException") .withModeledClass( com.amazonaws.services.lambda.model.ServiceException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("RequestTooLargeException") .withModeledClass( com.amazonaws.services.lambda.model.RequestTooLargeException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InvalidSecurityGroupIDException") .withModeledClass( com.amazonaws.services.lambda.model.InvalidSecurityGroupIDException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InvalidParameterValueException") .withModeledClass( com.amazonaws.services.lambda.model.InvalidParameterValueException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("EC2AccessDeniedException") .withModeledClass( com.amazonaws.services.lambda.model.EC2AccessDeniedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "PolicyLengthExceededException") .withModeledClass( com.amazonaws.services.lambda.model.PolicyLengthExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("InvalidSubnetIDException") .withModeledClass( com.amazonaws.services.lambda.model.InvalidSubnetIDException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("ENILimitReachedException") .withModeledClass( com.amazonaws.services.lambda.model.ENILimitReachedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("EC2ThrottledException") .withModeledClass( com.amazonaws.services.lambda.model.EC2ThrottledException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("EC2UnexpectedException") .withModeledClass( com.amazonaws.services.lambda.model.EC2UnexpectedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "SubnetIPAddressLimitReachedException") .withModeledClass( com.amazonaws.services.lambda.model.SubnetIPAddressLimitReachedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "UnsupportedMediaTypeException") .withModeledClass( com.amazonaws.services.lambda.model.UnsupportedMediaTypeException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode( "InvalidRequestContentException") .withModeledClass( com.amazonaws.services.lambda.model.InvalidRequestContentException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("ResourceNotFoundException") .withModeledClass( com.amazonaws.services.lambda.model.ResourceNotFoundException.class)) .addErrorMetadata( new JsonErrorShapeMetadata() .withErrorCode("TooManyRequestsException") .withModeledClass( com.amazonaws.services.lambda.model.TooManyRequestsException.class))); /** * Constructs a new client to invoke service methods on AWS Lambda. A * credentials provider chain will be used that searches for credentials in * this order: *
    *
  • Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
  • *
  • Java System Properties - aws.accessKeyId and aws.secretKey
  • *
  • Instance profile credentials delivered through the Amazon EC2 * metadata service
  • *
* *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @see DefaultAWSCredentialsProviderChain */ public AWSLambdaClient() { this(new DefaultAWSCredentialsProviderChain(), configFactory .getConfig()); } /** * Constructs a new client to invoke service methods on AWS Lambda. A * credentials provider chain will be used that searches for credentials in * this order: *

    *
  • Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
  • *
  • Java System Properties - aws.accessKeyId and aws.secretKey
  • *
  • Instance profile credentials delivered through the Amazon EC2 * metadata service
  • *
* *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param clientConfiguration * The client configuration options controlling how this client * connects to AWS Lambda (ex: proxy settings, retry counts, etc.). * * @see DefaultAWSCredentialsProviderChain */ public AWSLambdaClient(ClientConfiguration clientConfiguration) { this(new DefaultAWSCredentialsProviderChain(), clientConfiguration); } /** * Constructs a new client to invoke service methods on AWS Lambda using the * specified AWS account credentials. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when * authenticating with AWS services. */ public AWSLambdaClient(AWSCredentials awsCredentials) { this(awsCredentials, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS Lambda using the * specified AWS account credentials and client configuration options. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when * authenticating with AWS services. * @param clientConfiguration * The client configuration options controlling how this client * connects to AWS Lambda (ex: proxy settings, retry counts, etc.). */ public AWSLambdaClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { super(clientConfiguration); this.awsCredentialsProvider = new StaticCredentialsProvider( awsCredentials); init(); } /** * Constructs a new client to invoke service methods on AWS Lambda using the * specified AWS account credentials provider. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to * authenticate requests with AWS services. */ public AWSLambdaClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS Lambda using the * specified AWS account credentials provider and client configuration * options. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to * authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client * connects to AWS Lambda (ex: proxy settings, retry counts, etc.). */ public AWSLambdaClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, null); } /** * Constructs a new client to invoke service methods on AWS Lambda using the * specified AWS account credentials provider, client configuration options, * and request metric collector. * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to * authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client * connects to AWS Lambda (ex: proxy settings, retry counts, etc.). * @param requestMetricCollector * optional request metric collector */ public AWSLambdaClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(clientConfiguration, requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; init(); } private void init() { setServiceNameIntern(DEFAULT_SIGNING_NAME); setEndpointPrefix(DEFAULT_ENDPOINT_PREFIX); // calling this.setEndPoint(...) will also modify the signer accordingly setEndpoint("lambda.us-east-1.amazonaws.com"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s .addAll(chainFactory .newRequestHandlerChain("/com/amazonaws/services/lambda/request.handlers")); requestHandler2s .addAll(chainFactory .newRequestHandler2Chain("/com/amazonaws/services/lambda/request.handler2s")); } /** *

* Adds a permission to the resource policy associated with the specified * AWS Lambda function. You use resource policies to grant permissions to * event sources that use push model. In a push model, event * sources (such as Amazon S3 and custom applications) invoke your Lambda * function. Each permission you add to the resource policy allows an event * source, permission to invoke the Lambda function. *

*

* For information about the push model, see AWS Lambda: How it Works. *

*

* If you are using versioning, the permissions you add are specific to the * Lambda function version or alias you specify in the * AddPermission request via the Qualifier * parameter. For more information about versioning, see AWS * Lambda Function Versioning and Aliases. *

*

* This operation requires permission for the * lambda:AddPermission action. *

* * @param addPermissionRequest * @return Result of the AddPermission operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws ResourceConflictException * The resource already exists. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws PolicyLengthExceededException * Lambda function access policy is limited to 20 KB. * @throws TooManyRequestsException * @sample AWSLambda.AddPermission */ @Override public AddPermissionResult addPermission( AddPermissionRequest addPermissionRequest) { ExecutionContext executionContext = createExecutionContext(addPermissionRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new AddPermissionRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(addPermissionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new AddPermissionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Creates an alias that points to the specified Lambda function version. * For more information, see Introduction to AWS Lambda Aliases. *

* Alias names are unique for a given function. *

* This requires permission for the lambda:CreateAlias action. *

* * @param createAliasRequest * @return Result of the CreateAlias operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws ResourceConflictException * The resource already exists. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.CreateAlias */ @Override public CreateAliasResult createAlias(CreateAliasRequest createAliasRequest) { ExecutionContext executionContext = createExecutionContext(createAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateAliasRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(createAliasRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new CreateAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Identifies a stream as an event source for a Lambda function. It can be * either an Amazon Kinesis stream or an Amazon DynamoDB stream. AWS Lambda * invokes the specified function when records are posted to the stream. *

*

* This association between a stream source and a Lambda function is called * the event source mapping. *

* This event source mapping is relevant only in the AWS Lambda * pull model, where AWS Lambda invokes the function. For more information, * go to AWS Lambda: How it Works in the AWS Lambda Developer * Guide. *

* You provide mapping information (for example, which stream to read from * and which Lambda function to invoke) in the request body. *

*

* Each event source, such as an Amazon Kinesis or a DynamoDB stream, can be * associated with multiple AWS Lambda function. A given Lambda function can * be associated with multiple AWS event sources. *

*

*

* If you are using versioning, you can specify a specific function version * or an alias via the function name parameter. For more information about * versioning, see AWS * Lambda Function Versioning and Aliases. *

*

*

* This operation requires permission for the * lambda:CreateEventSourceMapping action. *

* * @param createEventSourceMappingRequest * @return Result of the CreateEventSourceMapping operation returned by the * service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws ResourceConflictException * The resource already exists. * @throws TooManyRequestsException * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @sample AWSLambda.CreateEventSourceMapping */ @Override public CreateEventSourceMappingResult createEventSourceMapping( CreateEventSourceMappingRequest createEventSourceMappingRequest) { ExecutionContext executionContext = createExecutionContext(createEventSourceMappingRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateEventSourceMappingRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(createEventSourceMappingRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new CreateEventSourceMappingResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Creates a new Lambda function. The function metadata is created from the * request parameters, and the code for the function is provided by a .zip * file in the request body. If the function name already exists, the * operation will fail. Note that the function name is case-sensitive. *

*

* If you are using versioning, you can also publish a version of the Lambda * function you are creating using the Publish parameter. For * more information about versioning, see AWS * Lambda Function Versioning and Aliases. *

*

* This operation requires permission for the * lambda:CreateFunction action. *

* * @param createFunctionRequest * @return Result of the CreateFunction operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws ResourceConflictException * The resource already exists. * @throws TooManyRequestsException * @throws CodeStorageExceededException * You have exceeded your maximum total code size per account. * Limits * @sample AWSLambda.CreateFunction */ @Override public CreateFunctionResult createFunction( CreateFunctionRequest createFunctionRequest) { ExecutionContext executionContext = createExecutionContext(createFunctionRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateFunctionRequestMarshaller(protocolFactory) .marshall(super .beforeMarshalling(createFunctionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new CreateFunctionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Deletes the specified Lambda function alias. For more information, see * Introduction to AWS Lambda Aliases. *

*

* This requires permission for the lambda:DeleteAlias action. *

* * @param deleteAliasRequest * @return Result of the DeleteAlias operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.DeleteAlias */ @Override public DeleteAliasResult deleteAlias(DeleteAliasRequest deleteAliasRequest) { ExecutionContext executionContext = createExecutionContext(deleteAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteAliasRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(deleteAliasRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DeleteAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Removes an event source mapping. This means AWS Lambda will no longer * invoke the function for events in the associated source. *

*

* This operation requires permission for the * lambda:DeleteEventSourceMapping action. *

* * @param deleteEventSourceMappingRequest * @return Result of the DeleteEventSourceMapping operation returned by the * service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.DeleteEventSourceMapping */ @Override public DeleteEventSourceMappingResult deleteEventSourceMapping( DeleteEventSourceMappingRequest deleteEventSourceMappingRequest) { ExecutionContext executionContext = createExecutionContext(deleteEventSourceMappingRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteEventSourceMappingRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(deleteEventSourceMappingRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DeleteEventSourceMappingResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Deletes the specified Lambda function code and configuration. *

*

* If you are using the versioning feature and you don't specify a function * version in your DeleteFunction request, AWS Lambda will * delete the function, including all its versions, and any aliases pointing * to the function versions. To delete a specific function version, you must * provide the function version via the Qualifier parameter. * For information about function versioning, see AWS * Lambda Function Versioning and Aliases. *

*

* When you delete a function the associated resource policy is also * deleted. You will need to delete the event source mappings explicitly. *

*

* This operation requires permission for the * lambda:DeleteFunction action. *

* * @param deleteFunctionRequest * @return Result of the DeleteFunction operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws TooManyRequestsException * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws ResourceConflictException * The resource already exists. * @sample AWSLambda.DeleteFunction */ @Override public DeleteFunctionResult deleteFunction( DeleteFunctionRequest deleteFunctionRequest) { ExecutionContext executionContext = createExecutionContext(deleteFunctionRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteFunctionRequestMarshaller(protocolFactory) .marshall(super .beforeMarshalling(deleteFunctionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new DeleteFunctionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns the specified alias information such as the alias ARN, * description, and function version it is pointing to. For more * information, see Introduction to AWS Lambda Aliases. *

*

* This requires permission for the lambda:GetAlias action. *

* * @param getAliasRequest * @return Result of the GetAlias operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.GetAlias */ @Override public GetAliasResult getAlias(GetAliasRequest getAliasRequest) { ExecutionContext executionContext = createExecutionContext(getAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetAliasRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(getAliasRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new GetAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns configuration information for the specified event source mapping * (see CreateEventSourceMapping). *

*

* This operation requires permission for the * lambda:GetEventSourceMapping action. *

* * @param getEventSourceMappingRequest * @return Result of the GetEventSourceMapping operation returned by the * service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.GetEventSourceMapping */ @Override public GetEventSourceMappingResult getEventSourceMapping( GetEventSourceMappingRequest getEventSourceMappingRequest) { ExecutionContext executionContext = createExecutionContext(getEventSourceMappingRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetEventSourceMappingRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(getEventSourceMappingRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new GetEventSourceMappingResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns the configuration information of the Lambda function and a * presigned URL link to the .zip file you uploaded with * CreateFunction so you can download the .zip file. Note that the * URL is valid for up to 10 minutes. The configuration information is the * same information you provided as parameters when uploading the function. *

*

* Using the optional Qualifier parameter, you can specify a * specific function version for which you want this information. If you * don't specify this parameter, the API uses unqualified function ARN which * return information about the $LATEST version of the Lambda * function. For more information, see AWS * Lambda Function Versioning and Aliases. *

*

* This operation requires permission for the * lambda:GetFunction action. *

* * @param getFunctionRequest * @return Result of the GetFunction operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws TooManyRequestsException * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @sample AWSLambda.GetFunction */ @Override public GetFunctionResult getFunction(GetFunctionRequest getFunctionRequest) { ExecutionContext executionContext = createExecutionContext(getFunctionRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetFunctionRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(getFunctionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new GetFunctionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns the configuration information of the Lambda function. This the * same information you provided as parameters when uploading the function * by using CreateFunction. *

*

* If you are using the versioning feature, you can retrieve this * information for a specific function version by using the optional * Qualifier parameter and specifying the function version or * alias that points to it. If you don't provide it, the API returns * information about the $LATEST version of the function. For more * information about versioning, see AWS * Lambda Function Versioning and Aliases. *

*

* This operation requires permission for the * lambda:GetFunctionConfiguration operation. *

* * @param getFunctionConfigurationRequest * @return Result of the GetFunctionConfiguration operation returned by the * service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws TooManyRequestsException * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @sample AWSLambda.GetFunctionConfiguration */ @Override public GetFunctionConfigurationResult getFunctionConfiguration( GetFunctionConfigurationRequest getFunctionConfigurationRequest) { ExecutionContext executionContext = createExecutionContext(getFunctionConfigurationRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetFunctionConfigurationRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(getFunctionConfigurationRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new GetFunctionConfigurationResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns the resource policy associated with the specified Lambda * function. *

*

* If you are using the versioning feature, you can get the resource policy * associated with the specific Lambda function version or alias by * specifying the version or alias name using the Qualifier * parameter. For more information about versioning, see AWS * Lambda Function Versioning and Aliases. *

*

* For information about adding permissions, see AddPermission. *

*

* You need permission for the lambda:GetPolicy action. *

* * @param getPolicyRequest * @return Result of the GetPolicy operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws TooManyRequestsException * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @sample AWSLambda.GetPolicy */ @Override public GetPolicyResult getPolicy(GetPolicyRequest getPolicyRequest) { ExecutionContext executionContext = createExecutionContext(getPolicyRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetPolicyRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(getPolicyRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new GetPolicyResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Invokes a specific Lambda function. *

*

* If you are using the versioning feature, you can invoke the specific * function version by providing function version or alias name that is * pointing to the function version using the Qualifier * parameter in the request. If you don't provide the Qualifier * parameter, the $LATEST version of the Lambda function is * invoked. For information about the versioning feature, see AWS * Lambda Function Versioning and Aliases. *

*

* This operation requires permission for the * lambda:InvokeFunction action. *

* * @param invokeRequest * @return Result of the Invoke operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidRequestContentException * The request body could not be parsed as JSON. * @throws RequestTooLargeException * The request payload exceeded the Invoke request body * JSON input limit. For more information, see Limits. * @throws UnsupportedMediaTypeException * The content type of the Invoke request body is not * JSON. * @throws TooManyRequestsException * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws EC2UnexpectedException * AWS Lambda received an unexpected EC2 client exception while * setting up for the Lambda function. * @throws SubnetIPAddressLimitReachedException * AWS Lambda was not able to set up VPC access for the Lambda * function because one or more configured subnets has no available * IP addresses. * @throws ENILimitReachedException * AWS Lambda was not able to create an Elastic Network Interface * (ENI) in the VPC, specified as part of Lambda function * configuration, because the limit for network interfaces has been * reached. * @throws EC2ThrottledException * AWS Lambda was throttled by Amazon EC2 during Lambda function * initiatization using the execution role provided for the Lambda * function. * @throws EC2AccessDeniedException * @throws InvalidSubnetIDException * The Subnet ID provided in the Lambda function VPC configuration * is invalid. * @throws InvalidSecurityGroupIDException * The Security Group ID provided in the Lambda function VPC * configuration is invalid. * @sample AWSLambda.Invoke */ @Override public InvokeResult invoke(InvokeRequest invokeRequest) { ExecutionContext executionContext = createExecutionContext(invokeRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new InvokeRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(invokeRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(false) .withHasStreamingSuccessResponse(false), new InvokeResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * This API is deprecated. We recommend you use * Invoke API (see Invoke). *

* Submits an invocation request to AWS Lambda. Upon receiving the request, * Lambda executes the specified function asynchronously. To see the logs * generated by the Lambda function execution, see the CloudWatch Logs * console. *

*

* This operation requires permission for the * lambda:InvokeFunction action. *

* * @param invokeAsyncRequest * @return Result of the InvokeAsync operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidRequestContentException * The request body could not be parsed as JSON. * @sample AWSLambda.InvokeAsync */ @Override @Deprecated public InvokeAsyncResult invokeAsync(InvokeAsyncRequest invokeAsyncRequest) { ExecutionContext executionContext = createExecutionContext(invokeAsyncRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new InvokeAsyncRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(invokeAsyncRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new InvokeAsyncResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns list of aliases created for a Lambda function. For each alias, * the response includes information such as the alias ARN, description, * alias name, and the function version to which it points. For more * information, see Introduction to AWS Lambda Aliases. *

*

* This requires permission for the lambda:ListAliases action. *

* * @param listAliasesRequest * @return Result of the ListAliases operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.ListAliases */ @Override public ListAliasesResult listAliases(ListAliasesRequest listAliasesRequest) { ExecutionContext executionContext = createExecutionContext(listAliasesRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListAliasesRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(listAliasesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new ListAliasesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns a list of event source mappings you created using the * CreateEventSourceMapping (see * CreateEventSourceMapping). *

*

* For each mapping, the API returns configuration information. You can * optionally specify filters to retrieve specific event source mappings. *

*

* If you are using the versioning feature, you can get list of event source * mappings for a specific Lambda function version or an alias as described * in the FunctionName parameter. For information about the * versioning feature, see AWS * Lambda Function Versioning and Aliases. *

*

* This operation requires permission for the * lambda:ListEventSourceMappings action. *

* * @param listEventSourceMappingsRequest * @return Result of the ListEventSourceMappings operation returned by the * service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.ListEventSourceMappings */ @Override public ListEventSourceMappingsResult listEventSourceMappings( ListEventSourceMappingsRequest listEventSourceMappingsRequest) { ExecutionContext executionContext = createExecutionContext(listEventSourceMappingsRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListEventSourceMappingsRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(listEventSourceMappingsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new ListEventSourceMappingsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public ListEventSourceMappingsResult listEventSourceMappings() { return listEventSourceMappings(new ListEventSourceMappingsRequest()); } /** *

* Returns a list of your Lambda functions. For each function, the response * includes the function configuration information. You must use * GetFunction to retrieve the code for your function. *

*

* This operation requires permission for the * lambda:ListFunctions action. *

*

* If you are using versioning feature, the response returns list of $LATEST * versions of your functions. For information about the versioning feature, * see AWS * Lambda Function Versioning and Aliases. *

* * @param listFunctionsRequest * @return Result of the ListFunctions operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws TooManyRequestsException * @sample AWSLambda.ListFunctions */ @Override public ListFunctionsResult listFunctions( ListFunctionsRequest listFunctionsRequest) { ExecutionContext executionContext = createExecutionContext(listFunctionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListFunctionsRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(listFunctionsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new ListFunctionsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } @Override public ListFunctionsResult listFunctions() { return listFunctions(new ListFunctionsRequest()); } /** *

* List all versions of a function. For information about the versioning * feature, see AWS * Lambda Function Versioning and Aliases. *

* * @param listVersionsByFunctionRequest * @return Result of the ListVersionsByFunction operation returned by the * service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.ListVersionsByFunction */ @Override public ListVersionsByFunctionResult listVersionsByFunction( ListVersionsByFunctionRequest listVersionsByFunctionRequest) { ExecutionContext executionContext = createExecutionContext(listVersionsByFunctionRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListVersionsByFunctionRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(listVersionsByFunctionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new ListVersionsByFunctionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Publishes a version of your function from the current snapshot of * $LATEST. That is, AWS Lambda takes a snapshot of the function code and * configuration information from $LATEST and publishes a new version. The * code and configuration cannot be modified after publication. For * information about the versioning feature, see AWS * Lambda Function Versioning and Aliases. *

* * @param publishVersionRequest * @return Result of the PublishVersion operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @throws CodeStorageExceededException * You have exceeded your maximum total code size per account. * Limits * @sample AWSLambda.PublishVersion */ @Override public PublishVersionResult publishVersion( PublishVersionRequest publishVersionRequest) { ExecutionContext executionContext = createExecutionContext(publishVersionRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PublishVersionRequestMarshaller(protocolFactory) .marshall(super .beforeMarshalling(publishVersionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new PublishVersionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* You can remove individual permissions from an resource policy associated * with a Lambda function by providing a statement ID that you provided when * you added the permission. *

*

* If you are using versioning, the permissions you remove are specific to * the Lambda function version or alias you specify in the * AddPermission request via the Qualifier * parameter. For more information about versioning, see AWS * Lambda Function Versioning and Aliases. *

*

* Note that removal of a permission will cause an active event source to * lose permission to the function. *

*

* You need permission for the lambda:RemovePermission action. *

* * @param removePermissionRequest * @return Result of the RemovePermission operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.RemovePermission */ @Override public RemovePermissionResult removePermission( RemovePermissionRequest removePermissionRequest) { ExecutionContext executionContext = createExecutionContext(removePermissionRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new RemovePermissionRequestMarshaller(protocolFactory) .marshall(super .beforeMarshalling(removePermissionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new RemovePermissionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Using this API you can update the function version to which the alias * points and the alias description. For more information, see Introduction to AWS Lambda Aliases. *

*

* This requires permission for the lambda:UpdateAlias action. *

* * @param updateAliasRequest * @return Result of the UpdateAlias operation returned by the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.UpdateAlias */ @Override public UpdateAliasResult updateAlias(UpdateAliasRequest updateAliasRequest) { ExecutionContext executionContext = createExecutionContext(updateAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateAliasRequestMarshaller(protocolFactory) .marshall(super.beforeMarshalling(updateAliasRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new UpdateAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* You can update an event source mapping. This is useful if you want to * change the parameters of the existing mapping without losing your * position in the stream. You can change which function will receive the * stream records, but to change the stream itself, you must create a new * mapping. *

*

* If you are using the versioning feature, you can update the event source * mapping to map to a specific Lambda function version or alias as * described in the FunctionName parameter. For information * about the versioning feature, see AWS * Lambda Function Versioning and Aliases. *

*

* If you disable the event source mapping, AWS Lambda stops polling. If you * enable again, it will resume polling from the time it had stopped * polling, so you don't lose processing of any records. However, if you * delete event source mapping and create it again, it will reset. *

*

* This operation requires permission for the * lambda:UpdateEventSourceMapping action. *

* * @param updateEventSourceMappingRequest * @return Result of the UpdateEventSourceMapping operation returned by the * service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @throws ResourceConflictException * The resource already exists. * @sample AWSLambda.UpdateEventSourceMapping */ @Override public UpdateEventSourceMappingResult updateEventSourceMapping( UpdateEventSourceMappingRequest updateEventSourceMappingRequest) { ExecutionContext executionContext = createExecutionContext(updateEventSourceMappingRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateEventSourceMappingRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(updateEventSourceMappingRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new UpdateEventSourceMappingResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Updates the code for the specified Lambda function. This operation must * only be used on an existing Lambda function and cannot be used to update * the function configuration. *

*

* If you are using the versioning feature, note this API will always update * the $LATEST version of your Lambda function. For information about the * versioning feature, see AWS * Lambda Function Versioning and Aliases. *

*

* This operation requires permission for the * lambda:UpdateFunctionCode action. *

* * @param updateFunctionCodeRequest * @return Result of the UpdateFunctionCode operation returned by the * service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @throws CodeStorageExceededException * You have exceeded your maximum total code size per account. * Limits * @sample AWSLambda.UpdateFunctionCode */ @Override public UpdateFunctionCodeResult updateFunctionCode( UpdateFunctionCodeRequest updateFunctionCodeRequest) { ExecutionContext executionContext = createExecutionContext(updateFunctionCodeRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateFunctionCodeRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(updateFunctionCodeRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler(new JsonOperationMetadata() .withPayloadJson(true) .withHasStreamingSuccessResponse(false), new UpdateFunctionCodeResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Updates the configuration parameters for the specified Lambda function by * using the values provided in the request. You provide only the parameters * you want to change. This operation must only be used on an existing * Lambda function and cannot be used to update the function's code. *

*

* If you are using the versioning feature, note this API will always update * the $LATEST version of your Lambda function. For information about the * versioning feature, see AWS * Lambda Function Versioning and Aliases. *

*

* This operation requires permission for the * lambda:UpdateFunctionConfiguration action. *

* * @param updateFunctionConfigurationRequest * @return Result of the UpdateFunctionConfiguration operation returned by * the service. * @throws ServiceException * The AWS Lambda service encountered an internal error. * @throws ResourceNotFoundException * The resource (for example, a Lambda function or access policy * statement) specified in the request does not exist. * @throws InvalidParameterValueException * One of the parameters in the request is invalid. For example, if * you provided an IAM role for AWS Lambda to assume in the * CreateFunction or the * UpdateFunctionConfiguration API, that AWS Lambda is * unable to assume you will get this exception. * @throws TooManyRequestsException * @sample AWSLambda.UpdateFunctionConfiguration */ @Override public UpdateFunctionConfigurationResult updateFunctionConfiguration( UpdateFunctionConfigurationRequest updateFunctionConfigurationRequest) { ExecutionContext executionContext = createExecutionContext(updateFunctionConfigurationRequest); AWSRequestMetrics awsRequestMetrics = executionContext .getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateFunctionConfigurationRequestMarshaller( protocolFactory).marshall(super .beforeMarshalling(updateFunctionConfigurationRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory .createResponseHandler( new JsonOperationMetadata().withPayloadJson(true) .withHasStreamingSuccessResponse(false), new UpdateFunctionConfigurationResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * Returns additional metadata for a previously executed successful, * request, typically used for debugging issues where a service isn't acting * as expected. This data isn't considered part of the result data returned * by an operation, so it's available through this separate, diagnostic * interface. *

* Response metadata is only cached for a limited period of time, so if you * need to access this extra diagnostic information for an executed request, * you should use this method to retrieve it as soon as possible after * executing the request. * * @param request * The originally executed request * * @return The response metadata for the specified request, or null if none * is available. */ public ResponseMetadata getCachedResponseMetadata( AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } /** * Normal invoke with authentication. Credentials are required and may be * overriden at the request level. **/ private Response invoke( Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { executionContext.setCredentialsProvider(CredentialUtils .getCredentialsProvider(request.getOriginalRequest(), awsCredentialsProvider)); return doInvoke(request, responseHandler, executionContext); } /** * Invoke with no authentication. Credentials are not required and any * credentials set on the client or request will be ignored for this * operation. **/ private Response anonymousInvoke( Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { return doInvoke(request, responseHandler, executionContext); } /** * Invoke the request using the http client. Assumes credentials (or lack * thereof) have been configured in the ExecutionContext beforehand. **/ private Response doInvoke( Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { request.setEndpoint(endpoint); request.setTimeOffset(timeOffset); HttpResponseHandler errorResponseHandler = protocolFactory .createErrorResponseHandler(new JsonErrorResponseMetadata()); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy