Ключ параметра aws_default_lambda_role
должен иметь полный путь значения ARN роли, которая присоединена к кластеру Aurora и имеет связанную с ней правильную политику доступа лямбда.
Во-первых, включите IAM DB Authentication Enabled
, что означает, что учетными данными пользователей вашей базы данных можно управлять с помощью пользователей и ролей AWS IAM.
Шаги по созданию политики, созданию роли, присоединению политики к роли, привязке роли к кластеру Aurora следующие.
1. Создайте политику IAM для доступа к ресурсам AWS Lambda.
2. Создайте роль IAM, чтобы разрешить Amazon Aurora доступ к сервисам AWS с прикрепленной политикой.
3. Свяжите роль IAM с кластером БД MySQL Amazon Aurora, который должен использовать Lambda.
4. Задайте ключ параметра уровня кластера для связанного сервиса AWS равным ARN для связанной роли IAM. Используйте шаг 10 из веб-ссылки 3, указанной выше. Шаг 10 описывает aws_default_s3_role
, но нам просто нужно найти aws_default_lambda_role
.
5. Перейдите на Панель управления RDS
6. Нажмите Группы параметров.
7. Нажмите Создать группу параметров.
![Шаги 5, 6, 7 на картинке.](https://i.stack.imgur.com/KcMN7.png)
8. Выберите Семейство групп параметров aurora5.6
.
9. Выберите Тип DB Cluster Parameter Group
.
10. Введите в текстовое поле нужную конфигурацию Имя группы как someName56
.
11. Создайте, а затем Изменить параметры.
12. Найдите имя параметра aws_default_lambda_role
и введите ARN для роли IAM, созданной на шаге 4 выше. ![Шаг 12 с aws_default_lambda_role](https://i.stack.imgur.com/pBsb4.png)
Краткое объяснение
Важно помнить, что из-за задействованных уровней абстракции пользователи, роли и политики IAM разделяются. Политику можно привязать к пользователю или роли. но не может быть связан сам по себе с запущенными экземплярами, такими как EC2 или RDS. Чтобы присоединить S3 или Lambda доступ к коду, написанному на вашем локальном компьютере, необходимо использовать пользователя IAM с соответствующей политикой. Чтобы подключить доступ к внутренним сервисам Amazon, необходимо назначить роль IAM, например, разрешить RDS Aurora Cluster DB запускать Lambda с помощью CALL MySQL.lambda_async
Процедуры. Экземпляр RDS выполняет роль запуска лямбда-функции, поскольку он является внутренним для AWS, поэтому ему должна быть назначена роль IAM. Идея состоит в том, чтобы предоставить минимальный доступ, если не требуется больше, и как изменить файлы конфигурации, не имея прямого доступа к виртуальной машине RDS. Следовательно, значения группы параметров необходимо изменить, чтобы внести некоторые изменения в конфигурацию программного обеспечения БД без прямого подключения к виртуальной машине. Он разработан, чтобы быть проще, чем традиционный метод использования SSH или программного обеспечения для прямого подключения. Это также обеспечивает большую подотчетность, поскольку уровень абстракции, то есть консоль AWS, может отслеживать активность пользователей, чтобы определить, какой пользователь / сервис инициировал действие Lambda, чтобы помочь выявить проблемы.
Примечание
Я не эксперт, поэтому, пожалуйста, исправьте мое объяснение, так как я не совсем разбираюсь в AWS, поэтому я мог допустить ошибки в своих действиях или объяснении. Но это то, что я сделал, чтобы решить мою конкретную проблему.
РЕДАКТИРОВАТЬ: (минуты после публикации)
Моя конкретная проблема:
Когда я сделал прямой вызов в SQL, он дал мне следующий вывод об ошибке, который привел меня к описанным мною шагам для решения проблемы.
mysql> CALL mysql.lambda_async('arn:aws:lambda:us-region-1:02020202020:function:FuncSomeNameLambdaFunc', CONCAT('{ "subject" : "', 'subject contents', '", "message" : "', 'Message Contents', '" }') );
ERROR 1873 (HY000): Lambda API returned error: Missing designated IAM role (aws_default_lambda_role)
person
Paresh471
schedule
14.12.2017
aws_default_lambda_role
. - person lu1s   schedule 21.06.2017