全 Cloud Resource を PostgreSQL に ! CloudQuery を試してみる。
こんにちは k-jun です。今回はパブリッククラウドに存在するリソースを全てレコード化して SQL で検索できるようにする CloudQuery を試してみます。
https://github.com/cloudquery/cloudquery
README.md を見た感じは、PostgreSQL を用意してコマンドを実行するだけみたいですね。ユースケースは正直全く思いついていませんが、列挙できるのは意外と便利かもしれません。
Setup
$ brew install cloudquery/tap/cloudquery $ cloudquery init aws
生成された設定ファイルを見てみると、PostgreSQL の接続情報が書かれています。ということで、これと同じ接続情報で PostgreSQL を起動していきます。
$ cat config.hcl ... connection { dsn = "host=localhost user=postgres password=pass database=postgres port=5432 sslmode=disable" } ...
$ docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -d postgres
Run
満を持して fetch を実行してみるも失敗している様子。
$ cloudquery fetch Provider fetch complete. Provider aws fetch summary: ✓ Total Resources fetched: 5 ⚠️ Warnings: 0 ❌ Errors: 203
調べるとファイルオープンの上限に引っかかっていたようなので調査して解消。
https://discussions.apple.com/thread/251000125
$ cloudquery fetch ... Provider aws fetch summary: ✓ Total Resources fetched: 2 ⚠️ Warnings: 0 ❌ Errors: 0
良さそう。PostgreSQL の中身を見てみる。
EC2 だけでもこれだけテーブルが作成されている...! すごい...! MySQL も対応していたら、業務導入をよりかんたんに検討できるかもしれないのになぁ...。
postgres=# SELECT * FROM aws_ec2_instances; -[ RECORD 1 ]--------------------------------------+------------------------------------------------------- cq_id | 964684cc-xxxx-xxxx-xxxx-250dac7de772 meta | {"last_updated": "2021-11-27T05:31:30Z"} account_id | 9367844xxxxx region | ap-northeast-1 id | i-0f7141eff3f2xxxxx ami_launch_index | 0 architecture | x86_64 capacity_reservation_id | cap_reservation_preference | open cap_reservation_target_capacity_reservation_id | cap_reservation_target_capacity_reservation_rg_arn | client_token | cpu_options_core_count | 1 cpu_options_threads_per_core | 1 ebs_optimized | f ena_support | t enclave_options_enabled | f hibernation_options_configured | f hypervisor | xen iam_instance_profile_arn | iam_instance_profile_id | image_id | ami-02d36247c5bc58c23 instance_lifecycle | instance_type | t2.micro kernel_id | key_name | k-jun ...
レコードの中身を見てみたけれども、本当に全列挙という感じで情報が全部入っている。これはなかなかすごいぞ...! Cloud Config なんて使用しなくてもいい感じにリソースの監視ができるかもしれない。良さげ。
ということで今回はこのへんで。