首页 > 解决方案 > 使用承担角色从 lambda 访问 S3

问题描述

我正在尝试使用 terraform 创建一个简单的基础架构。 Terraform 应该创建 lambda 和 s3 存储桶,使用 API 网关触发 lambda,该网关再次创建 terraform。我创建了一个角色并将其分配给 lambda,以便 lambda 可以将对象放入 s3 存储桶中。我的 lambda 是用 java 编写的,因为我将角色分配给 lambda 以访问 S3,我如何在我的代码中使用该角色?我遇到了另一篇文章,它建议使用以下代码访问 S3。我假设代币生成会处理这个问题。

var s3Client = AmazonS3ClientBuilder.standard()
         .withCredentials(InstanceProfileCredentialsProvider(false))
        .withRegion("ap-southeast-2")
        .build()

我对如何访问 s3 感到困惑,我是否需要在我的代码中使用由 terraform 创建的角色,或者是否有不同的方式从 java 代码访问 S3?

标签: amazon-web-servicesamazon-s3aws-lambdaterraform

解决方案


Jarmods 的回答是正确的,您可以直接配置 Lambda 的角色 - 但在某些特定用例中,您可能需要成为一个帐户的第一个,而不是另一个帐户。如果您需要在代码中间承担角色,请使用 SDK 的 STS 功能。STS 是 aws sdk 中的库,用于控制通过代码代入角色的凭据。


推荐阅读