我一直在使用 AWS Amplify。作为 AWS 的新手,我非常喜欢 Amplify 如何在 AWS 上为我配置必要的资源和 IAM 角色。我的问题是关于将 Lambda 与 GraphQL 结合使用。按照文档,我可以创建一个自定义 GraphQL 查询,该查询调用 Lambda 函数并返回 GraphQL 响应。但是,我在文档中找不到有关如何交互的任何地方其他 AWS 资源来自此 Lambda 函数。例如,我希望与 DynamoDB 甚至 RDS 服务进行交互。该文档提到能够从其他资源(例如 MySQL 数据库)提取数据,所以我假设这是可能的。
当我尝试与 DynamoDB 交互时(例如),我收到了“访问被拒绝”错误,我假设这是因为 Lambda 函数没有必要的策略/权限来执行此操作。我的一个想法是手动登录 IAM 控制台并自己附加这些策略,但考虑到 Amplify 会为您生成所有这些策略并实质上管理您的“云基础设施/状态”,我不确定这是否是正确的方法。我确实注意到当您为 GraphQL 添加 Lambda 资源时 Amplify 生成的 Cloud Formation 模板,因此我的下一个猜测是在那里添加 DynamoDB 策略,然后运行放大推力让 Amplify 为我生成和管理策略。如果这是正确的方法,我想我必须学习如何编写 Cloud Formation 模板。最后,我想知道我的大脑是否妨碍了我,以及我是否能够通过 Lambda 中的 AWS JavaScript SDK 传递 Cognito 身份信息,然后事情就会“正常” - 但我不完全确定。如果我没有使用正确的术语,我提前表示歉意 - 正如我所说,我对 AWS 还比较陌生。非常感谢任何帮助或指导。
你是对的。您可以修改云形成脚本以添加 lambda 的权限。
但请记住,lambda 默认情况下不在 VPC 中,您可以与 RDS 交互,但不能与 VPC 中的 RDS 实例交互。将 lambda 放入与 RDS 实例相同的 VPC 中后,您可以与该实例通信,但不能与 RDS 服务通信,因为 lambda 无法访问互联网。为此,您需要 VPC 终端节点或 Nat 网关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)