web-dev-qa-db-fra.com

boto3 client NoRegionError: vous devez spécifier une erreur de région seulement parfois

J'ai un client boto3:

boto3.client('kms')

Mais cela arrive sur les nouvelles machines, elles s'ouvrent et se ferment dynamiquement.

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

Pourquoi cela arrive-t-il? et pourquoi seulement une partie du temps?

87
WebQube

D'une manière ou d'une autre, vous devez indiquer à boto3 dans quelle région vous souhaitez que le client kms soit créé. Cela pourrait être fait explicitement en utilisant le paramètre region_name comme dans:

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

ou vous pouvez associer une région par défaut à votre profil dans votre fichier ~/.aws/config, comme suit:

[default]
region=us-west-2

ou vous pouvez utiliser une variable d'environnement comme dans:

export AWS_DEFAULT_REGION=us-west-2

mais vous devez dire à boto3 quelle région utiliser.

196
garnaat

Je pense que, par défaut, boto choisit la région située dans aws cli. Vous pouvez exécuter la commande #aws configure et appuyer sur Entrée (elle indique les classements que vous avez définis dans aws cli avec région) deux fois pour confirmer votre région.

3
josh eversman

vous pouvez également définir des variables d'environnement dans le script lui-même, plutôt que de transmettre le paramètre nom_région

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

la sensibilité à la casse peut avoir de l'importance.

2
Abhishek Garg
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'

Dans mon cas, la sensibilité importait.

1
Anthony G