В чем причина тайм-аута ошибки передачи при подключении к sqs - PullRequest
0 голосов
/ 01 октября 2019

Я вижу эту ошибку в моих журналах:

[INFO]  2019-10-01T14:29:58.303Z    e8ad5b4e-119a-48c1-b320-1d855c4efb22    Getting SQS queue url from <some_sqs_queue>...
    14:30:16
[CRITICAL]  2019-10-01T14:30:16.743Z    e8ad5b4e-119a-48c1-b320-1d855c4efb22    ## Transmission Error Connect timeout on endpoint URL: "https://us-west-2.queue.amazonaws.com/"

, и это соответствующий код, который работает локально, но не на лямбда-выражении:

 sqs = boto3.client(
        'sqs', # region_name="us-west-2",
        aws_access_key_id=credentials.access_key,
        aws_secret_access_key=credentials.secret_key,
        aws_session_token=credentials.token,
        config=Config(connect_timeout=6, read_timeout=10, retries={'max_attempts': 2})
    )

и

try:
    logger.info(f"Getting SQS queue url from {sqs_queue}...")
    queue_url = sqs.get_queue_url(QueueName=sqs_queue)['QueueUrl']
    # iterate over entries in batches of 10
    for batch in [entries[index:index + sqs_batch_limit] for index in range(0, len(entries), sqs_batch_limit)]:
        logger.info(f"Sending batch of {len(batch)} records to sqs...")
        sqs.send_message_batch(
            QueueUrl=queue_url,
            Entries=batch
        )
        logger.info("Sent batch of records to sqs successful")

Он даже не получает sqs_queue_url, но работает локально. Каковы возможные причины этого журнала Ошибка передачи Ошибка подключения?

1 Ответ

2 голосов
/ 01 октября 2019

Немного попробывать:

  • Проверьте разрешения для лямбды - Вы НЕ ДОЛЖНЫ помещать в свою лямбду учетные данные. Лямбда должна быть настроена на использование роли IAM с правильной настройкой доступа, в данном случае SQS Read and Write. Это связано с тем, что Lambdas не наследуют разрешения так же, как при локальном запуске, поскольку у них нет файлов «.credentials» и «.config» в каталоге C: // users, которые при локальном запуске автоматически выбираются.
  • Убедитесь, что ваша очередь имеет правильные разрешения для доступа. Вы можете проверить это, зайдя в SQS-> Pick Your queue -> Затем проверьте вкладку полномочий.
  • Убедитесь, что ваша лямбда работает там, где она может достичь этой конечной точки. Например, это в заблокированной подсети или VPC? - для получения дополнительной информации о том, какие сервисные конечные точки используются AWS, перейдите по ссылке: https://docs.aws.amazon.com/general/latest/gr/rande.html#sqs_region

Надеюсь, что одна из них может помочь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...