我想创建一个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_arn
和policy_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?
答案 0 :(得分:5)
如果您将--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