Json 创建IAM策略时出现格式错误的策略文档错误
我正试图通过Json 创建IAM策略时出现格式错误的策略文档错误,json,shell,amazon-web-services,amazon-cloudformation,amazon-iam,Json,Shell,Amazon Web Services,Amazon Cloudformation,Amazon Iam,我正试图通过AWS CLI创建托管策略: POLICY=' { "Version":"2012-10-17", "Statement": [{ "Effect":"Allow", "Action": [ "cloudformation:*" ], "Resource":"*" }, { "Effect":"Deny", "Action": [ "cloudformation:UpdateS
AWS CLI
创建托管策略:
POLICY='
{
"Version":"2012-10-17",
"Statement":
[{
"Effect":"Allow",
"Action":
[
"cloudformation:*"
],
"Resource":"*"
},
{
"Effect":"Deny",
"Action":
[
"cloudformation:UpdateStack",
"cloudformation:DeleteStack"
],
"Resource": "'${arn}'"
}]
}'
# Create policy if not already created
[ $(aws iam list-policies | grep -ce CloudFormation-policy-${StackName}) -eq 0 ] && (aws iam create-policy --policy-name CloudFormation-policy-${StackName} --policy-document "'${POLICY}'")
运行脚本时,出现以下错误:
An error occurred (MalformedPolicyDocument) when calling the CreatePolicy operation: Syntax errors in policy.
我想不出错误在哪里。
有什么想法吗?每个操作系统都有自己的处理单引号转义与双引号转义的方法,并根据: 当传入大数据块时,您可能会发现保存起来更容易 将JSON转换为一个文件,并从命令行引用它。JSON数据 在文件中更易于阅读、编辑和与他人共享
传递Json数据时,这种方法可能不是最佳选择,请改用。是否尝试从CLI运行此方法?您是否在AWS控制台中对此进行了验证?我猜这个问题是由于单引号和双引号引起的。是的,它来自CLI。当我执行
echo“${POLICY}”时
我以简单的引号获取json,您的CLI在哪个操作系统上运行?Windows、Linux或Mac?Linux ubuntu 16在您花费任何时间进行调试之前,如果您可以访问AWS控制台,我建议您尝试创建一个策略,并确保它通过了验证,确认json是正确的。一旦JSON验证完成,对于命令行JSON参数,我建议使用这种方法(文件中的参数)