标签: aws-step-functions

步骤功能:等待——它能持续多久?

我在 AWS 文档中找不到我想要的任何答案。

是否可以执行 100,000 个(大约)Step Functions 并且状态等待 3 个月?等待状态每30分钟检查一次,否则2个月后退出状态。

等待状态将执行 lambda 函数 - 它将在继续下一个状态之前检查字段 (dynamodb) 是否匹配条件。

我想知道有没有什么限制?

如果 WAIT 状态不是好方法,有什么替代方法?

amazon-web-services aws-lambda aws-step-functions

2
推荐指数
1
解决办法
7702
查看次数

从 lambda 函数同步调用步骤函数

我有一个由 FIFO SQS 触发的 lambda 函数。我只想运行该函数的一个实例。该函数调用状态机,并且状态机比 lambda 函数需要更长的时间才能完成。我希望 lambda 函数仅在步骤函数完成执行后才能完成。

amazon-sqs amazon-web-services aws-lambda aws-step-functions

2
推荐指数
1
解决办法
6158
查看次数

活动与 AWS Step Functions 中的新回调模式功能之间的区别

AWS 发布了 AWS Step Functions(回调模式)的新功能:

https://aws.amazon.com/about-aws/whats-new/2019/05/aws-step-functions-support-callback-patterns/

我现在想知道,与现有的活动实际上有什么区别。

让我为您总结一下:

  • 步骤函数可以等待活动并向其传递某些输入值
  • 任何服务(例如 CLI、EC2、lambda 等)都可以轮询活动中的作业;做某事并报告活动任务的成功或失败。
  • 然后步骤函数收到错误或成功

与新公布的回调模式有何不同?在我看来,其实是完全一样的——我是不是错过了什么?

amazon-web-services aws-step-functions

2
推荐指数
1
解决办法
1358
查看次数

如何将输入传递给步骤函数映射状态中的任务参数?

我创建了一个状态机来并行运行一些 Glue/ETL 作业。我正在试验映射状态以利用动态并行性。这是阶跃函数的定义:

{
 "StartAt": "Map",
 "States": {
   "Map": {
     "Type": "Map",
     "InputPath": "$.data",
     "ItemsPath": "$.array",
     "MaxConcurrency": 2,
     "Iterator": {
       "StartAt": "glue job",
       "States": {
         "glue Job": {
           "Type": "Task",
           "Resource": "arn:aws:states:::glue:startJobRun.sync",
           "End": true,
           "Parameters": {
             "JobName": "glue-etl-job",
             "Arguments": {
               "--db": "db-dev",
               "--file": "$.file",
               "--bucket": "$.bucket"
          }
        }
      }
    }
  },
  "Catch": [
    {
      "ErrorEquals": [
        "States.ALL"
      ],
      "Next": "NotifyError"
    }
  ],
  "Next": "NotifySuccess"
},

}
}
Run Code Online (Sandbox Code Playgroud)

传递给步骤函数的输入格式如下:

