[英]Creating a function to assume an AWS STS role in PowerShell $PROFILE
我在我的.aws/credentials
中定义了 AWS 凭证,如下所示:
[profile source]
aws_access_key_id=...
aws_secret_access_key=...
[profile target]
role_arn = arn:aws:iam::123412341234:role/rolename
mfa_serial = arn:aws:iam::123412341234:mfa/mylogin
source_profile = source
...
由于 MFA 和 1 小时的凭证生命周期,我想在我的$PROFILE
中定义函数以在上述账户中使用适用于 PowerShell 的 AWS 工具承担角色。
该功能看起来像
function Use-SomeAWS {
Clear-AWSCredential
$Response=(Use-STSRole arn:aws:iam::123412341234:role/rolename -ProfileName target -RoleSessionName "my email").Credentials
$Creds=(New-AWSCredentials -AccessKey $Response.AccessKeyId -SecretKey $Response.SecretAccessKey -SessionToken $Response.SessionToken)
Set-AWSCredential -Credential $Creds
}
复制和粘贴函数中的行工作得很好,但是获取配置文件 ( . $PROFILE
) 并运行函数 ( Use-SomeAWS
) 要求 MFA 代码并且似乎完成了它的工作,但是,凭证没有正确获取为会话设置。
我究竟做错了什么?
编辑:通过一些进一步的测试,如果我将-StoreAs someprofilename
添加到 Set-AWSCredential然后执行Set-AWSCredential -ProfileName someprofilename
,这确实有效,但这种做法违背了目的。
您是否尝试过 Set-AWSCredential 的 -Scope? 像这样:
Set-AWSCredential -Credential $Creds -Scope global
https://docs.aws.amazon.com/powershell/latest/reference/items/Set-AWSCredential.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.