【问题标题】:Deploy the same function to different endpoint on ASW Lambda将相同的函数部署到 AWS Lambda 上的不同端点
【发布时间】:2019-10-23 09:20:16
【问题描述】:

我有一个使用无服务器框架成功部署到 AWS Lambda 的函数。

此函数依赖于我在serverless.yml 文件中设置的一些环境变量,如下所示

    provider:
        name: aws
        runtime: nodejs8.10
        stage: ${opt:stage,'dev'}
        region: ${opt:region,'eu-west-1'}
        deploymentBucket:
            name: my-bucket
        environment:
            MY_ENV_VAR: 'the value of my var'

functions:
    myFunction:
        handler: handler.myHandler
        events:
            - http:
                  path: executeFunction
                  method: post

现在我想部署相同的逻辑,只是将 MY_ENV_VAR 的值不同部署到不同的端点。如果我只是更改 MY_ENV_VAR 的值然后部署,端点不会更改。但即使我更改了deploymentBucket 和函数的名称,即myFunction,部署总是会生成相同的端点。

是否可以将相同的功能部署到不同的端点?

【问题讨论】:

    标签: aws-lambda serverless-framework


    【解决方案1】:

    更改服务名称不是一个非常可扩展的解决方案。您应该保留相同的服务名称并使用不同的 --stage 进行部署,以根据部署到的阶段获取不同的端点。您可以使用阶段来管理环境变量,以便在一个阶段将其设置为一个值,在另一个阶段将其设置为另一个值。请参阅this SO Question 中的示例。此外,nodejs8.10 是 AWS 上的 EOL。请改用 nodejs10.x。

    【讨论】:

    • 我认为 --stage 是为了隔离 dev、qa、prod 环境。我将您的建议视为使用 --stage 的一种可能性,也可以作为区分不同客户端或配置的安装的一种方式。你能确认一下吗?
    【解决方案2】:

    好吧,过了一会儿我想出了解决办法。

    serverless.yml 文件的第一个参数是service: myService

    更改该参数实际上会生成一个创建不同端点的部署。

    【讨论】:

      猜你喜欢
      • 2021-06-04
      • 2021-01-31
      • 2020-04-16
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2019-08-01
      相关资源
      最近更新 更多