Datadog社のCloudCraft「Live」機能でAWSリソースを描画してみる
CloudCraftでAWSリソースをスキャンして描画する「Live機能」を試してみる
DevelopersIO BASECAMP参加者の加藤です。
AWSの構成図を描画するツールは色々ありますが、普段はdrawioを使っています。今回はCloudCraftを触ってみる事にしました。
「Live」機能について
自身のAWSアカウントに対して、CloudCraftが保有するAWSアカウントに「ReadOnlyAccess」権限を付与(外部ID利用)する事で、ユーザー任意のタイミングで選択したリージョンからリソースをスキャンし、キャンバスに描画してくれます。
先に結論(個人的感想)
※以下はあくまで個人的な感想になります。
「良い点」
・デザインがポップで近未来的でとにかくカッコいい。エンジニアさん同士というよりは何かの発表やプレゼン用の画像作成等に向いている気がする。
・自動的にリソースを読んで配置してくれるのは面白いし、感動する。
・正確であるかどうかの検証は出来ていないが選択したリソース範囲毎にコストを可視化させられる機能もある。
・手動で作成するのであれば、AWSアイコンも豊富で、カッコいい構成図画像が作成出来そう。
・14日の無料トライアル期間がついている(※2023年6月1日現在)
「惜しい点」
・3Dモードは縦長や横長、巨大なリソースの表現に向かなさそう。テキストが若干読みにくい、長いテキストは挿入しにくい、残念ながら一目で内容が入って来にくい。UIに慣れるのに時間がかかりそう。(個人的にはスタイリッシュである事と構成図として見やすい事が別と再認識させられた気がします。)
・2Dモードで解決する問題は多そうだが、それだとそもそもCloudCraftを選択したい理由が損なわれる。
・スキャンして反映出来るリソースの種類はかなり限られている。(現状ままだと残念ながら構成図作成が楽になるレベルにはかなり遠い)
「こうだったらいいかも」
・リソースのスキャンはリージョン単位ではなく、最低スタック単位で選択が可能でないと需要が少なさそう。
・実際にリソースを立てたりアカウントの閲覧権限を付与せずとも、YAMLやJSONのテンプレートから作成してくれれば最高。
・有料サービスだから厳しく見てしまうが、CloudFormationデザイナーなどがこの感じだったら嬉しい。
実際の画面と手順
以下画面に翻訳をかけてスクリーンショットしております。
Top
↓
SignIn(GoogleとDatadogのアカウントが使えます。)
↓
左カラムから「LIVE」→「ADD AWS ACCOUNT」を選択します。
↓
有料プランへの登録が必要になります。(※2023年6月1日時点では無料トライアル期間14日有)
↓
↓
↓
↓
↓
もう一度「ADD AWS ACCOUNT」を選択。
↓
AWSアカウントを追加
「AWSアカウントを追加」を選択。
↓
CloudCraftのアカウントIDと外部IDが自入力された状態のロール作成画面に遷移します。
↓
画像をスクショし忘れましたが「ReadOnlyAccess」権限を選択します。
↓
ロール名を入力し「ロールを作成」を選択。
↓
「OK」をクリック。
↓
↓
再び左サイドカラムに戻り、リージョンを選択して「SCANNOW」をクリック。
リージョン選択画面
↓
配置されました!(一部リソース名など削除しています。)
リージョンに存在するリソースをスキャンするのでS3バケットや、放置していたリソースも場に召喚されます。
月額に見合うかどうかは度外視して、ワンクリックでリージョンに不要なリソースが存在するかどうかを可視化するツールでもあるかもしれません。
リソース数の多いテンプレートを実行後再度スキャンさせてみる。
今回読み込ませたテンプレートのリソースタイプと数(一覧)
※元々構成図に落とし込む必要がないリソースも含んでいます。
Type 数
AWS::Logs::LogGroup 17
AWS::IAM::Role 14
AWS::EC2::SecurityGroupIngress 12
AWS::S3::Bucket 11
AWS::Glue::Crawler 9
AWS::Glue::Database 9
AWS::KinesisFirehose::DeliveryStream 7
AWS::EC2::SecurityGroup 7
AWS::Logs::LogStream 7
AWS::ApplicationAutoScaling::ScalingPolicy 7
AWS::EC2::VPCEndpoint 7
AWS::CloudWatch::Alarm 6
AWS::ElasticLoadBalancingV2::TargetGroup 6
AWS::S3::BucketPolicy 6
AWS::EC2::Subnet 6
AWS::EC2::SubnetRouteTableAssociation 6
AWS::Events::Rule 5
AWS::ElasticLoadBalancingV2::ListenerRule 4
AWS::ElasticLoadBalancingV2::ListenerRule 4
AWS::ApplicationAutoScaling::ScalableTarget 4
AWS::ElasticLoadBalancingV2::Listener 4
AWS::SNS::Topic 4
AWS::SNS::TopicPolicy 4
AWS::EC2::RouteTable 4
AWS::CodeCommit::Repository 3
AWS::ECR::Repository 3
AWS::ECS::Cluster 3
AWS::ECS::Service 3
AWS::ECS::TaskDefinition 3
AWS::Logs::SubscriptionFilter 3
AWS::EC2::SecurityGroupEgress 3
AWS::KMS::Key 3
AWS::IAM::Policy 3
AWS::EC2::Route 3
AWS::CodeBuild::Project 3
AWS::CodePipeline::Pipeline 3
AWS::ElasticLoadBalancingV2::LoadBalancer 2
AWS::EC2::NatGateway 2
AWS::EC2::EIP 2
AWS::RDS::DBInstance 2
AWS::Athena::WorkGroup 1
AWS::Chatbot::SlackChannelConfiguration 1
AWS::CloudFront::Distribution 1
AWS::CloudFront::CachePolicy 1
AWS::CloudFront::OriginRequestPolicy 1
AWS::CloudTrail::Trail 1
AWS::Config::DeliveryChannel 1
AWS::Config::ConfigurationRecorder 1
Custom::CreateCodeDeploy 1
AWS::DevOpsGuru::ResourceCollection 1
AWS::DevOpsGuru::NotificationChannel 1
AWS::SecretsManager::Secret 1
AWS::GuardDuty::Detector 1
AWS::KMS::Alias 1
AWS::EC2::InternetGateway 1
AWS::EC2::VPCGatewayAttachment 1
AWS::Lambda::Function 1
AWS::RDS::OptionGroup 1
AWS::RDS::DBCluster 1
AWS::RDS::DBClusterParameterGroup 1
AWS::RDS::DBParameterGroup 1
AWS::RDS::DBSubnetGroup 1
AWS::Route53::RecordSet 1
AWS::SecurityHub::Hub 1
AWS::EC2::VPC 1
AWS::EC2::FlowLog 1
合計 66Type 240リソース
+テンプレート外に元々存在したリソース
結果
「Include all」を選択した結果の「Included service 79」は、リソースの種類ではなく個数の合計でした。
↓
結果です。
【3Dモード】
【2Dモード】
このような結果になりました!
おわりに
「Live」機能の所感が中心でしたが、手動でも良いのであればAWSアイコンも豊富でデザインもカッコいい為、3Dモードで素敵な構成図画像を作成出来るツールではあると思います!
ご興味があれば是非触ってみてください。
お読みいただき有難う御座いました。
Discussion