2014-09-18 3 views
5

При запуске кода в экземпляре EC2 SDK, который вы используете для доступа к ресурсам AWS, автоматически переходит на локально связанный веб-сервер на 169.254.169.254 и получает эти экземпляры AWS (access_key, secret), которые необходимы для общения с другими службами AWS.Передача учетных данных AWS (учетные данные роли IAM) для кода, выполняемого в контейнере докера.

Также есть и другие варианты, например, настройки учетных данных в ENV переменных или передавать их в качестве командной строки арг ...

Что является лучшей практикой здесь? Я действительно предпочитаю, чтобы контейнер получал доступ к 169.254.169.254 (путем маршрутизации запросов) или даже лучше запускал прокси-контейнер, который имитирует поведение реального сервера по адресу 169.254.169.254.

Есть ли там решение?

ответ

3

Служба метаданных EC2, как правило, будет доступна из докеров (если вы не используете более настраиваемую настройку сети - см. this answer по аналогичному вопросу).

Если ваша настройка сети докеры не позволяет получить доступ к ней, вы можете использовать директиву ENV в своем Dockerfile или передавать их непосредственно во время запуска, но имейте в виду, что учетные данные из ролей IAM автоматически вращаются с помощью AWS.

+0

mmm, так что, я думаю, мое недоразумение исходит из моих экспериментов с boot2docker (на Mac), где сетевое взаимодействие неудобно или по крайней мере отличается. Поэтому в основном все должно работать. мммм. Мне нужно попробовать это. – Ali

+0

@Ali, где вы можете видеть, что он нормально работает в докере, не отправив исходные ключи на boto? – stormfield

+0

Единственная проблема, с которой я столкнулся с этой архитектурой (пусть AWS SDK/CLI в контейнере попадает в конечную точку метаданных EC2 для учетных данных) заключается в том, что я хочу контролировать мелкие зерна над тем, какие разрешения будут иметь контейнер. Один контейнер может записывать только на S3, в то время как другой я, возможно, не хочу иметь никаких разрешений S3, а просто позволяю ему публиковать в SNS. Эта конструкция будет означать, что мне нужно добавить надмножество разрешений на EC2, и все мои контейнеры будут иметь одинаковые значения. –