Skip to content

gagoar/invoke-aws-lambda

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

GitHub Marketplace Workflow codecov MIT license

Invoke AWS Lambda

This action allows you to synchronously invoke a Lambda function and get the response (if desired).

Table of contents


Input parameters

Credentials

Key Type Required Description
AWS_ACCESS_KEY_ID string Yes Access Key ID
AWS_SECRET_ACCESS_KEY string Yes Secret Access Key
AWS_SESSION_TOKEN string No Session Token
REGION string No Default us-east-1. Region where the Lambda function has been created.

AWS Security Credentials reference
AWS Temporary Credentials reference

Invocation

Key Type Required Description
FunctionName string Yes Name of the Lambda function to be invoked.
InvocationType RequestResponse|
Event|
DryRun
No Default RequestResponse. See the AWS Javascript SDK docs for more info.
LogType Tail|None No Default None. Set to Tail to include the execution log in the response.
Payload string No JSON that you want to provide to your Lambda function as input.
Qualifier string No Version or alias of the function to be invoked.
ClientContext string No Base64-encoded data about the invoking client to pass to the function.
HTTP_TIMEOUT number No Sets the socket to timeout after timeout milliseconds of inactivity on the socket. Defaults to two minutes (120000). See the AWS Javascript SDK docs
MAX_RETRIES number No Returns the maximum amount of retries to perform for a service request. By default this value is calculated by the specific service object that the request is being made to. AWS Javascript SDK docs
SUCCEED_ON_FUNCTION_FAILURE boolean No Set to true if this action should succeed when the Lambda function executed returns an error

For more details on the parameters accepted by Lambda.invoke(), see the AWS Javascript SDK docs


Output

This step will store the JSON response from the Lambda function invocation in outputs.response, with the following properties:

Property Type Description
StatusCode integer HTTP status code - 200 if successful
ExecutedVersion string Version or alias of function that was executed
Payload string JSON returned by the function invocation, or error object
LogResult string Base64-encoded last 4KB of execution log, if LogType was set to Tail
FunctionError string If present, indicates that an error has occured, with more information in Payload

Note that you will have to parse the output using the fromJSON function before accessing individual properties.
See the Using Output example for more details.


Examples

Basic example

This step invokes a Lambda function without regard for the invocation output:

- name: Invoke foobarFunction Lambda
  uses: gagoar/invoke-aws-lambda@master
  with:
    AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
    AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    FunctionName: foobarFunction
    Payload: '{ "myParameter": false }'

Using output

These steps process the response payload by using step outputs:

- name: Invoke foobarFunction Lambda
  id: foobar
  uses: gagoar/invoke-aws-lambda@master
  with:
    AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
    AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    FunctionName: foobarFunction
    Payload: '{ "myParameter": false }'
- name: Store response payload to file
  run: echo '${{ fromJSON(steps.foobar.outputs.response).Payload }}' > invocation-response.json

Notice the addition of the id field to the invocation step.
For more information for Github Actions outputs, see their reference.

Specifying alias/version

This step invokes a Lambda function with the someAlias alias:

- name: Invoke foobarFunction Lambda
  uses: gagoar/invoke-aws-lambda@master
  with:
    AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
    AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    FunctionName: foobarFunction
    Payload: '{ "myParameter": false }'
    Qualifier: someAlias

Similarly, if we wanted to invoke version 53 in particular, we would use:

...
  with:
    ...
    Qualifier: 53

Handling logs

These steps process logs returned from the invocation:

- name: Invoke foobarFunction Lambda
  id: foobar
  uses: gagoar/invoke-aws-lambda@master
  with:
    AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
    AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    FunctionName: foobarFunction
    LogType: Tail
    Payload: '{ "myParameter": false }'
- name: Store tail logs to file
  run: echo "${{ fromJSON(steps.foobar.outputs.response).LogResult }}" > invocation-logs.json

OpenID Credentials

You can also use OpenID Credentials via aws-actions/configure-aws-credentials:

  - name: Assume AWS role
        uses: aws-actions/configure-aws-credentials@v1
        with:
          role-to-assume: the_arn_of_the_role_you_want_to_assume
          aws-region: eu-west-1

      - name: Invoke the Lambda
        uses: gagoar/invoke-aws-lambda@master
        with:
          AWS_ACCESS_KEY_ID: ${{env.AWS_ACCESS_KEY_ID}}
          AWS_SECRET_ACCESS_KEY: ${{env.AWS_SECRET_ACCESS_KEY}}
          AWS_SESSION_TOKEN: ${{env.AWS_SESSION_TOKEN}}
          REGION: ${{env.AWS_REGION}}
          FunctionName: foobarFunction
          Payload: '{ "myParameter": false }'