title: Ansible Cloudwatch rule reports failed invocations
body: <p>I have created an AWS lambda that works well when I test it and when I create a cron job manually through a cloudwatch rule.</p>
  
  <p>It reports metrics as invocations (not failed) and also logs with details about the execution.</p>
  
  <p>Then I decided to remove that manually created cloudwatch rule in order to create one with ansible. </p>
  
  <pre><code>  - name: Create lambda service.
      lambda:
        name: "{{ item.name }}"
        state: present
        zip_file: "{{ item.zip_file }}"
        runtime: 'python2.7'
        role: 'arn:aws:iam::12345678901:role/lambda_ecr_delete'
        handler: 'main.handler'
        region: 'eu-west-2'
        environment_variables: "{{ item.env_vars }}"
      with_items:
        - name: lamda_ecr_cleaner
          zip_file: assets/scripts/ecr-cleaner.zip
          env_vars:
            'DRYRUN': '0'
            'IMAGES_TO_KEEP': '20'
            'REGION': 'eu-west-2'
      register: new_lambda
  
    - name: Schedule a cloudwatch event.
      cloudwatchevent_rule:
        name: ecr_delete
        schedule_expression: "rate(1 day)"
        description: Delete old images in ecr repo.
        targets:
          - id: ecr_delete
            arn: "{{ item.configuration.function_arn }}"
      with_items: "{{ new_lambda.results }}"
  </code></pre>
  
  <p>That creates almost the exact same cloudwatch rule. The only difference I can see with the manually created one is in the targets, the lambda version / alias is set to Default when created manually while it is set to version, with a corresponding version number when created with ansible.</p>
  
  <p>The cloudwatch rule created with ansible has only failed invocations.</p>
  
  <p>Any idea why this is? I can't see any logs. Is there a way I can set the version to Default as well with the cloudwatchevent_rule module in ansible?</p>