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

如何配置CloudFormation StackSet实现全局IAM与区域Lambda分区域部署?

CloudFormation StackSet 全局/区域资源分离部署解决方案

方案1:拆分两个独立StackSet(生产环境推荐)

该方案权责拆分清晰,全局资源的变更不会触发所有区域栈的更新,风险更低。

  • 单独创建1个全局资源专属StackSet:仅包含IAM角色这类全局资源,部署范围仅选择1个你指定的主区域(例如us-east-1)。由于IAM是全局服务,任意区域部署一次全账号生效,不会出现重复创建问题。
  • 再创建1个区域级资源专属StackSet:仅包含Lambda、区域级安全组、触发器等需要多区域部署的资源,部署范围选择所有目标区域。模板中直接引用全局StackSet输出的IAM角色ARN即可,不需要重复创建角色。

方案2:单StackSet模板加条件判断(适合小型场景,无需拆分Stack)

通过CloudFormation内置条件规则,控制全局资源仅在主区域创建:

  1. 在模板的Conditions块中定义主区域判断规则,直接调用AWS内置的区域伪参数即可,不需要额外传参:
Conditions:
  # 替换引号内的值为你指定的主区域ID,例如cn-north-1、us-east-1
  IsPrimaryRegion: !Equals [!Ref 'AWS::Region', 'us-east-1']
  1. 给所有全局IAM资源添加Condition属性,指定仅主区域部署时才创建该资源:
Resources:
  # 全局IAM角色,仅主区域创建
  LambdaExecutionRole:
    Type: AWS::IAM::Role
    Condition: IsPrimaryRegion
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws-cn:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

  # 区域级Lambda资源,所有区域都会创建
  RegionLambda:
    Type: AWS::Lambda::Function
    Properties:
      Runtime: python3.9
      Code:
        S3Bucket: your-bucket
        S3Key: lambda-code.zip
      Handler: index.handler
      # 直接引用全局角色ARN即可,非主区域也可正常调用全局IAM资源
      Role: !GetAtt LambdaExecutionRole.Arn

注意事项

  • 全局资源创建后建议通过模板的Outputs块加Export配置输出ARN,方便其他Stack直接引用,无需手动维护资源ID。
  • 若使用单模板条件判断方案,不要在非主区域的栈输出中引用仅主区域创建的资源,避免栈部署报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 17:54:07