Saya memiliki klien boto3:
boto3.client('kms')
Tapi itu terjadi pada mesin baru, Mereka membuka dan menutup secara dinamis.
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()
Mengapa ini terjadi? dan mengapa hanya sebagian saja?
Jawaban:
Dengan satu atau lain cara Anda harus memberi tahu boto3 di wilayah mana Anda ingin
kms
klien dibuat. Ini dapat dilakukan secara eksplisit menggunakanregion_name
parameter seperti di:kms = boto3.client('kms', region_name='us-west-2')
atau Anda dapat memiliki wilayah default yang terkait dengan profil Anda di
~/.aws/config
file Anda seperti di:[default] region=us-west-2
atau Anda dapat menggunakan variabel lingkungan seperti:
export AWS_DEFAULT_REGION=us-west-2
tetapi Anda perlu memberi tahu boto3 wilayah mana yang digunakan.
sumber
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
Dalam kasus saya, kepekaan penting.
sumber
Untuk Python 2 saya telah menemukan bahwa pustaka boto3 tidak mengambil sumber wilayah dari
~/.aws/config
jika wilayah tersebut didefinisikan dalam profil yang berbeda ke default. Jadi, Anda harus menentukannya dalam pembuatan sesi.session = boto3.Session( profile_name='NotDefault', region_name='ap-southeast-2' ) print(session.available_profiles) client = session.client( 'ec2' )
Di mana
~/.aws/config
file saya terlihat seperti ini:Saya melakukan ini karena saya menggunakan profil yang berbeda untuk login berbeda ke AWS, Personal dan Work.
sumber
Saya percaya, secara default, boto memilih wilayah yang disetel di aws cli. Anda dapat menjalankan perintah #aws configure dan tekan enter (ini menunjukkan kredibilitas apa yang telah Anda setel di aws cli dengan wilayah) dua kali untuk mengonfirmasi wilayah Anda.
sumber
Anda juga dapat menyetel variabel lingkungan di skrip itu sendiri, daripada meneruskan parameter region_name
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
sensitivitas kasus mungkin penting.
sumber
AWS_DEFAULT_REGION
peka huruf besar / kecil.os.environ['AWS_DEFAULT_REGION'] = 'us-east-1'
(huruf besar)Bagi mereka yang menggunakan template CloudFormation. Anda dapat menyetel
AWS_DEFAULT_REGION
variabel lingkungan menggunakan UserData danAWS::Region
. Sebagai contoh,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
sumber
Atau Anda dapat menjalankan yang berikut ini (aws cli)
itu akan meminta Anda untuk wilayah tersebut.
perhatikan di
~/.aws/config
dalamnya:[default] region = ap-southeast-1 output = json [profile prod] region = ap-southeast-1 output = json
[ Profil nama profil ] dalam kurung kotak
sumber