Как указать metadata_service_timeout во время создания клиента Boto? - PullRequest
2 голосов
/ 26 мая 2020

Я использую следующий способ создания ботоклиента

def create_boto_client(self, service_name: str):
    return boto3.session.Session().client(
        service_name=service_name
    )
    # or I can do: return boto3.client(service_name)

Как я могу установить значения «metadata_service_timeout» и «metadata_service_num_attempts»?

Мне нужно указать их, потому что в противном случае boto может не получить учетные данные в роли IAM с сервера метаданных.

Я прочитал в do c, что это значение можно указать следующим образом:

 # ~/.aws/config
[default]
metadata_service_timeout = 5.0
metadata_service_num_attempts = 10

, но у меня нет возможности добавить этот файл в экземпляр.

1 Ответ

1 голос
/ 27 мая 2020

Вы можете использовать переменные env :

  • AWS_METADATA_SERVICE_TIMEOUT : количество секунд до истечения времени ожидания подключения к службе метаданных экземпляра . При попытке получить учетные данные на экземпляре EC2, который был настроен с ролью IAM, соединение со службой метаданных экземпляра по умолчанию прерывается через 1 секунду. Если вы знаете, что работаете на экземпляре EC2 с настроенной ролью IAM, вы можете увеличить это значение при необходимости.

  • AWS_METADATA_SERVICE_NUM_ATTEMPTS : при попытке получить учетные данные на экземпляр EC2, настроенный с ролью IAM, boto3 сделает только одну попытку получить учетные данные из службы метаданных экземпляра, прежде чем отказаться. Если вы знаете, что ваш код будет работать в экземпляре EC2, вы можете увеличить это значение, чтобы заставить boto3 повторить попытку несколько раз, прежде чем отказаться.

Чтобы установить их изнутри python:

os.environ["AWS_METADATA_SERVICE_TIMEOUT"] = "5.0"
os.environ["AWS_METADATA_SERVICE_NUM_ATTEMPTS"] = "10"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...