Menanyakan Status Sumber Daya Konfigurasi Saat Ini AWS - AWS Config

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menanyakan Status Sumber Daya Konfigurasi Saat Ini AWS

Memperkenalkan fitur pratinjau untuk kueri lanjutan yang memungkinkan Anda menggunakan kemampuan kecerdasan buatan generatif (AI generatif) untuk memasukkan petunjuk dalam bahasa Inggris biasa dan mengubahnya menjadi format kueri. ready-to-use Untuk informasi selengkapnya, lihat Pemroses kueri bahasa alami untuk kueri lanjutan.

Anda dapat menggunakan AWS Config untuk menanyakan status konfigurasi sumber AWS daya saat ini berdasarkan properti konfigurasi untuk satu akun dan Wilayah atau di beberapa akun dan Wilayah. Anda dapat melakukan kueri berbasis properti terhadap metadata status AWS sumber daya saat ini di seluruh daftar sumber daya yang mendukung. AWS Config Untuk informasi selengkapnya tentang daftar jenis sumber daya yang didukung, lihat Jenis Sumber Daya yang Didukung untuk Kueri Lanjutan.

Kueri lanjutan menyediakan satu titik akhir kueri dan bahasa kueri untuk mendapatkan metadata status sumber daya saat ini tanpa melakukan panggilan API deskripsi khusus layanan. Anda dapat menggunakan agregator konfigurasi untuk menjalankan kueri yang sama dari akun pusat di beberapa akun dan Wilayah. AWS

Fitur

AWS Config menggunakan subset SELECT sintaks bahasa kueri terstruktur (SQL) untuk melakukan kueri dan agregasi berbasis properti pada data item konfigurasi (CI) saat ini. Kueri berkisar dalam kompleksitas dari kecocokan terhadap tag dan/atau pengidentifikasi sumber daya, hingga kueri yang lebih kompleks, seperti melihat semua bucket Amazon S3 yang menonaktifkan versi. Ini memungkinkan Anda untuk menanyakan dengan tepat status sumber daya saat ini yang Anda butuhkan tanpa melakukan AWS panggilan API khusus layanan.

Ini mendukung fungsi agregasi sepertiAVG,,COUNT, MAXMIN, danSUM.

Anda dapat menggunakan kueri lanjutan untuk:

  • Manajemen inventaris; misalnya, untuk mengambil daftar instans Amazon EC2 dengan ukuran tertentu.

  • Keamanan dan intelijen operasional; misalnya, untuk mengambil daftar sumber daya yang memiliki properti konfigurasi tertentu diaktifkan atau dinonaktifkan.

  • Optimalisasi biaya; misalnya, untuk mengidentifikasi daftar volume Amazon EBS yang tidak dilampirkan ke instans EC2 apa pun.

  • Data kepatuhan; misalnya, untuk mengambil daftar semua paket kesesuaian Anda dan status kepatuhannya.

Untuk informasi tentang cara menggunakan AWS SQL Query Language, lihat Apa itu SQL (Structured Query Language)? .

Komponen Kueri

Komponen SELECT query SQL adalah sebagai berikut.

Sinopsis

SELECT property [, ...] [ WHERE condition ] [ GROUP BY property ] [ ORDER BY property [ ASC | DESC ] [, property [ ASC | DESC ] ...] ]

Parameter

[syarat WHERE]

Filter hasil sesuai dengan yang condition Anda tentukan.

[GROUP BY PROPERTI]

Mengagregat hasil yang ditetapkan ke dalam kelompok baris dengan nilai yang cocok untuk properti yang diberikan.

Klausul GROUP BY berlaku untuk agregasi.

[PESANAN BERDASARKAN PROPERTI [ASC | DESC] [, properti [ASC | DESC]...]]

Mengurutkan hasil yang ditetapkan oleh satu atau lebih outputproperties.

Ketika klausa berisi beberapa properti, kumpulan hasil diurutkan menurut yang pertamaproperty, lalu menurut yang kedua property untuk baris yang memiliki nilai yang cocok untuk properti pertama, dan seterusnya.

