nOps の始め方:AWS の構成情報とコスト情報を nOps に連携する

設計、コスト、セキュリティをまとめて最適化出来る「nOps」。評価対象の AWS アカウントを nOps に連携させる方法について説明します。特に弊社メンバーズをご利用の場合は注意が必要ですので、是非ご参照下さい。
2022.02.16

※2022年4月12日追記:本記事には改訂版が存在します。こちらをご参照下さい


nOps で AWS アカウントの構成情報やコスト情報を評価させるためには、AWS アカウントを登録する必要があります。やり方は二つあります。

  • Wizard Setup - nOps の用意する CloudFormation (CFn) テンプレートをつかい、必要な設定を一気に行う方法
  • Manual - 必要な設定を手動で設定する方法

通常は Wizard Setup を行うことで手軽に連携ができるのですが、弊社メンバーズの管理アカウントの場合は Manual セットアップを使い、弊社のシステムが発行する CUR ファイル(ここでは以下「MCUR」と呼びます)を取り込む必要があります。

以下、その手順について御説明します。

弊社クラスメソッドの「メンバーズ」をご利用の場合は、Automatic の方法で設定を行うと正しいコスト情報が収集されません。必ず Manual をご選択頂き、以下で説明する手順に従って設定して下さい。

設定する流れとしては以下となります:

  1. メンバーズのマニュアルに従い、MCUR を作成する設定を行う
  2. nOps 用の IAM ロールを作成する
  3. nOps に AWS アカウントを登録する

なお MCUR の出力については、nOps の契約とは独立して行うことができます。nOps は過去に出力された CSV も遡って収集しますので、なるべく早いタイミングで作成を開始しておくと良いと思います。

1. MCUR を作成する設定を行う

AWS にはコスト情報を定期的に CSV 形式で出力する機能があり、その機能を使って出力された CSV ファイルを CUR (Cost Usage Report) と読んでいます。

ただしメンバーズをご利用中の AWS アカウントの場合、こちら(CUR)にはメンバーズの割引情報や、クレジットや RI などの適用情報が正しく反映されず、実際の請求とズレが生じてしまいます。

メンバーズは、通常の CUR にこれらの情報を正しく反映させた「MCUR」を作成する機能を備えています。こちらは CUR との互換性を高めており、nOps で処理することが可能です。メンバーズのユーザーガイドを参照の上、設定を進めて下さい。

こちらのドキュメントは、メンバーズポータルからリンクされておりますので、下記に示すドキュメントを参照の上作業を進めて下さい。

なお該当ドキュメントにも記載がありますが、MCUR ファイルは 1 日に数回程度のタイミングで生成・保存されますので、タイミングによっては最初の生成まで時間を要します。あらかじめご了承ください。

2. nOps 用 IAM ロールの作成

nOps のドキュメントに従って、対象の AWS アカウント上に連携用の IAM ロールを作成してください。

※上記ドキュメントの「Step 2.」はスキップしてください。

作業する内容をさっくりまとめると下記の様になります。

  1. nOps にて External ID (外部DI) の生成
  2. IAM ポリシー作成
    • 名称: 例えば NopsIntegrationPolicy など
    • ポリシー内容はドキュメント参照のこと
  3. IAM ロール作成
    • 名称: 例えば NopsIntegrationRole など
    • 信頼されたエンティティ: 「別の AWS アカウント」
      • アカウント ID: 202279780353 ※nOps の利用している AWS アカウント
      • 「外部 ID が必要」にチェック
      • ExternalID: nOpsにて生成したもの
    • 作成した IAM ポリシー NopsIntegrationPolicy をアタッチ
    • 作成した IAM ロールの ARN はコピーしておく

設定した ExternalID と作成した IAM ロールの ARN は、次の手順で使用するので控えておきましょう。

なお余談ですが、将来的に、nOps の機能拡張によって必要となる権限が変更になることがあります。その場合は nOps のダッシュボード上に警告が表示され気付くことができるようになっています。

3. nOps に AWS アカウントを登録

ここからは nOps 上での作業になります。 まだ nOps アカウントを作成されていない場合は、下記ブログを参照して nOps アカウントを作成下さい。

nOps にログイン後、ダッシュボードの右上にある「+」のアイコンをクリックします。

こちらの画面で「Add New Account」をクリックしてください。

今回は AWS アカウントを追加するので、「AWS Account」を選択して「Next」をクリックします。

前述したとおり、メンバーズ会員以外の方はここで「Wizard Setup」を選択できるのですが、それでは MCUR が収集されないため、メンバーズ会員の方は「Manual Setup」を選択して「Next」をクリックしてください。

フォームに必要な項目を埋めます。

AWS Account Name

nOps 内で表示される、AWS アカウントの名称になります。分かりやすい名前を付けておきましょう。

ExternalID / ARN of IAM role

手順 2. で作成した IAM ロールの ExternalID と ARN を入力します。

Bucket Name

CUR または MCUR が保存されている S3 バケットの名称になります。
メンバーズ(MCUR)の場合は決め打ちで cm-cur-<AWS アカウント ID> と指定して下さい。

Report Name / Prefix Path

CUR ファイル(S3 オブジェクト)の情報です。
メンバーズの場合は以下のように、大文字小文字まで正しく指定して下さい。

  • Report Name : cur_hourly
  • Prefix Path : CUR/Hourly

それ以外の場合は、CUR 出力を設定した際に入力した情報をそのまま転記して下さい。

入力内容に問題がなければ「Verify Details」をクリックしてください。自動的に nOps が設定の確認を行います。
結果問題がなかった場合は、以下のメッセージが表示されるので「Setup Account」をクリックして下さい。

これで設定は完了です!

この後は?

AWS アカウントからの情報の収集・連携は自動的に行われます。それまで少し時間がかかることがありますので、翌日あらためて確認するくらいの気持ちでお待ちください。

特にコスト情報(CUR ・ MCUR)については 1 日 1 回の収集となりますので、少し気長にお待ち頂ければ幸いです。

必要に応じて、以下のようなこともやっておくといいでしょう:

  • 他のメンバーも nOps アカウントに招待する
  • レポートの出力先として Slack を連携する

よくありそうな質問

Q. 手動で更新はできるか?

残念ながら、手動で AWS アカウントから情報を収集する機能はありません。nOps が自動的に収集するタイミングまでお待ちください。

Q. nOps が情報を収集する間隔は?

nOps のドキュメントに記載があります。

How frequently is nOps data refreshed?
- nOps data is refreshed every 60 minutes.
- Billing data is fetched once a day.

Q. MCUR が作成されない

メンバーズの MCUR は 1 日に数回のタイミングで出力されます(ドキュメントに記載されているとおりです)。少し時間をおいてご確認下さい。
それでも出力されない場合は、S3 バケット名や権限などに問題がないか、改めてご確認ください。

なお、毎月の月末・月初の数日間は、そもそも AWS からコストレポートが出力されません。メンバーズの MCUR も CUR をベースにしており、同様の期間出力がされないことになります。

Q. CUR ・ MCUR が収集されない

上述したように、そもそも CUR ・ MCUR が作成されない期間が毎月あります。そちらに該当しないかご確認下さい。
なお該当期間中のコスト情報については、出力が再開後改めて nOps に収集されることになります。

それ以外の理由については、S3 バケット名・プレフィクスなどの設定が誤っていないかご確認の上、詳細については nOps サポートにお問い合わせ下さい(nOps の挙動の詳細については弊社のサポート対象外となります)。