ポリシーの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
ポリシードキュメントは次のようになります。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {"Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}
}
これは、信頼関係ポリシードキュメントと呼ばれます。これは、ポリシー文書とは異なります。貼り付けたものはすべて、 attach role policy を使用して行われるロールに添付されたポリシー用です
上記のロールドキュメントでも、貼り付けたリンクに記載されています。これは動作するはずです。私は役割と政策に取り組んできましたが、確実に言えます。
AWSコンソールでも、役割については、信頼関係用の別のタブがあることがわかります。また、現在、権限タブでポリシーを添付しています。
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"
}
}