You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Cloud Custodian策略部署为AWS Lambda函数?部署异常求助

解决Cloud Custodian部署Lambda函数不显示的问题

可能的遗漏点排查

  • AWS账户/区域不匹配:本地配置的AWS凭证可能对应其他账户,或者部署时指定的区域和Lambda控制台查看的区域不一致。执行aws sts get-caller-identity确认当前账户,部署命令务必加上--region参数指定目标区域。
  • 策略文件Lambda配置错误:如果策略的mode块缺少关键配置(比如type: lambda拼写错误、runtime版本不被AWS支持、指定的IAM角色不存在),Custodian会静默失败或跳过Lambda创建。
  • 权限不足:你的AWS凭证没有足够权限创建Lambda、IAM角色及相关资源,部署时会有日志提示,需要给当前IAM用户添加iam:CreateRole、iam:AttachPolicy、lambda:CreateFunction、lambda:AddPermission等权限。
  • Cloud Custodian版本兼容:旧版本Custodian的Lambda部署命令是c7n lambda deploy,新版本统一用c7n deploy,执行c7n --version确认版本后使用对应命令。

正确的Lambda部署流程

  1. 编写合规的策略文件(示例ec2-cleanup.yml):
policies:
  - name: stop-unused-ec2
    resource: ec2
    mode:
      type: lambda
      # 可指定现有IAM角色,或留空让Custodian自动创建(需权限)
      role: arn:aws:iam::123456789012:role/custodian-lambda-exec
      runtime: python3.10
      timeout: 300
      memory: 256
      events:
        - type: schedule
          rate: rate(1 day)
    filters:
      - type: unused
        days: 7
    actions:
      - stop

替换123456789012为你的AWS账户ID,runtime选择AWS Lambda支持的版本(如python3.9/3.10)。

  1. 执行部署命令:
# 新版本Custodian
c7n deploy -c ec2-cleanup.yml -s .deploy --region us-east-1

# 旧版本(v0.9.17及之前)
c7n lambda deploy -c ec2-cleanup.yml --region us-east-1

-s .deploy指定部署状态存储目录,方便后续更新或回滚。

  1. 验证部署结果:
  • 查看部署命令的输出日志,确认没有报错信息。
  • 登录AWS Lambda控制台,切换到指定区域,查找名称格式为c7n-<策略名>的函数。

内容的提问来源于stack exchange,提问作者Ramesh Thiyagarajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:07:30