我正在尝试使用AWS CLI创建策略。在此命令中,file://policy
指的是什么?
aws iam create-policy --policy-name my-policy --policy-document file://policy
我尝试过:
aws iam create-policy --policy-name mypolicy --policy-document file://mypolicy.json
这是创建政策的正确方法吗?
此外,当我们使用AWS CLI创建策略时,是否可以直接使用策略json内容?如果是,请分享一些示例。
答案 0 :(得分:1)
我不知道“直接使用 json”是什么意思。如果您以编程方式创建 json,则可以使用进程替换作为 aws-cli 的文件。
说我有这个“template.json”
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:REGION:ACCOUNT:secret:SECRET"
}
]
}
这里我将用 sed
替换这些值(我已经包含了命令的标准输出):
% sed 's/REGION/my-region-1/; s/ACCOUNT/my-account-id/; s/SECRET/my-secret-id/' template.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:my-region-1:my-account-id:secret:my-secret-id"
}
]
}
并提供此命令作为进程替换(如临时文件):
aws iam create-policy \
--policy-name MyPolicy \
--policy-document file://<(sed 's/REGION/my-region-1/; s/ACCOUNT/my-account-id/; s/SECRET/my-secret-id/' template.json)
答案 1 :(得分:0)
还有,当我们使用AWS CLI创建策略时,是否可以直接使用策略json内容?
有相同的问题,显然,这不可能。他们很可能没有添加对此的支持,因为JSON内容具有很多空格,换行符等,从而弄乱了命令行输入。
我想以一种自动化的方式生成多个策略,并使用以下方法:定义一个蓝图JSON文件,创建一个读取它的脚本,搜索并替换相关的部分,写出一个新文件,然后在aws iam命令中使用该新文件。
例如 Powershell 中的此脚本将标记“ NUMBER”替换为“ 1”:
$nr = "1"
$policy = Get-Content -Path 'policy.json'
$policy_letter = $policy -replace 'NUMBER', $nr
$fileOutput = 'policy_' + $nr+ '.json'
$policy_letter | Set-Content -Path $fileOutput
然后使用此输出文件创建AWS策略:
$cmd = "aws iam create-policy --policy-name policy" + $nr + " --policy-document file://./policy_" + $nr + ".json"
cmd /c $cmd
答案 2 :(得分:0)
file://policy 是指一个本地 json 文件,其中包含您希望用来定义您正在创建的政策的政策声明。
您可以使用 CLI 内联执行此操作。以推荐的 EKS Autoscaler 策略为例:
aws iam create-policy \
--policy-name AmazonEKSClusterAutoscalerPolicy \
--policy-document \
'{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeLaunchConfigurations",
"autoscaling:DescribeTags",
"autoscaling:SetDesiredCapacity",
"autoscaling:TerminateInstanceInAutoScalingGroup",
"ec2:DescribeLaunchTemplateVersions"
],
"Resource": "*",
"Effect": "Allow"
}
]
}'