What Counts as a Data Plane Action on AWS - IsDataPlane in the Service Reference, CloudTrail Data Events, and What an SCP or RCP Can Scope

First Published:
Last Updated:

On October 21, 2026, AWS added three items to the programmatically readable service reference information (Service Reference Information). These are a list of global condition keys, the ServiceName field, and the IsDataPlane property, which indicates whether an action is a data plane operation. This article outlines what AWS considers a "data plane" across various documentation sources, and where they do not line up.

This article examines five categories of documentation: the IsDataPlane property in Service Reference, AWS CloudTrail (referred to as CloudTrail) data and management events, the AWS Fault Isolation Boundaries and AWS Well-Architected Framework (specifically the control plane and data plane sections), the scope of AWS Organizations service control policies (SCPs) and resource control policies (RCPs), and IAM Access Analyzer policy generation and IAM last accessed information. For each example service, it presents the corresponding JSON values (with retrieval date) alongside relevant excerpts from the documentation, demonstrating what might be missed if relying on a single definition when automating audit target selection, policy generation, and guardrail design.

This article does not cover CloudTrail configuration procedures, the overall design of guardrails, a comprehensive list of all services, or pricing information. It also does not attempt to determine which definition is correct or which definition should be used. It does not say that AWS's classification is inaccurate. The documentation was verified as of October 27, 2026, and the Service Reference JSON was retrieved at 10:29 AM UTC on the same day. The records presented in Section 10 of this article are based on requests sent from the US East (N. Virginia) Region specifically for the purpose of this article.

Related articles on this site:

Table of Contents

  1. 1. Scope and Assumptions
  2. 2. How to Read the Tables
  3. 3. IsDataPlane in the Service Reference
  4. 4. CloudTrail Data Events and Management Events
  5. 5. Control Planes and Data Planes in the Whitepaper and Well-Architected
  6. 6. What an SCP or RCP Can Scope
  7. 7. IAM Access Analyzer Policy Generation and Last Accessed Information
  8. 8. Service-by-Service Comparison
  9. 9. Which Definition Automation Uses and What It Misses
  10. 10. What This Configuration Recorded
  11. 11. Failure Modes
  12. 12. Frequently Asked Questions about Data Plane Actions on AWS
  13. 13. Summary
  14. 14. References

1. Scope and Assumptions

