如何将无服务器 Step Function/State Machine/Lambda 构建嵌套到现有 AWS CloudFormation ElasticBeanstalk 应用程序中?
How can I nest a serverless Step Function / State Machine / Lambda build into an existing AWS CloudFormation ElasticBeanstalk Application?
我使用 AWS Step Functions 编写了一项服务。我想将其集成到我们应用程序现有的 Elastic Beanstalk 开发流程中,其中我们有不同的开发、暂存和生产应用程序。每个阶段都有特定于应用程序的环境变量,我也想将其引入我的 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
如何将步骤函数动态部署到不同的 beanstalk 应用程序中?如何从 Step Functions 中访问 ElasticBeanstalk 环境属性?
是否有更好的方法将环境 .env
变量动态导入到 EB 之外的无服务器应用程序中?我们正在将该服务集成到更大的 AWS 应用程序开发工作流程中,是否有更多 "serverless" 的方法来做到这一点?
将您的环境变量移至 SSM Parameter Store。那么你可以
- reference SSM parameters in your serverless.yaml,或
- 在每次 Lambda 调用开始时获取 SSM 参数 (see e.g. here)
请注意,前一种方法需要 re-deploying 您的 Lambda 接收最新的 SSM 参数,而后者始终获取最新的参数值。
我使用 AWS Step Functions 编写了一项服务。我想将其集成到我们应用程序现有的 Elastic Beanstalk 开发流程中,其中我们有不同的开发、暂存和生产应用程序。每个阶段都有特定于应用程序的环境变量,我也想将其引入我的 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
如何将步骤函数动态部署到不同的 beanstalk 应用程序中?如何从 Step Functions 中访问 ElasticBeanstalk 环境属性?
是否有更好的方法将环境 .env
变量动态导入到 EB 之外的无服务器应用程序中?我们正在将该服务集成到更大的 AWS 应用程序开发工作流程中,是否有更多 "serverless" 的方法来做到这一点?
将您的环境变量移至 SSM Parameter Store。那么你可以
- reference SSM parameters in your serverless.yaml,或
- 在每次 Lambda 调用开始时获取 SSM 参数 (see e.g. here)
请注意,前一种方法需要 re-deploying 您的 Lambda 接收最新的 SSM 参数,而后者始终获取最新的参数值。