在DynamoDB上管理开发/暂存/生产?

时间:2012-03-26 17:52:50

标签: amazon-web-services amazon-dynamodb

我们开始使用DynamoDB,并且想要开发/暂存/生产的单独环境。我们无法找到一种自然的方法 - 我们只创建单独的AWS账户吗?或者我们使用相同的帐户,但在我们的表格中添加愚蠢的前缀(“开发产品”,“登台产品”,“产品”)?

5 个答案:

答案 0 :(得分:10)

使用任何亚马逊产品管理此标准的标准方法是创建单独的帐户,然后使用合并结算,这样就不会使结算方面复杂化。我喜欢这样的事情是你不会冒着意外运行错误命令而破坏生产代码的风险。显然,如果您登录到错误的实例,它对您没有帮助,但它仍然有很大帮助。

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

答案 1 :(得分:6)

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

明智地命名,我的偏好是name.environment.whatever。

答案 2 :(得分:5)

我无法理解为什么有一个AWS解决方案来处理DynamoDB中的生产和测试等数据库版本!拥有多个AWS账户是一件麻烦事。

如果您使用c#class属性[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
{
}

确保设置&#34;条件编译符号&#34;通过右键单击项目&gt;值属性&gt;构建&gt; &#34;条件编译符号&#34;。

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

答案 3 :(得分:4)

亚马逊现在提供可以在本地运行的服务器。您可以下载here

答案 4 :(得分:2)

我没有看到任何可以为你拥有的每个实例(dev / staging / prod)创建的表“之上”(就像关系数据库一样,所有表都在一个数据库下)。

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