2016-11-02 16 views
22

Tôi có một khách hàng boto3:boto3 NoRegionError khách hàng: Bạn phải chỉ định một lỗi khu vực chỉ thỉnh thoảng

boto3.client('kms') 

Nhưng nó xảy ra trên máy mới, Họ mở và đóng cửa tự động.

if endpoint is None: 
     if region_name is None: 
      # Raise a more specific error message that will give 
      # better guidance to the user what needs to happen. 
      raise NoRegionError() 

Tại sao điều này lại xảy ra? và tại sao chỉ một phần thời gian?

+0

Do ứng dụng khách boto3 không thể tìm thấy hồ sơ AWS từ tập hợp phương thức xác thực mặc định: http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html. – mootmoot

Trả lời

47

Cách này hay cách khác, bạn phải thông báo cho boto3 biết bạn muốn khách hàng kms tạo vùng nào. Điều này có thể được thực hiện một cách rõ ràng bằng cách sử dụng tham số region_name như trong:

kms = boto3.client('kms', region_name='us-west-2') 

hoặc bạn có thể có một khu vực mặc định liên quan đến hồ sơ của bạn trong tập tin ~/.aws/config của bạn như trong:

[default] 
region=us-west-2 

hoặc bạn có thể sử dụng một môi trường biến như sau:

export AWS_DEFAULT_REGION=us-west-2 

nhưng bạn cần phải thông báo cho boto3 khu vực cần sử dụng.

+0

Làm thế nào tôi biết bản thân mình sử dụng vùng nào? – jononomo

+0

Nếu bạn đang cố gắng truy cập tài nguyên hiện có, hãy chọn khu vực có tài nguyên đó. Nếu bạn định tạo tài nguyên mới, hầu hết mọi người chọn vùng gần nhất về mặt địa lý để có thời gian phản hồi nhanh hơn. Không phải tất cả các vùng đều hỗ trợ cùng một tập hợp các dịch vụ vì vậy nếu bạn cần một dịch vụ cụ thể, hãy đảm bảo bạn chọn một vùng hỗ trợ nó. – garnaat

+0

Tôi đoán câu hỏi của tôi là: làm cách nào để biết tôi đã chọn khu vực nào? Tôi cho rằng nó phải nằm trong giao diện người dùng AWS ở đâu đó ... – jononomo

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