CloudSpendとのAWS連携

このドキュメントでは次の項目についての記載があります。

AWSアカウントとCloudSpendを接続

AWSアカウントとの連携プロセスには3ステージがあります。

ステージ1

Amazon S3、コストと使用状況レポート、IAMと組織といった特定のAWSサービスで、CloudSpendのプログラム読み取り専用アクセスを行えるようにします。

ステージ2
  • Amazon S3バケットを新規に作成し、請求とコスト管理を許可したアクセスポリシーを割り当てます。そして、コストと使用状況レポートをそのS3バケットに保存します。(すでにS3バケットに請求レポートを設定している場合は、ステージ3に進んでください。)
  • AWSコストと使用状況レポートを作成し、作成したAmazon S3バケットにレポートを送ってください。
ステージ3

CloudSpendコンソールにサインインし、AWSアカウント連携ページを設定します。

プログラムアクセスの有効化(ステージ1)

2つの方法を用いて、AWSリソースにCloudSpendがプログラムアクセスを行えるようにします。一つはクロスアカウントIAMロールを作成して、信頼のある通信をAWSアカウントとCloudSpendのAWSアカウントで行う方法です。もう一つは、CloudSpendをAWSアカウントのIAMユーザーとして作成する方法です。

この2つの方法で、セキュリティ認証情報の共有のないIAMロールをおすすめしています。また、ロールを用いてアクセス許可を行う場合、ロールを引き受けることを許可されているアカウントを指定することができ、こうすることでアカウントを不正なアクセスから保護することができます。

IAMロールベースのアクセス

IAMロールの作成には次の手順を行ってください。

外部IDの取得

  • Site24x7コンソールからCloudSpend Webコンソールを開きます。(ショートカットアイコンApp shortcut iconをクリックします )または、https://site24x7.com/app/costにアクセスし、サインインしてください。
  • 初めてCloudSpendコンソールを開いた場合、アプリケーション機能についてのカルーセルが表示されます。そこにはアプリケーションの使い方が記載されていて、読み進めるかスキップを行ってください。
  • AWSアカウントの連携をクリックします。
  • AWSアカウント連携ページで、表示名を入力し、アクセスタイプでIAMロールを選択します。アカウントIDと外部IDをコピーして、保存します。またこのブラウザのタブは開いたままにしておいてください。
外部IDはアカウントの一意な英数字キーです。このキーはAWSアカウントページで一でも再作成できます。またIAMロール作成の間は正確なキーを使用してください。

IAMロールの作成

  • 新しいタブで、AWS管理コンソールにサインインして、IAMコンソールを開きます。
AWS組織の統合請求機能を使用して複数のメンバーアカウントをマスターアカウントにまとめる場合は、マスターアカウントのAWS管理コンソールにサインインします。複数のアカウントを運用している(各アカウントで請求がある)場合、CloudSpendと統合するAWSアカウントにログインします
  • ロールをクリックし、ロールの作成を選択します。
  • その他のAWSアカウントを信頼するエンティティタイプとして選択します。
  • アカウントID欄に、コピーしたCloudSpendのAWSアカウントIDをペーストしてください。
  • 要求外部ID機能を選択し、AWSアカウント連携ページ(CloudSpendコンソール)でコピーした一意のキーを入力してください。
  • 要求MFA機能をオフにして、次へ:許可を選択します。

許可の割り当て