{
 "data": {
   "array": [
     {"file": "path-to-file1", "bucket": "bucket-name1"},
     {"file": "path-to-file2", "bucket": …
Run Code Online (Sandbox Code Playgroud)

aws-step-functions aws-glue

2
推荐指数
1
解决办法
3942
查看次数

在 AWS CDK 中设置状态机时,如何删除 Lambda 调用的默认重试策略?

我正在使用 AWS CDK 创建状态机。而不是默认的重试策略,如下所示:

  "Retry": [
    {
      "ErrorEquals": [
        "Lambda.ServiceException",
        "Lambda.AWSLambdaException",
        "Lambda.SdkClientException"
      ],
      "IntervalSeconds": 2,
      "MaxAttempts": 6,
      "BackoffRate": 2
    }
  ]
Run Code Online (Sandbox Code Playgroud)

我只想制定一项如下所示的包罗万象的政策:

"Retry": [
    {
      "ErrorEquals": [
        "States.ALL"
      ],
      "IntervalSeconds": 10,
      "MaxAttempts": 3,
      "BackoffRate": 1.5
    }
  ]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到在部署堆栈时删除默认策略的方法。我的包罗万象只是添加到重试策略数组的末尾。

"Retry": [
    {
      "ErrorEquals": [
        "Lambda.ServiceException",
        "Lambda.AWSLambdaException",
        "Lambda.SdkClientException"
      ],
      "IntervalSeconds": 2,
      "MaxAttempts": 6,
      "BackoffRate": 2
    },
    {
      "ErrorEquals": [
        "States.ALL"
      ],
      "IntervalSeconds": 10,
      "MaxAttempts": 3,
      "BackoffRate": 1.5
    }
  ]
Run Code Online (Sandbox Code Playgroud)

有人知道如何摆脱默认政策吗?

amazon-web-services retrypolicy aws-step-functions aws-cdk

2
推荐指数
1
解决办法
2589
查看次数

如何设置 Step 函数的 Headers.$ 输入来调用 api 网关?

当我使用step函数调用API网关时,我填写了“Headers.$”:“$.input.headers”,但是当我测试它时,它could not be used to start the Task: [The value of the field 'Headers' has an invalid format]每次都会给我,我尝试了这个

"input": {
        "headers": {
            "Authorization": "abcd",
            "Content-Type": "application-json"
        }
    }
Run Code Online (Sandbox Code Playgroud)

它不起作用,任何人都可以给我这个标题字段的示例吗?

万分感激!

amazon-web-services aws-step-functions

2
推荐指数
1
解决办法
2189
查看次数

有没有办法自定义状态机执行名称?

默认情况下,每个 AWS Step Function 执行名称都是随机生成的。我想为每个随机生成的名称添加一个前缀。我在文档中的任何地方都找不到执行此操作的方法。我设想这样做的方式是在定义 EventBridge 规则的 CloudFormation 模板中,但如果有我目前不知道的方式,我愿意接受建议。

有其他人能够做到这一点,还是我运气不好?

aws-cloudformation aws-step-functions aws-event-bridge

2
推荐指数
1
解决办法
2696
查看次数

如何使用文件中定义的状态机在本地执行 AWS Step Functions?

我已按照 AWS 文档中的步骤在本地设置和运行 AWS Step Functions:https: //docs.aws.amazon.com/step-functions/latest/dg/sfn-local-lambda.html

一切都运行良好,但在步骤 #5 中,它表示您必须创建一个状态机,并且当定义包含大量任务时,使用命令行执行此操作可能会很痛苦。

有没有办法开始执行本地 .asl 文件中定义的状态机?

这是我在本地定义的状态机的示例(从模板):

{
    "Comment": "A state machine that does mock stock trading.",
    "StartAt": "Check Stock Value",
    "States": {
        "Check Stock Value": {
            "Type": "Task",
            "Resource": "${StockCheckerFunctionArn}",
            "Retry": [
                {
                    "ErrorEquals": [
                        "States.TaskFailed"
                    ],
                    "IntervalSeconds": 15,
                    "MaxAttempts": 5,
                    "BackoffRate": 1.5
                }
            ],
            "Next": "Buy or Sell?"
        },
        "Buy or Sell?": {
            "Type": "Choice",
            "Choices": [
                {
                    "Variable": "$.stock_price",
                    "NumericLessThanEquals": 50,
                    "Next": "Buy Stock"
                }
            ],
            "Default": "Sell Stock" …
Run Code Online (Sandbox Code Playgroud)

aws-step-functions aws-sam-cli aws-sam

2
推荐指数
1
解决办法
1590
查看次数

AWS Step Functions:如何使用“传递”步骤“重命名”输入参数

我有一个状态机,其中包含以下相关状态:

States:
  'Analyze Report':
    Type: Task
    Resource: 'arn:aws:states:::lambda:invoke'
    Parameters:
      FunctionName: '(redacted)'
    OutputPath: '$.Payload'
    Next: 'Setup Email'
  'Setup Email':
    Type: Pass
    Result:
      recipients: '$.accounts'
      subject: 'some email subject'
      body: 'some email body'
    ResultPath: '$'
    Next: 'Send Email'
  'Send Email':
    Type: Task
    Resource: 'arn:aws:states:::lambda:invoke'
    Parameters:
      FunctionName: '(redacted)'
    OutputPath: '$.Payload'
    Next: '(some downstream task)'
Run Code Online (Sandbox Code Playgroud)

与该步骤关联的 lambda 函数的输出Analyze Report具有以下形式:

{
  "accounts": ["foo", "bar", "baz"],
  "error_message": null,
  "success": true
}
Run Code Online (Sandbox Code Playgroud)

与步骤关联的 lambda 函数Send Email需要以下形式的输入:

{
  "recipients": ["foo", "bar", "baz"],
  "subject": "some …
Run Code Online (Sandbox Code Playgroud)

aws-lambda aws-step-functions

2
推荐指数
1
解决办法
1820
查看次数

需要了解step function重试机制

也许这个问题可以很快得到解答。我正在努力在步骤函数中添加重试机制。我想以 1 小时左右的间隔继续重试失败的活动 24 小时。

我在这里详细介绍了“错误后重试”部分: https: //docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html 它说“乘数每次尝试期间重试间隔都会增加(默认为 2.0)。” 并且还给出了 3 秒后第一次重试和 4.5 秒后下一次重试的示例,因为 BackoffRate 为 1.5。

那么这不是指数退避吗?因为,在同一页面上的“使用重试处理失败”部分下,它表示退避将以指数方式应用。

aws-step-functions

2
推荐指数
1
解决办法
1787
查看次数