小编Mar*_* K.的帖子

如何在“AWS Step Functions”中共享数据而不在步骤之间传递数据

我使用AWS Step Functions并拥有以下工作流程

AWS Step Functions 工作流程

initStep - 这是一个 lambda 函数处理程序,它获取一些数据并将其发送给SQS外部服务。

activity = os.getenv('ACTIVITY')
queue_name = os.getenv('QUEUE_NAME')

def lambda_handler(event, context):
  event['my_activity'] = activity
  data = json.dumps(event)

  # Retrieving a queue by its name
  sqs = boto3.resource('sqs')
  queue = sqs.get_queue_by_name(QueueName=queue_name)

  queue.send_message(MessageBody=data, MessageGroupId='messageGroup1' + str(datetime.time(datetime.now())))

  return event
Run Code Online (Sandbox Code Playgroud)

validationWaiting - 它activity等待来自包含数据的外部服务的答案。

complete - 它是一个 lambda 函数处理程序,它使用initStep.

def lambda_handler(event, context):
  email = event['email'] if 'email' in event else None
  data = event['data'] if 'data' in event else None

  client …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services aws-step-functions

8
推荐指数
1
解决办法
8504
查看次数

如何为 AWS Step Functions 中的活动添加动态 TimeoutSeconds?

我在 step 函数中有一个活动TimeoutSeconds,如下所示:

ActivityWaiting:
    Type: Task
    ResultPath: $.output
    Resource: arn:aws:states:#{AWS::Region}:#{AWS::AccountId}:activity:myActivity
    TimeoutSeconds: 3600
Run Code Online (Sandbox Code Playgroud)

我想控制 的值TimeoutSeconds并使用上一步中的参数更改它。我试过这样的事情:

ActivityWaiting:
    Type: Task
    ResultPath: $.output
    Resource: arn:aws:states:#{AWS::Region}:#{AWS::AccountId}:activity:myActivity
    TimeoutSeconds: $.myTimeout
Run Code Online (Sandbox Code Playgroud)

但不幸的是,它没有奏效。

编辑:我想myTimeout在使用 python 执行 step 函数之前计算/定义时间。类似的东西:

data['myTimeout'] = getTimeout() #dymanic time in the seconds(ex 15000)

response = step_functions.start_execution(stateMachineArn=state_machine, input=json.dumps(data))
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-step-functions serverless

5
推荐指数
2
解决办法
643
查看次数