是否有一个命令/子命令可以传递给aws实用程序,可以1)验证~/。Aws /凭证文件是有效的,并且2)给出一些指示凭证属于哪个用户?我正在寻找一些通用的东西,它不会对用户具有IAM或任何特定服务的权限做出任何假设。
这个用例是部署时的完整性检查,以确保凭据是正确的。理想情况下,如果凭证无效,可以通过某种方式检查返回值并中止部署。
是否有一个命令/子命令可以传递给aws实用程序,可以1)验证~/。Aws /凭证文件是有效的,并且2)给出一些指示凭证属于哪个用户?我正在寻找一些通用的东西,它不会对用户具有IAM或任何特定服务的权限做出任何假设。
这个用例是部署时的完整性检查,以确保凭据是正确的。理想情况下,如果凭证无效,可以通过某种方式检查返回值并中止部署。
当前回答
有一个简单的方法——aws iam get-user会告诉你是谁(当前iam用户)的详细信息——前提是用户有iam特权。
有几个CLI调用支持——dry-run标志,如aws ec2 run-instances,它会告诉你是否有必要的配置/ cred来执行操作。
还有——auth-dry-run,它可以在不实际运行命令的情况下检查您是否拥有命令所需的权限。如果您拥有所需的权限,该命令返回DryRunOperation;否则,返回UnauthorizedOperation。[来自AWS文档-通用选项]
你可以从管理控制台列出IAM访问密钥,你可以交叉检查,看看谁被分配了哪个密钥。
了解哪个用户/角色拥有哪些特权的最好方法是使用IAM Policy Simulator。
其他回答
有一个简单的方法——aws iam get-user会告诉你是谁(当前iam用户)的详细信息——前提是用户有iam特权。
有几个CLI调用支持——dry-run标志,如aws ec2 run-instances,它会告诉你是否有必要的配置/ cred来执行操作。
还有——auth-dry-run,它可以在不实际运行命令的情况下检查您是否拥有命令所需的权限。如果您拥有所需的权限,该命令返回DryRunOperation;否则,返回UnauthorizedOperation。[来自AWS文档-通用选项]
你可以从管理控制台列出IAM访问密钥,你可以交叉检查,看看谁被分配了哪个密钥。
了解哪个用户/角色拥有哪些特权的最好方法是使用IAM Policy Simulator。
使用GetCallerIdentity: Aws STS获取呼叫者标识
与其他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-role
我还希望该命令输出注销前的会话时间:
我在许多shell脚本中使用它来自动化我的AWS使用—对我来说效果很好。
我的脚本解析~/.aws/凭证
PS:我也在考虑增强它以支持JSON输出