Я в основном пытаюсь понять, возможно ли то, что мне нужно, если у кого-то есть указатели на то, как это было бы даже лучше.
У меня есть ключ / секрет доступа от организации, с которой я работаю, которая предоставляет доступ к очереди 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) будут иметь аналогичную возможность.
Надеюсь, это поможет :)