Мое приложение должно выполнить следующие шаги:
- Во внешнем интерфейсе пользователь запускает лямбда-функцию с помощью API-шлюза, который
отправляет файл на s3.
- Когда файл поступает в s3, активируйте ту же лямбда-функцию для применения видео
распознавание и отправка jobId в SNS.
- Когда SNS получает сообщение, запустите ту же лямбда-функцию, чтобы получить
пометить данные и вернуть данные обратно пользователю с помощью шлюза API
Все шаги работают, когда я тестирую их по отдельности, но я не знаю, как заставить код работать вместе, как описано выше. Если мне нужно создать несколько лямбда-функций, используйте одну лямбду или попробуйте другой вариант.
Примечание: данные метки необходимо возвращать обратно пользователю через API
Должно быть что-то вроде этого:
rekognition = boto3.client("rekognition")
sns = boto3.client("sns")
def lambda_handler(event, context):
# should be triggered when s3 recives file after API call
response = rekognition.start_label_detection(
Video = {
"S3Object": {
"Bucket": BUCKET,
"Name": KEY
}
},
NotificationChannel = {
"SNSTopicArn": SNS_TOPIC_ARN,
"RoleArn": ROLE_ARN
}
)
# should be triggerd when sns message has arrived
if "Records" in event:
message = event["Records"][0]["Sns"]["Message"]
#perform get lables here from jobId...
# should return labels back to the user
return {
"statusCode": 200,
"body": json.dumps(lables),
"headers": {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json"
}
}