是否有一个命令/子命令可以传递给
aws
实用程序,可以 1) 验证 ~/.aws/credentials
文件中的凭据是否有效,以及 2) 给出凭据属于哪个用户的一些指示?我正在寻找通用的东西,不会对用户是否有权访问 IAM 或任何特定服务做出任何假设。
此用例是部署时健全性检查,以确保凭据良好。理想情况下,应该有某种方法来检查返回值并在存在无效凭据时中止部署。
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
会告诉您是谁(当前 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输出