2015-12-09 17 views
17

tôi đang cố gắng ra một ví dụ đơn giản được đề xuất bởi tài liệu AWS để tạo ra một vai trò sử dụng một tệp json chính sách http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html Và tôi nhận được lỗiAWS tạo vai trò - đã bị cấm lĩnh vực

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

Đây là lệnh,

>> 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 

chính sách này là chính xác giống như một trong những đề cập trong ví dụ

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

phiên bản của tôi dường như được cập nhật

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

Trả lời

25

văn bản chính sách nên có cái gì đó như:

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


này được gọi là tài liệu chính sách mối quan hệ tin tưởng. Điều này khác với tài liệu chính sách. bất kỳ điều gì bạn đã dán là dành cho chính sách được đính kèm với vai trò được thực hiện bằng cách sử dụng attach role policy.
Ngay cả tài liệu vai trò ở trên được đưa ra trong liên kết bạn đã dán. Điều này sẽ hoạt động. Tôi đã làm việc về vai trò và chính sách và tôi có thể nói chắc chắn.
Ngay cả trong bảng điều khiển aws, đối với vai trò, bạn có thể thấy rằng có một tab riêng biệt cho mối quan hệ tin cậy. Ngoài ra, bạn hiện đã đính kèm các chính sách trong tab quyền.

+0

Gotcha của tôi, cảm ơn. – blueskin

+0

Bắt lỗi tương tự khi sử dụng sau - { "Version": "2012/10/17", "Tuyên bố": [{ "Hiệu quả": "Cho phép", "bảo lãnh": { "Dịch vụ ":" s3.amazonaws.com" }, "Action": "sts: AssumeRole" } ] } và nó ở trên chính sách được đưa ra trong AWS doc. thì tại sao tôi bị lỗi? –

+0

@NeerajRathod chỉ định lỗi. Không bao giờ nói "một số lỗi". –

-1

Thông điệp AWS, Một lỗi xảy ra (MalformedPolicyDocument) khi gọi các hoạt động CreateRole: Chính sách này chứa hợp lệ Json xuất hiện nếu bạn không sử dụng đầy đủ tên đường dẫn. Ví dụ: sử dụng

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

hoặc thậm chí là nonexistent.file.json, gây ra sự cố.

Các giải pháp là sử dụng

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

Một đây là nội dung cho Kinesis Firehose Delivery Suối

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

Điều này dường như không liên quan đến thông báo lỗi ban đầu, đó là về * một trường bị cấm *. – growse

Các vấn đề liên quan