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

如何基于CloudFormation的Mappings按Region自动选择AWS Backup调度表达式

解决AWS CloudFormation根据区域自动选择备份计划调度表达式的问题

问题分析

你当前的代码存在两处核心问题:一是!FindInMap用法不完整,缺少必要的属性键参数;二是资源定义位置错误,FSxBackupPlan直接放在Mappings块下不符合CloudFormation语法规范。另外你尝试的!If写法完全混淆了函数逻辑,无法实现需求。

正确实现代码

以下是修正后的完整模板,可实现根据部署区域自动匹配对应调度表达式的需求:

Parameters:
  FsxBackupPlanName:
    Type: String
    Description: Name of the FSx backup plan
  FsxBackupRuleName:
    Type: String
    Description: Name of the backup rule
  FSxBackupsVault:
    Type: String
    Description: ARN or name of the target backup vault

Mappings: 
  RegionMap: 
    us-east-1: 
      Schedule: "cron(00 19 * * ? *)"
    us-west-1: 
      Schedule: "cron(00 18 * * ? *)"
    eu-west-1: 
      Schedule: "cron(00 17 * * ? *)"
    ap-southeast-1: 
      Schedule: "cron(00 16 * * ? *)"
    ap-northeast-1: 
      Schedule: "cron(00 15 * * ? *)"

Resources:
  FSxBackupPlan:
    Type: "AWS::Backup::BackupPlan"
    Properties:
      BackupPlan:
        BackupPlanName: !Ref FsxBackupPlanName
        BackupPlanRule:
          -
            RuleName: !Ref FsxBackupRuleName
            TargetBackupVault: !Ref FSxBackupsVault
            StartWindowMinutes: 240
            ScheduleExpression: !FindInMap
              - RegionMap
              - !Ref 'AWS::Region'
              - Schedule

关键修正点说明

  • 统一映射属性键:将原映射中sched1、sched3这类差异化键名改为统一的Schedule,让!FindInMap可以通过固定键名获取对应区域的调度值,简化逻辑。
  • 补全!FindInMap参数:该函数必须传入三个参数:映射名称(RegionMap)、当前部署区域(!Ref 'AWS::Region')、要获取的属性键(Schedule),三者缺一不可。
  • 修复资源结构:所有CloudFormation资源必须放在Resources块内,原代码将FSxBackupPlan放在Mappings下属于语法错误。
  • 补充参数定义:模板中引用的FsxBackupPlanName等参数需要提前在Parameters块中定义,否则部署时会报错。

错误写法解释

  • 第一种写法缺少!FindInMap的第三个参数,CloudFormation无法识别要从区域节点中提取哪个值。
  • 第二种写法混淆了!If和!FindInMap的逻辑:!If是条件判断函数,需要传入条件、真分支、假分支三个参数,和!FindInMap的语法完全不兼容,因此无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:50:23