Contoh

SELECT resourceId WHERE resourceType='AWS::EC2::Instance'
SELECT configuration.complianceType, COUNT(*) WHERE resourceType = 'AWS::Config::ResourceCompliance' GROUP BY configuration.complianceType

Kueri Sampel

Query to list all EC2 instances with AMI ID ami-12345

Kueri:

SELECT resourceId, resourceType, configuration.instanceType, configuration.placement.tenancy, configuration.imageId, availabilityZone WHERE resourceType = 'AWS::EC2::Instance' AND configuration.imageId = 'ami-12345'

Hasil:

{ "QueryInfo": { "SelectFields": [ { "Name": "resourceId" }, { "Name": "resourceType" }, { "Name": "configuration.instanceType" }, { "Name": "configuration.placement.tenancy" }, { "Name": "configuration.imageId" }, { "Name": "availabilityZone" } ] }, "Results": [ "{\"resourceId\":\"resourceid\",\"configuration\":{\"imageId\":\"ami-12345\",\"instanceType\":\"t2.micro\",\"placement\":{\"tenancy\":\"default\"}},\"availabilityZone\":\"us-west-2c\",\"resourceType\":\"AWS::EC2::Instance\"}", "{\"resourceId\":\"resourceid\",\"configuration\":{\"imageId\":\"ami-12345\",\"instanceType\":\"t2.micro\",\"placement\":{\"tenancy\":\"default\"}},\"availabilityZone\":\"us-west-2a\",\"resourceType\":\"AWS::EC2::Instance\"}", "{\"resourceId\":\"resourceid\",\"configuration\":{\"imageId\":\"ami-12345\",\"instanceType\":\"t2.micro\",\"placement\":{\"tenancy\":\"default\"}},\"availabilityZone\":\"us-west-2c\",\"resourceType\":\"AWS::EC2::Instance\"}", "{\"resourceId\":\"resourceid\",\"configuration\":{\"imageId\":\"ami-12345\",\"instanceType\":\"t1.micro\",\"placement\":{\"tenancy\":\"default\"}},\"availabilityZone\":\"us-west-2a\",\"resourceType\":\"AWS::EC2::Instance\"}", "{\"resourceId\":\"resourceid\",\"configuration\":{\"imageId\":\"ami-12345\",\"instanceType\":\"t2.micro\",\"placement\":{\"tenancy\":\"default\"}},\"availabilityZone\":\"us-west-2c\",\"resourceType\":\"AWS::EC2::Instance\"}", "{\"resourceId\":\"resourceid\",\"configuration\":{\"imageId\":\"ami-12345\",\"instanceType\":\"t2.micro\",\"placement\":{\"tenancy\":\"default\"}},\"availabilityZone\":\"us-west-2c\",\"resourceType\":\"AWS::EC2::Instance\"}", "{\"resourceId\":\"resourceid\",\"configuration\":{\"imageId\":\"ami-12345\",\"instanceType\":\"t2.micro\",\"placement\":{\"tenancy\":\"default\"}},\"availabilityZone\":\"us-west-2c\",\"resourceType\":\"AWS::EC2::Instance\"}" ] }
Query for count of resources grouped by their AWS Config rules compliance status

Kueri:

SELECT configuration.complianceType, COUNT(*) WHERE resourceType = 'AWS::Config::ResourceCompliance' GROUP BY configuration.complianceType

Hasil:

{ "QueryInfo": { "SelectFields": [ { "Name": "configuration.complianceType" }, { "Name": "COUNT(*)" } ] }, "Results": [ "{\"COUNT(*)\":163,\"configuration\":{\"complianceType\":\"NON_COMPLIANT\"}}", "{\"COUNT(*)\":2,\"configuration\":{\"complianceType\":\"COMPLIANT\"}}" ] }
Query for the compliance status of AWS Conformance packs

Kueri:

SELECT resourceId, resourceName, resourceType, configuration.complianceType WHERE resourceType = 'AWS::Config::ConformancePackCompliance'

