我正在嘗試使用 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?
uj5u.com熱心網友回復:
您無需承擔 Lambda 函式內的角色。相反,只需將 Lambda 函式配置為代入 IAM 角色即可。或者將相關的 S3 策略添加到 Lambda 的現有 IAM 角色。
在這種情況下,您通常不必明確提供憑據或區域。只需使用:
AmazonS3 s3Client = new AmazonS3Client();
請參閱創建 IAM 角色和 Lambda 函式以及配置 Lambda 函式以代入已配置角色的 Terraform基本示例。
uj5u.com熱心網友回復:
Jarmods 的回答是正確的,您可以直接配置 Lambda 的角色 - 但在某些特定用例中,您可能需要在一個帳戶中成為第一個,而不是另一個。如果您需要在代碼中間扮演一個角色,請使用 SDK 的 STS 功能。STS 是 aws sdk 中的庫,它控制通過代碼承擔角色的憑據。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/326599.html
標籤:亚马逊网络服务 亚马逊-s3 aws-lambda 地形
