如何将无服务器的Step Function /状态机/ Lambda构建嵌套到现有的AWS ElasticBeanstalk应用程序中?

时间:2019-05-31 01:22:20

标签: amazon-web-services aws-lambda amazon-elastic-beanstalk serverless aws-step-functions

我已经使用AWS Step Functions编写了服务。我想将其集成到我们现有的Elastic Beanstalk开发过程中的应用程序中,在该过程中,我们拥有独特的dev,staging和production应用程序。每个阶段都有特定于应用程序的环境变量,我也想将其引入到Lambda函数中。

我目前不使用SAM,但是可以根据需要移植过来。

以下是反映我的serverless.yml文件的简化配置。

service:
  name: small-service

plugins:
  - serverless-webpack
  - serverless-step-functions
  - serverless-pseudo-parameters

provider:
  name: aws
  runtime: nodejs8.10
  stage: dev
  region: us-east-2
  iamRoleStatements:
    - Effect: "Allow"
      Action:
       - "s3:*"
      Resource: { "Fn::Join": ["", ["arn:aws:s3:::S3-bucket-name", "/*" ] ] }

functions:
  connect:
    handler: handler.connect

stepFunctions:
  stateMachines:
    smallService:
      name: small-service-${self:provider.stage}
      definition:
        Comment: Service that connects to things
        StartAt: Connect
        States:
          Connect:
            Type: Task
            Resource: arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:${self:service}-${self:provider.stage}-connect
            End: true

如何将步骤功能动态部署到不同的beantalk应用程序中?如何从Step Functions中访问ElasticBeanstalk环境属性?

是否有更好的方法将环境.env变量动态导入EB之外的无服务器应用程序中?我们正在将该服务集成到一个更大的AWS应用程序开发工作流程中,是否有一种更“无服务器”的方式来做到这一点?

1 个答案:

答案 0 :(得分:1)

将环境变量移至SSM Parameter Store。然后您可以

  1. reference SSM parameters in your serverless.yaml
  2. 在每次Lambda调用(see e.g. here)的开头获取SSM参数

请注意,前一种方法需要重新部署Lambda才能接收最新的SSM参数,而后一种则总是获取最新的参数值。