AWS CLI 检索新创建策略的 ARN

Posted

技术标签:

【中文标题】AWS CLI 检索新创建策略的 ARN【英文标题】:AWS CLI retrieve the ARN of the newly created policy 【发布时间】:2017-08-26 18:51:52 【问题描述】:

我想创建一个 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_nameaccount_id 自己构建policy_arn

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?

【问题讨论】:

【参考方案1】:

如果您将 --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

【讨论】:

以上是关于AWS CLI 检索新创建策略的 ARN的主要内容,如果未能解决你的问题,请参考以下文章

aws s3 存储桶策略

如何将 ARN 设置为 s3 策略资源 AWS

AWS IAM 政策问题

AWS S3 VPC 终端节点策略文档

拒绝除一个之外的所有存储桶的 AWS IAM 策略

如何通过在 AWS CLI 中使用其 ARN 来获取 lambda 函数?