Amazon web services 如何根据CloudWatch规则部署带有触发器的StepFunciton?

Amazon web services 如何根据CloudWatch规则部署带有触发器的StepFunciton?,amazon-web-services,aws-lambda,amazon-cloudformation,aws-step-functions,Amazon Web Services,Aws Lambda,Amazon Cloudformation,Aws Step Functions,如何根据CloudWatch规则部署带有触发器的StepFunciton 无服务器工具有插件,但它还不支持CloudWatch事件 如果可以通过CloudFormation部署这样的管道,请提供一些示例CF模板和bash命令。听起来您需要一个CloudFormation模板来使用Lambda构建状态机 AWS Step函数支持Cloudformation模板、Cloudwatch事件触发器和API网关(如果需要) 关于AWS文档,有一个很好的教程可以用来在Cloudformation中设置状态机

如何根据CloudWatch规则部署带有触发器的StepFunciton

无服务器工具有插件,但它还不支持CloudWatch事件


如果可以通过CloudFormation部署这样的管道,请提供一些示例CF模板和bash命令。

听起来您需要一个CloudFormation模板来使用Lambda构建状态机

AWS Step函数支持Cloudformation模板、Cloudwatch事件触发器和API网关(如果需要)

关于AWS文档,有一个很好的教程可以用来在Cloudformation中设置状态机。你可以在这里找到:

对于bash命令,可以使用AWS CLI创建、删除和部署堆栈。以下是对文档的引用:

有关如何在Cloudformation中使用CLI的示例,请参见:

对于启动和停止执行,可以在以下位置找到AWS Step Functions CLI文档:


希望这有帮助

我也遇到了类似的问题,但在无服务器文档中找不到任何可以使其正常工作的内容。我通过遵循中提到的方法实现了它-创建一个cloudTrail来捕获事件,添加一个以状态机为目标的cloudwatch事件规则来触发状态机执行

你能告诉我你想加什么样的触发器吗?无服务器文档说明,只能添加http和计划事件来触发状态机。如果要添加任何其他事件触发器,必须创建执行状态机的lambda函数,并在lambda函数上添加触发器

我想在s3事件上添加一个触发器。 以下是对我有效的方法: 我使用AWS CDK来提供我的所有基础设施。为该bucket创建一个s3 bucket和相应的CloudTrail,以捕获CDK中的事件。以下是相同的代码段:

const mybucket= new s3.Bucket(this, 'myBucket', {
  bucketName: "my-bucket",
});

// cloud trail to log PutObject events to the s3 bucket
const trail = new cloudtrail.Trail(this, 'myBucketEventTrail');

// Adds an event selector to the bucket foo
trail.addS3EventSelector(
  [
    {
      bucket: myBucket,
      objectPrefix: 'input',
    },
  ],
  {
    includeManagementEvents: false,
    readWriteType: ReadWriteType.WRITE_ONLY,
  }
);
您可以查看AWS CDK。 现在,您可以在serverless.yml的状态机定义中创建CloudWatch规则,以在s3事件中触发状态机。以下是片段:

stepFunctions:
  stateMachines:
    my-step-functions:
      name: my-state-machine
      events:
        - cloudwatchEvent:
            event:
              source:
                - "aws.s3"
              detail-type:
                - "AWS API Call via CloudTrail"
              detail:
                eventName:
                  - "PutObject"
                requestParameters:
                  bucketName:
                    - "my-bucket"
      definition:
        Comment: "My test state machine"
        StartAt:...
       ...
现在,部署这两个并测试触发器。上述方法适用于s3事件。 如果您不想使用CDK,您可以自己使用CloudFormation模板并创建CloudTrail和相应的Cloudwatch事件规则来触发您的状态机

下面是一个描述如何创建CloudFormation模板的示例

希望有帮助!祝你好运