簡體   English   中英

具有 IAM 憑證的跨賬戶 AWS Lambda

[英]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_KEYACCOUNT_A_SECRET_KEY作為環境變量傳遞給 function。

用戶錯誤。 我可以驗證 lambda function 中的 boto3 可以使用其 scope 之外的憑據。

經過更多的故障排除。 問題是我被帶入了“環境變量”SESSION,它是在 lambda function 上設置的,但不是在我的 ec2 實例上。 所以我一直在使用 lambda session 密鑰,這似乎覆蓋了顯式密鑰和秘密。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM