web-dev-qa-db-ja.com

AWS create role-禁止フィールドがあります

ポリシーのjsonファイルを使用してロールを作成するために、AWSのドキュメントで提案されている簡単な例を試しています http://docs.aws.Amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html そして、私はエラーを取得します

A client error (MalformedPolicyDocument) occurred when calling the CreateRole operation: Has prohibited field Resource

コマンドは次のとおりです。

>> aws iam create-role --role-name test-service-role --assume-role-policy-document file:///home/ec2-user/policy.json
A client error (MalformedPolicyDocument) occurred when calling the CreateRole operation: Has prohibited field Resource

ポリシーは、例で述べたものとまったく同じです。

>> cat policy.json 
{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::example_bucket"
  }
}

私のバージョンは最新のようです

>> aws --version
aws-cli/1.9.9 Python/2.7.10 Linux/4.1.10-17.31.amzn1.x86_64 botocore/1.3.9
38
blueskin

ポリシードキュメントは次のようになります。

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {"Service": "ec2.amazonaws.com"},
    "Action": "sts:AssumeRole"
  }
}

これは、信頼関係ポリシードキュメントと呼ばれます。これは、ポリシー文書とは異なります。貼り付けたものはすべて、 attach role policy を使用して行われるロールに添付されたポリシー用です

上記のロールドキュメントでも、貼り付けたリンクに記載されています。これは動作するはずです。私は役割と政策に取り組んできましたが、確実に言えます。

AWSコンソールでも、役割については、信頼関係用の別のタブがあることがわかります。また、現在、権限タブでポリシーを添付しています。

50
phoenix

AWSメッセージ、CreateRoleオペレーションを呼び出すときにエラーが発生しました(MalformedPolicyDocument):このポリシーに無効なJsonが含まれていますは、フルパス名を使用しない場合に表示されます。たとえば、

--assume-role-policy-document myfile.json

または、存在しないfile.jsonでさえ、問題を引き起こします。

解決策は使用することです

--assume-role-policy-document file://myfile.json

ここに私のKinesis Firehose配信ストリームのコンテンツがあります

{
 "Version": "2012-10-17",
 "Statement": {
   "Effect": "Allow",
   "Principal": {"Service": "firehose.amazonaws.com"},
   "Action": "sts:AssumeRole"
  }
} 
3
demuxer