/* * 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 *
*
* Function name – my-function
(name-only),
* my-function:v1
(with alias).
*
* Function ARN –
* arn:aws:lambda:us-west-2:123456789012:function:my-function
.
*
* Partial ARN – 123456789012:function:my-function
.
*
* 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. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function returns a
* response or times out. The API response includes the function response
* and additional data.
*
* Event
– Invoke the function asynchronously. Send events that
* fail multiple times to the function's dead-letter queue (if one is
* configured). The API response only includes a status code.
*
* DryRun
– Validate parameter values and verify that the user
* or role has permission to invoke the function.
*
* 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
.
*
* 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 *
*
* Function name – my-function
(name-only),
* my-function:v1
(with alias).
*
* Function ARN –
* arn:aws:lambda:us-west-2:123456789012:function:my-function
.
*
* Partial ARN – 123456789012:function:my-function
.
*
* 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 *
*
* Function name – my-function
(name-only),
* my-function:v1
(with alias).
*
* Function ARN –
* arn:aws:lambda:us-west-2:123456789012:function:my-function
* .
*
* Partial ARN –
* 123456789012:function:my-function
.
*
* 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 *
*
* Function name – my-function
(name-only),
* my-function:v1
(with alias).
*
* Function ARN –
* arn:aws:lambda:us-west-2:123456789012:function:my-function
.
*
* Partial ARN – 123456789012:function:my-function
.
*
* 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 *
*
* Function name – my-function
(name-only),
* my-function:v1
(with alias).
*
* Function ARN –
* arn:aws:lambda:us-west-2:123456789012:function:my-function
* .
*
* Partial ARN –
* 123456789012:function:my-function
.
*
* 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 *
*
* Function name – my-function
(name-only),
* my-function:v1
(with alias).
*
* Function ARN –
* arn:aws:lambda:us-west-2:123456789012:function:my-function
.
*
* Partial ARN – 123456789012:function:my-function
.
*
* 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 *
*
* Function name – my-function
(name-only),
* my-function:v1
(with alias).
*
* Function ARN –
* arn:aws:lambda:us-west-2:123456789012:function:my-function
* .
*
* Partial ARN –
* 123456789012:function:my-function
.
*
* 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. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function returns a
* response or times out. The API response includes the function response
* and additional data.
*
* Event
– Invoke the function asynchronously. Send events that
* fail multiple times to the function's dead-letter queue (if one is
* configured). The API response only includes a status code.
*
* DryRun
– Validate parameter values and verify that the user
* or role has permission to invoke the function.
*
* Constraints:
* Allowed Values: Event, RequestResponse, DryRun
*
* @return
* Choose from the following options. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function
* returns a response or times out. The API response includes the
* function response and additional data.
*
* Event
– Invoke the function asynchronously. Send
* events that fail multiple times to the function's dead-letter
* queue (if one is configured). The API response only includes a
* status code.
*
* DryRun
– Validate parameter values and verify that
* the user or role has permission to invoke the function.
*
* Choose from the following options. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function returns a
* response or times out. The API response includes the function response
* and additional data.
*
* Event
– Invoke the function asynchronously. Send events that
* fail multiple times to the function's dead-letter queue (if one is
* configured). The API response only includes a status code.
*
* DryRun
– Validate parameter values and verify that the user
* or role has permission to invoke the function.
*
* Constraints:
* Allowed Values: Event, RequestResponse, DryRun
*
* @param invocationType
* Choose from the following options. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function
* returns a response or times out. The API response includes the
* function response and additional data.
*
* Event
– Invoke the function asynchronously. Send
* events that fail multiple times to the function's dead-letter
* queue (if one is configured). The API response only includes a
* status code.
*
* DryRun
– Validate parameter values and verify
* that the user or role has permission to invoke the function.
*
* Choose from the following options. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function returns a
* response or times out. The API response includes the function response
* and additional data.
*
* Event
– Invoke the function asynchronously. Send events that
* fail multiple times to the function's dead-letter queue (if one is
* configured). The API response only includes a status code.
*
* DryRun
– Validate parameter values and verify that the user
* or role has permission to invoke the function.
*
* 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. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function
* returns a response or times out. The API response includes the
* function response and additional data.
*
* Event
– Invoke the function asynchronously. Send
* events that fail multiple times to the function's dead-letter
* queue (if one is configured). The API response only includes a
* status code.
*
* DryRun
– Validate parameter values and verify
* that the user or role has permission to invoke the function.
*
* Choose from the following options. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function returns a
* response or times out. The API response includes the function response
* and additional data.
*
* Event
– Invoke the function asynchronously. Send events that
* fail multiple times to the function's dead-letter queue (if one is
* configured). The API response only includes a status code.
*
* DryRun
– Validate parameter values and verify that the user
* or role has permission to invoke the function.
*
* Constraints:
* Allowed Values: Event, RequestResponse, DryRun
*
* @param invocationType
* Choose from the following options. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function
* returns a response or times out. The API response includes the
* function response and additional data.
*
* Event
– Invoke the function asynchronously. Send
* events that fail multiple times to the function's dead-letter
* queue (if one is configured). The API response only includes a
* status code.
*
* DryRun
– Validate parameter values and verify
* that the user or role has permission to invoke the function.
*
* Choose from the following options. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function returns a
* response or times out. The API response includes the function response
* and additional data.
*
* Event
– Invoke the function asynchronously. Send events that
* fail multiple times to the function's dead-letter queue (if one is
* configured). The API response only includes a status code.
*
* DryRun
– Validate parameter values and verify that the user
* or role has permission to invoke the function.
*
* 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. *
*
* RequestResponse
(default) – Invoke the function
* synchronously. Keep the connection open until the function
* returns a response or times out. The API response includes the
* function response and additional data.
*
* Event
– Invoke the function asynchronously. Send
* events that fail multiple times to the function's dead-letter
* queue (if one is configured). The API response only includes a
* status code.
*
* DryRun
– Validate parameter values and verify
* that the user or role has permission to invoke the function.
*
* 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.
*
* 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.
*
* 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.
*
* 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.
*
* 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.
*
* 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
.
*
* 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
.
*
* 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
.
*
* 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
.
*
* 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
.
*
* 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; } }