2012-03-26 15 views
15

Estamos comenzando a usar DynamoDB, y queremos entornos separados para desarrollo/etapas/producción. No podemos encontrar una manera natural de hacerlo --- ¿solo creamos cuentas AWS separadas? ¿O usamos la misma cuenta, pero agregamos prefijos tontos a nuestras tablas ("dev-products", "staging-products", "prod-products")?¿Administrando dev/staging/producción en DynamoDB?

Respuesta

8

La forma estándar de administrar esto con cualquier producto de Amazon es crear cuentas separadas y luego usar la facturación consolidada para que no complique el aspecto de facturación. Lo que me gusta de esto es que no corre el riesgo de romper el código de producción al ejecutar accidentalmente el comando incorrecto. Obviamente, no te ayuda si estás conectado a la instancia incorrecta, pero aún así te ayuda bastante.

Otros usos para cuentas múltiples podrían ser la administración de permisos y mejores pruebas. Tener las cuentas separadas ayuda a las pruebas porque puede reproducir la cuenta de producción al 100% y activarla y desactivarla cuando necesite probar nuevas funciones. He hablado con el soporte premium de Amazon sobre este tema y me han dicho que esto parece ser una práctica estándar para las compañías más grandes. Algunas de las compañías más grandes tienen muchas cuentas. En mi trabajo aquí solo tenemos 3 y lo encuentro más útil todos los días.

+9

Esto ya no es la "forma estándar". La sobrecarga de múltiples cuentas de AWS es demasiado grande. Use etiquetas y convenciones de nomenclatura para separar el montaje y la producción. –

1

No veo nada que esté "arriba" de las tablas que se pueden crear para cada instancia (dev/staging/prod) que tiene (como una base de datos relacional, que tiene todas las tablas en una base de datos).

En la aplicación en la que estoy trabajando, estamos usando prefijos en las tablas.

4

No se olvide de la IAM mejorada de Amazon para el control de acceso. En gran medida le da los mismos beneficios de cuentas separadas. (Las cuentas separadas siguen siendo una opción si desea tener diferentes niveles de soporte pago.)

Naming wise, mi preferencia es name.environment.whatever.

4

Amazon ahora proporciona un servidor que se puede ejecutar localmente. Puede descargarlo here.

2

No entiendo por qué no hay una solución de AWS para manejar versiones de DB como producción y prueba en DynamoDB? Tener múltiples cuentas AWS es una molestia.

También se convierte en un gran problema como prefijo para los nombres de tabla si consigue los artículos mediante el atributo de clase C# [DynamoDBTable("Users")] y ir a buscar los datos con DynamoDBContext.Load<User>(userId);

como atributos valores no se pueden cambiar en tiempo de ejecución que terminó con esto se soluciona usando símbolos de compilación conditonal y constantes de configuración que se pueden usar como valor de atributo de clase.

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

asegúrese de que establece el valor "símbolos de compilación conditonal" haciendo clic derecho sobre el proyecto> Propiedades> Crear> "símbolos de compilación conditonal".

No es una solución perfecta, pero no veo ninguna otra opción aquí si no quiero crear otra cuenta de AWS.

+0

puede ver este enlace: https://aws.amazon.com/blogs/developer/configuring-dynamodb-tables-for-development-and-production/ Similares pero es lo que oficialmente se recomienda –

+0

Gracias pero el el proyecto en el que estaba trabajando ha sido descontinuado. Luego descubrí que no había ninguna forma fácil de realizar una copia de seguridad de una base de datos de dínamo para guardar los datos.No creo que vaya a utilizar DynamoDb para nada en el futuro y tampoco se lo recomendaría a nadie más. –

Cuestiones relacionadas