IAMポリシーでロールの許可を設定します。

  • ポリシーの作成を選択し、新しいブラウザータブを開きます。
  • JSONタブを選択します。そして、次のカスタムコストポリシーをコピー&ペーストします。
{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"VisualEditor0",
         "Effect":"Allow",
         "Action":[
            "organizations:ListRoots",
            "s3:GetObjectVersionTagging",
            "organizations:DescribeAccount",
            "organizations:ListChildren",
            "s3:GetObjectAcl",
            "organizations:DescribeOrganization",
            "s3:GetObjectVersionAcl",
            "s3:HeadBucket",
            "organizations:DescribeHandshake",
            "s3:GetBucketWebsite",
            "s3:GetBucketNotification",
            "s3:GetReplicationConfiguration",
            "s3:ListMultipartUploadParts",
            "organizations:ListAccountsForParent",
            "organizations:ListHandshakesForAccount",
            "s3:GetObject",
            "iam:GetUserPolicy",
            "s3:GetAnalyticsConfiguration",
            "organizations:ListOrganizationalUnitsForParent",
            "s3:GetObjectVersionForReplication",
            "cur:DescribeReportDefinitions",
            "s3:ListBucketByTags",
            "s3:GetLifecycleConfiguration",
            "s3:GetBucketTagging",
            "s3:GetInventoryConfiguration",
            "s3:ListBucketVersions",
            "s3:GetBucketLogging",
            "s3:ListBucket",
            "s3:GetAccelerateConfiguration",
            "s3:GetBucketPolicy",
            "organizations:DescribePolicy",
            "s3:GetObjectVersionTorrent",
            "s3:GetEncryptionConfiguration",
            "organizations:ListCreateAccountStatus",
            "s3:GetBucketRequestPayment",
            "organizations:DescribeOrganizationalUnit",
            "s3:GetObjectTagging",
            "s3:GetMetricsConfiguration",
            "organizations:DescribeCreateAccountStatus",
            "organizations:ListPoliciesForTarget",
            "s3:ListBucketMultipartUploads",
            "organizations:ListTargetsForPolicy",
            "s3:GetBucketVersioning",
            "organizations:ListAWSServiceAccessForOrganization",
            "s3:GetBucketAcl",
            "organizations:ListPolicies",
            "organizations:ListHandshakesForOrganization",
            "organizations:ListAccounts",
            "s3:GetObjectTorrent",
            "s3:ListAllMyBuckets",
            "s3:GetBucketCORS",
            "organizations:ListParents",
            "iam:GetUser",
            "s3:GetBucketLocation",
            "s3:GetObjectVersion"
         ],
         "Resource":"*"
      }
   ]
}
  • 完了したらポリシーの確認をクリックします。
  • 作成するポリシーの名前と説明を入力します。
  • ポリシーの概要を確認し、ポリシーの作成をクリックします。
  • アクセス許可の付与ウィンドウに戻り、更新を選択します。検索欄に作成したポリシーの名前を入力します。
  • ポリシー名の隣のチェックボックスを選択し、次へ:確認をクリックします。

ロール情報の確認

  • ロール名欄に、有用な名前を入力します。例として、aws-cost-managementなどが挙げられます。必要のある場合は説明を入力してください。
  • 情報を確認し、ロールの作成をクリックします。
  • 左側のパネルからロールを選択します。作成したロールを検索し、そのロールをクリック後、ARNロールをサマリー欄からコピーして保存します。

IAMユーザーベースのアクセス(非推奨)

AWS IAMユーザー作成には次の手順を行ってください。

アクセスタイプの選択

  • AWS管理コンソールにアクセスし、IAMコンソールを開いてください。
AWS組織の統合請求機能を使用して複数のメンバーアカウントをマスターアカウントにまとめる場合は、マスターアカウントのAWS管理コンソールにサインインします。複数のアカウントを運用している(各アカウントで請求がある)場合、CloudSpendと統合するAWSアカウントにログインします
  • ユーザーをクリックし、ユーザーの追加を選択します。
  • ユーザー名欄に、有意な名前を入力します。
  • アクセスタイプとしてプログラムアクセスを選択します。
  • 次へ:許可をクリックします。

