有没有一种可以传递给aws实用程序的命令/子命令,可以1)验证~/.aws/credentials文件中的凭据是否有效,并2)提供一些指示凭据属于哪个用户?我正在寻找一些通用的东西,不做任何关于用户具有IAM或任何特定服务权限的假设。
这种用例是在部署时进行的合理性检查,以确保凭据是好的。理想情况下,应该有一种方法来检查返回值并在存在无效凭据时中止部署。
有没有一种可以传递给aws实用程序的命令/子命令,可以1)验证~/.aws/credentials文件中的凭据是否有效,并2)提供一些指示凭据属于哪个用户?我正在寻找一些通用的东西,不做任何关于用户具有IAM或任何特定服务权限的假设。
这种用例是在部署时进行的合理性检查,以确保凭据是好的。理想情况下,应该有一种方法来检查返回值并在存在无效凭据时中止部署。
使用GetCallerIdentity:
aws sts get-caller-identity
与其他API/CLI调用不同,它将始终工作,而不考虑您的IAM权限。
您将以以下格式获得输出:
{
"Account": "123456789012",
"UserId": "AR#####:#####",
"Arn": "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name"
}
确切的 ARN格式取决于凭证类型,但通常包括(人类)用户的名称。
它使用标准的 AWS CLI错误代码,成功时返回0,如果您没有凭据则返回255。
aws iam get-user --profile test-mfa 时,会出现 An error occurred (AccessDenied) when calling the GetUser operation。然而,aws sts get-caller-identity --profile test-mfa 输出(同样,在没有 MFA 会话令牌的情况下)test-mfa 的帐户、ARN 和 UserId。 - Villeaws iam get-user后,我得到了更清晰的消息)。在切换我的默认区域后,建议的命令正常工作。 - Coryalias aws-ping='aws sts get-caller-identity'。然后你就有了一个简单的命令行缩写。 - BrianV有一种简单的方法 - aws iam get-user 将告诉您关于您自己(当前IAM用户)的详细信息 - 假设该用户具有 iam 权限。
有几个CLI调用支持--dry-run标志,例如aws ec2 run-instances,它会告诉您是否拥有执行操作所需的必要配置/凭据。
还有一个--auth-dry-run选项,可以检查您是否拥有执行命令所需的权限,而无需实际运行命令。如果您具有所需的权限,则命令返回DryRunOperation;否则,它将返回UnauthorizedOperation。[来自AWS文档 - 常用选项]
您可以从管理控制台列出IAM访问密钥,并交叉检查以查看谁被分配了哪个密钥。
了解哪个用户/角色具有哪些特权的最佳方法是利用IAM策略模拟器。
我也有同样的需求,所以我写了aws-role
我还希望该命令输出会话时间,在注销之前保持不变:
我在许多shell脚本中使用它来自动化我的AWS使用-对我很有效。
我的脚本解析~/.aws/credentials
PS:还考虑增强它以支持JSON输出