AWS SDK common and dynamodb conventions (#1422)

Co-authored-by: William Armiros <54150514+willarmiros@users.noreply.github.com>
Co-authored-by: Nikita Salnikov-Tarnovski <gnikem@gmail.com>
Co-authored-by: Armin Ruech <armin.ruech@dynatrace.com>
This commit is contained in:
Anuraag Agrawal 2021-03-31 01:53:48 +09:00 committed by GitHub
parent c6e1ae29de
commit c94d2d1498
4 changed files with 605 additions and 2 deletions

View File

@ -4,10 +4,14 @@ The YAML descriptions of semantic convention contained in this directory are int
be used by the various OpenTelemetry language implementations to aid in automatic
generation of semantics-related code.
## Writing semantic conventions
Refer to the [syntax](./syntax.md) for how to write the YAML files for semantic conventions.
## Generation
These YAML files are used by the make target `table-generation` to generate consistently
formattted Markdown tables for all semantic conventions in the specification. Run it from the root of this repository using the command
formatted Markdown tables for all semantic conventions in the specification. Run it from the root of this repository using the command
```
make table-generation

View File

@ -0,0 +1,411 @@
groups:
- id: aws
prefix: aws
brief: >
The `aws` conventions apply to operations using the AWS SDK. They map request or response parameters
in AWS SDK API calls to attributes on a Span. The conventions have been collected over time based
on feedback from AWS users of tracing and will continue to evolve as new interesting conventions
are found.
Some descriptions are also provided for populating general OpenTelemetry semantic conventions based on
these APIs.
attributes:
- ref: rpc.system
brief: "The value `aws-api`."
required: always
examples:
- aws-api
- ref: rpc.service
brief: "The name of the service to which a request is made, as returned by the AWS SDK."
examples:
- DynamoDB
- S3
- ref: rpc.method
brief: "The name of the operation corresponding to the request, as returned by the AWS SDK"
examples:
- GetItem
- PutItem
- id: dynamodb.all
brief: "Attributes always filled for all DynamoDB request types."
attributes:
- ref: db.system
brief: "The value `dynamodb`."
required: always
examples:
- dynamodb
- id: dynamodb.shared
extends: aws
prefix: aws.dynamodb
brief: "Attributes that exist for multiple DynamoDB request types."
attributes:
- ref: db.operation
brief: "The same value as `rpc.method`."
examples:
- GetItem
- PutItem
- id: table_names
type: string[]
brief: The keys in the `RequestItems` object field.
examples:
- Users
- Cats
- id: consumed_capacity
type: string[]
brief: "The JSON-serialized value of each item in the `ConsumedCapacity` response field."
examples:
- '{
"CapacityUnits": number,
"GlobalSecondaryIndexes": {
"string" : {
"CapacityUnits": number,
"ReadCapacityUnits": number,
"WriteCapacityUnits": number
}
},
"LocalSecondaryIndexes": {
"string" : {
"CapacityUnits": number,
"ReadCapacityUnits": number,
"WriteCapacityUnits": number
}
},
"ReadCapacityUnits": number,
"Table": {
"CapacityUnits": number,
"ReadCapacityUnits": number,
"WriteCapacityUnits": number
},
"TableName": "string",
"WriteCapacityUnits": number
}'
- id: item_collection_metrics
type: string
brief: "The JSON-serialized value of the `ItemCollectionMetrics` response field."
examples:
- '{
"string" : [
{
"ItemCollectionKey": {
"string" : {
"B": blob,
"BOOL": boolean,
"BS": [ blob ],
"L": [
"AttributeValue"
],
"M": {
"string" : "AttributeValue"
},
"N": "string",
"NS": [ "string" ],
"NULL": boolean,
"S": "string",
"SS": [ "string" ]
}
},
"SizeEstimateRangeGB": [ number ]
}
]
}'
- id: provisioned_read_capacity
type: double
brief: "The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter."
examples:
- 1.0
- 2.0
- id: provisioned_write_capacity
type: double
brief: "The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter."
examples:
- 1.0
- 2.0
- id: consistent_read
type: boolean
brief: "The value of the `ConsistentRead` request parameter."
- id: projection
type: string
brief: "The value of the `ProjectionExpression` request parameter."
examples:
- Title
- Title, Price, Color
- Title, Description, RelatedItems, ProductReviews
- id: limit
type: int
brief: "The value of the `Limit` request parameter."
examples:
- 10
- id: attributes_to_get
type: string[]
brief: "The value of the `AttributesToGet` request parameter."
examples:
- lives
- id
- id: index_name
type: string
brief: "The value of the `IndexName` request parameter."
examples:
- name_to_group
- id: select
type: string
brief: "The value of the `Select` request parameter."
examples:
- ALL_ATTRIBUTES
- COUNT
- id: dynamodb.batchgetitem
brief: DynamoDB.BatchGetItem
extends: aws
prefix: aws.dynamodb
attributes:
- ref: aws.dynamodb.table_names
- ref: aws.dynamodb.consumed_capacity
- id: dynamodb.batchwriteitem
brief: DynamoDB.BatchWriteItem
extends: aws
prefix: aws.dynamodb
attributes:
- ref: aws.dynamodb.table_names
- ref: aws.dynamodb.consumed_capacity
- ref: aws.dynamodb.item_collection_metrics
- id: dynamodb.createtable
brief: DynamoDB.CreateTable
extends: aws
prefix: aws.dynamodb
attributes:
- id: global_secondary_indexes
type: string[]
brief: "The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field"
examples:
- '{
"IndexName": "string",
"KeySchema": [
{
"AttributeName": "string",
"KeyType": "string"
}
],
"Projection": {
"NonKeyAttributes": [ "string" ],
"ProjectionType": "string"
},
"ProvisionedThroughput": {
"ReadCapacityUnits": number,
"WriteCapacityUnits": number
}
}'
- id: local_secondary_indexes
type: string[]
brief: "The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field."
examples:
- '{
"IndexArn": "string",
"IndexName": "string",
"IndexSizeBytes": number,
"ItemCount": number,
"KeySchema": [
{
"AttributeName": "string",
"KeyType": "string"
}
],
"Projection": {
"NonKeyAttributes": [ "string" ],
"ProjectionType": "string"
}
}'
- ref: aws.dynamodb.table_names
brief: "A single-element array with the value of the TableName request parameter."
examples:
- Users
- ref: aws.dynamodb.consumed_capacity
- ref: aws.dynamodb.item_collection_metrics
- ref: aws.dynamodb.provisioned_read_capacity
- ref: aws.dynamodb.provisioned_write_capacity
- id: dynamodb.deleteitem
brief: DynamoDB.DeleteItem
extends: aws
prefix: aws.dynamodb
attributes:
- ref: aws.dynamodb.table_names
brief: "A single-element array with the value of the TableName request parameter."
examples:
- Users
- ref: aws.dynamodb.consumed_capacity
- ref: aws.dynamodb.item_collection_metrics
- id: dynamodb.deletetable
brief: DynamoDB.DeleteTable
extends: aws
prefix: aws.dynamodb
attributes:
- ref: aws.dynamodb.table_names
brief: "A single-element array with the value of the TableName request parameter."
examples:
- Users
- id: dynamodb.describetable
brief: DynamoDB.DescribeTable
extends: aws
prefix: aws.dynamodb
attributes:
- ref: aws.dynamodb.table_names
brief: "A single-element array with the value of the TableName request parameter."
examples:
- Users
- id: dynamodb.getitem
brief: DynamoDB.GetItem
extends: aws
prefix: aws.dynamodb
attributes:
- ref: aws.dynamodb.table_names
brief: "A single-element array with the value of the TableName request parameter."
examples:
- Users
- ref: aws.dynamodb.consumed_capacity
- ref: aws.dynamodb.consistent_read
- ref: aws.dynamodb.projection
- id: dynamodb.listtables
brief: DynamoDB.ListTables
extends: aws
prefix: aws.dynamodb
attributes:
- id: exclusive_start_table
type: string
brief: "The value of the `ExclusiveStartTableName` request parameter."
examples:
- Users
- CatsTable
- id: table_count
type: int
brief: "The the number of items in the `TableNames` response parameter."
examples:
- 20
- ref: aws.dynamodb.limit
- id: dynamodb.putitem
brief: DynamoDB.PutItem
extends: aws
prefix: aws.dynamodb
attributes:
- ref: aws.dynamodb.table_names
- ref: aws.dynamodb.consumed_capacity
- ref: aws.dynamodb.item_collection_metrics
- id: dynamodb.query
brief: DynamoDB.Query
extends: aws
prefix: aws.dynamodb
attributes:
- id: scan_forward
type: boolean
brief: "The value of the `ScanIndexForward` request parameter."
- ref: aws.dynamodb.table_names
brief: "A single-element array with the value of the TableName request parameter."
examples:
- Users
- ref: aws.dynamodb.consumed_capacity
- ref: aws.dynamodb.consistent_read
- ref: aws.dynamodb.limit
- ref: aws.dynamodb.projection
- ref: aws.dynamodb.attributes_to_get
- ref: aws.dynamodb.index_name
- ref: aws.dynamodb.select
- id: dynamodb.scan
brief: DynamoDB.Scan
extends: aws
prefix: aws.dynamodb
attributes:
- id: segment
type: int
brief: "The value of the `Segment` request parameter."
examples:
- 10
- id: total_segments
type: int
brief: "The value of the `TotalSegments` request parameter."
examples:
- 100
- id: count
type: int
brief: "The value of the `Count` response parameter."
examples:
- 10
- id: scanned_count
type: int
brief: "The value of the `ScannedCount` response parameter."
examples:
- 50
- ref: aws.dynamodb.table_names
brief: "A single-element array with the value of the TableName request parameter."
examples:
- Users
- ref: aws.dynamodb.consumed_capacity
- ref: aws.dynamodb.consistent_read
- ref: aws.dynamodb.limit
- ref: aws.dynamodb.projection
- ref: aws.dynamodb.attributes_to_get
- ref: aws.dynamodb.index_name
- ref: aws.dynamodb.select
- id: dynamodb.updateitem
brief: DynamoDB.UpdateItem
extends: aws
prefix: aws.dynamodb
attributes:
- ref: aws.dynamodb.table_names
brief: "A single-element array with the value of the TableName request parameter."
examples:
- Users
- ref: aws.dynamodb.consumed_capacity
- ref: aws.dynamodb.item_collection_metrics
- id: dynamodb.updatetable
brief: DynamoDB.UpdateTable
extends: aws
prefix: aws.dynamodb
attributes:
- id: attribute_definitions
type: string[]
brief: "The JSON-serialized value of each item in the `AttributeDefinitions` request field."
examples:
- '{
"AttributeName": "string",
"AttributeType": "string"
}'
- id: global_secondary_index_updates
type: string[]
brief: "The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field."
examples:
- '{
"Create": {
"IndexName": "string",
"KeySchema": [
{
"AttributeName": "string",
"KeyType": "string"
}
],
"Projection": {
"NonKeyAttributes": [ "string" ],
"ProjectionType": "string"
},
"ProvisionedThroughput": {
"ReadCapacityUnits": number,
"WriteCapacityUnits": number
}
}'
- ref: aws.dynamodb.table_names
brief: "A single-element array with the value of the TableName request parameter."
examples:
- Users
- ref: aws.dynamodb.consumed_capacity
- ref: aws.dynamodb.provisioned_read_capacity
- ref: aws.dynamodb.provisioned_write_capacity

View File

@ -21,9 +21,13 @@ The following semantic conventions for spans are defined:
* [RPC/RMI](rpc.md): Spans for remote procedure calls (e.g., gRPC).
* [Messaging](messaging.md): Spans for interaction with messaging systems (queues, publish/subscribe, etc.).
* [FaaS](faas.md): Spans for Function as a Service (e.g., AWS Lambda).
* [AWS Lambda](instrumentation/aws-lambda.md): Details on populating attributes for AWS Lambda.
* [Exceptions](exceptions.md): Attributes for recording exceptions associated with a span.
The following library-specific semantic conventions are defined:
* [AWS Lambda](instrumentation/aws-lambda.md): AWS Lambda
* [AWS SDK](instrumentation/aws-sdk.md): AWS SDK
Apart from semantic conventions for traces and [metrics](../../metrics/semantic_conventions/README.md),
OpenTelemetry also defines the concept of overarching [Resources](../../resource/sdk.md) with their own
[Resource Semantic Conventions](../../resource/semantic_conventions/README.md).

View File

@ -0,0 +1,184 @@
# Semantic conventions for AWS SDK
**Status**: [Experimental](../../../document-status.md)
This document defines semantic conventions to apply when instrumenting the AWS SDK. They map request or response
parameters in AWS SDK API calls to attributes on a Span. The conventions have been collected over time based
on feedback from AWS users of tracing and will continue to increase as new interesting conventions
are found.
Some descriptions are also provided for populating general OpenTelemetry semantic conventions based on these APIs.
## Common Attributes
The span name MUST be of the format `Service.Operation` as per the AWS HTTP API, e.g., `DynamoDB.GetItem`,
`S3.ListBuckets`. This is equivalent to concatenating `rpc.service` and `rpc.method` with `.` and consistent
with the naming guidelines for RPC client spans.
<!-- semconv aws -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| [`rpc.method`](../rpc.md) | string | The name of the operation corresponding to the request, as returned by the AWS SDK | `GetItem`; `PutItem` | No |
| [`rpc.service`](../rpc.md) | string | The name of the service to which a request is made, as returned by the AWS SDK. | `DynamoDB`; `S3` | No |
| [`rpc.system`](../rpc.md) | string | The value `aws-api`. | `aws-api` | Yes |
<!-- endsemconv -->
## DynamoDB
### Common Attributes
These attributes are filled in for all DynamoDB request types.
<!-- semconv dynamodb.all -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| [`db.system`](../database.md) | string | The value `dynamodb`. | `dynamodb` | Yes |
<!-- endsemconv -->
### DynamoDB.BatchGetItem
<!-- semconv dynamodb.batchgetitem -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.consumed_capacity` | string[] | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | `[{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }]` | No |
| `aws.dynamodb.table_names` | string[] | The keys in the `RequestItems` object field. | `[Users, Cats]` | No |
<!-- endsemconv -->
### DynamoDB.BatchWriteItem
<!-- semconv dynamodb.batchwriteitem -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.consumed_capacity` | string[] | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | `[{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }]` | No |
| `aws.dynamodb.item_collection_metrics` | string | The JSON-serialized value of the `ItemCollectionMetrics` response field. | `{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }` | No |
| `aws.dynamodb.table_names` | string[] | The keys in the `RequestItems` object field. | `[Users, Cats]` | No |
<!-- endsemconv -->
### DynamoDB.CreateTable
<!-- semconv dynamodb.createtable -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.global_secondary_indexes` | string[] | The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field | `[{ "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }]` | No |
| `aws.dynamodb.local_secondary_indexes` | string[] | The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. | `[{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }]` | No |
| `aws.dynamodb.consumed_capacity` | string[] | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | `[{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }]` | No |
| `aws.dynamodb.item_collection_metrics` | string | The JSON-serialized value of the `ItemCollectionMetrics` response field. | `{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }` | No |
| `aws.dynamodb.provisioned_read_capacity` | double | The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. | `1.0`; `2.0` | No |
| `aws.dynamodb.provisioned_write_capacity` | double | The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. | `1.0`; `2.0` | No |
| `aws.dynamodb.table_names` | string[] | A single-element array with the value of the TableName request parameter. | `[Users]` | No |
<!-- endsemconv -->
### DynamoDB.DeleteItem
<!-- semconv dynamodb.deleteitem -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.consumed_capacity` | string[] | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | `[{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }]` | No |
| `aws.dynamodb.item_collection_metrics` | string | The JSON-serialized value of the `ItemCollectionMetrics` response field. | `{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }` | No |
| `aws.dynamodb.table_names` | string[] | A single-element array with the value of the TableName request parameter. | `[Users]` | No |
<!-- endsemconv -->
### DynamoDB.DeleteTable
<!-- semconv dynamodb.deletetable -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.table_names` | string[] | A single-element array with the value of the TableName request parameter. | `[Users]` | No |
<!-- endsemconv -->
### DynamoDB.DescribeTable
<!-- semconv dynamodb.describetable -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.table_names` | string[] | A single-element array with the value of the TableName request parameter. | `[Users]` | No |
<!-- endsemconv -->
### DynamoDB.GetItem
<!-- semconv dynamodb.getitem -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.consistent_read` | boolean | The value of the `ConsistentRead` request parameter. | | No |
| `aws.dynamodb.consumed_capacity` | string[] | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | `[{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }]` | No |
| `aws.dynamodb.projection` | string | The value of the `ProjectionExpression` request parameter. | `Title`; `Title, Price, Color`; `Title, Description, RelatedItems, ProductReviews` | No |
| `aws.dynamodb.table_names` | string[] | A single-element array with the value of the TableName request parameter. | `[Users]` | No |
<!-- endsemconv -->
### DynamoDB.ListTables
<!-- semconv dynamodb.listtables -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.exclusive_start_table` | string | The value of the `ExclusiveStartTableName` request parameter. | `Users`; `CatsTable` | No |
| `aws.dynamodb.table_count` | int | The the number of items in the `TableNames` response parameter. | `20` | No |
| `aws.dynamodb.limit` | int | The value of the `Limit` request parameter. | `10` | No |
<!-- endsemconv -->
### DynamoDB.PutItem
<!-- semconv dynamodb.putitem -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.consumed_capacity` | string[] | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | `[{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }]` | No |
| `aws.dynamodb.item_collection_metrics` | string | The JSON-serialized value of the `ItemCollectionMetrics` response field. | `{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }` | No |
| `aws.dynamodb.table_names` | string[] | The keys in the `RequestItems` object field. | `[Users, Cats]` | No |
<!-- endsemconv -->
### DynamoDB.Query
<!-- semconv dynamodb.query -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.scan_forward` | boolean | The value of the `ScanIndexForward` request parameter. | | No |
| `aws.dynamodb.attributes_to_get` | string[] | The value of the `AttributesToGet` request parameter. | `[lives, id]` | No |
| `aws.dynamodb.consistent_read` | boolean | The value of the `ConsistentRead` request parameter. | | No |
| `aws.dynamodb.consumed_capacity` | string[] | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | `[{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }]` | No |
| `aws.dynamodb.index_name` | string | The value of the `IndexName` request parameter. | `name_to_group` | No |
| `aws.dynamodb.limit` | int | The value of the `Limit` request parameter. | `10` | No |
| `aws.dynamodb.projection` | string | The value of the `ProjectionExpression` request parameter. | `Title`; `Title, Price, Color`; `Title, Description, RelatedItems, ProductReviews` | No |
| `aws.dynamodb.select` | string | The value of the `Select` request parameter. | `ALL_ATTRIBUTES`; `COUNT` | No |
| `aws.dynamodb.table_names` | string[] | A single-element array with the value of the TableName request parameter. | `[Users]` | No |
<!-- endsemconv -->
### DynamoDB.Scan
<!-- semconv dynamodb.scan -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.segment` | int | The value of the `Segment` request parameter. | `10` | No |
| `aws.dynamodb.total_segments` | int | The value of the `TotalSegments` request parameter. | `100` | No |
| `aws.dynamodb.count` | int | The value of the `Count` response parameter. | `10` | No |
| `aws.dynamodb.scanned_count` | int | The value of the `ScannedCount` response parameter. | `50` | No |
| `aws.dynamodb.attributes_to_get` | string[] | The value of the `AttributesToGet` request parameter. | `[lives, id]` | No |
| `aws.dynamodb.consistent_read` | boolean | The value of the `ConsistentRead` request parameter. | | No |
| `aws.dynamodb.consumed_capacity` | string[] | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | `[{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }]` | No |
| `aws.dynamodb.index_name` | string | The value of the `IndexName` request parameter. | `name_to_group` | No |
| `aws.dynamodb.limit` | int | The value of the `Limit` request parameter. | `10` | No |
| `aws.dynamodb.projection` | string | The value of the `ProjectionExpression` request parameter. | `Title`; `Title, Price, Color`; `Title, Description, RelatedItems, ProductReviews` | No |
| `aws.dynamodb.select` | string | The value of the `Select` request parameter. | `ALL_ATTRIBUTES`; `COUNT` | No |
| `aws.dynamodb.table_names` | string[] | A single-element array with the value of the TableName request parameter. | `[Users]` | No |
<!-- endsemconv -->
### DynamoDB.UpdateItem
<!-- semconv dynamodb.updateitem -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.consumed_capacity` | string[] | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | `[{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }]` | No |
| `aws.dynamodb.item_collection_metrics` | string | The JSON-serialized value of the `ItemCollectionMetrics` response field. | `{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }` | No |
| `aws.dynamodb.table_names` | string[] | A single-element array with the value of the TableName request parameter. | `[Users]` | No |
<!-- endsemconv -->
### DynamoDB.UpdateTable
<!-- semconv dynamodb.updatetable -->
| Attribute | Type | Description | Examples | Required |
|---|---|---|---|---|
| `aws.dynamodb.attribute_definitions` | string[] | The JSON-serialized value of each item in the `AttributeDefinitions` request field. | `[{ "AttributeName": "string", "AttributeType": "string" }]` | No |
| `aws.dynamodb.global_secondary_index_updates` | string[] | The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. | `[{ "Create": { "IndexName": "string", "KeySchema": [ { "AttributeName": "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": number } }]` | No |
| `aws.dynamodb.consumed_capacity` | string[] | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | `[{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": "string", "WriteCapacityUnits": number }]` | No |
| `aws.dynamodb.provisioned_read_capacity` | double | The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. | `1.0`; `2.0` | No |
| `aws.dynamodb.provisioned_write_capacity` | double | The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. | `1.0`; `2.0` | No |
| `aws.dynamodb.table_names` | string[] | A single-element array with the value of the TableName request parameter. | `[Users]` | No |
<!-- endsemconv -->