Я n00b до AWS.
У меня есть лямбда, записанная в Java, которая обрабатывает события S3 из очереди SQS. События инициируются созданием файлов в указанном каталоге в корзине S3.
Лямбда-обработка одиночного события S3, полученного из очереди (т. Е. Создание одного файла), работает как ожидалось.
Если я создаю пакет из 5-10 файлов одновременно, запускается несколько экземпляров Lambda - обычно от 3 до 5 - для обработки результирующих событий. Некоторые из них будут работать без проблем, но по крайней мере один из них (а иногда и больше, чем один) даст сбой. Поведение является (несколько разочаровывающим) несовместимым.
Во время сбоя лямбды-ошибки возникает первая ошибка при попытке подключиться к AWS Secrets Manager:
com.amazonaws.http.conn.ssl.SdkTLSSocketFactory - connecting to secretsmanager.ap-southeast-2.amazonaws.com/<ip>:<port>
c.a.http.conn.ClientConnectionManagerFactory - java.lang.reflect.InvocationTargetException: null
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
... stack trace...
Caused by: org.apache.http.conn.ConnectTimeoutException: Connect to secretsmanager.ap-southeast-2.amazonaws.com:<port> [secretsmanager.ap-southeast-2.amazonaws.com/<ip>, secretsmanager.ap-southeast-2.amazonaws.com/<ip>, secretsmanager.ap-southeast-2.amazonaws.com/<ip>] failed: connect timed out
... stack trace...
Caused by: java.net.SocketTimeoutException: connect timed out
Соединение повторяется несколько раз Lambda, но всегда терпит неудачу. Лямбда-код перехватывает исключение и пытается выполнить некоторую очистку, но затем также не может подключиться к корзине S3:
com.amazonaws.http.conn.ssl.SdkTLSSocketFactory - Connecting socket to <s3 bucket>.s3.ap-southeast-2.amazonaws.com/<ip>:<port> with timeout 10000
c.a.http.conn.ClientConnectionManagerFactory - java.lang.reflect.InvocationTargetException: null
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
... stack trace...
Caused by: org.apache.http.conn.ConnectTimeoutException: Connect to <s3 bucket>.s3.ap-southeast-2.amazonaws.com:<port> [<s3 bucket>.s3.ap-southeast-2.amazonaws.com/<ip>] failed: connect timed out
... stack trace...
Caused by: java.net.SocketTimeoutException: connect timed out
Поскольку это поведение противоречиво, я не уверен в подходе к определению причины проблемы. это - я не могу понять, почему некоторые экземпляры Lambda полностью перестали работать, когда другие, работающие одновременно, работают без проблем.
Я использую следующие библиотеки из com.amazon aws в своем проекте Java:
aws-lambda-java-core: 1.2.0
aws-java-sdk-s3: 1.11.714
aws-java-sdk-events: 1.11.714
aws-java-sdk-secretsmanager: 1.11.718
aws-java-sdk-sqs: 1.11.719
Заранее благодарен за любую помощь.