首页 > 解决方案 > 调用 PutRolePolicy 操作时发生错误(ValidationError):policyDocument 的指定值无效

问题描述

我要创建一个 aws 集群,所以我想为集群设置一个 IAM 角色。我已经按照教程但是一旦我输入了这个命令

aws iam put-role-policy --role-name UdacityFlaskDeployCBKubectlRole --policy-name eks-describe --policy-document file:///tmp/iam-role-policy

我收到了这个错误-_-:

An error occurred (ValidationError) when calling the PutRolePolicy operation: The specified value for policyDocument is invalid. It must contain only printable ASCII characters.

这是我用来创建策略的命令

echo '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:Describe*", "ssm:GetParameters" ], "Resource": "*" } ] }' > /tmp/iam-role-policy 

我仍然在这里堆叠任何帮助!

标签: amazon-iamaws-cli

解决方案


我使用了另一种方法来遇到错误。

使用 Git bash 终端

  • 创建一个角色策略文档,该文档还允许操作“eks:Describe*”和“ssm:GetParameters”。您可以通过使用角色策略设置环境变量来做到这一点:

我使用了 var 而不是重定向到导致我出现问题的文件。

EKS_DESCRIBE="{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"eks:Describe*\", \"ssm:GetParameters\" ], \"Resource\": \"*\" } ] }"
  • 通过运行此命令检查是否EKS_DESCRIBE真的创建echo $EKS_DESCRIBE
$ echo $EKS_DESCRIBE
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:Describe*", "ssm:GetParameters" ], "Resource": "*" } ] }
  • 将策略附加到角色
aws iam put-role-policy --role-name UdacityFlaskDeployCBKubectlRole --policy-name eks-describe --policy-document "$EKS_DESCRIBE"

使用 windows cmd 的另一种可能方式是

使用 Windows 命令

  • 使用 set cmd 创建策略
set EKS_DESCRIBE="{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"eks:Describe*\", \"ssm:GetParameters\" ], \"Resource\": \"*\" } ] }"
  • 检查变量
echo %EKS_DESCRIBE%
  • 将策略附加到“UdacityFlaskDeployCBKubectlRole”。您可以使用 awscli 执行此操作:
aws iam put-role-policy --role-name UdacityFlaskDeployCBKubectlRole --policy-name eks-describe --policy-document %EKS_DESCRIBE%

推荐阅读