2016-03-22 25 views
10

Tôi đang cố gắng thiết lập AMI của Amazon Linux (ami-f0091d91) và có tập lệnh chạy lệnh sao chép từ thùng S3 .AWS CLI S3 Lỗi khách hàng (403) xảy ra khi gọi hoạt động HeadObject: Bị cấm

aws --debug s3 cp s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.noarch.rpm . 

Kịch bản này hoạt động hoàn hảo trên máy tính địa phương của tôi nhưng không thành công với các lỗi sau trên Amazon Ảnh:

2016-03-22 01:07:47,110 - MainThread - botocore.auth - DEBUG - StringToSign: 
HEAD 


Tue, 22 Mar 2016 01:07:47 GMT 
x-amz-security-token:AQoDYXdzEPr//////////wEa4ANtcDKVDItVq8Z5OKms8wpQ3MS4dxLtxVq6Om1aWDhLmZhL2zdqiasNBV4nQtVqwyPsRVyxl1Urq1BBCnZzDdl4blSklm6dvu+3efjwjhudk7AKaCEHWlTd/VR3cksSNMFTcI9aIUUwzGW8lD9y8MVpKzDkpxzNB7ZJbr9HQNu8uF/st0f45+ABLm8X4FsBPCl2I3wKqvwV/s2VioP/tJf7RGQK3FC079oxw3mOid5sEi28o0Qp4h/Vy9xEHQ28YQNHXOBafHi0vt7vZpOtOfCJBzXvKbk4zRXbLMamnWVe3V0dArncbNEgL1aAi1ooSQ8+Xps8ufFnqDp7HsquAj50p459XnPedv90uFFd6YnwiVkng9nNTAF+2Jo73+eKTt955Us25Chxvk72nAQsAZlt6NpfR+fF/Qs7jjMGSF6ucjkKbm0x5aCqCw6YknsoE1Rtn8Qz9tFxTmUzyCTNd7uRaxbswm7oHOdsM/Q69otjzqSIztlwgUh2M53LzgChQYx5RjYlrjcyAolRguJjpSq3LwZ5NEacm/W17bDOdaZL3y1977rSJrCxb7lmnHCOER5W0tsF9+XUGW1LMX69EWgFYdn5QNqFk6mcJsZWrR9dkehaQwjLPcv/29QcM+b5u/0goazCtwU= 
/aws-codedeploy-us-west-2/latest/codedeploy-agent.noarch.rpm 
2016-03-22 01:07:47,111 - MainThread - botocore.endpoint - DEBUG - Sending http request: <PreparedRequest [HEAD]> 
2016-03-22 01:07:47,111 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - INFO - Starting new HTTPS connection (1): aws-codedeploy-us-west-2.s3.amazonaws.com 
2016-03-22 01:07:47,151 - MainThread - botocore.vendored.requests.packages.urllib3.connectionpool - DEBUG - "HEAD /latest/codedeploy-agent.noarch.rpm HTTP/1.1" 403 0 
2016-03-22 01:07:47,151 - MainThread - botocore.parsers - DEBUG - Response headers: {'x-amz-id-2': '0mRvGge9ugu+KKyDmROm4jcTa1hAnA5Ax8vUlkKZXoJ//HVJAKxbpFHvOGaqiECa4sgon2F1kXw=', 'server': 'AmazonS3', 'transfer-encoding': 'chunked', 'x-amz-request-id': '6204CD88E880E5DD', 'date': 'Tue, 22 Mar 2016 01:07:46 GMT', 'content-type': 'application/xml'} 
2016-03-22 01:07:47,152 - MainThread - botocore.parsers - DEBUG - Response body: 

2016-03-22 01:07:47,152 - MainThread - botocore.hooks - DEBUG - Event needs-retry.s3.HeadObject: calling handler <botocore.retryhandler.RetryHandler object at 0x7f421075bcd0> 
2016-03-22 01:07:47,152 - MainThread - botocore.retryhandler - DEBUG - No retry needed. 
2016-03-22 01:07:47,152 - MainThread - botocore.hooks - DEBUG - Event after-call.s3.HeadObject: calling handler <function enhance_error_msg at 0x7f4211085758> 
2016-03-22 01:07:47,152 - MainThread - botocore.hooks - DEBUG - Event after-call.s3.HeadObject: calling handler <awscli.errorhandler.ErrorHandler object at 0x7f421100cc90> 
2016-03-22 01:07:47,152 - MainThread - awscli.errorhandler - DEBUG - HTTP Response Code: 403 
2016-03-22 01:07:47,152 - MainThread - awscli.customizations.s3.s3handler - DEBUG - Exception caught during task execution: A client error (403) occurred when calling the HeadObject operation: Forbidden 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/s3handler.py", line 100, in call 
    total_files, total_parts = self._enqueue_tasks(files) 
    File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/s3handler.py", line 178, in _enqueue_tasks 
    for filename in files: 
    File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/fileinfobuilder.py", line 31, in call 
    for file_base in files: 
    File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/filegenerator.py", line 142, in call 
    for src_path, extra_information in file_iterator: 
    File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/filegenerator.py", line 314, in list_objects 
    yield self._list_single_object(s3_path) 
    File "/usr/local/lib/python2.7/site-packages/awscli/customizations/s3/filegenerator.py", line 343, in _list_single_object 
    response = self._client.head_object(**params) 
    File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 228, in _api_call 
    return self._make_api_call(operation_name, kwargs) 
    File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 488, in _make_api_call 
    model=operation_model, context=request_context 
    File "/usr/local/lib/python2.7/site-packages/botocore/hooks.py", line 226, in emit 
    return self._emit(event_name, kwargs) 
    File "/usr/local/lib/python2.7/site-packages/botocore/hooks.py", line 209, in _emit 
    response = handler(**kwargs) 
    File "/usr/local/lib/python2.7/site-packages/awscli/errorhandler.py", line 70, in __call__ 
    http_status_code=http_response.status_code) 
