web-dev-qa-db-ja.com

AWSでプロジェクトを整理する方法は?

私たちのチームでは、メインのクラウドプロバイダーとしてAWSを使用しており、現在、プラットフォームでホストされている3つのプロジェクトがあります。

今後数週間でさらに2つのプロジェクトが予定されていますが、まず、現在の組織が少し混乱しているため、プロジェクトを整理します。

私たちは、プロジェクトを次の規則に従って編成したいと考えています。

  • 各プロジェクトには、ステージングおよび実稼働環境が必要です。
  • 各プロジェクトは相互に独立しているため、プロジェクトのリソースを別のプロジェクト(VPCやS3バケットなど)から確認することはできません。
  • クライアントは、プロジェクト(ステージングおよび実稼働環境)の料金を支払う責任があります。
  • クライアントは請求書の支払いを担当しますが、コードをデプロイし、開発、テスト、および操作に関連する他のタスクを実行するには、環境にアクセスできる必要があります。
  • 開発者のチームを各プロジェクトに割り当てることができます。開発者が同時に1つ以上のプロジェクトに参加することは可能です。さらに、プロジェクト間で開発者を移動し、プロジェクトからのアクセスを削除することも可能です。

Ideal organization for projects in AWS

では、前述のルールに基づいてAWSでプロジェクトを整理することは可能ですか?もしそうなら、これを行う方法を学ぶための良いリソースは何ですか?そうでない場合、どのクラウドプロバイダーが私たちが望む方法でプロジェクトを整理することを許可しますか?

あなたの注意と時間をありがとう。ご返信をお待ちしております。

3
GianMS

AWS組織 は、アカウントの階層を管理するための標準的なアプローチです。ただし、組織内の任意のポイントで請求を統合することはできません。グラフではなくツリーです。

それを踏まえて、私がお勧めするのは次のとおりです。

  1. 「コードとしてのインフラストラクチャ」ツールを採用して、ユーザーと権限を管理します。

    これは、インフラストラクチャを宣言型で定義できるため、実行できる最も重要なことです。 Terraform は、ここではほぼ標準です。

  2. クライアントはそれぞれ、開発、ステージング、本番用の個別のサブアカウントを持つ組織を作成します。

    これは、リソースの使用に対して課金されるようにするために必要です。または、すべてのアカウントを自分で管理し、使用料を請求することもできます。ただし、制御していると、より快適に感じる場合があります。

    Dev/staging/productionには、アクセスへのハードバリアを提供するため、個別のアカウントが必要です。開発環境でRDSインスタンスをシャットダウンする機能がある場合、本番環境では同じ機能が付与されません(一部の企業は環境を分離するためにVPCに依存していますが、それらに従うIAMポリシーを構築することははるかに多くの作業です)境界)。

  3. 開発チームのアカウントを作成します。

    ここで開発者を定義します。また、クライアント環境ごとに(少なくとも)1つのグループを定義し、クライアント固有の役割を引き受ける能力を付与します。

  4. クライアントアカウントごとに、特定の操作へのアクセスを許可するロールを作成します。

    たとえば、アプリケーションのデプロイに必要なすべてのアクセス権を付与する1つの役割、アプリケーションのアンデプロイに必要なアクセス権を付与する別の役割、および監視のための読み取り専用アクセスを提供する3番目の役割があるとします。これは、Terraformのようなツールを使用することが実際に効果を発揮する場所です。すべてのクライアントおよびそのクライアント内のすべてのアカウントに適用するロールの単一のセットを定義できます。

    「開発者」アカウントのユーザーが役割を引き受けることができるように、これらの各役割に信頼ポリシーを含める必要があることに注意してください。

    また、各アプリケーションが実行する必要があるロールを定義する必要もあります(たとえば、特定のSQSキューへのアクセス)。

  5. 開発者は、クライアント環境にアクセスする役割を引き受けます。

    AWSコンソールから、またはaws sts assume-roleを使用してコマンドラインからこれを行うことができます。後者は、開発者自身の資格情報の代わりに使用する一時的なアクセス資格情報を提供します。

5
guest