Abfragen des aktuellen Konfigurationsstatus von AWS -Ressourcen - AWS Config

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Abfragen des aktuellen Konfigurationsstatus von AWS -Ressourcen

Einführung einer Vorschaufunktion für erweiterte Abfragen, mit der Sie mithilfe von Funktionen generativer künstlicher Intelligenz (generative KI) Eingabeaufforderungen in einfachem Englisch eingeben und in ein ready-to-use Abfrageformat konvertieren können. Weitere Informationen finden Sie unter Abfrageprozessor in natürlicher Sprache für erweiterte Abfragen.

Sie können AWS Config damit den aktuellen Konfigurationsstatus von AWS Ressourcen auf der Grundlage von Konfigurationseigenschaften für ein einzelnes Konto und eine Region oder für mehrere Konten und Regionen abfragen. Sie können eigenschaftsbasierte Abfragen anhand der Metadaten zum aktuellen AWS Ressourcenstatus in einer Liste unterstützter Ressourcen durchführen. AWS Config Weitere Informationen zu unterstützten Ressourcentypen finden Sie in der Liste der unterstützten Ressourcentypen für erweiterte Abfragen.

Advanced Queries bietet einen einzigen Abfrageendpunkt und eine Abfragesprache, um Metadaten zum aktuellen Ressourcenstatus abzurufen, ohne dienstspezifische Describe-API-Aufrufe ausführen zu müssen. Sie können Konfigurationsaggregatoren verwenden, um dieselben Abfragen von einem zentralen Konto aus über mehrere Konten und AWS Regionen hinweg auszuführen.

Features

AWS Config verwendet eine Teilmenge der SELECT SQL-Syntax (Structured Query Language), um eigenschaftsbasierte Abfragen und Aggregationen für die aktuellen Configuration Item (CI) -Daten durchzuführen. Die Komplexität der Abfragen reicht von Übereinstimmungen mit Tag- und/oder Ressourcen-IDs bis hin zu komplexeren Abfragen, z. B. der Anzeige aller Amazon S3 S3-Buckets, für die die Versionierung deaktiviert ist. Auf diese Weise können Sie gezielt den benötigten aktuellen Ressourcenstatus abfragen, ohne spezifische API-Aufrufe für AWS -Services auszuführen.

Aggregationsfunktionen wie AVG, COUNT, MAX, MIN und SUM werden unterstützt.

Sie können erweiterte Abfragen für Folgendes verwenden:

  • Bestandsverwaltung, um beispielsweise eine Liste mit Amazon-EC2-Instances einer bestimmten Größe abzufragen.

  • Sicherheits- und Betriebsinformationen, um beispielsweise eine Liste mit Ressourcen abzufragen, bei denen eine bestimmte Konfigurationseigenschaft aktiviert bzw. deaktiviert ist.

  • Kostenoptimierung, um beispielsweise eine Liste mit Amazon-EBS-Volumes zu identifizieren, die keiner EC2-Instance angefügt sind.

  • Compliance-Daten, z. B. um eine Liste all Ihrer Conformance Packs und deren Compliance-Status abzurufen.

Informationen zur Verwendung der AWS SQL-Abfragesprache finden Sie unter Was ist SQL (Structured Query Language)? .

Abfragekomponenten

Die SQL-SELECT-Abfragekomponenten lauten wie folgt:

Syntax

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

Parameter

[ WHERE condition ]

Filterergebnisse gemäß der festgelegten condition.

[GROUP BY-Eigenschaft]

Aggregiert den Ergebnissatz zu Zeilengruppen mit übereinstimmenden Werten für die angegebene Eigenschaft.

Die GROUP BY-Klausel gilt für Aggregationen.

[ORDER BY-Eigenschaft [ASC | DESC], [Eigenschaft [ASC | DESC] ...]]

Sortiert eine Ergebnisgruppe nach einem oder mehreren Ausgabe-properties.

Wenn die Klausel mehrere Eigenschaften enthält, wird der Ergebnissatz nach der ersten property sortiert. Anschließend wird die zweite property auf Zeilen mit übereinstimmenden Werten für die erste Eigenschaft angewendet usw.

Beispiele

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

Beispielabfragen

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

Abfrage:

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

Ergebnisse:

