これAWS CDKでできるんだっけ?を見つけるための個人的な進め方

2020.07.26

はじめに

AWS CDKを使った開発をほんの2-3ヶ月ほどですが行ってきました。 とても便利で使いやすく、できるなら全てのAWSリソースをAWS CDKで定義してしまいたい、というくらい好きになっています。

本記事の執筆時点(v1.54.0)では、アップデートが頻繁に行われていますが、既にかなり多くのAWSサービスに対応しています。 そういったこともあり、私が業務で使う殆どの種類のサービスで、AWS CDKを利用できる状況になっています。

ただ、私の知識・経験不足で、「マネジメントコンソールのこの項目は、AWS CDKだどどうやるの?」を調べるときに躓いて時間がかかってしまったところがありました。

そこで、躓いた点と、それを踏まえた調べ方(「マネジメントコンソールのこの項目は、AWS CDKだどどうやるの?」)のパターンを整理してみたので、ブログでシェアしたいと思います。 これはあくまで僕個人のやり方で、これがベストということでは無いと思いますが、一例としてご参考になれば、と思っています。

前提

  • 確認に利用したAWS CDKのバージョン:1.38.0

私が躓いたこと

  • サービス間の表現にギャップがある
    • 例えば、マネジメントコンソールでAWS SQSの「アクセスポリシー」という項目がありますが、CloudFormationでは AWS::SQS::QueuePolicy タイプで定義することができます。AWS CDKでは addToResourcePolicy というMethodで定義することができます。
  • まだ利用できない機能が存在する
    • 例えば、現時点ではAWS ChatbotでSlackのワークスペースを設定することや、Amazon SESで利用するドメインの検証を行うことは対応していません
    • CloudFormationを通じて設定できるが、まだCDKで対応するクラスがない場合にはEscape hatchesを利用して対応することができます

(個人的な)調べ方のパターン

  1. AWS CDKのAPI Referenceの最新版から、マネジメントコンソール上の設定項目名などをキーワードに検索してみる
    1. Construct Props、Propertiesで定義できない項目でも、Methodsで定義できる場合があるという点に注意する
  2. 1.で見つからなければ、CloudFormationのドキュメントからリソースや設定項目名を特定する
  3. 2.の結果をもとに再度API Referenceを検索してみる
  4. CloudFormationで対応しているが、現時点でCDKでは対応していないと思われるものについては、Escape hatchesを使う

終わりに

設定項目についてのキーワード名やワーディングがサービスによって異なるのはAWS CDKに限った話ではありませんが、私のように経験が浅いメンバーにとってはAWS CDKで開発を行うにあたって初めに躓きやすいポイントではあると思いましたので記事化しました。誰かの参考になれば幸いです。

参考