ansible.builtin.lambda (v2.9.17) — module

Manage AWS Lambda functions

| "added in version" 2.2 of ansible.builtin"

Authors: Steyn Huizinga (@steynovich)

preview | supported by community

Install Ansible via pip

Install with pip install ansible==2.9.17

Description

Allows for the management of Lambda functions.


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Create Lambda functions
- name: looped creation
  lambda:
    name: '{{ item.name }}'
    state: present
    zip_file: '{{ item.zip_file }}'
    runtime: 'python2.7'
    role: 'arn:aws:iam::987654321012:role/lambda_basic_execution'
    handler: 'hello_python.my_handler'
    vpc_subnet_ids:
    - subnet-123abcde
    - subnet-edcba321
    vpc_security_group_ids:
    - sg-123abcde
    - sg-edcba321
    environment_variables: '{{ item.env_vars }}'
    tags:
      key1: 'value1'
  loop:
    - name: HelloWorld
      zip_file: hello-code.zip
      env_vars:
        key1: "first"
        key2: "second"
    - name: ByeBye
      zip_file: bye-code.zip
      env_vars:
        key1: "1"
        key2: "2"
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# To remove previously added tags pass an empty dict
- name: remove tags
  lambda:
    name: 'Lambda function'
    state: present
    zip_file: 'code.zip'
    runtime: 'python2.7'
    role: 'arn:aws:iam::987654321012:role/lambda_basic_execution'
    handler: 'hello_python.my_handler'
    tags: {}
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Basic Lambda function deletion
- name: Delete Lambda functions HelloWorld and ByeBye
  lambda:
    name: '{{ item }}'
    state: absent
  loop:
    - HelloWorld
    - ByeBye

Inputs

    
name:
    description:
    - The name you want to assign to the function you are uploading. Cannot be changed.
    required: true

role:
    description:
    - The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when it executes
      your function to access any other Amazon Web Services (AWS) resources. You may use
      the bare ARN if the role belongs to the same AWS account.
    - Required when C(state=present).

tags:
    description:
    - tag dict to apply to the function (requires botocore 1.5.40 or above).
    version_added: '2.5'
    version_added_collection: ansible.builtin

state:
    choices:
    - present
    - absent
    default: present
    description:
    - Create or delete Lambda function.

region:
    aliases:
    - aws_region
    - ec2_region
    description:
    - The AWS region to use. If not specified then the value of the AWS_REGION or EC2_REGION
      environment variable, if any, is used. See U(http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region)
    type: str

s3_key:
    description:
    - The Amazon S3 object (the deployment package) key name you want to upload.
    - C(s3_bucket) and C(s3_key) are required together.

ec2_url:
    aliases:
    - aws_endpoint_url
    - endpoint_url
    description:
    - URL to use to connect to EC2 or your Eucalyptus cloud (by default the module will
      use EC2 endpoints). Ignored for modules where region is required. Must be specified
      for all other modules if region is not used. If not set then the value of the EC2_URL
      environment variable, if any, is used.
    type: str

handler:
    description:
    - The function within your code that Lambda calls to begin execution.

profile:
    aliases:
    - aws_profile
    description:
    - Using I(profile) will override I(aws_access_key), I(aws_secret_key) and I(security_token)
      and support for passing them at the same time as I(profile) has been deprecated.
    - I(aws_access_key), I(aws_secret_key) and I(security_token) will be made mutually
      exclusive with I(profile) after 2022-06-01.
    type: str

runtime:
    description:
    - The runtime environment for the Lambda function you are uploading.
    - Required when creating a function. Uses parameters as described in boto3 docs.
    - Required when C(state=present).
    - For supported list of runtimes, see U(https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html).

timeout:
    default: 3
    description:
    - The function maximum execution time in seconds after which Lambda should terminate
      the function.

zip_file:
    aliases:
    - src
    description:
    - A .zip file containing your deployment package
    - If C(state=present) then either zip_file or s3_bucket must be present.

s3_bucket:
    description:
    - Amazon S3 bucket name where the .zip file containing your deployment package is
      stored.
    - If C(state=present) then either zip_file or s3_bucket must be present.
    - C(s3_bucket) and C(s3_key) are required together.