許可の割り当て

  • 許可設定ウィンドウで、ユーザーディレクトリーに既存のポリシーを付与機能を選択します。ポリシーの作成ボタンをクリックし、新規ブラウザータブを開きます。
  • JSONタブを選択します。次のカスタムポリシーをコピーして、エディターに貼り付けます。
{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"VisualEditor0",
         "Effect":"Allow",
         "Action":[
            "organizations:ListRoots",
            "s3:GetObjectVersionTagging",
            "organizations:DescribeAccount",
            "organizations:ListChildren",
            "s3:GetObjectAcl",
            "organizations:DescribeOrganization",
            "s3:GetObjectVersionAcl",
            "s3:HeadBucket",
            "organizations:DescribeHandshake",
            "s3:GetBucketWebsite",
            "s3:GetBucketNotification",
            "s3:GetReplicationConfiguration",
            "s3:ListMultipartUploadParts",
            "organizations:ListAccountsForParent",
            "organizations:ListHandshakesForAccount",
            "s3:GetObject",
            "iam:GetUserPolicy",
            "s3:GetAnalyticsConfiguration",
            "organizations:ListOrganizationalUnitsForParent",
            "s3:GetObjectVersionForReplication",
            "cur:DescribeReportDefinitions",
            "s3:ListBucketByTags",
            "s3:GetLifecycleConfiguration",
            "s3:GetBucketTagging",
            "s3:GetInventoryConfiguration",
            "s3:ListBucketVersions",
            "s3:GetBucketLogging",
            "s3:ListBucket",
            "s3:GetAccelerateConfiguration",
            "s3:GetBucketPolicy",
            "organizations:DescribePolicy",
            "s3:GetObjectVersionTorrent",
            "s3:GetEncryptionConfiguration",
            "organizations:ListCreateAccountStatus",
            "s3:GetBucketRequestPayment",
            "organizations:DescribeOrganizationalUnit",
            "s3:GetObjectTagging",
            "s3:GetMetricsConfiguration",
            "organizations:DescribeCreateAccountStatus",
            "organizations:ListPoliciesForTarget",
            "s3:ListBucketMultipartUploads",
            "organizations:ListTargetsForPolicy",
            "s3:GetBucketVersioning",
            "organizations:ListAWSServiceAccessForOrganization",
            "s3:GetBucketAcl",
            "organizations:ListPolicies",
            "organizations:ListHandshakesForOrganization",
            "organizations:ListAccounts",
            "s3:GetObjectTorrent",
            "s3:ListAllMyBuckets",
            "s3:GetBucketCORS",
            "organizations:ListParents",
            "iam:GetUser",
            "s3:GetBucketLocation",
            "s3:GetObjectVersion"
         ],
         "Resource":"*"
      }
   ]
}
  • ポリシーの確認をクリックします。
  • 確認ページで、作成するポリシーの名前と説明を入力してください。付与する許可を確認し、問題のない場合はポリシーの作成をクリックします。
  • 許可設定ページに戻り、更新を選択し、検索欄に作成したポリシーの名前を入力し、リストをフィルターします。
  • ポリシー名の隣にあるチェックボックスを選択し、次へ:確認をクリックします。

認証情報のダウンロード

  • ユーザー詳細と許可を確認します。問題のない場合はユーザーの作成をクリックします。
  • Download.csvを選択し、安全な場所でファイルを保存してください。
  • (認証情報を表示し保存するのはここでの手順のみとなります。)
  • ファイルを開き、秘密アクセスキーをコピーして保存します。

請求レポートの変更(ステージ2)

AWSのコストと使用状況レポートは月ごとのAWSで設定されているサービスの使用状況を追跡し、時間、データ転送、タイプ、領域などのさまざまな要素に基づいて推定料金を表示します。AWS組織のアカウント合算請求機能を使用している場合、マスターアカウントでのみ利用可能で、組織に関連付けられている全てのメンバーアカウントの使用状況に関して表示可能です。

AWSはCSVファイルのレポートをAmazon S3バケットに送信します。既存または新しいS3バケットに請求ファイルを送るようにするには次の手順を行ってください。すでにS3バケットに公開されるようになっている方はステージ3へ進んでください。

AWSコストと使用状況レポートの作成

