|
名前
|
説明
|
SQL
|
|
Alibaba Cloud リソースのカウント
|
アクセス権のあるリソースの総数を返します。
|
-- COUNT() 関数は、リソースの総数をクエリするために使用されます。
-- resources テーブルには、リソースプロパティに関する情報が格納されます。
SELECT
COUNT(*)
FROM
resources;
|
|
ECS インスタンスリソースのカウント
|
アクセス権のある ECS インスタンスの総数を返します。
|
-- resource_type = 'ACS::ECS::Instance' を別の条件に置き換えて、その条件に一致するリソースの数をクエリできます。
-- Resource Management の詳細検索ページの左側メニューに表示されるリソースタイプまたはリソースプロパティをクリックできます。システムはクエリ条件を作成し、その条件をクエリ文に含めます。
SELECT
COUNT(*)
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance';
|
|
すべての Alibaba Cloud リソースのクエリ
|
アクセス権のあるすべてのリソースを、リソースタイプとリソース ID でソートしてクエリします。
|
-- このサンプルコードは、リソースのすべてのコアプロパティを表示します。プロパティを追加または削除したり、properties パラメーターを設定してリソースの拡張プロパティを指定したりできます。
-- ORDER BY 句は、リソースをソートするルールを指定するために使用されます。DESC または ASC パラメーターを設定して、リソースのソート順を変更できます。順序を指定しない場合、リソースは自動的に昇順でソートされます。
-- resource_type と resource_id に基づいてデータをソートすると、クエリを高速化できます。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
ORDER BY
resource_type,
resource_id
LIMIT
1000 OFFSET 0;
|
|
すべての ECS インスタンスリソースのクエリ
|
アクセス権のあるすべての ECS インスタンスを、名前の昇順でソートしてクエリします。
|
-- ソートの基準となるプロパティとソート順を変更できます。順序を指定しない場合、リソースは自動的に昇順でソートされます。
-- リソースのソートには NULL 値を持つプロパティを使用しないことを推奨します。そのようなプロパティを使用する場合、特別な処理を実行してください。特別な処理を行わないと、リソースをプロパティに基づいて正しくソートできません。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
ORDER BY
resource_name
LIMIT
1000 OFFSET 0;
|
|
リソースタイプとリソース ID でソートされた最初の 20 リソースのクエリ
|
最初の 20 リソースを、リソースタイプとリソース ID でソートしてクエリします。
|
-- LIMIT 条件は、返されるエントリの最大数を指定するために使用されます。返されるエントリの数は 1 から 1,000 の範囲です。LIMIT 条件を設定しない場合、デフォルトで最大 1,000 エントリが返されます。
-- リソースのソート基準となる一部のプロパティの値が重複している場合、複数のクエリで異なる結果が返されることがあります。この場合、ソート用のプロパティを追加して結果の一貫性を確保できます。
SELECT
resource_id,
resource_name,
region_id,
resource_type,
account_id
FROM
resources
ORDER BY
resource_type,
resource_id
LIMIT
20;
|
|
リソースタイプとリソース ID でソートされた 11 番目から 30 番目のリソースのクエリ
|
リソースをリソースタイプとリソース ID でソートし、11 番目から 30 番目のリソースを返します。
|
-- LIMIT OFFSET 条件は、返される結果の範囲を制限するために使用されます。LIMIT は返されるエントリの最大数を指定し、OFFSET は返されるエントリの開始位置を指定します。
-- ページングクエリで LIMIT OFFSET 条件を使用できます。各クエリで、LIMIT を使用して返されるエントリの最大数を制限し、OFFSET を使用して次のページのエントリを取得できます。連続したエントリが返されるようにするには、ORDER BY 句を使用してソート方法を指定する必要があります。
-- リソースのソート基準となる一部のプロパティの値が重複している場合、複数のクエリで異なる結果が返されることがあります。この場合、ソート用のプロパティを追加して結果の一貫性を確保できます。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
ORDER BY
resource_type,
resource_id
LIMIT
20 OFFSET 10;
|
|
異なるタイプのリソースのカウント
|
リソースをタイプ別にカウントし、数量の降順でソートします。
|
-- GROUP BY 句は、特定のプロパティに基づいてリソースを分類し、グループ化するために使用されます。
-- クエリ結果に文字列型の列と数値型の列が含まれている場合、クエリ結果をグラフで表示できます。
SELECT
resource_type,
COUNT(*) AS cnt
FROM
resources
GROUP BY
resource_type
ORDER BY
cnt DESC;
|
|
異なるリージョン内のリソースのカウント
|
リソースをリージョン別にカウントし、数量の降順でソートします。
|
-- クエリ結果に文字列型の列と数値型の列が含まれている場合、クエリ結果をグラフで表示できます。
SELECT
region_id,
COUNT(*) AS cnt
FROM
resources
GROUP BY
region_id
ORDER BY
cnt DESC;
|
|
異なるリソースグループ内のリソースのカウント
|
リソースをリソースグループ別にカウントし、数量の降順でソートします。
|
-- クエリ結果に文字列型の列と数値型の列が含まれている場合、クエリ結果をグラフで表示できます。
SELECT
CASE
WHEN resource_group_id IS NULL THEN 'リソースグループに未接続'
ELSE resource_group_id
END AS resource_group_id,
COUNT(*) AS cnt
FROM
resources
GROUP BY
resource_group_id
ORDER BY
cnt DESC;
|
|
指定されたリソースグループ内の異なるタイプのリソースのカウント
|
指定されたリソースグループ内のリソースをタイプ別にカウントし、数量の降順でソートします。
|
-- クエリ結果に文字列型の列と数値型の列が含まれている場合、クエリ結果をグラフで表示できます。
SELECT
resource_type,
COUNT(*) AS cnt
FROM
resources
WHERE
resource_group_id = 'rg-xxx'
GROUP BY
resource_type
ORDER BY
cnt DESC;
|
|
すべてのタイプの ECS リソースのクエリ
|
すべての ECS リソースを、リソースタイプと作成時間でソートして一覧表示します。
|
-- ACS::ECS::% は、ACS::ECS:: で始まるリソースタイプコードに一致させるために使用されます。クエリ結果には、すべてのタイプの ECS リソースが含まれます。
-- このサンプルコードでは、リソースはまずタイプで昇順にソートされます。次に、同じタイプのリソースが作成時間で昇順にソートされます。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
resource_type LIKE 'ACS::ECS::%'
ORDER BY
resource_type,
create_time;
|
|
指定されたタグを持つリソースのクエリ
|
指定されたタグを持つすべてのリソースをクエリします。
|
-- 必要に応じて KEY と VALUE を置き換えることができます。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
tags ->> 'KEY' = 'VALUE';
|
|
タグキーに test を含むリソースのクエリ
|
「test」を含むタグキーを持つすべてのリソースを一覧表示します。
|
-- このサンプルコードでは、ネストされたクエリが実行されます。まず内部クエリが実行され、そのクエリ結果が一時テーブルとして使用されます。外部クエリは、その一時テーブルで実行されます。
-- JSONB_OBJECT_KEYS() 関数は、マップ型オブジェクトをキーのコレクションに展開するために使用されます。クエリは、そのコレクションに対して実行されます。
-- このサンプルコードでは、%test% を使用して、キーにキーワード test を含むすべてのタグを照合します。
SELECT
*
FROM
(
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id,
JSONB_OBJECT_KEYS(tags) AS tag_key
FROM
resources
) AS r
WHERE
r.tag_key LIKE '%test%'
ORDER BY
r.resource_type,
r.resource_id;
|
|
特定の IP アドレスに関連付けられたリソースの一覧表示
|
指定された IP アドレスを含むすべてのリソースを一覧表示します。
|
-- JSONB_ARRAY_ELEMENTS_TEXT() 関数は、配列をテキスト値のコレクションに展開するために使用されます。クエリは、そのコレクションに対して実行されます。
SELECT
*
FROM
(
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id,
JSONB_ARRAY_ELEMENTS_TEXT(ip_addresses) AS ip
FROM
resources
) AS r
WHERE
r.ip = 'xxx.xxx.xxx.xxx'
ORDER BY
r.resource_type,
r.resource_id;
|
|
指定日以降に作成された ECS インスタンスリソースのクエリ
|
指定日以降に作成された ECS インスタンスをクエリします。
|
-- AND 演算子は、複数のクエリ条件を接続するために使用されます。すべてのクエリ条件に一致するリソースのみが返されます。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
AND create_time > '2023-08-07'
ORDER BY
create_time;
|
|
過去 30 日以内に作成されたリソースのクエリ
|
過去 30 日間に作成されたリソースを、作成時間の昇順でソートしてクエリします。
|
-- クエリ条件で計算式を指定して、正確なクエリを実行できます。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
create_time > TO_CHAR(NOW() - interval '30 day', 'YYYY-MM-DD')
ORDER BY
create_time;
|
|
指定された VPC 内のリソースのクエリ
|
指定された VPC 内のリソースを、リソースタイプの昇順でソートしてクエリします。
|
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
vpc_id = 'vpc-xxx'
ORDER BY
resource_type,
resource_id;
|
|
ECS インスタンスの拡張プロパティのクエリ
|
ステータス、メモリ、仕様、課金方法など、ECS インスタンスの拡張プロパティをクエリします。
|
-- 異なるタイプのリソースに対して properties フィールドを指定して、リソースの拡張プロパティをクエリできます。
-- Resource Management の詳細検索ページの左側メニューに表示されるリソースタイプまたはリソースプロパティをクリックできます。システムはクエリ条件を作成し、その条件をクエリ文に含めます。
-- CASE 句は、同じプロパティに異なる値を定義するために使用され、クエリ結果を理解しやすくします。
SELECT
resource_id,
resource_name,
properties ->> 'Status' AS "インスタンスステータス",
properties ->> 'InstanceNetworkType' AS "ネットワークタイプ",
properties ->> 'Memory' AS "メモリ",
properties ->> 'Cpu' AS Cpu,
properties ->> 'InstanceType' AS "仕様",
CASE
properties ->> 'InstanceChargeType'
WHEN 'PrePaid' THEN 'サブスクリプション'
WHEN 'PostPaid' THEN '従量課金'
ELSE properties ->> 'InstanceChargeType'
END AS "課金方法",
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
ip_addresses
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
ORDER BY
resource_id;
|
|
オペレーティングシステム別に分類された ECS インスタンスのカウント
|
ECS インスタンスをオペレーティングシステム別にカウントします。
|
-- クエリ結果に文字列型の列と数値型の列が含まれている場合、クエリ結果をグラフで表示できます。
SELECT
properties ->> 'OSType' AS OSType,
COUNT(*) AS num
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
GROUP BY
properties ->> 'OSType';
|
|
停止した ECS インスタンスの一覧表示
|
停止した ECS インスタンスを一覧表示します。
|
-- CASE 句は、同じプロパティに異なる値を定義するために使用され、クエリ結果を理解しやすくします。
-- CONCAT() 関数は、複数のプロパティを 1 つの列に結合するために使用され、クエリ結果を表示しやすくします。このサンプルコードでは、区切り文字としてスラッシュ (/) が使用されています。
SELECT
resource_id,
resource_name,
CONCAT(region_id, '/', zone_id) AS "リージョン/ゾーン",
CASE
properties ->> 'Status'
WHEN 'Pending' THEN '作成中'
WHEN 'Running' THEN '実行中'
WHEN 'Starting' THEN '起動中'
WHEN 'Stopping' THEN '停止中'
WHEN 'Stopped' THEN '停止済み'
END AS "ステータス",
CONCAT(
properties ->> 'Cpu',
' vCPU ',
(properties -> 'Memory') :: int / 1024,
' GiB ',
properties ->> 'InstanceType'
) AS "設定",
properties ->> 'InstanceChargeType' AS "課金方法",
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
properties
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
AND properties ->> 'Status' = 'Stopped'
ORDER BY
resource_id;
|
|
ECS インスタンスにアタッチされたディスクのクエリ
|
ECS インスタンスにアタッチされたディスクをクエリします。
|
-- JOIN キーワードは、複数のテーブルに対して結合クエリを実行するために使用します。クエリ結果は、結合条件とフィルター条件に基づいて返されます。
SELECT
a.resource_type AS resource_type_disk,
b.resource_type AS resource_type_instance,
a.resource_id AS disk_id,
a.region_id AS instance_region_id,
b.resource_id AS instance_id,
b.region_id AS disk_region_id
FROM
resources a
LEFT JOIN resources b ON a.properties ->> 'InstanceId' = b.resource_id
WHERE
a.resource_type = 'ACS::ECS::Disk'
AND b.resource_type = 'ACS::ECS::Instance';
|
|
アタッチされていないディスクのクエリ
|
アタッチされていないディスクをクエリします。
|
SELECT
resource_id,
resource_name,
properties ->> 'Status' AS "ディスクステータス",
CASE
properties ->> 'Type'
WHEN 'system' THEN 'システムディスク'
WHEN 'data' THEN 'データディスク'
ELSE properties ->> 'Type'
END AS "ディスクタイプ",
properties ->> 'DiskChargeType' AS "ディスクの課金方法",
CASE
properties ->> 'Portable'
WHEN 'true' THEN 'サポート'
ELSE '非サポート'
END AS "デタッチ可能",
CASE
properties ->> 'DeleteWithInstance'
WHEN 'true' THEN 'ディスクはインスタンスとともにリリースされるが、自動スナップショットはディスクとともに削除されない'
ELSE 'ディスクはインスタンスとともにリリースされず、自動スナップショットもディスクとともに削除されない'
END AS "リリースモード",
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags
FROM
resources
WHERE
properties ->> 'Status' = 'Available'
AND resource_type = 'ACS::ECS::Disk'
ORDER BY
resource_id;
|
|
40 GB を超える容量の ECS ディスクのクエリ
|
40 GB を超える ECS ディスクを容量でソートしてクエリします。
|
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id,
(properties ->> 'Size') :: int AS disk_size
FROM
resources
WHERE
resource_type = 'ACS::ECS::Disk'
AND (properties ->> 'Size') :: int > 40
order by
disk_size;
|
|
まもなく有効期限が切れるサブスクリプションの ApsaraDB RDS インスタンスのクエリ
|
まもなく有効期限が切れるサブスクリプションの ApsaraDB RDS インスタンスをクエリします。
|
-- このサンプルコードでは、30 日以内に有効期限が切れるリソースを「まもなく有効期限が切れるリソース」と定義しています。この条件は必要に応じて変更できます。
-- TO_TIMESTAMP() 関数は、時間文字列をフォーマットされたタイムスタンプに変換し、関連する計算を行うために使用されます。
SELECT
*
FROM
(
SELECT
resource_id,
resource_name,
account_id,
resource_type,
region_id,
zone_id,
create_time,
to_timestamp(
(properties ->> 'ExpireTime') :: varchar,
'YYYY-MM-DD HH24:MI:SS'
) AS "有効期限",
properties ->> 'DBInstanceStatus' AS "インスタンスステータス",
properties ->> 'DBInstanceType' AS "インスタンスタイプ",
CONCAT(
properties ->> 'Engine',
' ',
properties ->> 'EngineVersion'
) AS "データベースタイプ",
vpc_id,
tags
FROM
resources
WHERE
resource_type = 'ACS::RDS::DBInstance'
and properties ->> 'PayType' = 'Prepaid'
order by
create_time
) AS t
WHERE
t."有効期限" < NOW() + interval '30 day'
ORDER BY
t.resource_id;
|