В API-интерфейсах AWS IAM используется в конечном итоге согласованная модель, поэтому задержки возникают во время обновления ресурсов IAM (например, при создании ключей доступа). Это означает, что даже если вызов функции для создания ключа доступа AWS завершается успешно, это не обязательно означает, что ключ доступа AWS завершил свое создание на серверах AWS немедленно. https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_general.html#trouультив. , мы можем установить политику повторных попыток для создания пользователей IAM, используя вновь созданные ключи доступа AWS, имея время ожидания: Добавление спящего режима сразу после создания ключа доступа AWS - это обходной путь. import boto3
import botocore
import backoff
@backoff.on_exception(backoff.expo, botocore.exceptions.ClientError, max_time=30)
def create_user(access_key_id, access_key_secret, username):
temp_session = boto3.Session(aws_access_key_id=access_key_id,aws_secret_access_key=access_key_secret,region_name='ap-southeast-1')
temp_iam_client = temp_session.client('iam')
temp_iam_client.create_user(UserName=username)
session = boto3.session.Session(profile_name='default')
iam_client = session.client('iam')
response_access_key = iam_client.create_access_key(UserName='user')
access_key_id = response_access_key.get('AccessKey').get('AccessKeyId')
access_key_secret = response_access_key.get('AccessKey').get('SecretAccessKey')
create_user(access_key_id, access_key_secret, 'my-new-user')
Старый ответ
import boto3
import time
session1 = boto3.session.Session(profile_name='my_profile')
iam_client = session1.client('iam')
responseCreateAccessKey = iam_client.create_access_key(UserName=user)
accessKeyId = responseCreateAccessKey.get('AccessKey').get('AccessKeyId')
accessKeySecret = responseCreateAccessKey.get('AccessKey').get('SecretAccessKey')
time.sleep(10)
temp_session = boto3.Session(aws_access_key_id=accessKeyId,aws_secret_access_key=accessKeySecret,region_name='ap-southeast-1')
temp_iam_client = temp_session.client('iam')
responseCreateUser = temp_iam_client.create_user(UserName='my-new-user')
Нет никакого способа ограничить использование памяти явно (скажите что использование <= 100 МиБ).
Но то, что можно сделать, ограничить количество процессов установкой PassengerMaxPoolSize. Набор, который это и затем видит, как использование памяти (который зависит от приложений, которые Вы запускаете).
Кроме того, использование Ruby Enterprise Edition может помочь.