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

Dom*_*nic 19 amazon-web-services amazon-dynamodb

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

bwi*_*ght 11

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

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

  • 这不再是"标准方式".来自多个AWS账户的开销太大了.使用标记和命名约定来分隔登台和生产. (11认同)

小智 6

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

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


Rik*_*löf 5

我无法理解为什么没有用于处理数据库版本(如DynamoDB中的生产和测试)的AWS解决方案!拥有多个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
{
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 您可以查看以下链接:https://aws.amazon.com/blogs/developer/configuring-dynamodb-tables-for-development-and-production/类似,但这是AWS官方推荐的方式 (2认同)