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

如何使用boto3下载Lambda部署包实现跨区域跨账号迁移

Lambda跨区域跨账号迁移部署包获取方案

response["Code"]返回的是Lambda函数部署包的存储信息,其中Location字段是AWS自动生成的有效期10分钟的预签名下载链接,只要你调用get_function接口时拥有对应函数的lambda:GetFunction权限,就可以直接通过该链接下载部署包,不需要额外申请S3存储桶的访问权限。

你直接访问链接报AccessDenied的常见原因有两个:

  • 直接将链接粘贴到浏览器发起请求,浏览器没有携带你调用get_function时使用的AWS身份凭证,预签名URL的权限和生成该URL的身份强关联
  • 调用get_function获取链接后超过10分钟才使用,预签名URL已过期失效

具体实现代码

下载部署包到本地

import boto3
import requests

# 初始化源账号对应区域的Lambda客户端
source_lambda_client = boto3.client('lambda', region_name='源区域ID')

# 获取函数配置与代码信息
resp = source_lambda_client.get_function(FunctionName="你的源函数名")
deploy_pkg_url = resp["Code"]["Location"]

# 直接请求预签名URL下载部署包
pkg_resp = requests.get(deploy_pkg_url)

# 保存到本地文件
with open("lambda_deploy_package.zip", "wb") as f:
    f.write(pkg_resp.content)

直接用于跨账号创建函数(无需本地存储)

import boto3
import requests

# 初始化源端Lambda客户端
source_lambda = boto3.client('lambda', region_name='us-east-2')
# 初始化目标端Lambda客户端(需配置目标账号的访问凭证、目标区域)
target_lambda = boto3.client('lambda', region_name='ap-southeast-1')

# 获取源函数信息
resp = source_lambda.get_function(FunctionName="myFunc")
func_config = resp["Configuration"]
pkg_content = requests.get(resp["Code"]["Location"]).content

# 在目标账号创建函数
target_lambda.create_function(
    FunctionName = func_config["FunctionName"],
    Runtime = func_config["Runtime"],
    # 注意替换为目标账号下的Lambda执行角色ARN
    Role = "arn:aws:iam::目标账号ID:role/你的Lambda执行角色名",
    Handler = func_config["Handler"],
    Code = {
        "ZipFile": pkg_content
    },
    Description = func_config.get("Description", ""),
    Timeout = func_config.get("Timeout", 3),
    MemorySize = func_config.get("MemorySize", 128)
)

迁移注意事项

  • 预签名URL有效期仅10分钟,获取后需尽快使用,超时需重新调用get_function获取新链接
  • 跨账号迁移时,源函数配置中的执行角色ARN、环境变量关联的账号资源、层ARN都需要替换为目标账号下的对应资源,不可直接复用
  • 如果函数绑定了层,需要单独导出层的部署包,在目标账号提前创建层后再关联到新函数
  • 触发器配置(如API网关、S3事件触发等)不会随函数创建自动迁移,需要在目标账号单独配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:36:00