为什么我们在获取 Kinesis Stream 时向 Lambda 授予权限,而不是相反?

Why we give permissions to Lambda while fetching Kinesis Stream and not the other way around?

我有一个从 Kinesis 流中获取数据的 lambda。在分配权限时,我们为 lambda 执行角色提供了访问 Kinesis 流的策略。但是,我们没有向 Kinesis 授予任何允许 lambda 从中获取数据的权限?为什么会这样?

同样,lambda 和 Dynamodb 也是类似的情况。但是当我们将 lambda 与 Api 网关集成时,在这种情况下,我们向 lambda 添加权限,使 API 网关可以调用它。

我想了解 IAM 权限和角色的基本概念,它们将定义我们应该授予哪些资源权限以及我们不应该授予哪些资源。我对IAM的这些概念还很幼稚。你能给出的关于这件事的任何解释都会很有帮助。

Lambda 执行角色授予其访问必要的 AWS 服务和资源的权限。 Lambda 将在执行期间承担该角色。

这就是为什么,正如您提到的,您授予 Kinesis(或)DynamoDB 权限,因为您在 lambda 中对这些服务执行操作

但是,您为 API 网关添加的权限是一种基于资源的策略,允许 API 网关(或任何 AWS 服务)调用您的函数。

参考: https://docs.aws.amazon.com/lambda/latest/dg/lambda-permissions.html