Кажется, я ответил на свой вопрос здесь.Документация AWS гласит : «Максимальное время, в течение которого служба удерживает запрос до ответа, составляет 60 секунд. Если в течение 60 секунд задача недоступна, опрос возвращает taskToken с пустой строкой.»
Тем не менее, вместо того, чтобы возвращать строку, я считаю, что в ответе JSON от StepFunctions вообще нет 'taskToken'.Этот цикл while работает:
import boto3
import time
import json
from botocore.config import Config as BotoCoreConfig
region = 'us-east-1'
boto_config = BotoCoreConfig(read_timeout=70, region_name=region)
sf_client = boto3.client('stepfunctions', config=boto_config)
activity_arn = 'arn:aws:states:us-east-1:754185699999:activity:Process_Imagery'
while True:
response = sf_client.get_activity_task(activityArn=activity_arn,
workerName='imagery_processor')
if 'taskToken' not in response:
print('No Task Token')
# time.sleep(2)
else:
print(response['taskToken'])
print("===================")
activity_token = response['taskToken']
sf_client.send_task_success(taskToken=activity_token, output='true')