ClientError: A client error (403) occurred when calling the HeadObject operation: Forbidden 
2016-03-22 01:07:47,153 - Thread-1 - awscli.customizations.s3.executor - DEBUG - Received print task: PrintTask(message='A client error (403) occurred when calling the HeadObject operation: Forbidden', error=True, total_parts=None, warning=None) 
A client error (403) occurred when calling the HeadObject operation: Forbidden 

Tuy nhiên, khi tôi chạy nó với các tùy chọn --no-sign-request, nó hoạt động một cách hoàn hảo:

aws --debug --no-sign-request s3 cp s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.noarch.rpm . 

Ai đó có thể giải thích điều gì đang xảy ra?

+1

Có vẻ như * bạn (có thể ngầm) sử dụng vai trò IAM của cá thể để thực hiện yêu cầu (giải thích 'x-amz-security-token' - thông tin đăng nhập tạm thời từ vai trò) và vai trò của bạn từ chối truy cập đến S3 ... hoặc thùng (không phải của bạn, tôi lấy nó?) không cho phép truy cập bằng thông tin đăng nhập - mặc dù nếu nó công khai, điều đó thật lạ. Như mọi khi, hãy đảm bảo rằng đồng hồ hệ thống của bạn là chính xác, vì với 'HEAD', cơ thể lỗi luôn bị chặn. –

+0

Xin chào, cảm ơn bạn đã phản hồi nhanh. Nhóm mà tôi đang cố gắng truy cập thực sự là công khai. Không chắc chắn lý do tại sao nó phàn nàn về một yêu cầu đã ký sau đó. Nó không có lỗi tương tự trên thùng của chính tôi mà không có tùy chọn --no-sign-request. – MojoJojo

+0

Bạn có vai trò IAM trong trường hợp này, phải không? Có vẻ như vai trò đó có thể hạn chế mọi thứ, có lẽ theo những cách bất ngờ. –

Trả lời

3

Tôi đã tìm ra. Tôi đã gặp lỗi trong mẫu tạo đám mây của mình đã tạo ra các phiên bản EC2. Kết quả là, các cá thể EC2 đang cố gắng truy cập vào các đoạn mã triển khai ở trên, ở các vùng khác nhau (không phải là chúng tôi-tây-2). Có vẻ như chính sách truy cập trên các nhóm (thuộc sở hữu của Amazon) chỉ cho phép truy cập từ khu vực mà họ thuộc về. Khi tôi sửa lỗi trong mẫu của tôi (bản đồ tham số sai), lỗi biến mất

+0

Bạn đã viết:" chính sách truy cập trên các thùng (thuộc sở hữu của Amazon) chỉ cho phép truy cập từ vùng mà chúng thuộc về. " Xô không "thuộc về một khu vực". Họ là toàn cầu. Tôi muốn hiểu những gì đã sửa lỗi của bạn. – LeslieK

+1

Các nhóm thực sự được xác định trong một khu vực. – dmohr

4

Tôi đã gặp lỗi A client error (403) occurred when calling the HeadObject operation: Forbidden cho lệnh aws cli copy của mình aws s3 cp s3://bucket/file file. Tôi đã sử dụng vai trò IAM có quyền truy cập S3 đầy đủ bằng cách sử dụng Inline Policy.

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "s3:*", 
     "Resource": "*" 
    } 
    ] 
} 

Nếu tôi cấp cho nó toàn quyền truy cập S3 từ Managed Policies thay vào đó, lệnh sẽ hoạt động. Tôi nghĩ rằng đây phải là một lỗi từ Amazon, bởi vì các chính sách trong cả hai trường hợp đều giống nhau.

+0

Btw, tôi đã cố gắng sử dụng [goofys] (https://github.com/kahing/goofys/) để gắn một xô s3 vào hệ thống tập tin máy chủ ubuntu của tôi thông qua một người dùng IAM gắn với một chính sách tương tự như trên nhưng với ' Tài nguyên: "example" 'set (thay vì' * '), và điều đó gây ra sự không có khả năng tạo các tập tin ở đó ([vấn đề tương tự] (https://github.com/kahing/goofys/issues/165)).Tôi vừa thay đổi nó thành 'chính sách quản lý' của 'AmazonS3FullAccess' – shadi

-1

Tôi nhận lỗi này khi nhóm đã tồn tại. Vì vậy, bạn có thể thử đổi tên nhóm mà bạn đang cố gắng tạo.

2

Một trong những lý do cho điều này có thể là nếu bạn thử truy cập vào các vùng của khu vực yêu cầu V4-Signing. Hãy thử cung cấp khu vực một cách rõ ràng, như --region cn-north-1

1

Tôi đã gặp sự cố này, thêm --recursive vào lệnh sẽ trợ giúp.

Tại thời điểm này, điều này không hoàn toàn hợp lý vì bạn (như tôi) chỉ đang cố gắng sao chép một tệp xuống, nhưng nó thực hiện thủ thuật!

+0

Có vẻ như thành công nhưng tệp "tệp" được tải xuống cục bộ thực tế là một thư mục trống – ozma

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