aws_config:
    description:
    - A dictionary to modify the botocore configuration.
    - Parameters can be found at U(https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config).
    - Only the 'user_agent' key is used for boto modules. See U(http://boto.cloudhackers.com/en/latest/boto_config_tut.html#boto)
      for more boto configuration.
    type: dict

description:
    description:
    - A short, user-defined function description. Lambda does not use this value. Assign
      a meaningful description as you see fit.

memory_size:
    default: 128
    description:
    - The amount of memory, in MB, your Lambda function is given.

aws_ca_bundle:
    description:
    - The location of a CA Bundle to use when validating SSL certificates.
    - Not used by boto 2 based modules.
    - 'Note: The CA Bundle is read ''module'' side and may need to be explicitly copied
      from the controller if not run locally.'
    type: path

aws_access_key:
    aliases:
    - ec2_access_key
    - access_key
    description:
    - C(AWS access key). If not set then the value of the C(AWS_ACCESS_KEY_ID), C(AWS_ACCESS_KEY)
      or C(EC2_ACCESS_KEY) environment variable is used.
    - If I(profile) is set this parameter is ignored.
    - Passing the I(aws_access_key) and I(profile) options at the same time has been deprecated
      and the options will be made mutually exclusive after 2022-06-01.
    type: str

aws_secret_key:
    aliases:
    - ec2_secret_key
    - secret_key
    description:
    - C(AWS secret key). If not set then the value of the C(AWS_SECRET_ACCESS_KEY), C(AWS_SECRET_KEY),
      or C(EC2_SECRET_KEY) environment variable is used.
    - If I(profile) is set this parameter is ignored.
    - Passing the I(aws_secret_key) and I(profile) options at the same time has been deprecated
      and the options will be made mutually exclusive after 2022-06-01.
    type: str

security_token:
    aliases:
    - aws_security_token
    - access_token
    description:
    - C(AWS STS security token). If not set then the value of the C(AWS_SECURITY_TOKEN)
      or C(EC2_SECURITY_TOKEN) environment variable is used.
    - If I(profile) is set this parameter is ignored.
    - Passing the I(security_token) and I(profile) options at the same time has been deprecated
      and the options will be made mutually exclusive after 2022-06-01.
    type: str

validate_certs:
    default: true
    description:
    - When set to "no", SSL certificates will not be validated for communication with
      the AWS APIs.
    type: bool

vpc_subnet_ids:
    description:
    - List of subnet IDs to run Lambda function in. Use this option if you need to access
      resources in your VPC. Leave empty if you don't want to run the function in a VPC.

dead_letter_arn:
    description:
    - The parent object that contains the target Amazon Resource Name (ARN) of an Amazon
      SQS queue or Amazon SNS topic.
    version_added: '2.3'
    version_added_collection: ansible.builtin

s3_object_version:
    description:
    - The Amazon S3 object (the deployment package) version you want to upload.

environment_variables:
    aliases:
    - environment
    description:
    - A dictionary of environment variables the Lambda function is given.
    version_added: '2.3'
    version_added_collection: ansible.builtin

vpc_security_group_ids:
    description:
    - List of VPC security group IDs to associate with the Lambda function. Required when
      vpc_subnet_ids is used.

debug_botocore_endpoint_logs:
    default: 'no'
    description:
    - Use a botocore.endpoint logger to parse the unique (rather than total) "resource:action"
      API calls made during a task, outputing the set to the resource_actions key in the
      task results. Use the aws_resource_action callback to output to total list made
      during a playbook. The ANSIBLE_DEBUG_BOTOCORE_LOGS environment variable may also
      be used.
    type: bool

Outputs

code:
  description: the lambda function location returned by get_function in boto3
  returned: success
  sample:
    location: a presigned S3 URL
    repository_type: S3
  type: dict
configuration:
  description: the lambda function metadata returned by get_function in boto3
  returned: success
  sample:
    code_sha256: SHA256 hash
    code_size: 123
    description: My function
    environment:
      variables:
        key: value
    function_arn: arn:aws:lambda:us-east-1:123456789012:function:myFunction:1
    function_name: myFunction
    handler: index.handler
    last_modified: 2017-08-01T00:00:00.000+0000
    memory_size: 128
    role: arn:aws:iam::123456789012:role/lambda_basic_execution
    runtime: nodejs6.10
    timeout: 3
    version: '1'
    vpc_config:
      security_group_ids: []
      subnet_ids: []
  type: dict