はじめに
こちらのページに従って、Datadog連携用のCloudFormationを作成、実行したところ、DatadogIntegration-DatadogAPICallのスタック作成に失敗してしまったので、原因と修正方法をまとめます。
発生までの経緯
公式ドキュメントに従って、Datadog の AWS インテグレーション構成ページに移動し、Add AWS Account をクリックします。
遷移先で下記のように、Region、APIキー、Forwarder、CSMの設定を行い、CloudFormationテンプレートを作成します。
すると、下記のようにパラメータが入力された画面に遷移するので、そのままスタックの作成を行います。
すると、DatadogIntegration-DatadogAPICall- から始まるスタックのDatadogAPICallのCREATE_FAILEDになり、スタック作成が失敗します。
CloudWatch logsを確認すると、ResponseURL: https://cloudformation-custom-resource-response-apnortheast1.s3-ap-northeast-1.amazonaws.com
に対するリクエストに403エラーが返されていました。
APIキーの設定を疑いましたが、自動入力なので間違えるはずもなく...
原因
Datadogアカウントのサイトパラメータと、CloudFormationスタックのDatadogSiteパラメータが一致していないことが原因でした。
Datadogにはサイトという概念があり、データ保存場所がサイトによって変わるようです。
サイトごとにURLとサイトパラメータと呼ばれる値が異なっており、私はDatadogアカウント作成時にAP1をサイトとして設定していたので、ap1.datadoghq.com
がサイトパラメータとなっていました。
しかし、スタック作成時のCloudFormationのパラメータにはサイトUS1を示すdatadoghq.com
が自動入力されていたので、権限を持っていないサイトに関するリクエストを送信したことで403エラーが返されたのだと思います。
CloudFormationスタックのDatadogSiteパラメータをap1.datadoghq.com
に修正し、スタックを再度作成すると、作成に成功しインテグレーションを行うことができました。