Integrations
You can use the Invoke Lambda Function action with the following integrations:
Requirements
The Invoke Lambda Function action requires sufficient IAM permissions - an adequate IAM policy similar to the one provisioned by the Automation with AWS (Core) CloudFormation template might look as follows:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:GetAlias", "lambda:GetFunctionConfiguration", "lambda:GetPolicy", "lambda:InvokeFunction", "lambda:ListAliases", "lambda:ListFunctions", "lambda:ListVersionsByFunction" ], "Resource": "*", "Effect": "Allow", "Sid": "LambdaInvokeFunctionAndDiscoverFunctions" } ] }
Refer to Overview of Managing Access Permissions to Your AWS Lambda Resources for details on how to create more granular/secure policies.
Configuration
To configure an Invoke Lambda Function action:
Complete the following settings:
Parameters
Specify the action parameters according to the following skeleton in JSON format – refer to lambda . invoke for details:
You typically only specify the FunctionName
and Payload
parameters, and not all parameters documented for lambda . invoke are applicable here (invocation-type
and log-type
are not meaningful, and outfile
is not supported).
You can inject contextual variables into the remote action payload, refer to Entity Variables for details.
Invoke Lambda Function skeleton
{ "FunctionName": "", "Payload": {}, "Qualifier": "", "ClientContext": {} }
Entity Variables
You can inject contextual workflow variables with workflow entities into the remote action payload template – currently available entities are:
Examples
-
Invoke Lambda Function — This parameters template demonstrates the Invoke Lambda Function action:
JSON escaping requirements
If a parameter within the JSON formatted parameters template is a JSON structure in itself (e.g. the Lambda function payload), it needs to be escaped before adding it as a value - this has two implications:
custom content needs to be escaped, which can be achieved by Composing action payloads with utility functions, specifically the $util.escapeJson() function
variables with conflicting content (e.g. multi line variables like JIRA's
$issue.fields.description
or Bamboo's$notification.textEmailContent
or JSON structures retrieved via JSONPath) need to be escaped twice, via$util.escapeJson($util.escapeJson(...))
- we are exploring options on how to make this easier in a future release
Invoke Lambda Function parameters example (escaped manually)
{ "FunctionName": "arn:aws:lambda:ap-southeast-2:123456789012:function:sample-AutomationWithAWSQuickstartLamb-1RRX37PWXZXLS", "Payload": "{ \"Event\":\"$event.simpleName\", \"Timestamp\": \"$event.timestamp\", \"TraceID\": \"$event.traceId\"}" }
Invoke Lambda Function parameters example (escaped with utility function)
{ "FunctionName": "arn:aws:lambda:ap-southeast-2:123456789012:function:sample-AutomationWithAWSQuickstartLamb-1RRX37PWXZXLS", "Payload": "$util.escapeJson('{ "Event": "$event.simpleName", "Timestamp": "$event.timestamp", "TraceID": "$event.traceId" }')" }
How-to Articles
Frequently Asked Questions (FAQ)
Atlassian account required