我们如何使用 aws cli 命令用新的 json 文件更新现有的 iam 策略?
我已经有一个名为 mypolicy 的策略。我想使用新的 json 文件(可以访问不同的资源)更新此策略。如何使用 aws cli 命令执行此操作?
我试图找到 cli 命令。我从 AWS 页面找到了以下命令:
aws organizations update-policy \
--policy-id p-examplepolicyid111 \
--content "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Action\":\"s3:*\",\"Resource\":\"*\"}}"
但是,使用这个命令我没有找到任何方法用新的 json 替换策略。
aws iam create-policy-version
--policy-arn arn:aws:iam::123456789012:policy/MyPolicy
--policy-document file://NewPolicyVersion.json --set-as-default
https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy-version.html
aws iam list-policies --scope Local
aws iam get-policy --policy-arn arn:aws:iam::123456789012:policy/MyPolicy
如果您有超过 4 个策略,您将无法运行 aws iam create-policy-version 命令。要在一个脚本中解决这一问题,您可以执行以下操作:
#!/bin/bash
POLICY_ARN='arn:aws:iam::1234567890:policy/my-policy'
if [ "$(aws iam list-policy-versions --policy-arn ${POLICY_ARN} | jq -r '.Versions[].VersionId' | wc -l)" -gt 4 ]; then
OLDEST_VERSION=$(aws iam list-policy-versions --policy-arn ${POLICY_ARN} | \
jq -r '.Versions |= sort_by(.CreateDate) | .Versions[0].VersionId')
echo "You have more than 4 versions of ${POLICY_ARN}."
echo "Deleting oldest version: ${OLDEST_VERSION}"
aws iam delete-policy-version --policy-arn ${POLICY_ARN} \
--version-id "${OLDEST_VERSION}"
fi
aws iam create-policy-version --policy-arn ${POLICY_ARN} \
--policy-document file://new-policy.json --set-as-default
这将删除最旧的版本,然后使用本地文件 new-policy.json 中找到的策略创建新版本。在运行上述命令之前,该文件必须已经存在。