Hasil:

{ "QueryInfo": { "SelectFields": [ { "Name": "resourceId" }, { "Name": "resourceName" }, { "Name": "resourceType" }, { "Name": "configuration.complianceType" } ] }, "Results": [ "{\"resourceId\":\"conformance-pack-conformance-pack-ID\",\"configuration\":{\"complianceType\":\"COMPLIANT\"},\"resourceName\":\"MyConformancePack1\",\"resourceType\":\"AWS::Config::ConformancePackCompliance\"}", "{\"resourceId\":\"conformance-pack-conformance-pack-ID\",\"configuration\":{\"complianceType\":\"NON_COMPLIANT\"},\"resourceName\":\"MyConformancePack2\",\"resourceType\":\"AWS::Config::ConformancePackCompliance\"}", "{\"resourceId\":\"conformance-pack-conformance-pack-ID\",\"configuration\":{\"complianceType\":\"NON_COMPLIANT\"},\"resourceName\":\"MyConformancePack3\",\"resourceType\":\"AWS::Config::ConformancePackCompliance\"}" ] }
Query to get counts of AWS resources grouped by account ID

Kueri:

aws configservice select-aggregate-resource-config --expression "SELECT COUNT(*), accountId group by accountId" --configuration-aggregator-name my-aggregator

Hasil:

{ "Results": [ "{\"COUNT(*)\":2407,\"accountId\":\"accountId\"}", "{\"COUNT(*)\":726,\"accountId\":\"accountId\"}" ], "QueryInfo": { "SelectFields": [ { "Name": "COUNT(*)" }, { "Name": "accountId" } ] } }
Query to list all EC2 volumes that are not in use

Kueri:

SELECT resourceId, accountId, awsRegion, resourceType, configuration.volumeType, configuration.size, resourceCreationTime, tags, configuration.encrypted, configuration.availabilityZone, configuration.state.value WHERE resourceType = 'AWS::EC2::Volume' AND configuration.state.value = 'available'

Hasil:

{ "Results": [ "{\"accountId\":\"accountId\",\"resourceId\":\"vol-0174de9c962f6581c\",\"awsRegion\":\"us-west-2\",\"configuration\":{\"volumeType\":\"gp2\",\"encrypted\":false,\"size\":100.0,\"state\":{\"value\":\"available\"},\"availabilityZone\":\"us-west-2a\"},\"resourceCreationTime\":\"2020-02-21T07:39:43.771Z\",\"tags\":[],\"resourceType\":\"AWS::EC2::Volume\"}", "{\"accountId\":\"accountId\",\"resourceId\":\"vol-0cbeb652a74af2f8f\",\"awsRegion\":\"us-east-1\",\"configuration\":{\"volumeType\":\"gp2\",\"encrypted\":false,\"size\":100.0,\"state\":{\"value\":\"available\"},\"availabilityZone\":\"us-east-1a\"},\"resourceCreationTime\":\"2020-02-21T07:28:40.639Z\",\"tags\":[],\"resourceType\":\"AWS::EC2::Volume\"}" "{\"accountId\":\"accountId\",\"resourceId\":\"vol-0a49952d528ec8ba2\",\"awsRegion\":\"ap-south-1\",\"configuration\":{\"volumeType\":\"gp2\",\"encrypted\":false,\"size\":100.0,\"state\":{\"value\":\"available\"},\"availabilityZone\":\"ap-south-1a\"},\"resourceCreationTime\":\"2020-02-21T07:39:31.800Z\",\"tags\":[],\"resourceType\":\"AWS::EC2::Volume\"}", ], "QueryInfo": { "SelectFields": [ { "Name": "resourceId" }, { "Name": "accountId" }, { "Name": "awsRegion" }, { "Name": "resourceType" }, { "Name": "configuration.volumeType" }, { "Name": "configuration.size" }, { "Name": "resourceCreationTime" }, { "Name": "tags" }, { "Name": "configuration.encrypted" }, { "Name": "configuration.availabilityZone" }, { "Name": "configuration.state.value" } ] } }

