Назад | Перейти на главную страницу

Использование опроса AWS Lambda с внешним SQS

Я в основном пытаюсь понять, возможно ли то, что мне нужно, если у кого-то есть указатели на то, как это было бы даже лучше.

У меня есть ключ / секрет доступа от организации, с которой я работаю, которая предоставляет доступ к очереди AWS SQS (у меня также есть ARN для этой очереди). Теперь я хотел бы использовать лямбда-опрос AWS в этой очереди для выполнения лямбда-функции для входящих сообщений. Я не могу понять, как подключить внешний SQS к моей лямбда-функции. Я могу поставить ARN, но тогда разрешения отсутствуют. Интересно, могу ли я где-нибудь добавить ключ / секрет доступа или это вообще невозможно, и мне нужно реализовать опрос самостоятельно?

Правильно ли я понимаю, что SQS находится в одной учетной записи AWS, а ваша Lambda - в другой?

Если он находится в той же учетной записи, вы не должны использовать статический доступ и секретные ключи для выполнения Lambda. Правильный способ - создать Роль IAM с Политика который разрешает доступ SQS и выполняет Lambda с этой ролью. В Роль будет предоставлять ему временные учетные данные каждый раз при выполнении, это гораздо более безопасный вариант.

Это также можно сделать для разных учетных записей - роль Lambda IAM позволит предполагать роль из другой учетной записи. Но это немного сложнее.

В вашем случае, если учетные записи SQS и Lambda разные, вы можете указать ключи при открытии соединения с SQS. Если ваша Lambda написана на Python, вы можете сделать что-то вроде этого:

import boto3

s3_client = boto3.client('s3')    # This uses Lambda's IAM Role

sqs_client = boto3.client('sqs',  # This uses the provided SQS credentials
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
)

При этом вы можете читать из SQS, используя предоставленные учетные данные и писать, например. в S3 с помощью Lambda IAM Role.

Я уверен, что другие SDK (например, Node.JS) будут иметь аналогичную возможность.

Надеюсь, это поможет :)