gpt4 book ai didi

amazon-web-services - Ansible Cloudwatch 规则报告失败的调用

转载 作者:行者123 更新时间:2023-12-04 03:14:35 26 4
gpt4 key购买 nike

我创建了一个 AWS lambda,它在我测试它以及通过 cloudwatch 规则手动创建一个 cron 作业时运行良好。

它将指标报告为调用(未失败),并记录有关执行的详细信息。

然后我决定删除手动创建的 cloudwatch 规则,以便使用 ansible 创建一个。

  - 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 }}"

这创建了几乎完全相同的 cloudwatch 规则。我可以看到手动创建的唯一区别是在目标中,lambda 版本/别名在手动创建时设置为默认值,而它设置为版本,使用 ansible 创建时具有相应的版本号。

使用 ansible 创建的 cloudwatch 规则只有调用失败。

知道这是为什么吗?我看不到任何日志。有没有办法可以使用 ansible 中的 cloudwatchevent_rule 模块将版本设置为默认值?

最佳答案

我也为此浪费了几个小时,同样的错误和同样的困惑(为什么没有失败调用的日志?),我将分享我的“解决方案”,它将解决问题给某人,并且将帮助其他人调试并找到最终解决方案。

注意:小心,这可能允许任何 AWS 账户执行您的 lambda 函数

由于您通过手动创建规则目标来调用函数,因此我假设您从 CloudWatch 向 lambda 添加了调用权限,但是当事件由 cli/api 创建和由de AWS 仪表板/控制台

如果您在委托(delegate)人“events.amazonaws.com”的 lambda 调用权限中添加源账户条件以防止任何 AWS 账户执行您的 lambda,只需将其删除(由您负责!)。

因此,如果您的 lambda 策略如下所示:

{
"Sid": "<sid>",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "lambda:InvokeFunction",,
"Condition": {
"StringEquals": {
"AWS:SourceAccount": "<account-id>"
}
},
"Resource": "arn:aws:lambda:<region>:<account-id>:function:<lambda-function>"
}

删除“条件”字段
{
"Sid": "sid",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "lambda:InvokeFunction",,
"Resource": "arn:aws:lambda:<region>:<account-id>:function:<lambda-function>"
}

“也许”它会为你工作。

我认为当事件由 cli/api 创建时,cloudwatch 事件所有者/创建者数据发生了一些奇怪的事情......也许是一个错误?没有把握。我会继续努力

关于amazon-web-services - Ansible Cloudwatch 规则报告失败的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43364956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com