2015-08-22 1 views
0

У меня есть небольшое приложение NodeJS на ElasticBeanstalk, и это общается с S3 и DynamoDB. В настоящее время я устанавливаю ключ доступа и секретный ключ как переменную среды и использую их для обновления объекта aws.config. Это лучшая практика? Можно генерировать или использовать учетные данные на основе роли службы, поэтому мне больше не нужно устанавливать учетные данные в переменные среды? Итак, для чего у меня есть роль службы, когда я должен использовать учетные данные от пользователя для доступа к любым службам, таким как DynamoDB или S3.Используйте учетные данные EC2 на ElasticBeanstalk с NodeJS

+0

Если вам нужна безопасность, вам придется как-то использовать криптографию, но переменные среды используются довольно часто. Я думаю, что такие вещи, как https://learn.chef.io/, используются, чтобы избежать всех ручных компонентов настройки поля. – Catalyst

ответ

2

Учетные данные профиля экземпляра лучше, чем использование переменных среды, поскольку учетные данные профиля профиля автоматически поворачиваются каждые несколько часов. Поскольку вы использовали термин роль службы в своем вопросе, позвольте мне уточнить разницу между ролью службы и профилем экземпляра.

Роль профиля экземпляра - это не то же самое, что «роль службы». Роль службы - это роль, предоставляющая разрешения на использование beanstalk для вызова других сервисов от вашего имени.

Учетные данные профиля экземпляра связаны с вашим экземпляром EC2, и этот экземпляр EC2 получает только ваш экземпляр EC2.

Копирование больше деталей от моего предыдущего ответа на эту тему here:

При создании среды вы можете выбрать, чтобы передать IamInstanceProfile (обычно с именем aws-elasticbeanstalk-ec2-role) и роль службы (как правило, с именем aws-elasticbeantalk-service-role). Эти две роли необходимы при использовании расширенного мониторинга работоспособности приложений. Обратите внимание, что для этих двух ролей требуется совершенно другой набор разрешений, и вы должны использовать разные роли для каждого из них. Вы можете найти список разрешений, необходимых для профиля службы и профиля экземпляра, зарегистрированного here.

При создании/клонировании/изменении среды с использованием AWS-консоли вам будет предложено выбрать роль службы. Если вы никогда раньше не использовали роль службы, вам будет предоставлена ​​опция «Создать новую роль». Консоль позволяет создать роль службы, требуемую beanstalk, одним нажатием кнопки. Вы можете просмотреть разрешения перед созданием роли.

После первого создания консоль представит вам раскрывающийся список с той ролью, которую вы создали ранее (обычно с именем aws-elasticbeanstalk-service-role), и вы можете повторно использовать эту роль службы.

Из документации: «Роль службы - это роль IAM, которую Elastic Beanstalk предполагает при вызове других сервисов от вашего имени. Эластичный Beanstalk использует роль службы, которую вы указываете при создании среды эластичного beanstalk при вызове Amazon Elastic Compute Cloud (Amazon EC2), Elastic Load Balancing и Auto Scaling API для сбора информации о состоянии ресурсов AWS ».

При создании/использовании роли вам необходимо убедиться, что пользователь IAM имеет разрешение на ролевую роль для созданной роли. Если вы не используете учетную запись root, убедитесь, что у пользователя IAM есть correct policies. Обратите внимание на разрешение iam: PassRole позволяет вашему пользователю IAM передавать роль beanstalk-сервису.

Подробнее о ролях обслуживания и профиле профиля here.

+0

Так что я должен был только подключить S3 Access в aws-elasticbeanstalk-ec2-role и затем установить связь с S3 без заданных учетных данных?по var s3 = new aws.S3(); – user1791139

+0

Да ... См. Разрешения здесь http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts-roles.html#concepts-roles-instance, возможно, вам потребуется больше использовать рабочий уровень или ECS. В вашем случае вам кажется s3 и dynamodb –

+1

Спасибо, что работает :) – user1791139

Смежные вопросы