Contoh Pertanyaan Hubungan

Find EIPs related to an EC2 instance
SELECT resourceId WHERE resourceType = 'AWS::EC2::EIP' AND relationships.resourceId = 'i-abcd1234'
Find EIPs related to an EC2 network interface
SELECT resourceId WHERE resourceType = 'AWS::EC2::EIP' AND relationships.resourceId = 'eni-abcd1234'
Find EC2 instances and network interfaces related to a security group
SELECT resourceId WHERE resourceType IN ('AWS::EC2::Instance', 'AWS::EC2::NetworkInterface') AND relationships.resourceId = 'sg-abcd1234'

ATAU

SELECT resourceId WHERE resourceType = 'AWS::EC2::Instance' AND relationships.resourceId = 'sg-abcd1234' SELECT resourceId WHERE resourceType = 'AWS::EC2::NetworkInterface' AND relationships.resourceId = 'sg-abcd1234'
Find EC2 instances, network ACLs, network interfaces and route tables related to a subnet
SELECT resourceId WHERE resourceType IN ('AWS::EC2::Instance', 'AWS::EC2::NetworkACL', 'AWS::EC2::NetworkInterface', 'AWS::EC2::RouteTable') AND relationships.resourceId = 'subnet-abcd1234'
Find EC2 instances, internet gateways, network ACLs, network interfaces, route tables, subnets and security groups related to a VPC
SELECT resourceId WHERE resourceType IN ('AWS::EC2::Instance', 'AWS::EC2::InternetGateway', 'AWS::EC2::NetworkACL', 'AWS::EC2::NetworkInterface', 'AWS::EC2::RouteTable', 'AWS::EC2::Subnet', 'AWS::EC2::SecurityGroup') AND relationships.resourceId = 'vpc-abcd1234'
Find EC2 route tables related to a VPN gateway
SELECT resourceId WHERE resourceType = 'AWS::EC2::RouteTable' AND relationships.resourceId = 'vgw-abcd1234'

Batasan

catatan

Kueri lanjutan tidak mendukung sumber daya kueri yang belum dikonfigurasi untuk direkam oleh perekam konfigurasi. AWS Config membuat Item Konfigurasi (CI) dengan ResourceNotRecorded configurationItemStatus ketika sumber daya telah ditemukan tetapi tidak dikonfigurasi untuk direkam oleh perekam konfigurasi. Sementara agregator akan menggabungkan CI ini, kueri lanjutan tidak mendukung kueri CI dengan. ResourceNotRecorded Perbarui pengaturan perekam Anda untuk mengaktifkan perekaman jenis sumber daya yang ingin Anda kueri.

