ansible.builtin.lambda (v2.6.20) — 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.6.20

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'
  with_items:
    - 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 a 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
  with_items:
    - 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
    - s3_bucket and s3_key are required together

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

profile:
    aliases:
    - aws_profile
    description:
    - The I(profile) option is mutually exclusive with the I(aws_access_key), I(aws_secret_key)
      and I(security_token) options.
    type: str

runtime:
    description:
    - The runtime environment for the Lambda function you are uploading. Required when
      creating a function. Use parameters as described in boto3 docs. Current example
      runtime environments are nodejs, nodejs4.3, java8 or python2.7
    - Required when C(state=present)

timeout:
    default: 3
    description:
    - The function execution time at 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.
    - s3_bucket and 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).
    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

endpoint_url:
    aliases:
    - ec2_url
    - aws_endpoint_url
    - s3_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

aws_ca_bundle:
    description:
    - The location of a CA Bundle to use when validating SSL certificates.
    - '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.
    - The I(aws_access_key) and I(profile) options are mutually exclusive.
    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.
    - The I(aws_secret_key) and I(profile) options are mutually exclusive.
    type: str

security_token:
    aliases:
    - aws_session_token
    - session_token
    - 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.
    - The I(security_token) and I(profile) options are mutually exclusive.
    - Aliases I(aws_session_token) and I(session_token) have been added in version 3.2.0.
    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