Я играл с AWS Amplify. Поскольку я относительно новичок в AWS, я большой поклонник того, как Amplify предоставляет мне необходимые ресурсы и роли IAM в AWS. Мой вопрос касается использования Lambda с GraphQL. Следуя документации, я могу создать собственный запрос GraphQL, который вызывает функцию Lambda и возвращает ответ GraphQL. Однако я не могу найти нигде в документации о том, как взаимодействовать с другими ресурсами AWS с помощью этой функции Lambda. Например, я хочу взаимодействовать с DynamoDB или даже службами RDS. В документации упоминается возможность извлекать данные из других ресурсов (например, из базы данных MySQL), поэтому я предполагаю, что это возможно.
Когда я пытался взаимодействовать с DynamoDB (например), я получал ошибку «доступ запрещен», и я предполагаю, что это связано с тем, что функция Lambda не имеет необходимой политики / разрешений для этого. Одна из моих идей заключалась в том, чтобы вручную войти в консоль IAM и самостоятельно прикрепить эти политики, но, учитывая, что Amplify генерирует все это для вас и по существу управляет вашей «облачной инфраструктурой / состоянием», я не уверен, что это правильный способ сделать это. . Я заметил шаблон Cloud Formation, который Amplify генерирует, когда вы добавляете ресурс Lambda для GraphQL, поэтому моей следующей догадкой было добавить туда политику DynamoDB, а затем запустить ampify push, чтобы Amplify сгенерировал и управлял политиками для меня. Если это правильный способ сделать это, я думаю, мне придется научиться писать шаблоны облачных форм. Наконец, мне интересно, мешает ли мой мозг, и могу ли я просто передать идентификационную информацию Cognito через AWS JavaScript SDK в Lambda, и тогда все будет просто «работать» — но я не совсем уверен. Заранее приношу свои извинения, если я использую неправильную терминологию — как я уже сказал, я относительно новичок в AWS. Любая помощь или направление приветствуются.
С последней версией aws-ampify от 30 мая 2019 г. вы можете
Образец кода:
Прочтите запись в блоге для получения дополнительной информации.
Ты прав. Вы можете изменить сценарий формирования облака, чтобы добавить разрешения для лямбда-выражения.
Но имейте в виду, что лямбда по умолчанию не в VPC, вы можете взаимодействовать с RDS, но не с экземпляром RDS в VPC. Как только вы поместите лямбда в тот же VPC, что и экземпляр RDS, вы сможете взаимодействовать с экземпляром, но не со службой RDS, потому что лямбда не имеет доступа к Интернету. Для этого вам понадобится конечная точка VPC или шлюз Nat.