如何使用 AWS CLI 将 Lambda 函数迁移到另一个 AWS 账户或区域?

2 分钟阅读
0

我需要在 AWS 账户或 AWS 区域之间迁移 AWS Lambda 函数。

简短描述

要将 Lambda 函数迁移到第二个 AWS 账户或区域,请使用 AWS 命令行界面(AWS CLI):

  1. 运行 GetFunction 命令,下载 Lambda 函数部署包
  2. 针对作为函数迁移目标的第二个 AWS 账户或区域,配置 AWS CLI。
    **注意:**您也可以为第二个 AWS 账户或区域配置新的 AWS CLI 配置文件
  3. 运行 CreateFunction 命令,在第二个 AWS 账户或区域中创建新函数。

**注意:**您也可以使用 Lambda 控制台AWS Serverless Application Model (AWS SAM) 迁移 Lambda 函数。

以下解决方法一次只允许您在不同账户或区域之间迁移一个函数。您不能直接以原生方式批量迁移 Lambda 函数。

解决方法

**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

运行 GetFunction 命令下载 Lambda 函数部署包

  1. 运行以下 GetFunction 命令:

    aws lambda get-function --function-name my-function

    **重要事项:**将 my-function 替换为想要迁移的函数的名称。

  2. 在命令响应中,打开**“位置”**后面的 URL 链接。该链接显示在类似于以下示例的代码块中:

    "Code": {        "RepositoryType": "S3",
            "Location": "https://awslambda-us-west-2-tasks.s3.us-west-2.amazonaws.com/snapshots/123456789012/my-function..."
        },

    **注意:****“位置”**后面的链接用于下载部署包。

针对作为函数迁移目标的第二个 AWS 账户或区域配置 AWS CLI

  1. 运行以下 Configure 命令:
    aws configure --profile profilename
    **重要事项:**将第二个 AWS 账户或区域的 profilename 更改为可识别的名称。
  2. 输入以下输入值以传递第二个 AWS 账户和区域的 AWS Identity and Access Management (IAM) 用户凭证:
    **AWS 访问密钥 ID [None]:**在第二个 AWS 账户中输入 IAM 用户的访问密钥。或者,如果您要将函数迁移到其他区域,请在您的第一个 AWS 账户中输入 IAM 用户的访问密钥。
    **AWS 秘密访问密钥 [None]:**输入同一 IAM 用户的秘密访问密钥。
    **默认区域名称 [None]:**输入函数的迁移目的地 AWS 区域。

有关详细信息,请参阅配置 AWS CLI

运行 CreateFunction 命令,在第二个 AWS 账户或区域中创建新函数。

**注意:**需要 Lambda 函数部署包和执行角色才能运行 CreateFunction 命令。

  1. 使用您之前配置的 AWS CLI 配置文件运行以下 CreateFunction 命令:
    aws lambda create-function \    --function-name my-function \
        --runtime nodejs18.x \    
        --zip-file fileb://my-function.zip \   
        --handler my-function.handler \
        --role arn:aws:iam::123456789012:role/service-role/MyTestFunction-role-tges6bf4 \
        --profile profilename
    **注意:**在此命令中,将以下值替换为要迁移的函数中的信息:
    function-name 处,输入您的函数名称。
    runtime 处,输入函数的运行时。
    zip-file 处,输入函数部署包的文件路径。
    handler 处,输入函数的处理程序名称。
    role 处,输入函数迁移目标 AWS 账户中的 Lambda 执行角色 ARN。
    profile 处,输入在运行 Configure 命令时创建的 AWS CLI 配置文件名称。
    如果要将函数迁移到另一个区域,但要将其保留在同一个账户中,则可以保留执行角色。
  2. 请运行以下 list-functions 命令,确认迁移是否成功:
    aws lambda list-functions \    --profile profilename
    **注意:**将 profilename 替换为运行 Configure 命令时创建的 AWS CLI 配置文件名称。
AWS 官方
AWS 官方已更新 7 个月前