AWS CLI извлекает ARN недавно созданной политики
Я хочу создать политику IAM и прикрепить ее к какой-либо роли IAM с помощью интерфейса командной строки AWS.
Создать политику довольно просто:
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)
Однако это кажется довольно хакерским.
Есть ли лучший способ узнать ARN созданной политики?
2 ответа
Решение
Если вы добавите --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
Вы также можете попробовать это
POLICY_ARN=$(aws iam create-policy --policy-name xxx --policy-document file://xxx.json --output text --query Policy.Arn)