SQL ノード
SQL ノードは、フロー内で SQL ノードエディタを使用して SQL クエリを実行するために使用します。SQL ノードに直接クエリを入力し、その結果に基づいてアクションを実行できます。これは、フローにデータドリブンな条件ロジックを導入し、DoiT Cloud Intelligence に保存された 請求データ に基づいて複雑な意思決定を容易にするのに役立ちます。例えば、AWS の請求データをクエリする SQL クエリを作成できます。その後、出力をフィルターして最もコストの高いサービスを特定し、ステークホルダーに通知できます。
また、SQL ノードに Google Cloud 接続を関連付けることで、DoiT の請求データと並行して外部 BigQuery データセットをクエリできます。例えば、1 つのクエリの中で、コストと自社の利用状況テーブルやプロジェクトテーブルを結合できます。1 つの SQL クエリ内で DoiT の請求データと外部 BigQuery テーブルの両方を参照することはできません。フロー内で 2 つの SQL ノードを使用し、1 つは DoiT の請求データをクエリするため、もう 1 つは Google Cloud 接続を使用して外部 BigQuery データセットをクエリするために使用する必要があります。
同一フロー内で 2 つの SQL ノードを使用する場合は、順番に接続してください。最 初の SQL ノードの出力は、フロー内の後続ノードで利用できます。例えば、Filter ノードでフィルターしたり、Branch ノードで分岐したり、Notification ノードに含めたりできます。Query Output Schema を定義して、後続ノードが必要なフィールドを参照できるようにしてください。
DoiT の請求データをクエリする
SQL ノードを使用して、DoiT Cloud Intelligence に保存された 請求データ をクエリできます。
SQL クエリの例
以下は、過去 7 日間でコストアロケーションタグが付与されていない、最もコストの高い AWS リソース上位 20 件を抽出することで、コスト最適化とガバナンスを行うための SQL クエリの例です。
WITH recent AS (
SELECT
resource_id,
service_description,
SUM(cost) AS untagged_cost_7d
FROM `aws_dci`
WHERE usage_start_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND (labels IS NULL OR ARRAY_LENGTH(labels) = 0)
GROUP BY resource_id, service_description
)
SELECT
resource_id,
service_description,
ROUND(untagged_cost_7d, 2) AS untagged_cost_7d
FROM recent
WHERE untagged_cost_7d > 5
ORDER BY untagged_cost_7d DESC
LIMIT 20;
以下は、直ちに対応が必要な AWS リソースの優先順位付きリストを提供する、結果テーブルの例です。
| resource_id | service_description | untagged_cost_7d |
|---|---|---|
| i-0f23ab91c5d4ef123 | Amazon Elastic Compute Cloud | 142.37 |
| vol-03bc1198a7e9d7812 | Amazon Elastic Block Store | 58.12 |
| arn:aws:lambda:...func1 | AWS Lambda | 27.44 |
| bucket-analytics-prod | Amazon S3 | 12.91 |