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

如何通过Rundeck社区版实现AWS WAF Regional IP集自动化更新?

实现AWS WAF IP集自动更新的Rundeck最佳方案

针对你用Rundeck社区版实现AWS WAF IP白名单自动化的需求,这里有几个实用方案,完全不需要工程师手动获取ChangeToken:

最推荐:直接调用AWS API获取最新令牌

AWS WAF Regional本身提供了get-change-token命令,不需要依赖上一次更新的输出,直接就能拿到可用的ChangeToken。这个方法最省心,不用维护令牌存储,AWS会自动处理令牌的有效性。

在Rundeck作业的脚本步骤里这么写:

# 获取最新的ChangeToken
CHANGE_TOKEN=$(aws waf-regional get-change-token --query 'ChangeToken' --output text)

# 执行IP集更新
aws waf-regional update-ip-set \
  --ip-set-id "你的IP集ID" \
  --change-token "${CHANGE_TOKEN}" \
  --updates '[{"Action": "INSERT", "IPSetDescriptor": {"Type": "IPV4", "Value": "要添加的IP/32"}}]'

方案二:用Rundeck存储持久化令牌

如果因为某些原因不能用get-change-token,可以把每次更新返回的令牌存在Rundeck的Key Storage里,供下一次作业调用:

  • 第一步:在更新命令后用jq提取令牌,并存入Key Storage
    # 执行更新并提取令牌
    NEW_TOKEN=$(aws waf-regional update-ip-set ... | jq -r '.ChangeToken')
    
    # 存入Rundeck Key Storage(路径可自定义)
    rd storage create --path keys/waf/ip_set_changetoken --value "${NEW_TOKEN}" --type string --force
    
  • 第二步:下一次执行作业时,先读取存储的令牌
    # 从Key Storage读取令牌
    EXISTING_TOKEN=$(rd storage read --path keys/waf/ip_set_changetoken)
    
    # 用读取到的令牌执行更新,之后再覆盖存储的令牌
    NEW_TOKEN=$(aws waf-regional update-ip-set --change-token "${EXISTING_TOKEN}" ... | jq -r '.ChangeToken')
    rd storage create --path keys/waf/ip_set_changetoken --value "${NEW_TOKEN}" --type string --force
    

注意要给Rundeck执行节点配置好Key Storage的读写权限,避免令牌泄露。

方案三:用Rundeck作业链传递变量

如果你的更新流程是分多个作业执行的,可以用Rundeck的作业链功能传递令牌:

  • 第一个作业执行更新后,把ChangeToken设为作业输出变量(在步骤的"Output"里配置,比如CHANGE_TOKEN=${NEW_TOKEN})
  • 第二个作业通过作业引用的方式调用,直接引用上一个作业的输出变量:${jobref.output.CHANGE_TOKEN}
    这个方法适合固定流程的链式作业,但如果是单独触发的作业就不太适用。

额外注意事项

  • 确保Rundeck执行节点的IAM角色/用户拥有waf-regional:GetChangeToken和waf-regional:UpdateIPSet权限
  • 测试阶段可以手动执行命令验证令牌有效性,再集成到Rundeck作业中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:55:21