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

如何通过eu-west-1的CloudFormation栈在us-east-1部署Lambda函数(非自定义资源)

跨区域通过CloudFormation部署Lambda函数的方案

一、通用跨区域创建/部署Lambda的方法

这里有两种主流的原生方案,完全不需要依赖自定义资源:

1. 使用CloudFormation StackSets(官方推荐多区域/多账户部署方式)

StackSets是CloudFormation专门用来批量管理多区域、多账户栈的服务,完美匹配你不想用自定义资源的需求。具体操作逻辑如下:

  • 在你的**管理员区域(eu-west-1)**创建一个StackSet,把定义Lambda函数的CloudFormation模板配置进去。
  • 设定StackSet的部署目标,明确指定要部署到的区域(比如us-east-1),同时提前配置好StackSet所需的服务角色,确保它能在目标区域创建资源。
  • 一旦StackSet创建完成,CloudFormation会自动在us-east-1区域生成对应的栈和Lambda函数;后续如果要更新Lambda,直接修改StackSet就能同步到目标区域,非常省心。

给你一个简单的Lambda模板片段,可以直接用到StackSet里:

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyCrossRegionLambda:
    Type: AWS::Lambda::Function
    Properties:
      Handler: index.lambda_handler
      Runtime: python3.11
      Code:
        ZipFile: |
          import json
          def lambda_handler(event, context):
              return {
                  'statusCode': 200,
                  'body': json.dumps('Hello from cross-region Lambda!')
              }
      Role: !GetAtt LambdaExecutionRole.Arn
  LambdaExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: lambda.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

2. 通过AWS CLI/SDK跨区域部署独立栈

如果只是单次从eu-west-1触发部署到us-east-1,不需要批量管理,你可以在eu-west-1的环境(比如EC2实例、本地CLI)执行跨区域命令:

  • 第一步:先把Lambda代码打包并上传到us-east-1区域的S3桶(也可以开启S3跨区域复制,确保目标区域能访问代码包)。用aws cloudformation package命令指定目标区域的桶:
    aws cloudformation package \
      --template-file lambda-template.yaml \
      --s3-bucket my-us-east-1-bucket \
      --region us-east-1 \
      --output-template-file packaged-template.yaml
    
  • 第二步:用打包后的模板在us-east-1创建栈:
    aws cloudformation deploy \
      --template-file packaged-template.yaml \
      --stack-name MyCrossRegionLambdaStack \
      --region us-east-1 \
      --capabilities CAPABILITY_IAM
    

二、针对你的特定场景(从eu-west-1栈部署到us-east-1,不用自定义资源)

优先选CloudFormation StackSets,这是最贴合需求的原生方案:

  • 你不需要在eu-west-1的栈里写任何自定义资源逻辑,只需要在eu-west-1创建StackSet,指定us-east-1作为目标区域就行。
  • StackSets会自动处理跨区域的资源创建、权限同步,后续更新Lambda时,直接修改StackSet就能同步到目标区域,维护成本极低。

注意事项

  • Lambda代码包存储:如果你的Lambda代码体积较大,建议在us-east-1单独创建S3桶存储代码包,避免跨区域访问的延迟和额外成本;用CloudFormation打包命令时,记得指定目标区域的桶。
  • IAM权限:不管用StackSets还是CLI部署,都要确保执行部署的实体(比如IAM用户、角色)拥有跨区域操作CloudFormation、Lambda的权限,以及对应S3桶的访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:03:15