繁体   English   中英

创建一个函数以在 PowerShell $PROFILE 中担任 AWS STS 角色

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM