Управление dev/staging/production на DynamoDB?

Мы начинаем использовать DynamoDB и хотим создавать отдельные среды для dev/staging/production. Мы не можем найти естественный способ сделать это: мы просто создаем отдельные учетные записи AWS? Или мы используем одну и ту же учетную запись, но добавляем глупые префиксы к нашим таблицам ( "dev-products", "staging-products", "prod-products" )?

Ответы

Ответ 1

Стандартный способ управления этим с любыми продуктами amazon - создавать отдельные учетные записи, а затем использовать консолидированный биллинг, чтобы он не усложнял биллинговый аспект. То, что мне нравится в этом, заключается в том, что вы не рискуете нарушить производственный код, случайно выполнив неправильную команду. Очевидно, это не поможет вам, если вы вошли в неправильный экземпляр, но это все еще помогает совсем немного.

Другие использования для нескольких учетных записей могут заключаться в управлении разрешениями и лучшем тестировании. Наличие отдельных учетных записей помогает тестировать, потому что вы можете воспроизвести производственный счет на 100% и включить его и выключить, когда вам нужно протестировать новые функции. Я поговорил с поддержкой Amazon premium по этой проблеме, и они сказали, что это стандартная практика для крупных компаний. У некоторых крупных компаний есть много счетов. В моей работе здесь у нас всего 3, и я считаю его более полезным каждый день.

Ответ 2

Не забывайте, что Amazon значительно улучшил IAM для контроля доступа. Это в значительной степени дает вам одинаковые преимущества отдельных учетных записей. (Отдельные учетные записи по-прежнему являются опцией, если вы хотите иметь разные уровни платной поддержки.)

Именование мудрого, мое предпочтение - name.environment.whatever.

Ответ 3

Amazon теперь предоставляет сервер, который можно запускать локально. Вы можете скачать здесь.

Ответ 4

Я не понимаю, почему нет решения AWS для обработки DB-версий, таких как производство и тестирование в DynamoDB!? Наличие нескольких учетных записей AWS - это хлопот.

Также становится большой проблемой префикс имен таблиц, если вы получаете элементы с помощью атрибута класса С# [DynamoDBTable("Users")] и извлекаете данные с помощью DynamoDBContext.Load<User>(userId);

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

public static class DynamoDbTablesConfiguration
{
        #if Debug
            public const string UserTable = "Users_Dev";
        #endif

        #if Release
            public const string UserTable = "Users_Production";
        #endif
}

[DynamoDBTable(DynamoDbTablesConfiguration.UserTable)]
public class User
{
}

Удостоверьтесь, что вы установили значение "conditonal compilation symbols", щелкнув правой кнопкой мыши по проекту > Свойствa > Сборкa > "условные символы компиляции".

Не идеальное решение, но я не вижу других вариантов здесь, если я не хочу создавать еще одну учетную запись AWS.

Ответ 5

Я не вижу ничего, что "выше" таблиц, которые могут быть созданы для каждого экземпляра (dev/staging/prod), который у вас есть (например, реляционная база данных, в которой есть все таблицы под одним БД).

В приложении, над которым я работаю, мы используем префиксы для таблиц.