Sebagai bagian dari SQLSELECT, sintaks kueri memiliki batasan berikut:

  • Tidak ada dukungan untukALL,AS,DISTINCT,FROM,HAVING,JOIN, dan UNION kata kunci dalam kueri. NULLkueri nilai tidak didukung.

  • Tidak ada dukungan untuk kueri pada sumber daya pihak ketiga. Sumber daya pihak ketiga yang diambil menggunakan kueri lanjutan akan memiliki bidang konfigurasi yang ditetapkan sebagai. NULL

  • Tidak ada dukungan untuk struktur bersarang (seperti tag) untuk dibongkar dengan kueri SQL.

  • Notasi CIDR dikonversi ke rentang IP untuk pencarian. Ini berarti bahwa "=" dan "BETWEEN" mencari rentang apa pun yang mencakup IP yang disediakan, bukan yang tepat. Untuk mencari rentang IP yang tepat, Anda perlu menambahkan kondisi tambahan untuk mengecualikan IP di luar jangkauan. Misalnya, untuk mencari 10.0.0.0/24 dan hanya blok IP itu, Anda dapat melakukan:

    SELECT * WHERE resourceType = 'AWS::EC2::SecurityGroup' AND configuration.ipPermissions.ipRanges BETWEEN '10.0.0.0' AND '10.0.0.255' AND NOT configuration.ipPermissions.ipRanges < '10.0.0.0' AND NOT configuration.ipPermissions.ipRanges > '10.0.0.255'

    Untuk 192.168.0.2/32, Anda dapat mencari dengan cara yang sama:

    SELECT * WHERE resourceType = 'AWS::EC2::SecurityGroup' AND configuration.ipPermissions.ipRanges = '192.168.0.2' AND NOT configuration.ipPermissions.ipRanges > '192.168.0.2' AND NOT configuration.ipPermissions.ipRanges < '192.168.0.2'
  • Saat melakukan kueri terhadap beberapa properti dalam array objek, kecocokan dihitung terhadap semua elemen array. Misalnya, untuk sumber daya R dengan aturan A dan B, sumber daya sesuai dengan aturan A tetapi tidak sesuai dengan aturan B. Sumber daya R disimpan sebagai:

    { configRuleList: [ { configRuleName: 'A', complianceType: 'compliant' }, { configRuleName: 'B', complianceType: 'non_compliant' } ] }

    R akan dikembalikan oleh kueri ini:

    SELECT configuration WHERE configuration.configRuleList.complianceType = 'non_compliant' AND configuration.configRuleList.configRuleName = 'A'

    Kondisi pertama configuration.configRuleList.complianceType = 'non_compliant' diterapkan ke SEMUA elemen di R.config, RuleList karena R memiliki aturan (aturan B) dengan complianceType = 'non_compliant', kondisi dievaluasi sebagai true. Kondisi kedua configuration.configRuleList.configRuleName diterapkan ke SEMUA elemen di R.config, RuleList karena R memiliki aturan (aturan A) dengan configRuleName = 'A', kondisi dievaluasi sebagai true. Karena kedua kondisi tersebut benar, R akan dikembalikan.

  • Singkatan SELECT semua kolom (yaituSELECT *) hanya memilih properti skalar tingkat atas dari CI. Sifat skalar yang dikembalikan adalah accountIdawsRegion,,arn,availabilityZone,configurationItemCaptureTime,resourceCreationTime,resourceId, resourceNameresourceType, danversion.

  • Batasan wildcard:

    • Wildcard hanya didukung untuk nilai properti dan bukan untuk kunci properti (misalnya, ...WHERE someKey LIKE 'someValue%' didukung tetapi tidak ...WHERE 'someKey%' LIKE 'someValue%' didukung).

    • Support hanya untuk wildcard akhiran (misalnya, ...LIKE 'AWS::EC2::%' dan ...LIKE 'AWS::EC2::_' didukung tetapi ...LIKE '%::EC2::Instance' dan tidak ...LIKE '_::EC2::Instance' didukung).

    • Pencocokan wildcard harus memiliki panjang minimal tiga karakter (misalnya, ...LIKE 'ab%' dan tidak ...LIKE 'ab_' diperbolehkan tetapi ...LIKE 'abc%' diizinkan). ...LIKE 'abc_'

    catatan

    _" (garis bawah tunggal) juga diperlakukan sebagai wildcard.

  • Batasan agregasi:

    • Fungsi agregat hanya dapat menerima satu argumen atau properti.

    • Fungsi agregat tidak dapat mengambil fungsi lain sebagai argumen.

    • GROUP BYdengan ORDER BY klausa referensi fungsi agregat mungkin hanya berisi satu properti.

    • Untuk semua GROUP BY klausa agregasi lainnya mungkin berisi hingga tiga properti.

    • Pagination didukung untuk semua kueri agregat kecuali ketika ORDER BY klausa memiliki fungsi agregat. Misalnya, GROUP BY X, ORDER BY Y tidak berfungsi jika Y merupakan fungsi agregat.

    • Tidak ada dukungan untuk HAVING klausa dalam agregasi.

  • Batasan pengenal yang tidak cocok:

    Pengidentifikasi yang tidak cocok adalah properti yang memiliki ejaan yang sama tetapi kasus yang berbeda (huruf besar dan kecil). Kueri lanjutan tidak mendukung kueri pemrosesan yang berisi pengidentifikasi yang tidak cocok. Sebagai contoh:

    • Dua properti yang memiliki ejaan yang sama persis tetapi dengan casing yang berbeda (configuration.dbclusterIdentifierdanconfiguration.dBClusterIdentifier).

    • Dua properti di mana satu properti adalah bagian dari yang lain, dan mereka memiliki casing yang berbeda (configuration.ipAddressdanconfiguration.ipaddressPermissions).

