2012-03-26 15 views
15

Zaczynamy używać DynamoDB i chcemy mieć osobne środowiska dla dev/inscenizacji/produkcji. Nie potrafimy tego zrobić w naturalny sposób - czy tworzymy osobne konta AWS? Czy używamy tego samego konta, ale dodajemy niemądre przedrostki do naszych tabel ("produkty deweloperskie", "produkty etapujące", "produkty prod")?Zarządzanie dev/inscenizacja/produkcja na DynamoDB?

Odpowiedz

8

Standardowym sposobem zarządzania tym produktem Amazon jest utworzenie oddzielnych kont, a następnie korzystanie z płatności skonsolidowanych, aby nie komplikować aspektu fakturowania. Rzecz w tym, że nie ryzykujesz złamania kodu produkcyjnego przez przypadkowe uruchomienie niewłaściwego polecenia. Oczywiście to nie pomaga, jeśli jesteś zalogowany do niewłaściwej instancji, ale nadal pomaga całkiem sporo.

Inne zastosowania wielu kont mogą służyć do zarządzania uprawnieniami i lepszymi testami. Posiadanie oddzielnych kont pomaga w testowaniu, ponieważ możesz odtworzyć konto produkcyjne w 100% i włączyć je, gdy chcesz przetestować nowe funkcje. Rozmawiałem ze wsparciem premium Amazon na temat tego problemu i powiedzieli, że wydaje się to standardową praktyką dla większych firm. Niektóre większe firmy mają wiele kont. W mojej pracy mamy po prostu 3 i uważam, że jest bardziej przydatna każdego dnia.

+9

To już nie jest "standardowy sposób". Obciążenie z wielu kont AWS jest zbyt duże. Użyj tagów i konwencji nazewnictwa, aby oddzielić etapy i produkcje. –

1

Nie widzę niczego, co jest "powyżej" tabel, które można utworzyć dla każdej instancji (dev/staging/prod), którą masz (jak relacyjna baza danych, która ma wszystkie tabele w jednym DB).

Przy aplikacji, nad którą pracuję, używamy prefiksów do tabel.

4

Nie należy zapominać o znacznie ulepszonym IAM firmy Amazon w zakresie kontroli dostępu. W dużej mierze daje to te same korzyści z oddzielnych kont. (Oddzielne konta nadal są opcją, jeśli chcesz mieć różne poziomy płatnego wsparcia.)

Nazywa się mądrością, moje preferencje to nazwa.środowisko.wszystko.

4

Amazon zapewnia teraz serwer, który można uruchomić lokalnie. Możesz go pobrać here.

2

Nie mogę zrozumieć, dlaczego nie ma rozwiązania AWS do obsługi wersji DB, takich jak produkcja i test w DynamoDB !? Posiadanie wielu kont AWS to kłopot.

staje się on również duży problem prefiks nazw tabel, jeśli uzyska elementy za pomocą C# klasy atrybutu [DynamoDBTable("Users")] i pobierania danych z DynamoDBContext.Load<User>(userId);

jako atrybuty wartości nie można zmienić podczas wykonywania skończyło się to rozpuszczanie przy użyciu symboli kompilacji conditonal i ustawianie stałych, które mogą być używane jako wartość atrybutu klasy.

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 
{ 
} 

Upewnij się, że ustawienie „conditonal symboli kompilacji” wartość poprzez kliknięcie prawym przyciskiem myszy na projekcie> Właściwości> Budowa> „conditonal symbole kompilacji”.

Nie jest to idealne rozwiązanie, ale nie widzę tutaj innych opcji, jeśli nie chcę tworzyć kolejnego konta AWS.

+0

możesz rzucić okiem na ten link: https://aws.amazon.com/blogs/developer/configuring-dynamodb-tables-for-development-and-production/ Podobne, ale tak brzmi aws oficjalnie polecany sposób –

+0

Dzięki, ale projekt, nad którym pracowałem, został przerwany. Wtedy odkryłem, że nie ma łatwego sposobu tworzenia kopii zapasowej bazy danych dynamo, aby zapisać dane.Nie myśl, że użyję DynamoDb do czegokolwiek w przyszłości i nie poleciłbym go nikomu innemu. –