amazon-web-services - 使用承担角色从 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?
解决方案
Jarmods 的回答是正确的,您可以直接配置 Lambda 的角色 - 但在某些特定用例中,您可能需要成为一个帐户的第一个,而不是另一个帐户。如果您需要在代码中间承担角色,请使用 SDK 的 STS 功能。STS 是 aws sdk 中的库,用于控制通过代码代入角色的凭据。
推荐阅读
- html - CSS - 添加文本时导航栏变得不模糊
- wcf - 从 Android 使用 WCF
- javascript - react-redux Reducer 不会将对象传递给商店
- scala - 在 spark scala 函数中将 List 作为参数传递会出错
- python - 在 Tkinter 中绑定 '<' 键
- amazon-s3 - 如何检查 awscli 和兼容的 botocore 包是否已安装
- javascript - Expressjs 4.X:我可以使用 router.route() 而不是 app.route()
- logstash - 如何拆分 logstash 配置文件
- c++ - 如何在 C++ 中正确声明函数?
- python - 如何使用 boto3 在 Python 中将 S3 目录作为 os.path 获取?