[英]Cross Account AWS Lambda with IAM credentials
我有一個關於在 Lambda function 中運行的跨賬戶 IAM 問題。 (我知道人們可能會使用 STS 假設,但是這個 package 真的不值得保護,我不想通過鏈接帳戶來 go)
賬戶“A”。
S3 – package “s3://foo/foo”
IAM credentials “pkg_creds” for bucket "s3://foo"
賬戶“B”
Lamba function “gogo” runs
In this Lambda function, it attempts to use boto3 and the pkg_creds to
download package “s3://foo/foo”, but if fails with this error:
**The provided token is malformed or otherwise invalid.**
Lambda 是只讀的,但如果我使用 boto3.client(不是會話),我相信 boto3 不會將憑據寫入 ~/.aws。 但是,我還將 AWS_CONFIG_FILE 設置為 /tmp 以防萬一。 它仍然失敗。 我懷疑我的提議是不可能的,因為 LAMBDA 具有不可變的 AWS 憑證,您無法更改范圍,即使是明確賦予 boto3 的范圍。
讓我知道你的想法。 我可能會嘗試使用 Faragate 來完成這項工作,但 Lambda function 更易於維護和部署。
提前致謝!
Lambda 根本不使用~/.aws
配置文件,它默認使用環境變量。 在 boto3 中有很多方法可以配置 AWS 憑證。 您應該能夠使用明確的 AWS 憑證在 Lambda function 中創建一個新的 boto3 客戶端,如下所示:
client = boto3.client(
's3',
aws_access_key_id=ACCOUNT_A_ACCESS_KEY,
aws_secret_access_key=ACCOUNT_A_SECRET_KEY
)
並將ACCOUNT_A_ACCESS_KEY
和ACCOUNT_A_SECRET_KEY
作為環境變量傳遞給 function。
用戶錯誤。 我可以驗證 lambda function 中的 boto3 可以使用其 scope 之外的憑據。
經過更多的故障排除。 問題是我被帶入了“環境變量”SESSION,它是在 lambda function 上設置的,但不是在我的 ec2 實例上。 所以我一直在使用 lambda session 密鑰,這似乎覆蓋了顯式密鑰和秘密。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.