/* * Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.amazonaws.services.lambda.model; import java.io.Serializable; import com.amazonaws.AmazonWebServiceRequest; /** *

* Invokes a Lambda function. You can invoke a function synchronously (and wait * for the response), or asynchronously. To invoke a function asynchronously, * set InvocationType to Event. *

*

* For synchronous invocation, details about the function response, including * errors, are included in the response body and headers. For either invocation * type, you can find more information in the execution log and trace. *

*

* When an error occurs, your function may be invoked multiple times. Retry * behavior varies by error type, client, event source, and invocation type. For * example, if you invoke a function asynchronously and it returns an error, * Lambda executes the function up to two more times. For more information, see * Error handling and automatic retries in Lambda. *

*

* For asynchronous invocation, Lambda adds events to a queue before sending * them to your function. If your function does not have enough capacity to keep * up with the queue, events may be lost. Occasionally, your function may * receive the same event multiple times, even if no error occurs. To retain * events that were not processed, configure your function with a dead-letter queue. *

*

* The status code in the API response doesn't reflect function errors. Error * codes are reserved for errors that prevent your function from executing, such * as permissions errors, quota errors, or issues with your function's code and configuration. For * example, Lambda returns TooManyRequestsException if running the * function would cause you to exceed a concurrency limit at either the account * level (ConcurrentInvocationLimitExceeded) or function level ( * ReservedFunctionConcurrentInvocationLimitExceeded). *

*

* For functions with a long timeout, your client might disconnect during * synchronous invocation while it waits for a response. Configure your HTTP * client, SDK, firewall, proxy, or operating system to allow for long * connections with timeout or keep-alive settings. *

*

* This operation requires permission for the lambda:InvokeFunction action. For details on how to set up permissions * for cross-account invocations, see Granting function access to other accounts. *

*/ public class InvokeRequest extends AmazonWebServiceRequest implements Serializable { /** *

* The name of the Lambda function, version, or alias. *

*

* Name formats *

* *

* You can append a version number or alias to any of the formats. The * length constraint applies only to the full ARN. If you specify only the * function name, it is limited to 64 characters in length. *

*

* Constraints:
* Length: 1 - 170
* Pattern: * (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{ * 1}:)?(\d{12} * :)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?
*/ private String functionName; /** *

* Choose from the following options. *

* *

* Constraints:
* Allowed Values: Event, RequestResponse, DryRun */ private String invocationType; /** *

* Set to Tail to include the execution log in the response. * Applies to synchronously invoked functions only. *

*

* Constraints:
* Allowed Values: None, Tail */ private String logType; /** *

* Up to 3,583 bytes of base64-encoded data about the invoking client to * pass to the function in the context object. *

*/ private String clientContext; /** *

* The JSON that you want to provide to your Lambda function as input. *

*

* You can enter the JSON directly. For example, * --payload '{ "key": "value" }'. You can also specify a file * path. For example, --payload file://payload.json. *

*/ private java.nio.ByteBuffer payload; /** *

* Specify a version or alias to invoke a published version of the function. *

*

* Constraints:
* Length: 1 - 128
* Pattern: (|[a-zA-Z0-9$_-]+)
*/ private String qualifier; /** *

* The name of the Lambda function, version, or alias. *

*

* Name formats *

* *

* You can append a version number or alias to any of the formats. The * length constraint applies only to the full ARN. If you specify only the * function name, it is limited to 64 characters in length. *

*

* Constraints:
* Length: 1 - 170
* Pattern: * (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{ * 1}:)?(\d{12} * :)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?
* * @return

* The name of the Lambda function, version, or alias. *

*

* Name formats *

* *

* You can append a version number or alias to any of the formats. * The length constraint applies only to the full ARN. If you * specify only the function name, it is limited to 64 characters in * length. *

*/ public String getFunctionName() { return functionName; } /** *

* The name of the Lambda function, version, or alias. *

*

* Name formats *

* *

* You can append a version number or alias to any of the formats. The * length constraint applies only to the full ARN. If you specify only the * function name, it is limited to 64 characters in length. *

*

* Constraints:
* Length: 1 - 170
* Pattern: * (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{ * 1}:)?(\d{12} * :)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?
* * @param functionName

* The name of the Lambda function, version, or alias. *

*

* Name formats *

* *

* You can append a version number or alias to any of the * formats. The length constraint applies only to the full ARN. * If you specify only the function name, it is limited to 64 * characters in length. *

*/ public void setFunctionName(String functionName) { this.functionName = functionName; } /** *

* The name of the Lambda function, version, or alias. *

*

* Name formats *

* *

* You can append a version number or alias to any of the formats. The * length constraint applies only to the full ARN. If you specify only the * function name, it is limited to 64 characters in length. *

*

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Length: 1 - 170
* Pattern: * (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{ * 1}:)?(\d{12} * :)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?
* * @param functionName

* The name of the Lambda function, version, or alias. *

*

* Name formats *

* *

* You can append a version number or alias to any of the * formats. The length constraint applies only to the full ARN. * If you specify only the function name, it is limited to 64 * characters in length. *

* @return A reference to this updated object so that method calls can be * chained together. */ public InvokeRequest withFunctionName(String functionName) { this.functionName = functionName; return this; } /** *

* Choose from the following options. *

* *

* Constraints:
* Allowed Values: Event, RequestResponse, DryRun * * @return

* Choose from the following options. *

* * @see InvocationType */ public String getInvocationType() { return invocationType; } /** *

* Choose from the following options. *

* *

* Constraints:
* Allowed Values: Event, RequestResponse, DryRun * * @param invocationType

* Choose from the following options. *

* * @see InvocationType */ public void setInvocationType(String invocationType) { this.invocationType = invocationType; } /** *

* Choose from the following options. *

* *

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Allowed Values: Event, RequestResponse, DryRun * * @param invocationType

* Choose from the following options. *

* * @return A reference to this updated object so that method calls can be * chained together. * @see InvocationType */ public InvokeRequest withInvocationType(String invocationType) { this.invocationType = invocationType; return this; } /** *

* Choose from the following options. *

* *

* Constraints:
* Allowed Values: Event, RequestResponse, DryRun * * @param invocationType

* Choose from the following options. *

* * @see InvocationType */ public void setInvocationType(InvocationType invocationType) { this.invocationType = invocationType.toString(); } /** *

* Choose from the following options. *

* *

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Allowed Values: Event, RequestResponse, DryRun * * @param invocationType

* Choose from the following options. *

* * @return A reference to this updated object so that method calls can be * chained together. * @see InvocationType */ public InvokeRequest withInvocationType(InvocationType invocationType) { this.invocationType = invocationType.toString(); return this; } /** *

* Set to Tail to include the execution log in the response. * Applies to synchronously invoked functions only. *

*

* Constraints:
* Allowed Values: None, Tail * * @return

* Set to Tail to include the execution log in the * response. Applies to synchronously invoked functions only. *

* @see LogType */ public String getLogType() { return logType; } /** *

* Set to Tail to include the execution log in the response. * Applies to synchronously invoked functions only. *

*

* Constraints:
* Allowed Values: None, Tail * * @param logType

* Set to Tail to include the execution log in the * response. Applies to synchronously invoked functions only. *

* @see LogType */ public void setLogType(String logType) { this.logType = logType; } /** *

* Set to Tail to include the execution log in the response. * Applies to synchronously invoked functions only. *

*

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Allowed Values: None, Tail * * @param logType

* Set to Tail to include the execution log in the * response. Applies to synchronously invoked functions only. *

* @return A reference to this updated object so that method calls can be * chained together. * @see LogType */ public InvokeRequest withLogType(String logType) { this.logType = logType; return this; } /** *

* Set to Tail to include the execution log in the response. * Applies to synchronously invoked functions only. *

*

* Constraints:
* Allowed Values: None, Tail * * @param logType

* Set to Tail to include the execution log in the * response. Applies to synchronously invoked functions only. *

* @see LogType */ public void setLogType(LogType logType) { this.logType = logType.toString(); } /** *

* Set to Tail to include the execution log in the response. * Applies to synchronously invoked functions only. *

*

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Allowed Values: None, Tail * * @param logType

* Set to Tail to include the execution log in the * response. Applies to synchronously invoked functions only. *

* @return A reference to this updated object so that method calls can be * chained together. * @see LogType */ public InvokeRequest withLogType(LogType logType) { this.logType = logType.toString(); return this; } /** *

* Up to 3,583 bytes of base64-encoded data about the invoking client to * pass to the function in the context object. *

* * @return

* Up to 3,583 bytes of base64-encoded data about the invoking * client to pass to the function in the context object. *

*/ public String getClientContext() { return clientContext; } /** *

* Up to 3,583 bytes of base64-encoded data about the invoking client to * pass to the function in the context object. *

* * @param clientContext

* Up to 3,583 bytes of base64-encoded data about the invoking * client to pass to the function in the context object. *

*/ public void setClientContext(String clientContext) { this.clientContext = clientContext; } /** *

* Up to 3,583 bytes of base64-encoded data about the invoking client to * pass to the function in the context object. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param clientContext

* Up to 3,583 bytes of base64-encoded data about the invoking * client to pass to the function in the context object. *

* @return A reference to this updated object so that method calls can be * chained together. */ public InvokeRequest withClientContext(String clientContext) { this.clientContext = clientContext; return this; } /** *

* The JSON that you want to provide to your Lambda function as input. *

*

* You can enter the JSON directly. For example, * --payload '{ "key": "value" }'. You can also specify a file * path. For example, --payload file://payload.json. *

* * @return

* The JSON that you want to provide to your Lambda function as * input. *

*

* You can enter the JSON directly. For example, * --payload '{ "key": "value" }'. You can also specify * a file path. For example, * --payload file://payload.json. *

*/ public java.nio.ByteBuffer getPayload() { return payload; } /** *

* The JSON that you want to provide to your Lambda function as input. *

*

* You can enter the JSON directly. For example, * --payload '{ "key": "value" }'. You can also specify a file * path. For example, --payload file://payload.json. *

* * @param payload

* The JSON that you want to provide to your Lambda function as * input. *

*

* You can enter the JSON directly. For example, * --payload '{ "key": "value" }'. You can also * specify a file path. For example, * --payload file://payload.json. *

*/ public void setPayload(java.nio.ByteBuffer payload) { this.payload = payload; } /** *

* The JSON that you want to provide to your Lambda function as input. *

*

* You can enter the JSON directly. For example, * --payload '{ "key": "value" }'. You can also specify a file * path. For example, --payload file://payload.json. *

*

* Returns a reference to this object so that method calls can be chained * together. * * @param payload

* The JSON that you want to provide to your Lambda function as * input. *

*

* You can enter the JSON directly. For example, * --payload '{ "key": "value" }'. You can also * specify a file path. For example, * --payload file://payload.json. *

* @return A reference to this updated object so that method calls can be * chained together. */ public InvokeRequest withPayload(java.nio.ByteBuffer payload) { this.payload = payload; return this; } /** *

* Specify a version or alias to invoke a published version of the function. *

*

* Constraints:
* Length: 1 - 128
* Pattern: (|[a-zA-Z0-9$_-]+)
* * @return

* Specify a version or alias to invoke a published version of the * function. *

*/ public String getQualifier() { return qualifier; } /** *

* Specify a version or alias to invoke a published version of the function. *

*

* Constraints:
* Length: 1 - 128
* Pattern: (|[a-zA-Z0-9$_-]+)
* * @param qualifier

* Specify a version or alias to invoke a published version of * the function. *

*/ public void setQualifier(String qualifier) { this.qualifier = qualifier; } /** *

* Specify a version or alias to invoke a published version of the function. *

*

* Returns a reference to this object so that method calls can be chained * together. *

* Constraints:
* Length: 1 - 128
* Pattern: (|[a-zA-Z0-9$_-]+)
* * @param qualifier

* Specify a version or alias to invoke a published version of * the function. *

* @return A reference to this updated object so that method calls can be * chained together. */ public InvokeRequest withQualifier(String qualifier) { this.qualifier = qualifier; return this; } /** * Returns a string representation of this object; useful for testing and * debugging. * * @return A string representation of this object. * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getFunctionName() != null) sb.append("FunctionName: " + getFunctionName() + ","); if (getInvocationType() != null) sb.append("InvocationType: " + getInvocationType() + ","); if (getLogType() != null) sb.append("LogType: " + getLogType() + ","); if (getClientContext() != null) sb.append("ClientContext: " + getClientContext() + ","); if (getPayload() != null) sb.append("Payload: " + getPayload() + ","); if (getQualifier() != null) sb.append("Qualifier: " + getQualifier()); sb.append("}"); return sb.toString(); } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getFunctionName() == null) ? 0 : getFunctionName().hashCode()); hashCode = prime * hashCode + ((getInvocationType() == null) ? 0 : getInvocationType().hashCode()); hashCode = prime * hashCode + ((getLogType() == null) ? 0 : getLogType().hashCode()); hashCode = prime * hashCode + ((getClientContext() == null) ? 0 : getClientContext().hashCode()); hashCode = prime * hashCode + ((getPayload() == null) ? 0 : getPayload().hashCode()); hashCode = prime * hashCode + ((getQualifier() == null) ? 0 : getQualifier().hashCode()); return hashCode; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof InvokeRequest == false) return false; InvokeRequest other = (InvokeRequest) obj; if (other.getFunctionName() == null ^ this.getFunctionName() == null) return false; if (other.getFunctionName() != null && other.getFunctionName().equals(this.getFunctionName()) == false) return false; if (other.getInvocationType() == null ^ this.getInvocationType() == null) return false; if (other.getInvocationType() != null && other.getInvocationType().equals(this.getInvocationType()) == false) return false; if (other.getLogType() == null ^ this.getLogType() == null) return false; if (other.getLogType() != null && other.getLogType().equals(this.getLogType()) == false) return false; if (other.getClientContext() == null ^ this.getClientContext() == null) return false; if (other.getClientContext() != null && other.getClientContext().equals(this.getClientContext()) == false) return false; if (other.getPayload() == null ^ this.getPayload() == null) return false; if (other.getPayload() != null && other.getPayload().equals(this.getPayload()) == false) return false; if (other.getQualifier() == null ^ this.getQualifier() == null) return false; if (other.getQualifier() != null && other.getQualifier().equals(this.getQualifier()) == false) return false; return true; } }