community.aws.aws_api_gateway (4.3.0) — module

Manage AWS API Gateway APIs

| "added in version" 1.0.0 of community.aws"

Authors: Michael De La Rue (@mikedlr)

Install collection

Install with ansible-galaxy collection install community.aws:==4.3.0


Add to requirements.yml

  collections:
    - name: community.aws
      version: 4.3.0

Description

Allows for the management of API Gateway APIs.

Normally you should give the api_id since there is no other stable guaranteed unique identifier for the API. If you do not give api_id then a new API will be created each time this is run.

swagger_file and swagger_text are passed directly on to AWS transparently whilst swagger_dict is an ansible dict which is converted to JSON before the API definitions are uploaded.


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Setup AWS API Gateway setup on AWS and deploy API definition
  community.aws.aws_api_gateway:
    swagger_file: my_api.yml
    stage: production
    cache_enabled: true
    cache_size: '1.6'
    tracing_enabled: true
    endpoint_type: EDGE
    state: present
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Update API definition to deploy new version
  community.aws.aws_api_gateway:
    api_id: 'abc123321cba'
    swagger_file: my_api.yml
    deploy_desc: Make auth fix available.
    cache_enabled: true
    cache_size: '1.6'
    endpoint_type: EDGE
    state: present
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Update API definitions and settings and deploy as canary
  community.aws.aws_api_gateway:
    api_id: 'abc123321cba'
    swagger_file: my_api.yml
    cache_enabled: true
    cache_size: '6.1'
    canary_settings: { percentTraffic: 50.0, deploymentId: '123', useStageCache: True }
    state: present

Inputs

    
stage:
    description:
    - The name of the stage the API should be deployed to.
    type: str

state:
    choices:
    - present
    - absent
    default: present
    description: Create or delete API Gateway.
    type: str

api_id:
    description:
    - The ID of the API you want to manage.
    type: str

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

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

profile:
    aliases:
    - aws_profile
    description:
    - Uses a boto profile. Only works with boto >= 2.24.0.
    - 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

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

cache_size:
    choices:
    - '0.5'
    - '1.6'
    - '6.1'
    - '13.5'
    - '28.4'
    - '58.2'
    - '118'
    - '237'
    default: '0.5'
    description:
    - Size in GB of the API GW cache, becomes effective when cache_enabled is true.
    type: str

deploy_desc:
    default: Automatic deployment by Ansible.
    description:
    - Description of the deployment.
    - Recorded and visible in the AWS console.
    type: str

swagger_dict:
    description:
    - Swagger definitions API ansible dictionary which will be converted to JSON and uploaded.
    type: json

swagger_file:
    aliases:
    - src
    - api_file
    description:
    - JSON or YAML file containing swagger definitions for API. Exactly one of I(swagger_file),
      I(swagger_text) or I(swagger_dict) must be present.
    type: path

swagger_text:
    description:
    - Swagger definitions for API in JSON or YAML as a string direct from playbook.
    type: str

aws_ca_bundle:
    description:
    - The location of a CA Bundle to use when validating SSL certificates.
    - Only used for boto3 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

cache_enabled:
    default: false
    description:
    - Enable API GW caching of backend responses.
    type: bool

endpoint_type:
    choices:
    - EDGE
    - REGIONAL
    - PRIVATE
    default: EDGE
    description:
    - Type of endpoint configuration.
    - Use C(EDGE) for an edge optimized API endpoint, C(REGIONAL) for just a regional
      deploy or C(PRIVATE) for a private API.
    - This flag will only be used when creating a new API Gateway setup, not for updates.
    type: str

aws_access_key:
    aliases:
    - ec2_access_key
    - access_key
    description:
    - AWS access key. If not set then the value of the AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY
      or 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:
    - AWS secret key. If not set then the value of the AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY,
      or 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:
    - AWS STS security token. If not set then the value of the AWS_SECURITY_TOKEN or 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 boto versions >= 2.6.0.
    type: bool

stage_variables:
    description:
    - ENV variables for the stage. Define a dict of key values pairs for variables.
    type: dict

tracing_enabled:
    default: false
    description:
    - Specifies whether active tracing with X-ray is enabled for the API GW stage.
    type: bool

stage_canary_settings:
    description:
    - Canary settings for the deployment of the stage.
    - 'Dict with following settings:'
    - 'C(percentTraffic): The percent (0-100) of traffic diverted to a canary deployment.'
    - 'C(deploymentId): The ID of the canary deployment.'
    - 'C(stageVariableOverrides): Stage variables overridden for a canary release deployment.'
    - 'C(useStageCache): A Boolean flag to indicate whether the canary deployment uses
      the stage cache or not.'
    - See docs U(https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/apigateway.html#APIGateway.Client.create_stage)
    type: dict

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

api_id:
  description: API id of the API endpoint created
  returned: success
  sample: 0ln4zq7p86
  type: str
configure_response:
  description: AWS response from the API configure call
  returned: success
  sample:
    api_key_source: HEADER
    created_at: '2020-01-01T11:37:59+00:00'
    id: 0ln4zq7p86
  type: dict
deploy_response:
  description: AWS response from the API deploy call
  returned: success
  sample:
    created_date: '2020-01-01T11:36:59+00:00'
    description: Automatic deployment by Ansible.
    id: rptv4b
  type: dict
resource_actions:
  description: Actions performed against AWS API
  returned: always
  sample:
  - apigateway:CreateRestApi
  - apigateway:CreateDeployment
  - apigateway:PutRestApi
  type: list