#c# #amazon-web-services #aws-lambda
Вопрос:
Есть ли способ рекурсивно вызывать функцию AWS Lambda? Я наткнулся на класс AmazonLambdaClient
на https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Lambda/TLambdaClient.html Однако я не могу понять, как будет передан аргумент, который не является частью реальной лямбда-функции или списка аргументов обработчика функций. Например, функция public void TestFuncHandler(S3Event s3)
запускается при событии S3, однако эта функция предназначена для обработки большого пакета файлов. Как пакет может быть передан этой функции?
Комментарии:
1. S3Event представляет событие, инициированное службой S3, а не вами. Что ты пытаешься сделать? Как вы думаете, почему вам нужно рекурсивно вызывать лямбда-функцию?
2. Из вашего описания следует, что вы должны думать итеративно, а не рекурсивно, для обработки пакета файлов?
3. Если я повторю большую партию, время ожидания лямбды истечет через 15 минут. Как справиться с этой ситуацией? И если мы вызовем лямбду рекурсивно, у каждой лямбды будет свой собственный тайм-аут, следовательно, выполнение длительной задачи
4. Да, вы можете вызывать Лямбда-код (синхронно или асинхронно) из Лямбда-кода, но это почти наверняка не то, что вы хотите, поэтому давайте сначала разберемся в корне проблемы. Почему вы повторяете большую партию? Вы явно вызывали Лямбда-код с помощью этого пакета или служба AWS (какая именно?) запускала Лямбда-код с помощью этого пакета? Если AWS запустил лямбда-код, у вас обычно есть контроль над размером пакета.
5. Вы можете использовать пакет SDK AWS C# для вызова любой функции Lambda, включая другой экземпляр Lambda, в котором вы сейчас работаете. Но почему вы это делаете? Вероятно, это не оптимально, и вы упускаете возможность научиться лучшим способам делать то, что вы пытаетесь сделать, но не хотите разглашать. Это имеет все признаки проблемы XY .