私たちはDynamoDBを使い始めており、dev/staging/production用に別々の環境が必要です。これを行う自然な方法を理解できません---別のAWSアカウントを作成するだけですか?または、同じアカウントを使用しますが、テーブルに愚かなプレフィックス(「開発製品」、「ステージング製品」、「製品」)を追加しますか?DynamoDBで開発/ステージング/プロダクションを管理していますか?
答えて
これをAmazonの製品で管理する標準的な方法は、別々のアカウントを作成してから、請求処理を複雑にしないように統合請求を使用することです。私が気に入っているのは、誤って間違ったコマンドを実行して生産コードを壊す危険がないということです。明らかに間違ったインスタンスにログインしても、それはまだ役に立ちますが、それはあなたを助けません。
複数のアカウントを使用する他の用途は、アクセス許可を管理してテストを改善することです。アカウントを別にすると、プロダクションアカウントを100%再現して新しい機能をテストする必要があるときにオンとオフを切り替えることができるので、テストに役立ちます。私はこの問題に関するアマゾンのプレミアムサポートについて話しましたが、これは大企業にとっては標準的なプラクティスであるようです。大企業には多くのアカウントがあります。ここでの私の仕事では、3つしかないし、毎日もっと役に立つと思う。
私は、あなたが持っている各インスタンス(dev/staging/prod)に対して作成できるテーブルの上には表示されません(1つのDBの下にすべてのテーブルを持つリレーショナルデータベースのように)。
私が作業しているアプリケーションでは、テーブルにプレフィックスを使用しています。
アクセス制御のためにAmazonの大幅に強化されたIAMを忘れないでください。これは主に、別々のアカウントと同じメリットをもたらします。 (有料のサポートのレベルを変えたい場合は、依然として別のアカウントを選択することができます)。
名前を付けて、私の好みはname.environment.whateverです。
Amazonは、ローカルで実行できるサーバーを提供しています。 hereをダウンロードできます。
なぜ、DynamoDBのプロダクションとテストのようなDBバージョンを扱うためのAWSソリューションがないのですか?複数のAWSアカウントを持つことは面倒です。
はまた、あなたがC#クラス属性[DynamoDBTable("Users")]
を使用してデータをフェッチすることで、アイテムを取得する場合、テーブル名の前に付けるために大きな問題となってDynamoDBContext.Load<User>(userId);
としては、値が私がなってしまった実行時に変更することはできません属性これはconditonalコンパイルシンボルを使用し、クラス属性値として使用できる定数を設定することで解決されます。
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アカウントを作成したくない場合は、完璧な解決策ではありませんが、他のオプションは表示されません。
あなたはこのリンクを見ることができます:https://aws.amazon.com/blogs/developer/configuring-dynamodb-tables-for-development-and-production/似ていますが、それは何を正式に推奨されているawsです –
ありがとう私が取り組んでいたプロジェクトは中止されました。私は、データを保存するためにダイナモデータベースをバックアップする簡単な方法があることを発見しました。私はDynamoDbを今後何かに使うつもりはないと思うし、他の誰かにもそれを勧めないだろう。 –
- 1. dotnetnukeで学生管理ポータルを開発できますか?
- 2. 管理者ログイン開発
- 3. ローカル開発サーバーからのリモートデータベース管理
- 4. ウェブ開発を管理する
- 5. デバイス/サーバ開発でのバージョン管理
- 6. iOS開発:このコードでメモリをどのように誤って管理していますか?
- 7. 開発者および管理者の問題管理システム
- 8. レールサービス管理の開発ですか? (監督はすべてのサービスを開始しません)
- 9. DoS攻撃の開発者またはシステム管理者が発行します
- 10. Git Bashを使用してプライベートホストSSHに接続してウェブサイトを展開、管理、開発します
- 11. バージョン管理のWordPress開発ワークフロー
- 12. Web開発バージョン管理 - 複数のバージョン
- 13. Sitefinity開発環境とソースコード管理
- 14. Web開発のソースコードのバージョン管理のベストプラクティスは何ですか?
- 15. データベースの開発と管理にはどのツールを使用しますか?
- 16. 開発とライブ環境でWordpressブログを管理する
- 17. "製品開発"と "ソフトウェア開発"を管理することの相違点
- 18. IntelliJは管理者権限でプロセスを開始しますか?
- 19. DjangoでCMSなしのページを管理していますか?
- 20. ユーザープロファイル管理者としてSP2010のユーザープロファイルを管理します
- 21. 別のココアアプリからApplication.appのビューを開始して管理しますか?
- 22. Wordpressの管理者がローカルの開発環境で応答しない
- 23. イベントリスナーをFlashで管理していますか?
- 24. GitでJoomlaのWebサイトを管理していますか?
- 25. mnesia DBMSで増分カウンタを管理していますか?
- 26. Androidでハンドラーを管理しますか?
- 27. Dockerコンテナで開発するときにどのようにパーミッションを管理しますか?
- 28. Linuxサーバでmagento管理インターフェースを開いたときにMagento管理インターフェース
- 29. アドレスバーから管理者としてコマンドプロンプトを開く方法
- 30. 管理者としてjavaからコマンドプロンプト(CMD)を開始
これはもはや「標準的な方法」ではありません。複数のAWSアカウントからのオーバーヘッドは大きすぎます。ステージングとプロダクションを分離するには、タグと命名規則を使用します。 –