2012-03-26 73 views
15

我们正在开始使用DynamoDB,并且需要用于dev/staging/production的单独环境。我们无法找到一种自然的方式来做到这一点---我们是否只创建单独的AWS账户?或者我们使用同一个帐户,但是在我们的表格中添加了愚蠢的前缀(“dev-products”,“staging-products”,“prod-products”)?在DynamoDB上管理dev/staging/production?

回答

8

使用任何亚马逊产品管理此标准方法是创建单独的帐户,然后使用合并结算,以便它不会使结算方面复杂化。我喜欢这个东西的是,你不会冒险错误地运行错误的命令来破坏生产代码。显然,如果你登录了错误的实例,它并没有帮助你,但它仍然有一点帮助。

多个帐户的其他用途可能是管理权限和更好的测试。分开帐户有助于测试,因为您可以将生产帐户重新生成100%,并在需要测试新功能时将其打开和关闭。我曾与亚马逊高级支持人员讨论过这个问题,他们表示这似乎是大公司的标准做法。一些大公司有很多帐户。在我的工作中,我们只有3个,我发现它每天都更有用。

+9

这不再是“标准方式”。多个AWS账户的开销太大。使用标签和命名约定来分隔舞台和制作。 – 2014-01-03 20:06:08

1

我没有看到任何可以为每个实例(dev/staging/prod)创建的表格“上方”(例如关系数据库,其中所有表格都位于一个数据库下)。

在我正在处理的应用程序中,我们使用表的前缀。

4

不要忘记亚马逊的访问控制大大增强了IAM。它在很大程度上为您提供独立帐户的相同优势。 (如果您想要获得不同级别的付费支持,单独帐户仍然是一种选择。)

命名明智,我的首选项是name.environment.whatever。

4

亚马逊现在提供一个服务器,您可以在本地运行。你可以下载它here

2

我不明白为什么没有AWS解决方案来处理数据库版本,如DynamoDB中的生产和测试!?拥有多个AWS账户是一件麻烦事。

它也成为一个很大的问题,如果你使用C#类属性[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编译符号”右击“conditonal编译符号”的价值。

不是一个完美的解决方案,但如果我不想创建另一个AWS账户,我不会在这里看到任何其他选项。

+0

你可以看看这个链接:https://aws.amazon.com/blogs/developer/configuring-dynamodb-tables-for-development-and-production/类似的,但它是什么aws正式推荐的方式 – 2017-10-23 16:38:20

+0

谢谢,但我正在研究的项目已经停产。然后,我发现了任何备份发电机数据库以保存数据的简单方法。不要以为我将来会用DynamoDb做任何事情,也不会推荐给其他人。 – 2017-10-24 08:08:47