Mam klienta boto3:
boto3.client('kms')
Ale dzieje się to na nowych maszynach, otwierają się i zamykają dynamicznie.
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()
Dlaczego to się dzieje? i dlaczego tylko przez część czasu?
Odpowiedzi:
Tak czy inaczej, musisz powiedzieć boto3, w którym regionie chcesz, aby
kms
klient został utworzony. Można to zrobić jawnie używającregion_name
parametru, jak w:lub możesz mieć domyślny region powiązany z Twoim profilem w swoim
~/.aws/config
pliku, jak w:lub możesz użyć zmiennej środowiskowej, jak w:
ale musisz powiedzieć boto3, którego regionu użyć.
źródło
W moim przypadku liczy się wrażliwość.
źródło
Uważam, że domyślnie boto wybiera region ustawiony w aws cli. Możesz uruchomić polecenie #aws configure i nacisnąć Enter (pokazuje, jakie kredyty ustawiłeś w aws cli z regionem) dwukrotnie, aby potwierdzić swój region.
źródło
możesz także ustawić zmienne środowiskowe w samym skrypcie, zamiast przekazywać parametr nazwa_regionu
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
wielkość liter może mieć znaczenie.
źródło
AWS_DEFAULT_REGION
rozróżnia wielkość liter.os.environ['AWS_DEFAULT_REGION'] = 'us-east-1'
(wielkie litery)W przypadku Pythona 2 odkryłem, że biblioteka boto3 nie pobiera regionu z regionu,
~/.aws/config
jeśli region jest zdefiniowany w innym profilu domyślnie. Więc musisz to zdefiniować podczas tworzenia sesji.Gdzie mój
~/.aws/config
plik wygląda tak:Robię to, ponieważ używam różnych profili do różnych loginów do AWS, Personal i Work.
źródło
Dla osób korzystających z szablonu CloudFormation. Możesz ustawić
AWS_DEFAULT_REGION
zmienną środowiskową za pomocą UserData iAWS::Region
. Na przykład,źródło