今回は AWS アカウントの利用料金を Azure の Cost Management でまとめて参照できるようにする方法を紹介します。
(普段あまり使わない勉強用の AWS アカウントで気づかないうちに課金が回っていたことから設定しようと思いました。。)
AWS の課金を Azure で管理する仕組み
この設定のためには AWS と Azure の両方で設定が必要です。仕組みとしては AWS で Cost Explorer で 課金レポートを S3 にエクスポートし、それを Azure の Cost Management で読み込むという方式です。

設定手順
[AWS] 使用状況レポートの出力
AWS のマネージメントコンソールにサインインします。サービスの検索から「Billing」と検索し、[Cost Management]を開きます。
メニューから[Cost & Usage Reports]をクリックします。
[レポートの作成]をクリックします。

[レポートの明細項目]では次の通り設定します。
- [レポート名]にはレポートを識別するための任意の名前をつけます。
- [リソース ID のインクルード]にチェックを入れます。
上記2点を完了したら[次へ]をクリックします。

[配信オプション]では課金レポートの出力先 S3 バケットなどを設定します。

バケットの作成では既存の S3 バケットを選択するか、新規作成する S3 バケットの名前とリージョンを指定して、[次へ]をクリックします。

デフォルトのポリシーを確認し、[このポリシーが正しいことを確認しました]にチェックを入れて[保存]をクリックします。

- (任意)[レポートパスのプレフィックス]はレポートファイルの先頭に追加するプレフィックスを指定します。
- [使用量の時間詳細度]では[時間別]を選択します。
- [レポートバージョニング]ではレポートの前バージョンを上書きするか、個別に新規作成するか選択します。
- [レポートデータ統合の有効化]では特に選択する必要はありません。
- [圧縮タイプ]では[GZIP]を選択します。
上記設定をしたら[次へ]をクリックします。
設定したレポートが作成されることを確認します。レポート名は Azure での設定時に使うので参照できるようにしておきます。
レポートへの出力は最大で 24 時間かかります。配信の設定後、1日1回程度のペースで使用状況のレポートが更新されます。
[AWS] Azure の読み込み用ロールを作成
AWS のマネージメントコンソールにサインインします。サービスの検索から「IAM」と検索し、[IAM]を開きます。
メニューから[ロール]をクリックします。[ロールの作成]をクリックして、ロールを新規作成します。

エンティティの種類は[別の AWS アカウント]を選択します。
- [アカウント ID]には「432263259397」と入力します。
- [外部 ID]には、任意の文字列を指定します。これは AWS と Azure 間で利用するパスコードのようなものです。
- [MFA が必要]にはチェックを入れないままにします。
上記の設定が済んだら、[次のステップ]をクリックします。
[ロールの作成]では、新しくポリシーを作成するために[ポリシーの作成]をクリックします。別タブで開いたポリシー作成画面で、次の通りポリシーを作成します。
- サービス:[Cost and Usage Report]
- アクセスレベル
- 読み取り:DescribeReportDefinitions
- アクセスレベル
- サービス:[S3]
- アクセスレベル
- List:ListBucket
- 読み取り:GetObject
- バケット名:(レポートの出力先に指定したバケット名を指定)
- オブジェクト名:「任意」を選択する
- アクセスレベル
- サービス:[Cost Explorer Service]
- アクセスレベル
- 全ての Cost Explorer Service アクション
- アクセスレベル
- サービス:[Organizations]
- アクセスレベル
- List:ListAccounts
- アクセスレベル




上記の通り設定したら[次へ]をクリックし、[ポリシーの確認]で[ポリシー名]に作成するポリシーの名前を指定して[ポリシーの作成]をクリックします。
元のタブへ戻って再読み込みし、作成したポリシーを選択します。[ロール名]に作成しするロールの名前を指定して[ロールの作成]をクリックします。

上記までの手順で作成した次の項目を Azure の設定で使うので控えておいてください。
- ロール ARN
- 外部 ID
- レポート名
[Azure] Cost Management の AWS コネクタ設定
ここからは Azure ポータルで操作します。
[コストの管理と請求]>[コスト管理]をクリックします。メニュー内の[AWS のコネクタ]をクリックします。上部の[追加]をクリックします。

[基本]タブでは、Azure でこの外部コネクトを管理する時の名前を指定します。設定から 90 日経つと AWS 課金額の 1% が手数料として取られるそうなので、有効なサブスクリプションを指定しておきます。[自動更新]を[オフ]にすると、90 日経っても自動で手数料の課金は発生しなくなります(連携が停止する?)。

[AWS プロパティ]タブでは、先ほどまでの手順で控えておいた手情報を入力します。

設定した情報を確認して[作成]をクリックします。

設定が完了すると、AWS のアカウントとのコネクタ情報が保存されます。

Cost Management から AWS の課金確認
Cost Management から AWS の利用状況を確認できるようになります。(AWS で課金状況のレポートが出力されて以降可能になります)
[コストと課金の管理]>[コスト分析]をクリックし、[スコープ]で AWS アカウントを指定します。(オレンジ色と青色の雲が白線でつながっているマーク)

すると、AWS の課金状況がグラフに表示されます。[グループ化]で詳細な内訳を確認することもできます。

今回は AWS の課金状況を Azure でまとめて管理する方法を紹介しました。通常の Azure サブスクリプションと同じように予算の設定も可能なので、これで普段あまり使わない AWS のコストも Azure でしっかりとまとめて管理できます。
コメント