This section will first define the intended audience, the scope of this article, the source materials consulted, and how to distinguish between different entities that may share the same name. To begin, the following seven points will be outlined.

  • The term "data plane" varies by source. The IsDataPlane value in the Service Reference is derived from the CloudTrail event category associated with the operation that authorizes the action. The resource type and any advanced event selectors added by the user determine CloudTrail data events. The whitepaper and the Well-Architected Framework differentiate between management APIs (CRUDL) and the primary function of a service. The term "data plane" was not found on the RCP page; the Resource type column in the Service Authorization Reference defines the scope of RCP.
  • IsDataPlane can take three values: true, false, and a state where the property is absent. The Service Reference page describes actions without the property as isn't classified yet. As of October 27, 2026, the JSON data examined showed that all 20 actions for Amazon SQS (SQS) were not classified, while 57 out of 58 actions for AWS KMS (KMS) were classified as false. Not classified and false represent distinct values.
  • CloudTrail data events are also known as data plane operations. By default, they are not recorded. SQS has a row for AWS::SQS::Queue in the CloudTrail data events table, but its actions are not classified in the Service Reference. No statement on the reason was found in the scope of this article.
  • For Amazon Bedrock (Bedrock), the InvokeModel action has an IsDataPlane value of true. However, the Amazon Bedrock User Guide's CloudTrail page states that InvokeModel operations are recorded as management events. The same page also states that a trail that also records Bedrock data events receives a data event copy of each streaming call. In the configuration used in Section 10, the trail that selected Bedrock data events also included data event records for non-streaming InvokeModel and Converse calls. It cannot be determined from the documentation or from this record which category led to the true value.
  • For KMS, the Encrypt, Decrypt, and GenerateDataKey actions have an IsDataPlane value of false and are recorded as management events (Read) in CloudTrail. For Amazon S3 (S3), the ListBucket action has an IsDataPlane value of true and an IsList value of true. Both are examples where the classification depends on the definition (on the whitepaper side, this is this article's reading; Section 8.5).
  • RCP applies to actions for 62 services (as of October 27, 2026), listed on the RCP page, for the resources specified in the Resource type column. AWS Lambda, Amazon SNS, Amazon Kinesis Data Streams, and Bedrock are not included in this list.
  • IAM Access Analyzer policy generation does not include the action-level activity of data events in the generated policies. In the SupportedBy field of the JSON data, out of 483 actions where IsDataPlane is true, 479 were false for both policy generation and last accessed information.

1.1 Intended Audience

The intended audience for this article is security and platform professionals who are automating the generation of security guardrails, audit logs, and least privilege policies within their organizations. Specifically, it targets readers who hold one or more of the following six assumptions:

  • Data plane actions refer to CloudTrail data events.
  • If IsDataPlane is false, it indicates a management operation.
  • SQS has zero classified actions, so it has no data plane operations.
  • RCP is a mechanism for scoping data plane actions.
  • Policies generated by IAM Access Analyzer include operations that access data.
  • KMS Decrypt is a data plane action.

These six assumptions either conflict with the statements in the sources, lack supporting statements in the sources, or hold under one definition and not under another (differs by definition). Sections 3 through 9 will, for each source, present the relevant passages.

1.2 Scope

This article covers the following: the IsDataPlane property of the Service Reference, the global condition keys JSON, ServiceName, definitions for CloudTrail data and management events, definitions in the whitepaper and the Well-Architected Framework, the scope of applicability for SCP and RCP, and IAM Access Analyzer policy generation and IAM last accessed information. The service tables will be limited to nine example services: S3, Amazon DynamoDB, AWS Lambda, Amazon SNS, SQS, KMS, AWS Secrets Manager, Amazon Kinesis Data Streams, and Bedrock. It does not cover all 457 services.

The following topics are explicitly excluded:

  • A comprehensive list of what is logged by default (the previously published Where the Logs Come From on AWS covers it).
  • The overall design of guardrails and the data perimeter (the previously published AWS Organization Guardrails covers it).
  • The order in which policies are evaluated (the previously published IAM Policy Evaluation Logic Step-by-Step covers it).
  • What Amazon GuardDuty detects (the previously published Threat Detection for AI Workloads on AWS covers it).
  • A complete listing of the APIs and IAM actions received by the two Bedrock endpoints (the previously published Amazon Bedrock Inference Endpoints and API Keys covers it).
  • How decisions change based on condition keys.
  • The configuration of CloudTrail organizational trails, pricing, and comparison of services.

1.3 Materials Reviewed and Verification Date

The documents reviewed for this article fall into five categories. All were retrieved on October 27, 2026, except where an item gives another date.

  • The "Simplified AWS service information for programmatic access" page of the Service Authorization Reference, and the Service Reference JSON files (the service list, the JSON files of all 457 services, and a JSON file for global condition keys). The JSON files were retrieved between 10:29:06 and 10:29:33 (UTC) on October 27, 2026.
  • The AWS CloudTrail User Guide (Logging data events, Logging management events, CloudTrail concepts, CloudTrail record contents, Working with AWS CloudTrail Lake), and the AWS CloudTrail API Reference (AdvancedFieldSelector), along with the CloudTrail pages for each service (SQS, Amazon SNS, AWS Lambda, Amazon S3, Amazon DynamoDB, AWS KMS, AWS Secrets Manager, Amazon Kinesis Data Streams, and two pages for Bedrock).
  • The AWS Organizations User Guide (SCPs, SCP evaluation, RCPs, RCP evaluation), and documentation on data perimeters (the IAM User Guide page and the whitepaper "Building A Data Perimeter on AWS").
  • The "Control planes and data planes" page of the whitepaper AWS Fault Isolation Boundaries, and REL11-BP04 of the Well-Architected Framework.
  • The IAM User Guide (IAM Access Analyzer policy generation, Refine permissions in AWS using last accessed information, and IAM Access Analyzer policy generation services and IAM action last accessed information services and actions, the last two obtained on October 28, 2026), and What's New.

The list of services includes a modified timestamp for each service. The list retrieved on October 27, 2026, showed the earliest timestamp as October 21, 2026, 17:44 (UTC), and the most recent timestamp as October 27, 2026, 04:02 (UTC). The What's New post was made on October 21, 2026, at 18:00 (UTC). The classifications and counts change on a daily basis. All the counts presented in this article are values extracted from the JSON data retrieved on October 27, 2026.

1.4 Words That Look Alike, But Mean Different Things

This article contains many names that are spelled similarly but have different meanings. Refer to the following table for clarification.

NameWhere it is usedWhat it is
IsDataPlaneService Reference JSON, Actions[].Annotations.PropertiesA boolean on an IAM action; absent when the action is not classified
Data eventsCloudTrailOne of four event types; also known as data plane operations; not logged by default
Management eventsCloudTrailAlso known as control plane operations; logged by default
Network activity eventsCloudTrailCalls made through VPC endpoints; a separate eventCategory value
Data plane, control planeAWS Fault Isolation Boundaries, Well-ArchitectedThe primary function of a service versus the CRUDL administrative APIs
Data plane events, control plane eventsHeadings on the DynamoDB CloudTrail page; the text of the IAM last accessed pageOther names for CloudTrail data events and management events
Data perimeterIAM User Guide, Organizations, whitepaperGuardrails built from SCPs, RCPs, and VPC endpoint policies
rds-data, cloudtrail-dataService prefixes in the Service ReferenceService names that contain "data"; not related to the property
IsList, IsWrite, IsPermissionManagement, IsTaggingOnlyService Reference JSONThe other four action properties; not mutually exclusive with IsDataPlane
Operation, actionService Reference glossaryAn API that can be called, and the permission that the call authorizes

The glossary on the Service Reference page distinguishes between Operation - An API that can be called, usually through an SDK and Action - Permission that is authorized when performing an operation. The eventName in a CloudTrail record is the name of the operation. The IsDataPlane property is associated with actions. In JSON, a single operation may require multiple actions for authorization, and conversely, the same action may be used to authorize multiple operations.

2. How to Read the Tables

This section defines the columns in the tables in Sections 3 through 9, as well as how the source of each value is written. The columns are the same as those used in Moving a Claude Integration to API Version 2026-10-21 on AWS, in the same series.

2.1 Columns

The contract tables in Sections 3 through 6, in addition to the Setting column, utilize the following seven column names. The Setting column will contain the property, event type, selector field, or policy type name.

ColumnWhat the cell holds
You SetWhat the user can write, and where (a selector on a trail, a policy, or a filter that reads the JSON)
Allowed ValuesThe values the source lists, as of 2026-10-27
If You Set NothingWhat happens when the user writes nothing
Source of the DefaultWhich source states the value in If You Set Nothing
At the BoundaryWhat happens at an edge: a property that is absent, an operation logged in another category, a service outside a list, or an AWS managed key
Where It ShowsWhere the result becomes visible: a JSON property, the eventCategory of a record, a policy decision, or a generated policy
No Statement FoundWhat the sources in Section 1.3 do not state

Each contract table is divided into two tables. The first table (What You Write) includes the columns Setting, You Set, Allowed Values, If You Set Nothing, and Source of the Default. The second table (What Happens) includes the columns Setting, At the Boundary, Where It Shows, and No Statement Found. The order of the rows is consistent across both tables.

Table 8-1 in Section 8 has Defined By in the first column, with the corresponding column repeated for each definition. Tables 8-2 and 8-3 in Section 8 have the service in the first column, with the values for each definition listed horizontally across the row.

2.2 How the Source of a Default Is Written

The Source of the Default column holds one of the following terms:

LabelWhat it means
Service reference pageSimplified AWS service information for programmatic access, Service Authorization Reference
Service reference JSON (retrieved 2026-10-27)The JSON files retrieved on 2026-10-27 at 10:29 UTC
CloudTrail data events pageLogging data events, AWS CloudTrail User Guide
CloudTrail management events pageLogging management events, AWS CloudTrail User Guide
Bedrock CloudTrail pageMonitor Amazon Bedrock API calls using CloudTrail, Amazon Bedrock User Guide
Organizations RCP pageResource control policies (RCPs), AWS Organizations User Guide
Organizations SCP pageService control policies (SCPs), AWS Organizations User Guide
IAM Access Analyzer policy generation pageIAM Access Analyzer policy generation, IAM User Guide
AdvancedFieldSelector (API Reference)AdvancedFieldSelector, AWS CloudTrail API Reference
Fault Isolation Boundaries whitepaperControl planes and data planes, AWS Fault Isolation Boundaries
No statement foundNo source in Section 1.3 states the default

2.3 No Statement Found, Not Listed, the Sources Disagree, and Differs by Definition

This article expresses four states using different terminology:

  • No Statement Found: Despite searching the sources in Section 1.3, no text describing the matter was found. This corresponds to the No Statement Found column and the phrase no statement was found in the body text. This state does not mean that the matter does not exist or cannot be done.
  • The documentation does not list: The item is not included in the list or table. This is expressed as the documentation does not list in the body text.
  • The sources disagree: Two sources provide information that contradicts each other regarding the same matter. In the body text, this is the sources disagree. This article does not assume that either source is incorrect; instead, it lists the source and date of each.
  • Differs by definition: The definition of "data plane" varies between sources, resulting in the same action being categorized differently. In the body text, this is differs by definition. This is not a discrepancy between the sources themselves.

2.4 Values the Documentation States, Values Counted in the JSON, and Values Recorded in This Configuration

This article categorizes the origin of values into three types:

  • Values from Documentation: Values found in the text, tables, and examples in the AWS documentation. In the body text, this will be presented as the documentation states.
  • Values Counted from JSON: Values found by counting the Service Reference JSON retrieved on October 27, 2026, at 10:29 (UTC). In the body text, this will be presented as the JSON retrieved on October 27, 2026 (10:29 UTC) contains. The values in the JSON may change on later dates.
  • Values Recorded in This Configuration: Values recorded by CloudTrail as a result of requests sent specifically for this article, in the configuration described in Section 10. In the body text, this will be presented as recorded in this configuration.

Sections 3 through 9 contain values from the documentation and values counted from the JSON. Where they mention a record from Section 10, they point to Section 10 and say that it is a record. The values presented in Section 10 are based on the specific configuration and the logs recorded on that day, and are not values that the documentation guarantees.

2.5 true, false, and Not Classified

IsDataPlane can take three possible values: two boolean values (true and false), and a third representing the absence of a property. The tables in this article use the terms true, false, and not classified to represent these three states. The term not classified is consistent with the wording isn't classified yet found on the Service Reference page. In the body text, the absence of the property is written as the property is absent.

This article does not use the terms 0, none, or false to represent the "not classified" state. The phrases "0 true values," "all not classified," and "all false" describe distinct states. As of October 27, 2026, the JSON data showed that all 20 SQS actions were not classified, 57 KMS actions were false with 1 action not classified, and all 23 AWS Secrets Manager actions were false. All three had zero actions with a value of true.

3. IsDataPlane in the Service Reference

This section details the location of IsDataPlane, describes what the documentation says it derives from, and lists the possible values it can take.

3.1 Where the Property Sits

The Service Reference page describes the purpose of providing service reference information in JSON format as: AWS provides service reference information in JSON format to streamline the automation of policy management workflows. There are three entry points:

  • Service List: https://servicereference.us-east-1.amazonaws.com/
  • Global Condition Key JSON: https://servicereference.us-east-1.amazonaws.com/v1/global-condition-keys.json
  • Service-Specific JSON: The value of the url for each element in the list.

In the service-specific JSON, IsDataPlane is located in the Annotations.Properties of each element in the Actions array. The same location also contains four additional properties: IsList, IsPermissionManagement, IsTaggingOnly, and IsWrite. The Service Reference page provides the following jq example to illustrate how to extract actions where IsDataPlane is true.

> curl https://servicereference.us-east-1.amazonaws.com/v1/s3/s3.json | \
jq '.Actions[] | select(.Annotations.Properties.IsDataPlane == true) | .Name'

In this example, the select(... == true) command will also discard actions with a value of false, as well as actions that do not have the specified property. Section 9.4 explains the implications of this behavior in automation workflows.

3.2 What the Definition Says It Is Derived From

The Service Reference page defines IsDataPlane as follows:

IsDataPlane – Indicates that the action operates on the data or content held within a resource, rather than creating, configuring, or managing the resource itself. This property is derived from the AWS CloudTrail event categories of the operations that authorize the action.

For example, the same page states, This property is true for the Amazon S3 GetObject action, which reads object content, and false for CreateBucket, which creates and configures the resource (a control-plane operation).

The source for deriving this property is not the action itself, but rather the CloudTrail event categories of the operations that authorize it. Regarding the condition under which an action carries the property, the same page states:

Some actions omit this property. An action carries IsDataPlane only when at least one operation that authorizes it has a CloudTrail event category. If the property doesn't exist, then the action isn't classified yet.

The documentation states only this condition: an action carries the property only when at least one operation has a CloudTrail event category. No statement was found (across the Service Reference page, the Bedrock CloudTrail page, and What's New) that addresses what happens when an action is authorized by operations that include both data event logging and management event logging—specifically, whether the property is true or false.

3.3 Three Values

The Service Reference page describes five properties, stating, These properties are not mutually exclusive. An action may have multiple properties set to true. It continues, It's also possible for all properties to be false, as seen with Amazon S3's GetBucketPolicy action. Being false for IsDataPlane does not mean that the action involves write operations or permission management. S3's GetBucketPolicy action has all five properties set to false.

Five actions from a JSON file retrieved on October 27, 2026, represent the three distinct values.

ActionIsDataPlaneIsListIsWriteSource
s3:GetObjecttruefalsefalseService reference page (example), Service reference JSON (retrieved 2026-10-27)
s3:ListBuckettruetruefalseService reference JSON (retrieved 2026-10-27)
s3:GetBucketPolicyfalsefalsefalseService reference page (example), Service reference JSON (retrieved 2026-10-27)
kms:DecryptfalsefalsetrueService reference JSON (retrieved 2026-10-27)
sqs:SendMessagenot classifiedfalsetrueService reference JSON (retrieved 2026-10-27)

The sqs:SendMessage action has IsWrite set to true but lacks the IsDataPlane property. While the other four properties are defined, IsDataPlane is the only property missing.

3.4 Operations and Actions

The JSON for each service includes, within each element of Operations, a list of authorized actions under the AuthorizedActions field. The Service Reference page states, This operation to action mapping is not supported for all services. Services that don't yet support this mapping will omit the AuthorizedAction property.

As of October 27, 2026, the Bedrock JSON identified five operations that authorize the bedrock:InvokeModel action: InvokeModel, Converse, InvokeModelWithResponseStream, InvokeModelWithBidirectionalStream, and StartAsyncInvoke. In contrast, only two operations authorized the bedrock:InvokeModelWithResponseStream action: InvokeModelWithResponseStream and ConverseStream. Section 8.4 lists this mapping alongside the text on the Bedrock CloudTrail page.

Analyzing the same JSON across all 457 services, 118 services had all their actions not classified. Of those, 103 services did not include any elements in the Operations field. SQS had 23 elements in the Operations field, and all 20 of its actions were not classified. No statements were found that directly linked the presence or absence of Operations elements with the classification of actions.

3.5 Counts as of October 27, 2026

The following Table 3-1 presents the counts in the JSON retrieved at 10:29 (UTC) on October 27, 2026.

ScopeActionstruefalsenot classified
All 457 services22,32148317,4334,405
Services with at least one true action61 services———
Services whose actions are all not classified118 services———

The What's New post (October 21, 2026) mentions an IsDataPlane property identifying which actions are data plane operations, but does not provide a count. The numbers in Table 3-1 are the results of a count that this article performed on the JSON. The code used for counting is not included in this article.

3.6 ServiceName and the Global Condition Keys File

The What's New post states: The service reference now includes all aws:-prefixed global condition keys in a single machine-readable file, a ServiceName field mapping service identifiers to human-readable names, and an IsDataPlane property identifying which actions are data plane operations.

Regarding ServiceName, the Service Reference page states: The ServiceName field provides a human-readable name for the AWS service, such as S3 for the s3 service. According to the JSON data retrieved on October 27, 2026, the ServiceName for secretsmanager was Secrets Manager, and the ServiceName for bedrock-mantle was Bedrock Mantle.

Concerning the JSON for global condition keys, the same page states: AWS also provides a consolidated list of global condition keys that apply across AWS services. The JSON data retrieved on October 27, 2026, contained 52 entries. The What's New post does not mention this number.

3.7 The 24-Hour Note Covers All Metadata

The note on the Service Reference page states: Changes to the service reference information may take up to 24 hours to be reflected in the list of metadata for the service. This note applies to the service reference information as a whole, and does not specifically refer to the time it takes for the IsDataPlane classification to be updated. No statement was found on when the classification might be added.

3.8 Contract Tables

The following two tables outline five items in the Service Reference, detailing what the user writes and what happens.
What You Write
SettingYou SetAllowed ValuesIf You Set NothingSource of the Default
IsDataPlaneA filter that reads Actions[].Annotations.Properties in each service JSONtrue, false, or the property is absentNot applicable; the JSON is read-onlyService reference page
Operations[].AuthorizedActionsA join from an operation name to its actionsThe actions listed for the operationSome services have no Operations entriesService reference page, Service reference JSON (retrieved 2026-10-27)
ServiceNameA lookup from a service prefix to a nameA human-readable name, such as S3Not applicableService reference page
Global condition keys fileA download of global-condition-keys.json52 entries in the JSON retrieved on 2026-10-27Not applicableService reference JSON (retrieved 2026-10-27)
Retrieval timeWhen the JSON is fetchedEach service has a modified time in the listThe values of the day the JSON is fetchedService reference page

The following table lists, in the same row order, what happens at the boundary.
What Happens
SettingAt the BoundaryWhere It ShowsNo Statement Found
IsDataPlaneAn action whose authorizing operations have no CloudTrail event category has no property (isn't classified yet)The property is absent from Annotations.PropertiesWhy SQS actions are not classified
Operations[].AuthorizedActionsOne action can be authorized by operations that CloudTrail logs in different categoriesThe list of operations that authorize the actionHow IsDataPlane is decided when those categories differ
ServiceNameA prefix and its name can differ, such as secretsmanager and Secrets ManagerThe top-level ServiceName field—
Global condition keys fileThe What's New post does not give a countThe number of entries in the fileA count stated by AWS
Retrieval timeChanges may take up to 24 hours to reach the metadataThe modified time in the listWhen a not classified action will be classified

4. CloudTrail Data Events and Management Events

This section outlines how CloudTrail uses the term "data plane" and explains what constitutes data events and management events.

4.1 Data Events Are Also Called Data Plane Operations

The "Logging data events" page of the CloudTrail User Guide states: Data events provide information about the resource operations performed on or in a resource. These are also known as data plane operations. Data events are often high-volume activities. The "Logging management events" page states: Management events provide visibility into management operations that are performed on resources in your AWS account. These are also known as control plane operations.

The "CloudTrail concepts" page states CloudTrail logs four types of events: and lists management events, data events, network activity events, and Insights events. Within CloudTrail terminology, the term "data plane" is an alternative name for data events, and also serves as a name for a type of event.

4.2 Not Logged by Default, and Selected by Resource Type

By default, trails and event data stores do not log data events. Data events are only recorded when a user adds them to a trail or event data store. A comprehensive overview of what is logged by default can be found in the previously published Where the Logs Come From on AWS.

The Logging data events page details which operations constitute data events, listing them in a table organized by resource type (the value of resources.type). For example, the SQS row lists Amazon SQS API activity on messages. associated with AWS::SQS::Queue, while the Amazon SNS row lists Amazon SNS Publish and PublishBatch API operations on topics. associated with AWS::SNS::Topic, and the AWS Lambda row lists AWS Lambda function execution activity (the Invoke API). associated with AWS::Lambda::Function. There are no rows for KMS or AWS Secrets Manager in the same table.

Each service's CloudTrail page lists the operations that are logged for each resource type. The SQS page, under AWS::SQS::Queue, lists 12 operations: ChangeMessageVisibility, ChangeMessageVisibilityBatch, DeleteMessage, DeleteMessageBatch, GetQueueAttributes, GetQueueUrl, ListDeadLetterSourceQueues, ListQueues, ListQueueTags, ReceiveMessage, SendMessage, and SendMessageBatch. The SQS page notes, The ListQueues operation is a unique case because it doesn’t act on a specific resource. The S3 page, under AWS::S3::Object, lists GetObject and PutObject, in addition to ListObjects and HeadBucket for buckets.

4.3 eventCategory in Advanced Event Selectors

The SQS page states, To log Amazon SQS data events with CloudTrail, you must use advanced event selectors. The "AdvancedFieldSelector" page of the AWS CloudTrail API Reference describes the eventCategory field as follows: For CloudTrail management events, the value must be Management. For CloudTrail data events, the value must be Data. For CloudTrail network activity events, the value must be NetworkActivity.

Regarding data event selectors, the same page states, For CloudTrail data events, supported fields include eventCategory (required), eventName, eventSource, eventType, resources.type (required), readOnly, resources.ARN, sessionCredentialFromConsole, and userIdentity.arn. To select data events, you must specify both eventCategory and resources.type.

On the CloudTrail logging side, the CloudTrail record contents page explains that eventCategory Shows the event category. The event category is used in LookupEvents calls to filter on management events. For management events, the value is Management. For data events, the value is Data. For network activity events, the value is NetworkActivity. The record's managementEvent field is A Boolean value that identifies whether the event is a management event.

4.4 AWS KMS Encrypt, Decrypt, and GenerateDataKey Are Read Management Events

KMS has no CloudTrail data events resource type. The "Logging management events" page states AWS KMS actions such as Encrypt, Decrypt, and GenerateDataKey typically generate a large volume (more than 99%) of events. These actions are now logged as Read events. These AWS KMS cryptographic operations are logged as Read events among management events.

The same page provides an example of configuring ExcludeManagementEventSources to include kms.amazonaws.com to exclude KMS events from a trail, and notes, You cannot exclude AWS KMS or Amazon RDS Data API events from Event history;

JSON data retrieved on October 27, 2026, showed that IsDataPlane was false for kms:Encrypt, kms:Decrypt, and kms:GenerateDataKey.

4.5 Event History and Event Data Stores

The note on the "Logging management events" page states, The CloudTrail Event history feature supports only management events. Event history only displays management events; data events are not visible. To view data events, you must record them in either a trail or an event data store.

Event data stores are a feature of AWS CloudTrail Lake. The note on the "Working with AWS CloudTrail Lake" page states, AWS CloudTrail Lake will no longer be open to new customers starting May 31, 2026. It continues, Existing customers can continue to use the service as normal. The configuration used in Section 10 of this article utilizes trails and Event history, but does not use an event data store.

4.6 Contract Tables

The following two tables list the types of CloudTrail events, specifying what the user writes and what occurs as a result.
What You Write
SettingYou SetAllowed ValuesIf You Set NothingSource of the Default
Data eventsAdvanced event selectors on a trail or an event data store; on trails, basic event selectors also work for S3 objects, Lambda functions, and DynamoDB tableseventCategory Data with a resources.type value from the tableNot loggedCloudTrail data events page
Management eventsEvent selectors on a trailRead events, Write events, or bothLogged by trails and event data storesCloudTrail management events page
AWS KMS events in management eventsExcludeManagementEventSourceskms.amazonaws.comIncludedCloudTrail management events page
eventCategory in a selectorAdvanced event selectorsManagement, Data, NetworkActivity on trails; event data stores accept more valuesRequired in each selectorAdvancedFieldSelector (API Reference)
Event historyNothing to setManagement events onlyAvailableCloudTrail management events page

The following table lists, in the same row order, what happens at the boundary.
What Happens
SettingAt the BoundaryWhere It ShowsNo Statement Found
Data eventsSelectors choose data events by the resource types in the table; a trail uses advanced or basic event selectors, not both, and applying advanced selectors overwrites existing basic oneseventCategory Data and managementEvent false in the record—
Management eventsAWS KMS Encrypt, Decrypt, and GenerateDataKey are Read eventseventCategory Management and readOnly true—
AWS KMS events in management eventsExcluding them from a trail does not remove them from Event historyMissing KMS records in the trail's log files—
eventCategory in a selectorListQueues records a wildcard in the ARN fieldThe resources field of the record—
Event historyData events never appear thereLookupEvents results—

5. Control Planes and Data Planes in the Whitepaper and Well-Architected

This section outlines how the availability design documentation defines the control plane and data plane. These definitions differ from those used in CloudTrail and Service Reference.

5.1 CRUDL Versus the Primary Function

The "Control planes and data planes" page of AWS Fault Isolation Boundaries defines a control plane as follows:

Control planes provide the administrative APIs used to create, read/describe, update, delete, and list (CRUDL) resources. For example, the following are all control plane actions: launching a new Amazon Elastic Compute Cloud (Amazon EC2) instance, creating an Amazon Simple Storage Service (Amazon S3) bucket, and describing an Amazon Simple Queue Service (Amazon SQS) queue.

Regarding the data plane, it states, The data plane is what provides the primary function of the service. Examples provided include the running EC2 instance itself, reading and writing to an EBS volume, getting and putting objects in an S3 bucket, and Route 53 answering DNS queries and performing health checks.

The Well-Architected Framework's REL11-BP04 states, Control planes provide the administrative APIs used to create, read and describe, update, delete, and list (CRUDL) resources, while data planes handle day-to-day service traffic.

This definition differentiates based on what an operation does: whether it manages resources or provides the primary function of the service. It does not include CloudTrail event categories or IAM actions in its scope. The way to differentiate between the control plane and the data plane, and how to apply that to availability design (static stability), is discussed in the previously published Cell-Based Architecture and Shuffle Sharding on AWS.

5.2 Describing a Queue Is a Control Plane Example

The whitepaper cites describing an Amazon Simple Queue Service (Amazon SQS) queue as an example of the control plane. In contrast, the CloudTrail documentation for SQS lists GetQueueAttributes as an operation related to data events for AWS::SQS::Queue. If the whitepaper's example is read as this operation (this article's reading), reading information about an SQS queue is presented as a control plane example in the whitepaper, but as a data event in CloudTrail. This is not a discrepancy in the documents, but rather a difference in their definitions. This article writes it as differs by definition.

The whitepaper's discussion of CRUDL also illustrates this. The ListBucket action for S3 is categorized in the Service Reference as a data plane operation (IsDataPlane is true and IsList is true), while the CloudTrail documentation for S3 lists ListObjects as a data event related to AWS::S3::Object. The whitepaper does not name ListBucket. That a listing operation falls on the control plane side when read with the "L" of CRUDL is this article's reading.

5.3 How the IAM Pages Use the Words

The "Refine permissions in AWS using last accessed information" page in the IAM User Guide states, Action last accessed information is not available for any data plane event. It continues, Sometimes, CloudTrail management events are also called control plane operations or control plane events. On this page, the term "data plane" reads as referring to CloudTrail data events.

The CloudTrail page for Amazon DynamoDB also uses the headings DynamoDB data plane events in CloudTrail and Control plane events in CloudTrail. On these two pages, the term "plane" refers to the two different types of events within CloudTrail.

6. What an SCP or RCP Can Scope

This section lists what AWS Organizations service control policies (SCPs) and resource control policies (RCPs) apply to. The overall design of the guardrails and the data perimeter are covered in the previously published AWS Organization Guardrails.

6.1 No Statement on Data Plane Was Found in the SCP and RCP Pages

The term "data plane" was not found on the SCP page, the SCP evaluation page, the RCP page, or the RCP evaluation page in the AWS Organizations User Guide. Similarly, the term was not found in the documentation related to data perimeters (specifically, the "Establish permissions guardrails using data perimeters" page in the IAM User Guide, and the "Perimeter overview" page in the whitepaper "Building A Data Perimeter on AWS"). No statements were found indicating that RCP scopes actions related to the data plane. The Perimeter implementation page of the same whitepaper states, about services that expose their data plane inside a customer VPC (such as Amazon RDS), The data plane is the part of the service that provides the day-to-day functionality of that thing. This usage is in a network context and is not tied to the scope of RCPs.

6.2 RCPs Follow the Resource Type Column

The RCP page specifies the resources to which RCPs apply as follows:

RCPs apply to the resources that are authorized as part of an operation request. These resources can be found in the “Resource type” column of the Action table in the Service Authorization Reference. If a resource is specified in the "Resource type" column, then the RCPs of the resource owner's account are applied.

For example, the same page states, For example, s3:GetObject authorizes the object resource. Whenever a GetObject request is made, an applicable RCP will apply to determine whether the requesting principal can invoke the GetObject operation. The Resource type column in the Action table determines whether an RCP applies. The RCP page does not mention IsDataPlane.

6.3 Services in the RCP List as of October 27, 2026

The RCP page states, RCPs apply to actions for the following AWS services: and then lists the services with their prefixes. As of October 27, 2026, the list included 62 services. Of the services illustrated in this article, the following are included in the list: S3 (with prefix s3), Amazon DynamoDB (with prefix dynamodb), SQS (with prefix sqs), KMS (with prefix kms), and AWS Secrets Manager (with prefix secretsmanager). AWS Lambda, Amazon SNS, Amazon Kinesis Data Streams, and Bedrock are not included in the list. The prefix kinesisvideo for Amazon Kinesis Video Streams is present in the list.

6.4 The Management Account and AWS Managed Keys

The RCP page states, RCPs don't affect resources in the management account. The same page also states, RCPs do not apply to AWS managed keys for AWS Key Management Service. Furthermore, it notes that RCPs do not impact the kms:RetireGrant permission. It also states, RCPs do not apply to calls made by service-linked roles. Even if KMS appears in the list of RCPs, RCPs do not apply to AWS managed keys.

6.5 SCPs Apply to Principals

The SCP page states that SCPs affect only IAM users and roles that are managed by accounts that are part of the organization. SCPs don't affect resource-based policies directly. The same page also states, SCPs don't affect users or roles in the management account. and SCPs do not affect any service-linked role. SCPs apply based on whether a principal belongs to an account in the organization. The SCP page does not mention data plane. The same page further states, The effective permissions are the logical intersection between what is allowed by the SCP and resource control policies (RCPs) and what is allowed by the identity-based and resource-based policies. The order of evaluation is detailed in the previously published IAM Policy Evaluation Logic Step-by-Step.

6.6 Contract Tables

The following two tables list what users write and what occurs as a result, separately for SCP and RCP.
What You Write
SettingYou SetAllowed ValuesIf You Set NothingSource of the Default
RCPA policy attached in AWS OrganizationsActions of the 62 services in the RCP list (as of 2026-10-27)No RCP restricts the resourcesOrganizations RCP page
SCPA policy attached in AWS OrganizationsActions of IAM users and roles in member accountsNo SCP restricts the principalsOrganizations SCP page

The following table lists, in the same row order, what happens at the boundary.
What Happens
SettingAt the BoundaryWhere It ShowsNo Statement Found
RCPApplies to the resources in the Resource type column; not to the management account; not to AWS managed keys; not to kms:RetireGrant; not to calls made by service-linked rolesThe authorization decision for the requestA statement that RCPs scope data plane actions
SCPApplies to principals in member accounts; not to the management account; not to service-linked roles; does not affect resource-based policies directlyThe authorization decision for the requestA statement that uses the words data plane

7. IAM Access Analyzer Policy Generation and Last Accessed Information

This section outlines which types of CloudTrail events two IAM features use.

7.1 Data Events Are Not Used in Generated Policies

The IAM Access Analyzer policy generation page in the IAM User Guide states:

Data events not available – IAM Access Analyzer does not identify action-level activity for data events, such as Amazon S3 data events, in generated policies.

The policies generated by IAM Access Analyzer based on CloudTrail logs do not include action-level activity related to data events. Furthermore, as described in Section 5.3, the IAM User Guide states, Action last accessed information is not available for any data plane event.

7.2 SupportedBy in the JSON

The Service Reference JSON includes a SupportedBy field for each action, with two values: IAM Access Analyzer Policy Generation and IAM Action Last Accessed. In the JSON data retrieved on October 27, 2026, out of 483 actions where IsDataPlane was true, 479 had both IAM Access Analyzer Policy Generation and IAM Action Last Accessed set to false. The remaining four actions are as follows:

ActionIAM Access Analyzer Policy GenerationIAM Action Last Accessed
cloudwatch:GetMetricStatisticsfalsetrue
ssm:GetExecutionPreviewtruetrue
dynamodb:ReadDataForReplicationtruefalse
dynamodb:WriteDataForReplicationtruefalse

No statement was found explaining why these four actions have true values.

Compared with the two lists in the IAM User Guide (IAM Access Analyzer policy generation services, and IAM action last accessed information services and actions), the sources disagree on three of the four actions. The policy generation list includes cloudwatch:GetMetricStatistics, but the JSON gives false for IAM Access Analyzer Policy Generation. The same list does not include dynamodb:ReadDataForReplication or dynamodb:WriteDataForReplication, but the JSON gives true. The last accessed list agrees with the JSON on all four actions.

8. Service-by-Service Comparison

This section lists what determines each definition and presents the definition values for example services side-by-side. All values come from the sources and the JSON retrieved on October 27, 2026.

8.1 Where Each Definition Comes From

The following table (Table 8-1) lists five definitions, arranged in the columns of Section 2.

Defined ByYou SetAllowed ValuesIf You Set NothingSource of the Default
Service Reference IsDataPlaneNothing; the property is derived from the CloudTrail event categories of the authorizing operationstrue, false, or the property is absentThe property is absent (isn't classified yet)Service reference page
CloudTrail data eventsAdvanced event selectors with eventCategory and resources.typeResource types in the data events tableNot loggedCloudTrail data events page
Whitepaper and Well-ArchitectedNothing; a design definitionCRUDL administrative APIs versus the primary functionNot applicableFault Isolation Boundaries whitepaper
RCPAn RCP in OrganizationsResources in the Resource type column, for the 62 services in the listNo RCP appliesOrganizations RCP page
IAM Access Analyzer and last accessedPolicy generation or a last accessed reportAction-level activity in CloudTrail, without data eventsNot applicableIAM Access Analyzer policy generation page

The following table lists, in the same row order, what happens at the boundary.

Defined ByAt the BoundaryWhere It ShowsNo Statement Found
Service Reference IsDataPlaneAll 20 SQS actions are not classified although SQS has a data events resource typeAnnotations.Properties in the JSONWhy SQS is not classified; how mixed categories are decided
CloudTrail data eventsThe Bedrock page states that InvokeModel is logged as a management event; in Section 10, it was also recorded as a data eventeventCategory in the recordA statement on data event records for non-streaming Bedrock calls
Whitepaper and Well-ArchitectedDescribing an SQS queue is a control plane example; GetQueueAttributes is a CloudTrail data eventDesign documents onlyWhether AWS KMS cryptographic operations are its primary function
RCPLambda, SNS, Kinesis Data Streams, and Bedrock are not in the listThe authorization decisionA statement that uses the words data plane
IAM Access Analyzer and last accessed479 of 483 true actions have both SupportedBy values falseGenerated policies and last accessed reportsWhy the other four actions are supported

Where Each Definition Comes From
Where Each Definition Comes From

8.2 Storage and Messaging

The following Table 8-2 lists values for five services (S3, Amazon DynamoDB, Amazon SNS, SQS, and Amazon Kinesis Data Streams), organized by definition. The IsDataPlane column indicates the number of actions with a value of true and the total number of actions, in the JSON retrieved on October 27, 2026.

ServiceIsDataPlane (true / all)Example actionsCloudTrail data events resource typesIn the RCP listWhitepaper or Well-Architected example
S325 / 180 (false 119, not classified 36)GetObject true; ListBucket true; CreateBucket false; GetBucketPolicy falseAWS::S3::Object and othersYes (s3)Creating a bucket is control plane; getting and putting objects is data plane
DynamoDB17 / 80 (false 50, not classified 13)GetItem, PutItem, Query trueAWS::DynamoDB::Table, AWS::DynamoDB::StreamYes (dynamodb)Well-Architected: using DynamoDB is data plane; creating tables is control plane
SNS1 / 41 (false 40)Publish trueAWS::SNS::Topic, AWS::SNS::PlatformEndpointNoNo statement found
SQS0 / 20 (not classified 20)SendMessage, ReceiveMessage, GetQueueAttributes not classifiedAWS::SQS::QueueYes (sqs)Describing a queue is control plane
Kinesis Data Streams5 / 47 (false 41, not classified 1)GetRecords, PutRecord trueAWS::Kinesis::Stream, AWS::Kinesis::StreamConsumerNo (kinesisvideo is listed)No statement found

Amazon SNS's PublishBatch operation is authorized by the sns:Publish action in the JSON. The CloudTrail data events table lists both the Publish and PublishBatch operations in the AWS::SNS::Topic row.

8.3 Compute, Keys, Secrets, and Models

The following Table 8-3 lists the values of each definition for four services: AWS Lambda, KMS, AWS Secrets Manager, and Bedrock.

ServiceIsDataPlane (true / all)Example actionsCloudTrail category of the example operationsIn the RCP listWhitepaper or Well-Architected example
Lambda14 / 135 (false 114, not classified 7)InvokeFunction true; GetFunction false; InvokeFunctionUrl not classifiedInvoke is a data event (AWS::Lambda::Function)NoWell-Architected: using Lambda is data plane; creating functions is control plane
KMS0 / 58 (false 57, not classified 1)Encrypt, Decrypt, GenerateDataKey falseManagement events, logged as Read eventsYes (kms); not AWS managed keysNo statement found
Secrets Manager0 / 23 (false 23)GetSecretValue falseNo row in the data events table; the Secrets Manager pages do not name the categoryYes (secretsmanager)No statement found
Bedrock (bedrock)37 / 269 (false 215, not classified 17)InvokeModel true; InvokeModelWithResponseStream not classified; ListAsyncInvokes falseInvokeModel, Converse are management events; InvokeModelWithBidirectionalStream, GetAsyncInvoke are data eventsNoNo statement found
Bedrock (bedrock-mantle)0 / 38 (not classified 38)CreateInference not classifiedCreateInference is a data event (AWS::BedrockMantle::Project)NoNo statement found

bedrock-mantle is a service prefix distinct from Bedrock in the Service Reference, and ServiceName is Bedrock Mantle. The "Monitor bedrock-mantle API calls using CloudTrail" page of the Amazon Bedrock User Guide states, Inference is a data event on bedrock-mantle, a management event on bedrock-runtime. Both endpoints are covered in the previously published Amazon Bedrock Inference Endpoints and API Keys.

8.4 Rows That Do Not Line Up

The following two rows do not align when comparing the definitions on the Service Reference page (derived from CloudTrail event categories) with the text in CloudTrail documentation. This article does not state that either source contains errors; in its terms, these are rows where the sources disagree.

The first concerns SQS. The SQS CloudTrail page states that CloudTrail records 12 operations as data events for the AWS::SQS::Queue resource type. However, in the JSON data retrieved on October 27, 2026, all 20 SQS actions were not classified. The SQS JSON contains 23 Operations elements. No statement was found explaining the reason for this status in the Service Reference page, the SQS CloudTrail page, or What's New. The term yet on the Service Reference page indicates that these may be classified in the future, but no timeframe is provided.

The same applies to bedrock-mantle. Its CloudTrail page lists CreateInference as a data event, but all 38 actions in the corresponding JSON data were not classified. The bedrock-mantle JSON does not contain any Operations elements.

The second row is Bedrock's InvokeModel. The Bedrock CloudTrail page lists the following three statements:

  • Amazon Bedrock logs some Amazon Bedrock Runtime API operations (such as InvokeModel, InvokeModelWithResponseStream, Converse, ConverseStream, and ListAsyncInvokes) as management events.
  • Amazon Bedrock logs other Amazon Bedrock Runtime API operations (such as InvokeModelWithBidirectionalStream, GetAsyncInvoke, and StartAsyncInvokes) as data events.
  • A trail that records only management events receives two events: one AwsApiCall and one AwsServiceEvent. A trail that also records Amazon Bedrock data events receives a data event copy of each.

The third statement is about InvokeModelWithResponseStream and ConverseStream calls. According to JSON data retrieved on October 27, 2026, the bedrock:InvokeModel action was marked as true, and the operations that authorize it included both the management events (InvokeModel and Converse, as described in the first sentence) and the data events (InvokeModelWithBidirectionalStream and StartAsyncInvoke, as described in the second sentence) (Section 3.4). The bedrock:InvokeModelWithResponseStream action was not classified. The documentation does not specify which category determined this true value. Using the configuration described in Section 10, a trail configured to record Amazon Bedrock data events also received data event records for non-streaming InvokeModel and Converse calls (Section 10.3). This record also does not indicate the source of the derivation.

The previously published Threat Detection for AI Workloads on AWS states that Bedrock inference API calls are recorded as management events, which aligns with the first sentence on the Bedrock CloudTrail page as of October 27, 2026.

The Rows That Do Not Line Up
The Rows That Do Not Line Up

8.5 Rows That Differ by Definition

The difference in these two rows is not due to conflicting sources; rather, it stems from differing definitions, resulting in different classifications. This article uses the term differs by definition.

The first row is KMS cryptographic operations. kms:Decrypt is classified in the Service Reference with a value of false, while in CloudTrail, it is a Read management event. These two classifications align. The whitepaper defines the data plane as what provides the primary function of the service, but it does not specifically mention KMS. No statements were found indicating that KMS cryptographic operations represent the primary function according to this definition. If they are read as the primary function, only the whitepaper's definition puts KMS into a different category. This is this article's interpretation, and not a statement found directly in the documentation.

The second row is S3's ListBucket action. According to the Service Reference, both IsDataPlane and IsList are true. On the S3 CloudTrail page, ListObjects is a data event for AWS::S3::Object. These two classifications are consistent. Read with the whitepaper's CRUDL definition, "list" falls on the control plane side. The whitepaper does not name ListBucket, so this is this article's reading.

For SQS's GetQueueAttributes, CloudTrail classifies it as a data event, the whitepaper lists describing a queue, which this article reads as this operation, as an example of a control plane operation, and the Service Reference leaves it not classified. These three definitions provide three different classifications.

9. Which Definition Automation Uses and What It Misses

This section lists what might be overlooked in four different automation scenarios if only one definition is used. It does not specify which definition should be used.

9.1 Deciding What to Audit

When selecting services whose data events are logged based on whether they have actions with IsDataPlane set to true, SQS and bedrock-mantle are excluded among the example services in this article. Both of these, as of the JSON data from October 27, 2026, are not classified and have a resource type associated with CloudTrail data events.

If you select based on the descriptions in the CloudTrail documentation, Bedrock's InvokeModel and Converse fall under the category of management events. This is because the Bedrock CloudTrail page lists these two as management events. In the configuration used in Section 10, the trail that selected the data event for AWS::Bedrock::Model also captured the data event records for these two calls. However, the Event history still retained the corresponding management events for the same calls. A system that collects both management and data events can receive two separate records for a single Bedrock call. KMS's Decrypt is a Read management event. If you configure your trail to exclude Read management events or specifically exclude KMS using ExcludeManagementEventSources, that trail no longer captures the records of KMS cryptographic operations.

9.2 Generating Policies

IAM Access Analyzer's policy generation does not include activity at the action level for data events in the generated policies (see Section 7.1). As of October 27, 2026, in the JSON data, out of 483 actions with IsDataPlane set to true, 480 were marked as false in the IAM Access Analyzer Policy Generation field. Applying the documented statement, the generated policies do not include data event actions such as GetObject for S3 or InvokeFunction for Lambda.

9.3 Designing Guardrails

Even when collecting actions with IsDataPlane set to true and writing them into an RCP, an RCP only applies to the 62 services listed (Section 6.3). Actions for Lambda's InvokeFunction, Amazon SNS's Publish, and Bedrock's InvokeModel are not covered by RCP according to the list as of October 27, 2026. Furthermore, RCP does not apply to AWS managed keys in KMS, to resources in the management account, or to calls made by service-linked roles (Section 6.4). SCP, on the other hand, takes effect based on whether the principal is in the organization's accounts, and the SCP page does not mention data plane (Section 6.5).

9.4 Treating Not Classified as Its Own Value

As demonstrated in the jq example in Section 3.1, when selecting with == true, not classified actions are dropped together with actions that evaluate to false. Conversely, when selecting the side that is not data plane with != true, not classified actions are grouped with those that evaluate to false. Regardless of the selection method, the 20 SQS actions are treated the same as those that evaluate to false.

This article presents not classified actions as a third value, distinct from both true and false. Given the yet on the Service Reference page and the modified timestamps that keep changing in the list, not classified actions may be classified at a later date. If a value is kept with its retrieval date, a later classification appears as a difference on the date it is applied.

true, false, and Not Classified
true, false, and Not Classified
The following Table 9-1 lists the four scenarios and the items that are missed when using only one definition.

TaskDefinition used aloneWhat it misses (as of 2026-10-27)Section
Choosing data events to logIsDataPlane trueAmong the example services, SQS and bedrock-mantle, which are not classified but have data events resource types8.4
Choosing data events to logCloudTrail data events resource typesAWS KMS cryptographic operations, which are management events; in Section 10, Bedrock InvokeModel and Converse were recorded as both kinds4.4, 8.4, 10.3
Generating policiesIAM Access Analyzer policy generationAction-level activity of data events7.1
Writing guardrailsIsDataPlane true in an RCPActions of services outside the RCP list, AWS managed keys, the management account, and calls by service-linked roles6.3, 6.4
Filtering the JSON== true or != trueThe difference between false and not classified9.4

10. What This Configuration Recorded

This section describes what CloudTrail recorded in response to requests sent in the US East (N. Virginia) Region, specifically for this article. The values presented here reflect the data recorded during that particular configuration and on that specific day, and are not values that the documentation guarantees.

10.1 Configuration

The requests were sent in the US East (N. Virginia) Region between 11:49:50 and 11:49:56 (UTC) on October 27, 2026. Within a single AWS CloudFormation stack, the following resources were created:

  • One CloudTrail trail, configured to select only data events, excluding management events. This trail had four selectors: an AWS::SQS::Queue with a specified ARN for a test SQS queue, an AWS::SQS::Queue with the eventName set to ListQueues, an AWS::Bedrock::Model with a prefix match for the ARN of the Amazon Nova Micro model, and an AWS::S3::Object with a prefix match for the ARN of a test S3 bucket.
  • One S3 bucket as the destination for the trail, and one S3 bucket for test data.
  • One standard SQS queue, using the AWS managed key alias/aws/sqs; no customer managed key was created.

There were a total of 15 API calls made. SQS received two SendMessage calls, and one each of ReceiveMessage, DeleteMessage, GetQueueAttributes, GetQueueUrl, and ListQueues. S3 received one each of PutObject, GetObject, ListObjectsV2, and GetBucketVersioning. Bedrock's bedrock-runtime received one each of InvokeModel, Converse, ConverseStream, and InvokeModelWithResponseStream to the model amazon.nova-micro-v1:0. All 15 calls were successful.

The records were retrieved from two locations: log files the trail delivered to S3, and the Event history (specifically, LookupEvents from 11:47:50 to 11:59:56). This retrieval was completed by 11:55:09 (UTC). Using the eventName in the records, the corresponding Operations in the Service Reference JSON, retrieved again by the same time, were traced, and the IsDataPlane values for the actions that authorize those operations were listed. This configuration did not use a customer managed KMS key, an event data store, SCPs, or RCPs. It also did not call InvokeModelWithBidirectionalStream, StartAsyncInvoke, or bedrock-mantle.

10.2 What CloudTrail Recorded

Table 10-1 below shows what was recorded in this configuration. The trail only includes data events, so the trail column lists only data events. The Event history column contains only management events.

Operation (eventName)Trail (data events only)Event history (management events)Actions that authorize the operation in the JSON (IsDataPlane)
SQS SendMessage (2 calls)2 records, DataNonesqs:SendMessage not classified
SQS ReceiveMessage, DeleteMessage, GetQueueAttributes, GetQueueUrl1 record each, DataNoneEach not classified
SQS ListQueues1 record, Data; resource ARN ends in *Nonesqs:ListQueues not classified
AWS KMS GenerateDataKey, Decrypt (invokedBy sqs.amazonaws.com)None1 record each, Management, readOnly truekms:GenerateDataKey false, kms:Decrypt false
S3 PutObject, GetObject1 record each, DataNones3:PutObject true, s3:GetObject true
S3 ListObjectsV2 (recorded as ListObjects)1 record, Data; ARNPrefix on AWS::S3::ObjectNones3:ListBucket true
S3 GetBucketVersioningNone1 record, Managements3:GetBucketVersioning false
Bedrock InvokeModel1 record, Data1 record, Managementbedrock:InvokeModel true
Bedrock Converse1 record, Data1 record, Managementbedrock:InvokeModel true
Bedrock InvokeModelWithResponseStream2 records, Data (AwsApiCall and AwsServiceEvent)2 records, Management (AwsApiCall and AwsServiceEvent)bedrock:InvokeModel true, bedrock:InvokeModelWithResponseStream not classified
Bedrock ConverseStream2 records, Data (AwsApiCall and AwsServiceEvent)2 records, Management (AwsApiCall and AwsServiceEvent)bedrock:InvokeModelWithResponseStream not classified

Table 10-1's final column lists only the authorizing actions that the body text discusses. For the four Bedrock operations, the JSON also lists bedrock:ApplyGuardrail, bedrock:CallWithBearerToken, and bedrock:InvokeTool (all listed as true). For the three S3 operations, it also lists actions with the s3-object-lambda prefix (all listed as not classified).

The resource type for Bedrock records in the trail logs was consistently AWS::Bedrock::Model. In the trail records, the managementEvent field was false, while in the Event history records, it was true.

10.3 Joining the Records to IsDataPlane

In this configuration, all four Bedrock calls were recorded in two locations. They were recorded as management events in the Event history, and as data events in the trail that selected data events. For the two streaming calls, the information aligns with the statement on the Bedrock CloudTrail page: A trail that also records Amazon Bedrock data events receives a data event copy of each. However, no statement indicating that data events are also recorded for the non-streaming InvokeModel and Converse operations was found on either the Bedrock CloudTrail page or the CloudTrail data events page.

The fact that the bedrock:InvokeModel action is marked as true, and that both InvokeModel and Converse were recorded as data events in this configuration, does not present a contradiction. However, this record does not determine from which operation or category the IsDataPlane value was derived. The operations that authorize the bedrock:InvokeModelWithResponseStream action (InvokeModelWithResponseStream and ConverseStream) were recorded as data events, but the action remains not classified.

All seven SQS calls were recorded as data events, and none were found in the Event history. The authorized actions were all not classified. The KMS GenerateDataKey and Decrypt calls sent by SQS were recorded as management events (Read) in the Event history, and IsDataPlane was false. The three S3 operations were recorded as data events, and the s3: actions that the body text discusses (s3:PutObject, s3:GetObject, s3:ListBucket) were true.

10.4 Things That Cannot Be Determined Based on This Configuration

The following points cannot be determined based on this configuration and the records of that day.

  • Whether non-streaming Bedrock calls are recorded as data events, even when using different models, inference profiles, regions, or on subsequent dates. This article writes the statement on the Bedrock CloudTrail page (that InvokeModel and Converse are management events) as the statement of the source and does not extend the record in Section 10.
  • From which operations and categories the IsDataPlane value was derived.
  • When SQS actions will be classified.
  • Records related to InvokeModelWithBidirectionalStream, StartAsyncInvoke, and bedrock-mantle. This configuration did not call them.
  • Decisions by SCPs and RCPs. This configuration did not test organization policies.

11. Failure Modes

This section outlines the types of failures that occur when data plane definitions are mixed up, along with where these failures manifest.

SymptomCauseWhere it showsSection
SQS is left out of the data events to logIsDataPlane was read as the list of data plane services, and SQS actions are not classifiedNo SQS data events in the trail8.4, 9.1
SQS actions are treated as management actionsA filter put not classified together with falseThe output of the filter9.4
One Bedrock call is counted twiceA pipeline reads both the management events and the Bedrock data events; in Section 10, InvokeModel and Converse were recorded as both kindsEvent counts8.4, 10.3
KMS Decrypt records are missing from a trailManagement events, Read management events, or KMS events were excluded from the trailThe trail's log files4.4
A generated policy has no S3 object actionsIAM Access Analyzer does not use data events in generated policiesThe generated policy7.1
An RCP that denies lambda:InvokeFunction has no effectLambda is not in the RCP list as of 2026-10-27The authorization decision6.3
A count of data plane actions changes between two runsThe JSON was fetched on different daysThe modified time in the list1.3, 3.7

12. Frequently Asked Questions about Data Plane Actions on AWS

This section answers common questions related to AWS data plane actions.

Q1. Is a data plane action the same as a CloudTrail data event?

The answer varies depending on the documentation. CloudTrail states that data plane operations is another name for data events. The Service Reference indicates that the IsDataPlane attribute is derived from CloudTrail event categories. However, SQS has a resource type associated with CloudTrail data events but its actions are not classified. Conversely, the InvokeModel operation is described as a management event on the Bedrock CloudTrail page, while the bedrock:InvokeModel action, which also authorizes operations that page lists as data events, is marked as true. The whitepaper differentiates based on CRUDL (Create, Read, Update, Delete, List) versus the primary function rather than on CloudTrail's event categories (see Sections 4.1, 8.4, and 5.1).

Q2. If IsDataPlane is false, is the action a management action?

It depends on the definition. The Service Reference page states that there can be actions with all five properties set to false, citing the S3 GetBucketPolicy as an example. The KMS Decrypt action is set to false, and in CloudTrail, it is a Read management event. If KMS cryptographic operations are read as the primary function of KMS, only the whitepaper's definition puts them on the other side. This is this article's interpretation (see Sections 3.3, 4.4, and 8.5).

Q3. Does SQS have no data plane operations?

Under CloudTrail's definition it does not lack them; in the Service Reference, its actions are not classified. According to the JSON data from October 27, 2026, none of the 20 SQS actions has the IsDataPlane property, and the Service Reference page describes this state as isn't classified yet. CloudTrail can log 12 SQS operations as data events. No statement was found explaining why these actions remain not classified (see Sections 2.5 and 8.4).

Q4. Are RCPs a way to scope data plane actions?

The term "data plane" was not found on the RCP page. RCP applies to the resources in the Resource type column for the 62 services in the list (as of October 27, 2026). It does not apply to resources in the management account, to AWS managed keys within KMS, or to calls made by service-linked roles (see Sections 6.1 through 6.4).

Q5. Do the policies that IAM Access Analyzer generates include data actions?

Data event actions are not included. The IAM User Guide states, IAM Access Analyzer does not identify action-level activity for data events, such as Amazon S3 data events, in generated policies. (Section 7.1).

Q6. Is Bedrock inference a data event or a management event?

It depends on the endpoint and the operation. The Bedrock CloudTrail page lists InvokeModel, InvokeModelWithResponseStream, Converse, and ConverseStream as management events, while InvokeModelWithBidirectionalStream, GetAsyncInvoke, and StartAsyncInvoke are categorized as data events. For streaming calls, a trail that also records Bedrock data events receives a data event copy. In the configuration used in Section 10, data event records for non-streaming InvokeModel and Converse calls were also recorded in the trail that selected them. The inference performed by bedrock-mantle is a data event (see Sections 8.3, 8.4, and 10.3).

Q7. Is the IsDataPlane classification reflected within 24 hours?

No such statement was found. The 24-hour note on the Service Reference page applies to the metadata for service reference information as a whole (Section 3.7).

13. Summary

The term "data plane" does not have a single, consistent definition across AWS documentation.

  • In the Service Reference, IsDataPlane is derived from the CloudTrail event categories of the operations that authorize the action, and can take the values true, false, or not classified. Not classified does not mean false.
  • CloudTrail data events, also known as data plane operations, are not recorded by default, and resource type tables and advanced event selectors determine them. The KMS actions Encrypt, Decrypt, and GenerateDataKey are Read management events.
  • The whitepaper and the Well-Architected Framework differentiate between management APIs (CRUDL) and the primary function of a service. Describing a queue is a control plane example in the whitepaper; reading list operations as the control plane side is this article's reading.
  • The term "data plane" was not found on the RCP page; RCPs apply through the Resource type column for the 62 services in the list. SCP applies to principals in member accounts.
  • IAM Access Analyzer policy generation does not use data events, and action last accessed information is not available for any data plane event.
  • In the JSON retrieved on October 27, 2026, both SQS and bedrock-mantle have resource types for CloudTrail data events but are not classified, while the Bedrock InvokeModel operation is described as a management event on the CloudTrail page, and the bedrock:InvokeModel action, which also authorizes operations that page lists as data events, is classified as true. No statement was found on the reason or the source of the derivation. Using the configuration described in Section 10, four Bedrock calls were recorded as both management events and data events.
  • Counts and classifications can change from day to day. These values are kept with the date of retrieval.

14. References



References:
Tech Blog with curated related content

Written by Hidekazu Konishi