CloudFormationでDataDogのIntegration設定

CloudFormationで以下のアップデートがありサードパーティ製品についてもCoudFormationで設定できるようになりました。
DataDogのIntegration設定などをCloudFormationで設定できるようなので、早速試してみました。
aws.amazon.com

CloudFormationへDatadogリソースの登録

aws cliで以下のコマンドを実行しリソースの登録を行います。
実行前にawscliのアップデートが必要になります。(pip install -U awscli)

aws cloudformation register-type \
    --region ap-northeast-1 \
    --type RESOURCE \
    --type-name "Datadog::Integrations::AWS" \
    --schema-handler-package s3://datadog-cloudformation-resources/datadog-integrations-aws/datadog-integrations-aws-1.0.0.zip

※type-name、schema-handler-packageの設定値についてはこちらgithubを参照してください。

以下の通りRegistrationTokenが表示されれば登録は完了です。

{
    "RegistrationToken": "122c2c39-12c8-4e93-a711-f6eb1234eae0"
}

登録されているかは以下で確認できます。

$aws cloudformation list-types
{
    "TypeSummaries": [
        {
            "Description": "Datadog AWS Integrations",
            "LastUpdated": "2019-11-20T03:13:25.218Z",
            "TypeName": "Datadog::Integrations::AWS",
            "TypeArn": "arn:aws:cloudformation:ap-northeast-1:123412341234:type/resource/Datadog-Integrations-AWS",
            "DefaultVersionId": "00000001",
            "Type": "RESOURCE"
        }
    ]
}


リージョンごとにリソース登録が必要となるようですが、このあたりの設定は今後もっと簡略化されていくと嬉しいですね。

Integration設定

事前に設定するDataDogのAPIキーとApplicationキーを取得しておいてください。
以下のyamlをファイルに保存しCloudFormationから実行し、パラメータにて上記のキーを設定して実行してください。

---
AWSTemplateFormatVersion: '2010-09-09'
Description: 'IAM Role and IAM Policy for Datadog AWS Integration'
Parameters:
  DatadogAPIKey:
    Description: "Datadog's API Key"
    Type: String
  DatadogAPPKey:
    Description: "Datadog's APP Key"
    Type: String
Resources:
  DatadogAWSIntegrationResource:
    Type: 'Datadog::Integrations::AWS'
    Properties:
      AccountID: !Ref AWS::AccountId
      RoleName: DatadogAWSIntegrationRoleTest
      HostTags: ["env:staging"]
      AccountSpecificNamespaceRules: {"ec2": true, "api_gateway": false}
      DatadogCredentials:
        ApiKey: !Ref DatadogAPIKey
        ApplicationKey: !Ref DatadogAPPKey

DataDogの設定画面を確認すると以下の通り登録されていれば完了です。
f:id:cloudfish:20191121105655p:plain

AWS側のRoleも合わせて作成してくれないか期待しましたが、残念ながらそこまではしてくれないようでした。
また、ExternalIDの取得方法が現状ではなさそうなので今後に期待したいと思いますが、機能が拡充されていくと思いますので、まとめてCloudFormationで管理することが可能になりますね。