Фактический экземпляр ec2 не получает профиль экземпляра iam, который создает Elastic Beanstalk, и говорит, что среда имеет.Как это сделать? - PullRequest
1 голос
/ 26 сентября 2019

Я использую boto3 для удаленного создания приложений и сред Elastic Beanstalk.Я хочу, чтобы одна из этих сред вызывала другие сервисы AWS, используя boto3.Насколько я понимаю, Elastic Beanstalk «создает профиль экземпляра по умолчанию, называемый aws-elasticbeanstalk-ec2-role, и назначает ему управляемые политики с разрешениями по умолчанию».(с https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-instanceprofile.html)

На этой странице также указано «Профиль экземпляра - это контейнер для роли AWS Identity and Access Management (IAM), который можно использовать для передачи информации о роли в экземпляр Amazon EC2 при запуске экземпляра»).. "

Когда я проверяю конфигурацию среды Elastic Beanstalk в веб-консоли, я вижу IAM instance profile: aws-elasticbeanstalk-ec2-role под заголовком Безопасность.

Однако мой экземпляр не может вызывать функции boto3 без ошибки botocore.exceptions.NoCredentialsError: Unable to locate credentials.

Когда я проверяю экземпляр ec2 на консоли, я не вижу ничего под ролью IAM. Если я установлю отсюда роль IAM, экземпляр сможет вызывать функции boto3.

Как мнеполучить экземпляр ec2 для автоматического наследования роли IAM .. или как мне указать эту роль, которую нужно установить, или другую пользовательскую роль?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Если мы посмотрим на определение функции boto3 " create_environment () ", у нас есть возможность указать "optionSettings"

OptionSettings=[
    {
        'ResourceName': 'string',
        'Namespace': 'string',
        'OptionName': 'string',
        'Value': 'string'
    },
]

Мы можем использовать это, чтобы явно указатьПрофиль экземпляра IAM, который необходимо присоединить к экземплярам EC2, запущенным как часть вашей среды Beanstalk.

Используемой настройкой параметра будет « aws: autoscaling: launchconfiguration », имя параметра: IamInstanceProfile, значением по умолчанию которого является «NONE».Укажите имя профиля экземпляра или ARN для значения.

0 голосов
/ 26 сентября 2019

Вы получаете профиль экземпляра из метаданных: curl -s 169.254.169.254/latest/meta-data/iam/info

...