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

2 分钟阅读
0

我需要将 AWS Lambda 函数从一个 AWS 账户或 AWS 区域转移到另一个 AWS 账户或区域。

简短描述

若要将 Lambda 函数迁移到其他 AWS 账户或区域,请使用 AWS Serverless Application Model(AWS SAM)文件

  1. 下载 Lambda 函数的 AWS SAM 文件及其部署包。
  2. 将 Lambda 函数的部署包上传到您要将函数迁移到的区域中的 Amazon Simple Storage Service(Amazon S3)桶。
  3. 使用 AWS SAM 文件和 AWS CloudFormation 在另一个 AWS 账户或区域中部署和管理新的 Lambda 函数。

有关详细信息,请参阅部署 Hello World 应用程序

**注意:**您也可以在 Lambda 控制台或 AWS 命令行界面(AWS CLI)中迁移 Lambda 函数。

解决方法

下载 Lambda 函数 AWS SAM 文件及其部署包

  1. Lambda 控制台中,选择左侧面板上的函数
  2. 选择要迁移的 Lambda 函数的名称。
  3. 在 Lambda 函数窗口中,选择操作,然后选择导出函数
  4. 在“导出函数”窗口中,选择下载 AWS SAM 文件
  5. 下载 AWS SAM 文件后,返回导出函数窗口,然后选择下载部署程序包以下载部署包。

将 Lambda 函数的部署包上传到您要将函数迁移到的 AWS 区域中的 Amazon S3 桶

  1. 使用您要将 Lambda 函数迁移到的 AWS 账户登录 Amazon S3 控制台
  2. 存储桶列表中,选择要将文件上传到的 S3 桶的名称。
  3. 选择上传
  4. 在“上传”页面上,选择添加文件
  5. 选择您下载的 Lambda 函数部署包。然后,选择打开
  6. 选择上传
  7. 选择文件和文件夹。若要打开部署包,请选择部署包文件名。
  8. 在文件的对象概览部分,记下 S3 URI 值。这是部署包的 S3 路径位置。请保存该值以供下一步使用。

使用 AWS SAM 文件和 AWS CloudFormation 在另一个 AWS 账户或区域中部署和管理新的 Lambda 函数

  1. 打开您下载的 Lambda 函数 AWS SAM 文件。

    示例 Lambda 函数 AWS SAM 文件代码

    AWSTemplateFormatVersion: '2010-09-09'
    Transform: 'AWS::Serverless-2016-10-31'
    Description: An AWS Serverless Specification template describing your function.
    Resources:
      MyLambdaFunction:
        Type: 'AWS::Serverless::Function'
        Properties:
          Handler: lambda_function.lambda_handler
          Runtime: python3.6
          CodeUri: .                #S3 bucket Link
          Description: ''
          MemorySize: 128
          Timeout: 6
          Role: 'arn:aws:iam::733097455070:role/service-role/FirstLambdaPolicy'    #Replace
          Environment:
            Variables:
              homelocation: .tmp
          Tags:
            sampleTag: test
          Tracing: Active
  2. CodeUri 之后,将**圆点(.)**替换为您在上一步中检索到的 Lambda 部署包的 S3 路径位置。

    **重要事项:确保创建 CloudFormation 堆栈的 AWS Identity and Access Management(IAM)用户对此 S3 对象拥有“s3:GetObject”**权限。

  3. 将函数迁移到其他 AWS 账户:
    对于 Role: 值,删除现有的 IAM 角色 ARN。然后,将该值替换为第二个 AWS 账户中的 IAM 角色 ARN。
    对于具有层的函数,在层中为第二个 AWS 账户添加权限,允许该层使用第一个账户的层。或者,将 AWS SAM 文件中的 Lambda 层 ARN 替换为第二个 AWS 账户中的 Lambda 层 ARN。

    -或-

    将函数迁移到另一个区域:
    对于 Role: 值,请继续使用现有的 IAM 角色 ARN。
    对于具有层的函数,请将 Lambda 层 ARN 替换为第二个 AWS 区域中的 Lambda 层 ARN。

    **重要事项:**对于虚拟私有云(VPC)中的函数,请将 SecurityGroupdIdsSubnetIds 的值替换为第二个 AWS 账户或区域中的资源。

  4. 对于带有事件源的函数,事件源配置不会作为从 Lambda 函数下载的 AWS SAM 文件的一部分导出。若要将原始事件源与第二个账户或区域的资源值进行匹配,请参阅“events”属性的语法。然后,将事件添加到您的第二个 AWS 账户或区域的 AWS SAM 文件中。

  5. 使用编辑后的 AWS SAM 文件在要将函数迁移到的第二个 AWS 账户或区域中创建 AWS CloudFormation 堆栈

    **注意:**在创建 AWS CloudFormation 堆栈后,迁移后的 Lambda 函数将显示在您的 Lambda 控制台中。

AWS 官方
AWS 官方已更新 8 个月前