nOpsでManualセットアップを使い請求情報の取得先であるCUR用S3バケットを変更してみました!

どうもさいちゃんです。今回はnOpsでWizard SetupからManualに変更する際の注意点と変更の仕方をまとめて記事にしました。ぜひご活用ください。
2022.05.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSアカウントの運用情報やコスト情報の可視化をし、Well-ArchitectedやCISに沿ったアセスメントの手助けをしてくれるnOpsですが、今回はそのセットアップ方法についての注意点をまとめてみました。 nOpsについての他の記事はこちらからどうぞ。

nOpsのセットアップ方法

nOpsを利用するためにはAWSアカウントと連携をさせる必要があるのですが、こちらの連携方法には2種類あります。

こちらのブログでも紹介している通り弊社メンバーズの管理アカウントの場合、Manualセットアップを行い、弊社のシステムが発行するCURファイル(以下「MCUR」)を取りこむ必要があります。

つまり、最初にWizard Setupを使ってアカウント連携をしているような場合は、こちらのManualセットアップへの変更を行う必要があります、しかしいくつか手順を踏まないとエラーが出てしまう場合がありますので、そちらの手順についてまとめてみました!

Wizard Setupで作られるリソース

Wizard SetupからManualセットアップに変更を行う前に前提として、Wizard Setupのしくみについて少し説明します。

Wizard Setupはセットアップ方法の方法で少し紹介した通り、nOpsが用意したテンプレートを使い、自動で必要なリソースを作成する方法です。 この場合作成されるリソースについて少し詳しく見ていきます。

CloudFormationのテンプレートを使いリソースを作成してくれる仕組みになっています。

Lambda

nOpsセットアップの役割と、CURバッケットの構成を自動化します。

IAM Role

nOpsが請求情報取得のためCURバケットにアクセスするためのIAMポリシーと、AWSから構成情報を読み取るためのIAMポリシーがアタッチされたIAM Roleと、nOpsがLambdaを動かすための許可をするIAM Roleが作成されます。

S3バケット

こちらはCURが書き込まれるS3バケットです。自身であらかじめ作成することも可能ですが、存在しない場合は自動的に作成されるようになっています。

これらのリソースがCloudFormationにより自動的に作られた状態が、Wizard Setup完了後の状態になります。 この状態から、再度Manualセットアップに変更し、自身で作成したバッケット(今回の場合はMCUR)に変更を加えたい場合上記で作られたすべてのリソースを完全に削除しないと、うまく請求情報を取ってこられないようです。

それではさっそくManualセットアップへの変更手順について説明していきます。

Manualセットアップへの変更

こちらの変更手順は、変更したいS3バケットの作成が行われているという前提で進めていきます。 弊社メンバーズの方はMCUR用のS3バケット作成を行ってから以下作業を進めてください。

まずは一度セットアップしたアカウント一覧を確認するために、ダッシュボード右上部のアカウント名をクリックし、Oraganization SettingsからCloud Accountsに進みます。 Manualセットアップに変更をしたいアカウントの右横にあるEditを選択します。 このような画面が出るので、ここでManualを選択し、次に進みます。

するとこのような画面に出ます。 まずはここでExternal IDを取得しておきましょう。こちらはIAMロール、作成の際に使うIDとなりますので先にこちらをコピーしておきます。 External IDを取得したら、下記ブログの手順通りに、IAMロールとIAMポリシーを作成します。

ここまで作成ができたらnOpsの画面に戻り、情報を更新していきます。

AWS Account Name

こちらはnOpsで表示されるアカウント名です任意のものをつけてもらって構いません。変更をする必要がなければそのままで問題ありません。

External ID

こちらは先ほど紹介したExternal IDです。ここは変更するとIAMロールに影響が出るため変更不要です。

ARN of IAM role

新しく作成したIAMロールのARNを記入しましょう。

Bucket Name

画像ではブロックされていますが、このブロックはクリックで消すことができます。 ここに設定したいCURバケット名を記述しましょう。

Report Name/Prefix Path

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

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

Wizard Setupでできたリソースの削除

ここまで設定を変更したらUpdate Accountをクリックする前に、Wizard Setupでできたリソースをすべて削除しましょう。

Cloud Formationのスタックを削除すると通常リソースも一緒に削除されますがS3バケットに関しては別途で削除する必要があります。念のため、IAMロールやポリシー、Lambdaがしっかりと消えているか確認してからつぎのステップに進みます。

下記が削除すべきリソース一覧です。

  • NopsIntegrationPolicy: AWSから構成情報を読み取るためのIAMポリシー
  • NopsSystemBucketPolicy: nOpsが請求情報取得のためCURバケットにアクセスするためのIAMポリシー
  • NopsIntegrationRole: 上記二つがアタッチされたIAM Role。名前はスタック名が間に入ったものになっているので「Nops」で始まるものを見つけて削除しましょう。
  • NopsLambdaExecutionRole: nOpsがLambdaを動かすための許可をするIAM Role。上記と同じように名前はスタック名が間に入ったものになっているので「Nops」で始まるものを見つけて削除しましょう。
  • NopsLambdaLookupStack: nOpsセットアップの役割と、CURバッケットの構成を自動化するための関数

上記はcloud Formationのスタックを削除することで一緒に削除されるはずですが、念のためきちんと削除されているかを確認しておきましょう。

  • S3バケット: 名前はWizard Setupの際に任意でつけるようになっています。

S3バケットに関してはデフォルトでオレゴン州リージョンにバッケットが作成されているはずですのでこちらをしっかりと削除しましょう。

リソースの削除をしたうえでUpdate Accountをクリックします。

エラーが出る場合

私が上記の方法でWizard SetupからManualに変更した際には、Update Accountをクリックすると画像のようなエラーに遭遇しました。エラーの対処法として2つご紹介します。

  • S3バケットにアクセスするIAMポリシー作成の際にpaste-bucket-name-hereの部分をMCUR用バケット名に変更し忘れていないか確認する。
  • リソースの作成削除が反映されるのに少タイムラグがあるため時間を少しおいて再度Update Accountを押してみる。数分待っても改善が見られない場合はリソースがしっかり削除されているか確認してみるとよいかもしれません。

また注意点として、nOpsはバッケットから情報を取ってくるのに最大24時間のタイムラグがあります。そのため設定変更後24時間は何らかのエラーが出てしまう場合があります。 他にもあるかも知れないのですが、すべてのリソースを削除しているか・設定内容にタイプミスなどがないか落ち着いて確認して、少し時間をおいてみるとうまくいく場合があるのでお試しください。