27

我们开始使用 DynamoDB,并且需要单独的开发/登台/生产环境。我们想不出一个自然的方法来做到这一点——我们只是创建单独的 AWS 账户吗?还是我们使用相同的帐户,但在我们的表中添加愚蠢的前缀(“dev-products”、“staging-products”、“prod-products”)?

4

5 回答 5

14

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

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

于 2012-03-27T16:05:53.737 回答
6

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

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

于 2012-04-01T00:44:56.753 回答
5

我不明白为什么没有 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
{
}

确保通过右键单击项目>属性>构建>“条件编译符号”来设置“条件编译符号”值。

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

于 2016-02-16T21:46:50.207 回答
4

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

于 2013-09-23T10:27:20.640 回答
3

我没有看到可以为您拥有的每个实例(dev/staging/prod)创建的表“之上”的任何内容(例如关系数据库,它在一个 DB 下拥有所有表)。

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

于 2012-03-27T14:14:48.630 回答