我想创建一个IAM策略,并使用AWS命令行界面将其附加到某些IAM角色。

创建策略非常简单:

aws iam create-policy --policy-name "${policy_name}" --policy-document file://policy.json

但是要将新创建的策略附加到目标角色,我必须知道该策略的ARN:
aws iam attach-role-policy --role-name "${role_name}" --policy-arn "${policy_arn}"

检索新创建的策略的ARN的正确方法是什么?

现在我正在使用policy_arnpolicy_name自己构造account_id:
policy_arn=arn:aws:iam::"${account_id}":policy/"${policy_name}"

这就是我检索account_id的方式:
account_id=$(aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text)

但是,这感觉很hacky。

有没有更好的方法来找出所创建策略的ARN?

最佳答案

如果将--output text添加到create-policy,它将打印ARN。

aws iam create-policy --policy-name "${policy_name}" --policy-document file://policy.json --output text

您可以获取策略及其ARN:
aws iam list-policies --query 'Policies[*].[PolicyName, Arn]' --output text

要仅通过一项政策获得ARN:
aws iam list-policies --query 'Policies[?PolicyName==`FullAccess`].Arn' --output text

输出:
arn:aws:iam::aws:policy/FullAccess

关于amazon-web-services - AWS CLI检索新创建的策略的ARN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45898665/

10-11 06:25