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.765
Show newest version
/*
 * Copyright 2011-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.auth.presign.PresignerParams;
import com.amazonaws.handlers.*;
import com.amazonaws.http.*;
import com.amazonaws.internal.*;
import com.amazonaws.internal.auth.*;
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.client.AwsSyncClientParams;

import com.amazonaws.AmazonServiceException;

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 final 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"; /** 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) .withSupportsIon(false) .withContentTypeOverride("") .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidParameterValueException").withModeledClass( com.amazonaws.services.lambda.model.InvalidParameterValueException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ResourceNotFoundException").withModeledClass( com.amazonaws.services.lambda.model.ResourceNotFoundException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("EC2UnexpectedException").withModeledClass( com.amazonaws.services.lambda.model.EC2UnexpectedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("EC2AccessDeniedException").withModeledClass( com.amazonaws.services.lambda.model.EC2AccessDeniedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidSecurityGroupIDException").withModeledClass( com.amazonaws.services.lambda.model.InvalidSecurityGroupIDException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("PolicyLengthExceededException").withModeledClass( com.amazonaws.services.lambda.model.PolicyLengthExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("KMSAccessDeniedException").withModeledClass( com.amazonaws.services.lambda.model.KMSAccessDeniedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ResourceConflictException").withModeledClass( com.amazonaws.services.lambda.model.ResourceConflictException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ServiceException").withModeledClass( com.amazonaws.services.lambda.model.ServiceException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("CodeStorageExceededException").withModeledClass( com.amazonaws.services.lambda.model.CodeStorageExceededException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("EC2ThrottledException").withModeledClass( com.amazonaws.services.lambda.model.EC2ThrottledException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ENILimitReachedException").withModeledClass( com.amazonaws.services.lambda.model.ENILimitReachedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("KMSInvalidStateException").withModeledClass( com.amazonaws.services.lambda.model.KMSInvalidStateException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidZipFileException").withModeledClass( com.amazonaws.services.lambda.model.InvalidZipFileException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("KMSDisabledException").withModeledClass( com.amazonaws.services.lambda.model.KMSDisabledException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("SubnetIPAddressLimitReachedException").withModeledClass( com.amazonaws.services.lambda.model.SubnetIPAddressLimitReachedException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("KMSNotFoundException").withModeledClass( com.amazonaws.services.lambda.model.KMSNotFoundException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidSubnetIDException").withModeledClass( com.amazonaws.services.lambda.model.InvalidSubnetIDException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidRequestContentException").withModeledClass( com.amazonaws.services.lambda.model.InvalidRequestContentException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("RequestTooLargeException").withModeledClass( com.amazonaws.services.lambda.model.RequestTooLargeException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("TooManyRequestsException").withModeledClass( com.amazonaws.services.lambda.model.TooManyRequestsException.class)) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("UnsupportedMediaTypeException").withModeledClass( com.amazonaws.services.lambda.model.UnsupportedMediaTypeException.class)) .withBaseServiceExceptionClass(com.amazonaws.services.lambda.model.AWSLambdaException.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(DefaultAWSCredentialsProviderChain.getInstance(), 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(DefaultAWSCredentialsProviderChain.getInstance(), 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(); } /** * Constructs a new client to invoke service methods on AWS Lambda using the specified parameters. * *

* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param clientParams * Object providing client parameters. */ AWSLambdaClient(AwsSyncClientParams clientParams) { super(clientParams); this.awsCredentialsProvider = clientParams.getCredentialsProvider(); init(); } private void init() { setServiceNameIntern(DEFAULT_SIGNING_NAME); setEndpointPrefix(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")); requestHandler2s.addAll(chainFactory.getGlobalHandlers()); } /** *

* 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(addPermissionRequest.getFunctionName()), "FunctionName"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(createAliasRequest.getFunctionName()), "FunctionName"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(deleteAliasRequest.getFunctionName()), "FunctionName"); ValidationUtils.assertStringNotEmpty(StringUtils.fromString(deleteAliasRequest.getName()), "Name"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(deleteEventSourceMappingRequest.getUUID()), "UUID"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(deleteFunctionRequest.getFunctionName()), "FunctionName"); 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 a customer's account settings. *

*

* You can use this operation to retrieve Lambda limit information such as code size and concurrency limits. For * more information on limits, see AWS Lambda * Limits. You can also retrieve resource usage statistics such as code storage usage and function count. *

* * @param getAccountSettingsRequest * @return Result of the GetAccountSettings operation returned by the service. * @throws TooManyRequestsException * @throws ServiceException * The AWS Lambda service encountered an internal error. * @sample AWSLambda.GetAccountSettings */ @Override public GetAccountSettingsResult getAccountSettings(GetAccountSettingsRequest getAccountSettingsRequest) { ExecutionContext executionContext = createExecutionContext(getAccountSettingsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetAccountSettingsRequestMarshaller(protocolFactory).marshall(super.beforeMarshalling(getAccountSettingsRequest)); // 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 GetAccountSettingsResultJsonUnmarshaller()); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(getAliasRequest.getFunctionName()), "FunctionName"); ValidationUtils.assertStringNotEmpty(StringUtils.fromString(getAliasRequest.getName()), "Name"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(getEventSourceMappingRequest.getUUID()), "UUID"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(getFunctionRequest.getFunctionName()), "FunctionName"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(getFunctionConfigurationRequest.getFunctionName()), "FunctionName"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(getPolicyRequest.getFunctionName()), "FunctionName"); 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. For an example, see Create the Lambda Function and Test It Manually. *

*

* 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. Invocations occur at least once in response to an event and functions must be * idempotent to handle this. 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 initialization 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. * @throws InvalidZipFileException * AWS Lambda could not unzip the function zip file. * @throws KMSDisabledException * Lambda was unable to decrypt the environment variables because the KMS key used is disabled. Please check * the Lambda function's KMS key settings. * @throws KMSInvalidStateException * Lambda was unable to decrypt the environment variables because the KMS key used is in an invalid state * for Decrypt. Please check the function's KMS key settings. * @throws KMSAccessDeniedException * Lambda was unable to decrypt the environment variables because KMS access was denied. Please check the * Lambda function's KMS permissions. * @throws KMSNotFoundException * Lambda was unable to decrypt the environment variables because the KMS key was not found. Please check * the function's KMS key settings. * @sample AWSLambda.Invoke */ @Override public InvokeResult invoke(InvokeRequest invokeRequest) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(invokeRequest.getFunctionName()), "FunctionName"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(invokeAsyncRequest.getFunctionName()), "FunctionName"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(listAliasesRequest.getFunctionName()), "FunctionName"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(listVersionsByFunctionRequest.getFunctionName()), "FunctionName"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(publishVersionRequest.getFunctionName()), "FunctionName"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(removePermissionRequest.getFunctionName()), "FunctionName"); ValidationUtils.assertStringNotEmpty(StringUtils.fromString(removePermissionRequest.getStatementId()), "StatementId"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(updateAliasRequest.getFunctionName()), "FunctionName"); ValidationUtils.assertStringNotEmpty(StringUtils.fromString(updateAliasRequest.getName()), "Name"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(updateEventSourceMappingRequest.getUUID()), "UUID"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(updateFunctionCodeRequest.getFunctionName()), "FunctionName"); 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) { ValidationUtils.assertStringNotEmpty(StringUtils.fromString(updateFunctionConfigurationRequest.getFunctionName()), "FunctionName"); 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 - 2024 Weber Informatics LLC | Privacy Policy