Вам нужен уникальный идентификатор и проверьте его перед обработкой.
Посмотрите, есть ли у события. Например, событие Sample для «выражения cron» в правиле наблюдения за облаком предполагает, что вы получите что-то вроде этого:
{
"version": "0",
"id": "89d1a02d-5ec7-412e-82f5-13505f849b41",
"detail-type": "Scheduled Event",
"source": "aws.events",
"account": "123456789012",
"time": "2016-12-30T18:44:49Z",
"region": "us-east-1",
"resources": [
"arn:aws:events:us-east-1:123456789012:rule/SampleRule"
],
"detail": {}
}
В этом случае ваш код будет читать event.id и записывать это в S3 (например, yourbucket / running / 89d1a02d-5ec7-412e-82f5-13505f849b41). Когда лямбда запускается, она может перечислить ключи в «yourbucket / running» и посмотреть, совпадает ли event.id с любым из них.
Если ничего не найдено, создайте его.
Это не пуленепробиваемое решение, вы можете предположительно столкнуться с каким-либо состоянием гонки, скажем, если другая лямбда запускается, в то время как AWS медленно создает ключ, но быстро запускает другую лямбду, но это то, с чем вам придется жить если вы хотите использовать s3.