use of com.amazonaws.services.lambda.AWSLambdaAsyncClient in project cs-actions by CloudSlang.
the class InvokeLambdaAction method execute.
/**
* Invokes an AWS Lambda Function in sync mode using AWS Java SDK
*
* @param identity Access key associated with your Amazon AWS or IAM account.
* Example: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
* @param credential Secret access key ID associated with your Amazon AWS or IAM account.
* @param proxyHost Optional - proxy server used to connect to Amazon API. If empty no proxy will be used.
* Default: ""
* @param proxyPort Optional - proxy server port. You must either specify values for both proxyHost and
* proxyPort inputs or leave them both empty.
* Default: ""
* @param proxyUsername Optional - proxy server user name.
* Default: ""
* @param proxyPassword Optional - proxy server password associated with the proxyUsername input value.
* Default: ""
* @param function Lambda function name to call
* Example: "helloWord"
* @param qualifier Optional - Lambda function version or alias
* Example: ":1"
* Default: "$LATEST"
* @param payload Optional - Lambda function payload in JSON format
* Example: "{"key1":"value1", "key1":"value2"}"
* Default: null
* @return A map with strings as keys and strings as values that contains: outcome of the action, returnCode of the
* operation, or failure message and the exception if there is one
*/
@Action(name = "Invoke AWS Lambda Function", outputs = { @Output(Outputs.RETURN_CODE), @Output(Outputs.RETURN_RESULT), @Output(Outputs.EXCEPTION) }, responses = { @Response(text = Outputs.SUCCESS, field = Outputs.RETURN_CODE, value = Outputs.SUCCESS_RETURN_CODE, matchType = MatchType.COMPARE_EQUAL, responseType = ResponseType.RESOLVED), @Response(text = Outputs.FAILURE, field = Outputs.RETURN_CODE, value = Outputs.FAILURE_RETURN_CODE, matchType = MatchType.COMPARE_EQUAL, responseType = ResponseType.ERROR) })
public Map<String, String> execute(@Param(value = IDENTITY, required = true) String identity, @Param(value = CREDENTIAL, required = true, encrypted = true) String credential, @Param(value = REGION, required = true) String region, @Param(value = PROXY_HOST) String proxyHost, @Param(value = PROXY_PORT) String proxyPort, @Param(value = PROXY_USERNAME) String proxyUsername, @Param(value = PROXY_PASSWORD) String proxyPassword, @Param(value = FUNCTION_NAME, required = true) String function, @Param(value = FUNCTION_QUALIFIER) String qualifier, @Param(value = FUNCTION_PAYLOAD) String payload, @Param(value = CONNECT_TIMEOUT) String connectTimeoutMs, @Param(value = EXECUTION_TIMEOUT) String execTimeoutMs) {
proxyPort = defaultIfEmpty(proxyPort, DefaultValues.PROXY_PORT);
connectTimeoutMs = defaultIfEmpty(connectTimeoutMs, DefaultValues.CONNECT_TIMEOUT);
execTimeoutMs = defaultIfBlank(execTimeoutMs, DefaultValues.EXEC_TIMEOUT);
qualifier = defaultIfBlank(qualifier, DefaultValues.DEFAULT_FUNCTION_QUALIFIER);
ClientConfiguration lambdaClientConf = AmazonWebServiceClientUtil.getClientConfiguration(proxyHost, proxyPort, proxyUsername, proxyPassword, connectTimeoutMs, execTimeoutMs);
AWSLambdaAsyncClient client = (AWSLambdaAsyncClient) AWSLambdaAsyncClientBuilder.standard().withClientConfiguration(lambdaClientConf).withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(identity, credential))).withRegion(region).build();
InvokeRequest invokeRequest = new InvokeRequest().withFunctionName(function).withQualifier(qualifier).withPayload(payload).withSdkClientExecutionTimeout(Integer.parseInt(execTimeoutMs));
try {
InvokeResult invokeResult = client.invoke(invokeRequest);
return OutputUtilities.getSuccessResultsMap(new String(invokeResult.getPayload().array()));
} catch (Exception e) {
return OutputUtilities.getFailureResultsMap(e);
}
}
Aggregations