我有以下一段连续汇集活动ARN的脚本 用于触发的新步骤功能。我还有一个每1分钟触发一次的cloudwatch事件触发器。
import boto3
import time
region = 'ap-southeast-1'
activity_arn = 'xxxxxxxx' #correct arn is filled here
while True:
client = boto3.client('stepfunctions', region_name=region)
response = client.get_activity_task(activityArn=activity_arn,
workerName='daily_market_data_batch')
activity_token = response['taskToken']
input_params = json.loads(response['input'])
# simulating running some long tasks by sending heartbeats
for i in range(10):
client.send_task_heartbeat(taskToken=activity_token)
time.sleep(1)
print("================")
print(input_params)
client.send_task_success(taskToken=activity_token, output='true')
这是状态机的设置方式
{
"Comment": "An example using a Task state.",
"StartAt": "getGreeting",
"Version": "1.0",
"TimeoutSeconds": 300,
"States":
{
"getGreeting": {
"Type": "Task",
"Resource": "arn:aws:states:ap-southeast-1:XXXXXXXXXX:activity:get_greeting",
"End": true
}
}
我期待看到的内容:
因为脚本具有永不停止的while循环,所以每当云监视触发新的步骤函数时,我都希望运行该脚本。当每个步骤函数运行时,我希望在我的脚本服务器端看到相应的打印输出“input_params”。
我实际观察到的是什么:
云监视确实每1分钟触发一次步骤功能。但是,我的脚本没有捕获所有步骤函数运行。正如您所看到的,有时步进功能会超时。在我的脚本服务器上,没有打印出错过的步骤函数运行。
我需要确保我的活动脚本永远不会错过任何触发的步骤功能。任何人都可以指出在我的脚本服务器端无法捕获某些步骤函数运行的原因是什么?非常感谢你。