boto3 ক্লায়েন্ট NoRegionError: আপনাকে অবশ্যই কখনও কখনও অঞ্চলের ত্রুটি নির্দিষ্ট করতে হবে


147

আমার কাছে বোটো 3 ক্লায়েন্ট রয়েছে:

boto3.client('kms')

তবে এটি নতুন মেশিনে ঘটে, এগুলি গতিশীলভাবে খোলে এবং বন্ধ হয়।

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

এটি কেন ঘটছে? এবং কেন সময় শুধুমাত্র অংশ?


কারণ বোটো 3 ক্লায়েন্ট ডিফল্ট শংসাপত্র পদ্ধতির সেট থেকে অ্যাডাব্লুএস প্রোফাইলটি খুঁজে পাবে না: ডকসস.অওস.সামাজন.কম / এসডি কে- জাভা / ভি 1 / ডেডোপার-গাইড /
mootmoot

উত্তর:


326

একটি উপায় বা অন্য কোনও উপায়ে আপনাকে অবশ্যই boto3 বলতে হবে যে আপনি কোন অঞ্চলে kmsক্লায়েন্টটি তৈরি হতে চান । এটি region_nameপরামিতি হিসাবে স্পষ্টভাবে ব্যবহার করা যেতে পারে :

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

অথবা আপনার প্রোফাইলে আপনার ডিফল্ট অঞ্চলটি আপনার ~/.aws/configফাইলে যুক্ত থাকতে পারে :

[default]
region=us-west-2

অথবা আপনি যেমন পরিবেশের পরিবর্তনশীল ব্যবহার করতে পারেন তেমন:

export AWS_DEFAULT_REGION=us-west-2

তবে আপনাকে কোন অঞ্চলটি ব্যবহার করতে হবে তা বোটো 3 বলার দরকার নেই।


2
কোন অঞ্চলটি ব্যবহার করব তা আমি কীভাবে নিজেকে জানব?
jononomo

1
আপনি যদি বিদ্যমান সংস্থানগুলি অ্যাক্সেস করার চেষ্টা করছেন তবে সেই অঞ্চলটি বেছে নিন যেখানে সেই সংস্থানগুলি বিদ্যমান। আপনি যদি নতুন সংস্থান তৈরি করতে যাচ্ছেন, তবে বেশিরভাগ লোক একটি অঞ্চল বেছে নেন যা দ্রুত প্রতিক্রিয়া বারের জন্য ভৌগলিকভাবে তাদের নিকটতম is সমস্ত অঞ্চল একই পরিষেবাগুলির সেটকে সমর্থন করে না তাই আপনার যদি কোনও নির্দিষ্ট পরিষেবার প্রয়োজন হয় তবে নিশ্চিত হন যে আপনি এমন অঞ্চল বেছে নিয়েছেন যা এটি সমর্থন করে।
গারানাট

1
কোন অঞ্চলগুলি কোন পরিষেবাগুলি সরবরাহ করে তা সন্ধান করার জন্য: অ্যামাজন ওয়েব পরিষেবাদি অঞ্চল সারণী aws.amazon.com/about-aws/global-inf संरचना/…
নিক

2
আপনি কি জানেন কেন "AWS_DEFAULT_REGION = us-পশ্চিম -2" বা ~ / .aws / কনফিগারেশন ফাইলটি কাজ করছে না
fatih tekin

3
আমি ইচ্ছা করি বোটো 3 কেবল কোডটি চালাচ্ছে এমন এক্স 2 উদাহরণের অঞ্চলটি ব্যবহার করতে পারে।
সেলুক সিহান


4

আমি বিশ্বাস করি, ডিফল্টরূপে বোটো সেই অঞ্চলটিকে বেছে নিয়েছিল যা আউস ক্লাইমে সেট করা আছে। আপনার অঞ্চলটি নিশ্চিত করতে আপনি # আওস কনফিগার করতে কমান্ড চালাতে পারেন এবং এন্টার টিপুন (এটি দেখায় যে আপনি অঞ্চলের সাথে অ্যাউস ক্লিমে কী ক্রেডিট সেট করেছেন)।


3

আপনি অঞ্চল_নামের প্যারামিটারটি পাস করার পরিবর্তে স্ক্রিপ্টে নিজেই পরিবেশের ভেরিয়েবলগুলি সেট করতে পারেন

os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'

কেস সংবেদনশীলতা ব্যাপার হতে পারে।


AWS_DEFAULT_REGIONকেস সংবেদনশীল।
জাইম এম।

এটি হওয়া উচিত: os.environ['AWS_DEFAULT_REGION'] = 'us-east-1' (আপার কেস)
জো

2

পাইথন 2 এর জন্য আমি খুঁজে পেয়েছি যে বোটো 3 গ্রন্থাগারটি অঞ্চলটিকে ~/.aws/configডিফল্টরূপে অন্য কোনও প্রোফাইলে সংজ্ঞায়িত করা থেকে অঞ্চলটিকে উত্স দেয় না । সুতরাং আপনি এটি নির্ধারণ করতে হবে সেশন তৈরিতে।

session = boto3.Session(
    profile_name='NotDefault',
    region_name='ap-southeast-2'
)

print(session.available_profiles)

client = session.client(
    'ec2'
)

যেখানে আমার ~/.aws/configফাইলটি দেখতে এমন দেখাচ্ছে:

[default]
region=ap-southeast-2

[NotDefault]
region=ap-southeast-2

আমি এটি করি কারণ আমি এডাব্লুএস, ব্যক্তিগত এবং কর্মে বিভিন্ন লগিনের জন্য পৃথক প্রোফাইল ব্যবহার করি।


0

যারা ক্লাউডফর্মেশন টেম্পলেট ব্যবহার করছেন তাদের জন্য। আপনি AWS_DEFAULT_REGIONব্যবহারকারীর ডেটা এবং ব্যবহার করে পরিবেশ পরিবর্তনশীল সেট করতে পারেন AWS::Region। উদাহরণ স্বরূপ,

MyInstance1:
    Type: AWS::EC2::Instance                
    Properties:                           
        ImageId: ami-04b9e92b5572fa0d1 #ubuntu
        InstanceType: t2.micro
        UserData: 
            Fn::Base64: !Sub |
                    #!/bin/bash -x

                    echo "export AWS_DEFAULT_REGION=${AWS::Region}" >> /etc/profile
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.