{ "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

Abfrage:

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

Ergebnisse:

{ "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

Abfrage:

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

Ergebnisse:

{ "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

Abfrage:

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

Ergebnisse:

{ "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

Abfrage:

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'

Ergebnisse:

{ "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" } ] } }

Beispiel für Beziehungsabfragen

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'

ODER

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'

Einschränkungen

Anmerkung

Advanced Query unterstützt nicht das Abfragen von Ressourcen, die nicht für die Aufzeichnung durch den Konfigurationsrekorder konfiguriert wurden. AWS Config erstellt Konfigurationselemente (CIs) mitResourceNotRecorded, configurationItemStatus wenn eine Ressource erkannt wurde, aber nicht so konfiguriert ist, dass sie vom Konfigurationsrekorder aufgezeichnet wird. Ein Aggregator aggregiert diese CIs, erweiterte Abfragen unterstützen hingegen nicht die Abfrage von CIs mit ResourceNotRecorded. Aktualisieren Sie Ihre Recorder-Einstellungen, um die Aufzeichnung der Ressourcentypen zu ermöglichen, die Sie abfragen möchten.

Als Teilbereich von SQL-SELECT weist die Abfragesyntax folgende Einschränkungen auf:

  • Keine Unterstützung für die Schlüsselwörter ALL, AS, DISTINCT, FROM, HAVING, JOIN und UNION in einer Abfrage. Abfragen von NULL-Werten werden nicht unterstützt.

  • Keine Unterstützung für Abfragen von Ressourcen von Drittanbietern. Bei Ressourcen von Drittanbietern, die mit erweiterten Abfragen abgerufen wurden, ist das Konfigurationsfeld auf NULL festgelegt.

  • Keine Unterstützung für verschachtelte Strukturen (wie Tags), die mit SQL-Abfragen entpackt werden.

  • Die CIDR-Notation wird für die Suche in IP-Bereiche konvertiert. Das bedeutet, dass mit "=" und "BETWEEN" nach allen Bereichen gesucht wird, die die angegebene IP enthalten, nicht nach einem bestimmten Bereich. Um nach einem genauen IP-Bereich zu suchen, müssen Sie zusätzliche Bedingungen hinzufügen, um IPs außerhalb des Bereichs auszuschließen. Um beispielsweise nach 10.0.0.0/24 und nur nach diesem IP-Block zu suchen, können Sie Folgendes verwenden:

    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'

    Nach 192.168.0.2/32 können Sie auf ähnliche Weise suchen:

    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'
  • Bei der Abfrage nach mehreren Eigenschaften innerhalb eines Arrays von Objekten werden Übereinstimmungen mit allen Array-Elementen berechnet. Für eine Ressource R mit den Regeln A und B ist die Ressource beispielsweise konform mit Regel A, aber nicht konform mit Regel B. Die Ressource R wird wie folgt gespeichert:

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

    R wird von dieser Abfrage zurückgegeben:

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

    Die erste Bedingung configuration.configRuleList.complianceType = 'non_compliant' wird auf ALLE Elemente in R.config angewendetRuleList, da R eine Regel (Regel B) mit complianceType = 'non_compliant' hat, die Bedingung wird als wahr bewertet. Die zweite Bedingung configuration.configRuleList.configRuleName wird auf ALLE Elemente in R.config angewendetRuleList, da R eine Regel (Regel A) mit configRuleName = 'A' hat, die Bedingung wird als wahr bewertet. Da beide Bedingungen „true“ sind, wird R zurückgegeben.

  • Die Kurznotation „SELECT alle Spalten“ (d. h. SELECT *) wählt ausschließlich die obersten, skalaren Eigenschaften eines CI aus. Die zurückgegebenen skalaren Eigenschaften lauten accountId, awsRegion, arn, availabilityZone, configurationItemCaptureTime, resourceCreationTime, resourceId, resourceName, resourceType und version.

  • Platzhalterbeschränkungen:

    • Platzhalter werden nur für Eigenschaftswerte und nicht für Eigenschaftsschlüssel unterstützt (z. B. wird ...WHERE someKey LIKE 'someValue%' unterstützt, ...WHERE 'someKey%' LIKE 'someValue%' jedoch nicht).

    • Unterstützt werden nur Suffixplatzhalter (z. B. werden ...LIKE 'AWS::EC2::%' und ...LIKE 'AWS::EC2::_' unterstützt, ...LIKE '%::EC2::Instance' und ...LIKE '_::EC2::Instance' jedoch nicht).

    • Platzhalterübereinstimmungen müssen aus mindestens drei Zeichen bestehen (z. B. sind ...LIKE 'ab%' und ...LIKE 'ab_' nicht zulässig, aber ...LIKE 'abc%' und ...LIKE 'abc_' sind zulässig).

    Anmerkung

    _“ (einzelner Unterstrich) wird ebenfalls als Platzhalter behandelt.

  • Aggregationsbeschränkungen:

    • Aggregationsfunktionen akzeptieren ausschließlich ein einziges Argument oder eine einzige Eingenschaft.

    • Aggregatfunktionen nehmen keine anderen Funktionen als Argumente an.

    • GROUP BY mit einer ORDER BY-Klausel, die auf Aggregatfunktionen verweist, darf nur eine einzige Eigenschaft enthalten.

    • Für alle anderen Aggregationen können GROUP BY-Klauseln bis zu drei Eigenschaften enthalten.

    • Die Paginierung wird für alle Aggregatabfragen unterstützt, es sei denn, die ORDER BY-Klausel hat eine Aggregatfunktion. GROUP BY X, ORDER BY Y funktioniert z. B. nicht, wenn Y eine Aggregatfunktion ist.

    • Keine Unterstützung für HAVING-Klauseln in Aggregationen.

  • Einschränkungen bei nicht übereinstimmenden Bezeichnern:

    Nicht übereinstimmende Bezeichner sind Eigenschaften, die dieselbe Schreibweise, aber unterschiedliche Groß- und Kleinschreibung aufweisen. Die erweiterte Abfrage unterstützt nicht die Verarbeitung von Abfragen, die nicht übereinstimmende Bezeichner enthalten. Beispielsweise:

    • Zwei Eigenschaften mit exakt derselben Schreibweise, aber mit unterschiedlicher Groß- und Kleinschreibung (configuration.dbclusterIdentifier und configuration.dBClusterIdentifier).

    • Zwei Eigenschaften, bei denen eine Eigenschaft eine Teilmenge der anderen ist und die Groß- und Kleinschreibung (configuration.ipAddress und configuration.ipaddressPermissions) unterschiedlich ist.

Unterstützung von Regionen

Erweiterte Abfragen werden in den folgenden Regionen unterstützt:

Name der Region Region Endpunkt Protocol (Protokoll)
USA Ost (Ohio) us-east-2 config.us-east-2.amazonaws.com HTTPS
USA Ost (Nord-Virginia) us-east-1 config.us-east-1.amazonaws.com HTTPS
USA West (Nordkalifornien) us-west-1 config.us-west-1.amazonaws.com HTTPS
USA West (Oregon) us-west-2 config.us-west-2.amazonaws.com HTTPS
Afrika (Kapstadt) af-south-1 config.af-south-1.amazonaws.com HTTPS
Asien-Pazifik (Hongkong) ap-east-1 config.ap-east-1.amazonaws.com HTTPS
Asien-Pazifik (Hyderabad) ap-south-2 config.ap-south-2.amazonaws.com HTTPS
Asien-Pazifik (Jakarta) ap-southeast-3 config.ap-southeast-3.amazonaws.com HTTPS
Asien-Pazifik (Melbourne) ap-southeast-4 config.ap-southeast-4.amazonaws.com HTTPS
Asien-Pazifik (Mumbai) ap-south-1 config.ap-south-1.amazonaws.com HTTPS
Asien-Pazifik (Osaka) ap-northeast-3 config.ap-northeast-3.amazonaws.com HTTPS
Asien-Pazifik (Seoul) ap-northeast-2 config.ap-northeast-2.amazonaws.com HTTPS
Asien-Pazifik (Singapur) ap-southeast-1 config.ap-southeast-1.amazonaws.com HTTPS
Asien-Pazifik (Sydney) ap-southeast-2 config.ap-southeast-2.amazonaws.com HTTPS
Asien-Pazifik (Tokio) ap-northeast-1 config.ap-northeast-1.amazonaws.com HTTPS
Kanada (Zentral) ca-central-1 config.ca-central-1.amazonaws.com HTTPS
Kanada West (Calgary) ca-west-1 config.ca-west-1.amazonaws.com HTTPS
Europa (Frankfurt) eu-central-1 config.eu-central-1.amazonaws.com HTTPS
Europa (Irland) eu-west-1 config.eu-west-1.amazonaws.com HTTPS
Europa (London) eu-west-2 config.eu-west-2.amazonaws.com HTTPS
Europa (Mailand) eu-south-1 config.eu-south-1.amazonaws.com HTTPS
Europa (Paris) eu-west-3 config.eu-west-3.amazonaws.com HTTPS
Europa (Spanien) eu-south-2 config.eu-south-2.amazonaws.com HTTPS
Europa (Stockholm) eu-north-1 config.eu-north-1.amazonaws.com HTTPS
Europa (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
Naher Osten (Bahrain) me-south-1 config.me-south-1.amazonaws.com HTTPS
Naher Osten (VAE) me-central-1 config.me-central-1.amazonaws.com HTTPS
Südamerika (São Paulo) sa-east-1 config.sa-east-1.amazonaws.com HTTPS
AWS GovCloud (US-Ost) us-gov-east-1 config.us-gov-east-1.amazonaws.com HTTPS
AWS GovCloud (US-West) us-gov-west-1 config.us-gov-west-1.amazonaws.com HTTPS