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

上次更新日期:2021 年 2 月 3 日

我需要将 AWS Lambda 函数从一个 AWS 账户(或 AWS 区域)移动到另一个账户。如何使用 AWS 命令行界面 (AWS CLI) 执行此操作?

简短描述

要使用 AWS CLI 将 Lambda 函数迁移到另一个 AWS 账户或区域,请执行以下操作:

1.    运行 GetFunction 命令以下载 Lambda 函数部署程序包。

2.    为要将函数移动到的第二个 AWS 账户或区域配置 AWS CLI。
注意:您也可以为第二个 AWS 账户或区域配置新的 AWS CLI 配置文件

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

注意:您还可以使用 Lambda 控制台AWS 无服务器应用程序模型 (AWS SAM) 迁移 Lambda 函数

解决方法

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

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

1.    运行以下 GetFunction 命令:

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

重要提示:我的函数替换为要迁移的函数的名称。

2.    在命令响应中,打开 "Location": 之后的 URL 链接。链接将显示在类似于以下代码块的代码块中:

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

注意:打开 "Location": 后面的链接将下载部署程序包。

为要将函数移至的第二个 AWS 账户或区域配置 AWS CLI

1.    运行以下配置命令:

aws configure --profile profilename

重要提示:profilename 更改为您的第二个 AWS 账户或区域的可识别名称。

2.    输入以下输入值以传递第二个 AWS 账户和区域的 AWS Identity and Access Management (IAM) 用户证书:
对于 AWS Access Key ID [None]:在第二个 AWS 账户中输入 IAM 用户的访问密钥。或者,如果您要将函数迁移到另一个区域,请在您的第一个 AWS 账户中输入 IAM 用户的访问密钥。
对于 AWS Secret Access Key [None]:输入同一 IAM 用户的私有访问密钥。
对于 Default region name [None]:输入要将函数迁移到的 AWS 区域。

有关更多信息,请参阅配置 AWS CLI

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

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

1.    使用刚刚配置的 AWS CLI 配置文件运行以下 CreateFunction 命令:

aws lambda create-function \
    --function-name my-function \
    --runtime nodejs10.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,请输入您在运行配置命令时创建的 AWS CLI 配置文件名称。

注意: 如果您要将函数迁移到另一个 AWS 区域,但将其保留在同一 AWS 账户中,则可以继续使用相同的执行角色。

2.    运行以下 list-functions 命令以确认迁移是否有效:

aws lambda list-functions \
    --profile profilename

重要提示:profilename 替换为您在运行配置命令时创建的 AWS CLI 配置文件名称。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?