Преодоление требования уникальности глобального имени корзины S3 - PullRequest
0 голосов
/ 29 ноября 2018

Мы разделили наши рабочие нагрузки для dev / test / prod и т. Д. На разные учетные записи в AWS Orgnaizations.https://aws.amazon.com/organizations/

S3 требует, чтобы имена сегментов были уникальными во всем мире.Из-за этого у нас не может быть S3 Bucket, например «OurS3Data» в каждой учетной записи.Мы могли бы разделить одну корзину между учетными записями, но мы не хотим смешивать данные между учетными записями.

Какие существуют стратегии для преодоления этого?

Я рассмотрел использование Route53 / DNS для указания на разные сегменты, поэтому «OurS3Data.CompanyInternal.Com» всегда указывает на специфический для аккаунта сегмент внутри учетной записи - но мы ссылаемся на этот сегмент из кода, используя несколько версий AWSSDK, и я почти уверен, что это не поддерживается.

Мы также рассмотрели вопрос о сохранении параметра в хранилище параметров AWS Systems Manager, но это похоже на ошибку https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html

1 Ответ

0 голосов
/ 29 ноября 2018

В общем случае вы должны читать все внешние идентификаторы (имя сегмента, имя базы данных и т. Д.) Из конфигурации.Если вы жестко закодировали идентификаторы, это значит, что вам нужно пересобрать свое программное обеспечение, чтобы что-то изменить.

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

Некоторые другие подходы включают внешний файл конфигурации в известном месте на машине развертывания, переменные среды (этопредпочтительный подход 12-факторное приложение ) или другой службы конфигурации, такой как Консул .

Обновление

ЛичноЯ считаю это хаком, но если у вас действительно нет другого способа управлять конфигурацией ...

Назовите свои сегменты после идентификатора вашей учетной записи и используйте AWSSecurityTokenService.getCallerIdentity() для получения этого идентификатора.Если вы не хотите использовать фактический идентификатор в качестве имени сегмента, вы можете применить хеш-функцию (но учтите, что имена сегментов ограничены 63 символами).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...