Support Wilayah

Kueri lanjutan didukung di Wilayah berikut:

Nama Wilayah Wilayah Titik Akhir Protokol
AS Timur (Ohio) us–east-2 config.us-east-2.amazonaws.com HTTPS
AS Timur (Virginia Utara) us-east-1 config.us-east-1.amazonaws.com HTTPS
US West (N. California) us-west-1 config.us-west-1.amazonaws.com HTTPS
AS Barat (Oregon) us-west-2 config.us-west-2.amazonaws.com HTTPS
Afrika (Cape Town) af-south-1 config.af-south-1.amazonaws.com HTTPS
Asia Pasifik (Hong Kong) ap-east-1 config.ap-east-1.amazonaws.com HTTPS
Asia Pasifik (Hyderabad) ap-south-2 config.ap-south-2.amazonaws.com HTTPS
Asia Pasifik (Jakarta) ap-southeast-3 config.ap-southeast-3.amazonaws.com HTTPS
Asia Pasifik (Melbourne) ap-southeast-4 config.ap-southeast-4.amazonaws.com HTTPS
Asia Pasifik (Mumbai) ap-south-1 config.ap-south-1.amazonaws.com HTTPS
Asia Pasifik (Osaka) ap-northeast-3 config.ap-northeast-3.amazonaws.com HTTPS
Asia Pasifik (Seoul) ap-northeast-2 config.ap-northeast-2.amazonaws.com HTTPS
Asia Pasifik (Singapura) ap-southeast-1 config.ap-southeast-1.amazonaws.com HTTPS
Asia Pasifik (Sydney) ap-southeast-2 config.ap-southeast-2.amazonaws.com HTTPS
Asia Pasifik (Tokyo) ap-northeast-1 config.ap-northeast-1.amazonaws.com HTTPS
Kanada (Pusat) ca-central-1 config.ca-central-1.amazonaws.com HTTPS
Kanada Barat (Calgary) ca-west-1 config.ca-west-1.amazonaws.com HTTPS
Eropa (Frankfurt) eu-central-1 config.eu-central-1.amazonaws.com HTTPS
Eropa (Irlandia) eu-west-1 config.eu-west-1.amazonaws.com HTTPS
Eropa (London) eu-west-2 config.eu-west-2.amazonaws.com HTTPS
Eropa (Milan) eu-south-1 config.eu-south-1.amazonaws.com HTTPS
Eropa (Paris) eu-west-3 config.eu-west-3.amazonaws.com HTTPS
Eropa (Spanyol) eu-south-2 config.eu-south-2.amazonaws.com HTTPS
Eropa (Stockholm) eu-north-1 config.eu-north-1.amazonaws.com HTTPS
Eropa (Zürich) eu-central-2 config.eu-central-2.amazonaws.com HTTPS
Israel (Tel Aviv) il-central-1 config.il-central-1.amazonaws.com HTTPS
Timur Tengah (Bahrain) me-south-1 config.me-south-1.amazonaws.com HTTPS
Timur Tengah (UAE) me-central-1 config.me-central-1.amazonaws.com HTTPS
Amerika Selatan (Sao Paulo) sa-east-1 config.sa-east-1.amazonaws.com HTTPS
AWS GovCloud (AS-Timur) us-gov-east-1 config.us-gov-east-1.amazonaws.com HTTPS
AWS GovCloud (AS-Barat) us-gov-west-1 config.us-gov-west-1.amazonaws.com HTTPS