レポートコンテンツの設定

  • 組織のマスターアカウントにサインインします。
  • 請求とコスト管理コンソールを開きます。
  • コストと使用状況レポートにアクセスし、レポートの作成を選択します。
  • 作成するレポートの名前を入力します。
  • リソースIDを含める欄の隣にあるチェックボックスを選択します。
  • デフォルトのデータ更新設定のまま設定を行ってください。

送信機能の設定

  • S3バケットで、設定を選択します。
  • S3バケット設定のダイアログボックスで、ドロップダウンメニューから既存のバケットを選択し保存をクリックします。
  • (任意項目)新規バケットに請求レポートを送信する場合、名前を入力して領域を選択した後に保存をクリックします。
  • ポリシーの確認ダイアログボックスで、ポリシーが正しいか確認するの隣のチェックボックスを選択し、保存をクリックします。
  • 時間粒度で、1時間ごとを選択します。
  • レポートバージョンで、新しいレポートバージョンを作成を選択します。
  • 圧縮タイプはデフォルト設定のままにし、次へをクリックします。

レポート設定の確認

  • レポート設定の確認を行います。問題がなければ、確認と完了をクリックします。

AWSアカウントへの接続(ステージ3)

AWSアカウント連携ページの設定

  • すでにIAMロールが作成されている場合は、開いているCloudSpendコンソールのブラウザータブ(外部IDとアカウントIDをコピー際のタブ)に戻り、適切な欄にARNロールをペーストします。 IAMユーザーを作成してある場合は、CloudSpend Webコンソールにサインインし、AWSアカウントの連携をクリックします。表示名を入力して、アクセスタイプとしてIAMユーザーを選択します。アクセスキーIDと秘密アクセスキーを適切な欄にコピー&ペーストしてください。
  • レポ―ト欄に、作成したAWSコストと使用状況レポートの名前を入力します。
  • 請求プロセスの開始日で、請求解析時にどの項目が処理され、どの項目が除外されるのかを選択します。
  • 保存を選択します。

Site24x7とCloudSpendを接続

Site24x7とCloudSpendを接続するには次の手順を行ってください。

  1. アカウント連携ページで表示名を入力し、アクセスタイプにSite24x7アカウントを選択します。ドロップダウンで連携されているSite24x7 AWSアカウントを選択します。
  2. AWS管理コンソールで新規コストポリシーを作成します。
  3. Site24x7アカウントにIAMユーザーまたはIAMロールがあるかどうかに関係なく、[アカウントの統合]ページのそれぞれの手順に従ってコストポリシーを添付します。
  4. AWSアカウントに接続欄のステージ2と3により、Site24x7とCloudSpendの接続を完了させてください。

MSPアカウントとCloudSpendを接続

Site24x7 MSPアカウントとCloudSpendを接続するには次の手順を行ってください。

  1. アカウント連携ページで表示名を入力し、アクセスタイプにSite24x7アカウントを選択します。
  2. ドロップダウンからMSP顧客を選択して、次のドロップダウンで連携させる顧客に関連付けられているAWSアカウントを選択します。
  3. AWS管理コンソールで新規コストポリシーを作成します。
  4. Site24x7アカウントにIAMユーザーまたはIAMロールがあるかどうかに関係なく、[アカウントの統合]ページのそれぞれの手順に従ってコストポリシーを添付します。
  5. AWSアカウントに接続欄のステージ2と3により、Site24x7とCloudSpendの接続を完了させてください。

リンクアカウントのサポート

連携アカウントページでアカウントタイプを"Linked Account"を選択することで、AWSリンクアカウントでクラウドコスト管理ツールを利用できます。リンクアカウントを選択する場合、レポート名を入力して、S3バケット名およびバケットプリフィックス(設定している場合)を入力し、レポートを保存します。

設定エラーアカウント

設定エラーアカウント項目でレポート名の無効やロールの失効といったCloudSpendアカウントの設定に関するエラーを簡単に表示できます。設定エラーについて編集か削除を行って、単一のビューからすべてのアカウントのエラーを修正します。