我需要在 AWS 账户或 AWS 区域之间迁移 AWS Lambda 函数。
简短描述
要将 Lambda 函数迁移到第二个 AWS 账户或区域,请使用 AWS 命令行界面(AWS CLI):
- 运行 GetFunction 命令,下载 Lambda 函数部署包。
- 针对作为函数迁移目标的第二个 AWS 账户或区域,配置 AWS CLI。
**注意:**您也可以为第二个 AWS 账户或区域配置新的 AWS CLI 配置文件。
- 运行 CreateFunction 命令,在第二个 AWS 账户或区域中创建新函数。
**注意:**您也可以使用 Lambda 控制台或 AWS Serverless Application Model (AWS SAM) 迁移 Lambda 函数。
以下解决方法一次只允许您在不同账户或区域之间迁移一个函数。您不能直接以原生方式批量迁移 Lambda 函数。
解决方法
**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
运行 GetFunction 命令下载 Lambda 函数部署包
-
运行以下 GetFunction 命令:
aws lambda get-function --function-name my-function
**重要事项:**将 my-function 替换为想要迁移的函数的名称。
-
在命令响应中,打开**“位置”**后面的 URL 链接。该链接显示在类似于以下示例的代码块中:
"Code": { "RepositoryType": "S3",
"Location": "https://awslambda-us-west-2-tasks.s3.us-west-2.amazonaws.com/snapshots/123456789012/my-function..."
},
**注意:****“位置”**后面的链接用于下载部署包。
针对作为函数迁移目标的第二个 AWS 账户或区域配置 AWS CLI
- 运行以下 Configure 命令:
aws configure --profile profilename
**重要事项:**将第二个 AWS 账户或区域的 profilename 更改为可识别的名称。
- 输入以下输入值以传递第二个 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 命令。
- 使用您之前配置的 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 配置文件名称。
如果要将函数迁移到另一个区域,但要将其保留在同一个账户中,则可以保留执行角色。
- 请运行以下 list-functions 命令,确认迁移是否成功:
aws lambda list-functions \ --profile profilename
**注意:**将 profilename 替换为运行 Configure 命令时创建的 AWS CLI 配置文件名称。