From ffc85ddfd9d18210a8551073efcd0a191092eae3 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Wed, 31 Mar 2021 01:53:48 +0900 Subject: [PATCH] AWS SDK common and dynamodb conventions (#1422) Co-authored-by: William Armiros <54150514+willarmiros@users.noreply.github.com> Co-authored-by: Nikita Salnikov-Tarnovski Co-authored-by: Armin Ruech --- CHANGELOG.md | 1 + semantic_conventions/README.md | 6 +- .../trace/instrumentation/aws-sdk.yml | 411 ++++++++++++++++++ .../trace/semantic_conventions/README.md | 6 +- .../instrumentation/aws-sdk.md | 184 ++++++++ 5 files changed, 606 insertions(+), 2 deletions(-) create mode 100644 semantic_conventions/trace/instrumentation/aws-sdk.yml create mode 100644 specification/trace/semantic_conventions/instrumentation/aws-sdk.md diff --git a/CHANGELOG.md b/CHANGELOG.md index a87533242f9..625a3eace5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ release. ### Semantic Conventions +- Add semantic conventions for AWS SDK operations and DynamoDB ([#1422](https://github.com/open-telemetry/opentelemetry-specification/pull/1422)) - Add details for filling semantic conventions for AWS Lambda ([#1442](https://github.com/open-telemetry/opentelemetry-specification/pull/1442)) - Update semantic conventions to distinguish between int and double ([#1550](https://github.com/open-telemetry/opentelemetry-specification/pull/1550)) - Add semantic convention for AWS ECS task revision ([#1581](https://github.com/open-telemetry/opentelemetry-specification/pull/1581)) diff --git a/semantic_conventions/README.md b/semantic_conventions/README.md index 10aa081d803..cd4523ff8ee 100644 --- a/semantic_conventions/README.md +++ b/semantic_conventions/README.md @@ -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 diff --git a/semantic_conventions/trace/instrumentation/aws-sdk.yml b/semantic_conventions/trace/instrumentation/aws-sdk.yml new file mode 100644 index 00000000000..35abe1f70c7 --- /dev/null +++ b/semantic_conventions/trace/instrumentation/aws-sdk.yml @@ -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 diff --git a/specification/trace/semantic_conventions/README.md b/specification/trace/semantic_conventions/README.md index 1b481f2621b..3c7092d8ba5 100644 --- a/specification/trace/semantic_conventions/README.md +++ b/specification/trace/semantic_conventions/README.md @@ -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). diff --git a/specification/trace/semantic_conventions/instrumentation/aws-sdk.md b/specification/trace/semantic_conventions/instrumentation/aws-sdk.md new file mode 100644 index 00000000000..01b8dd580b3 --- /dev/null +++ b/specification/trace/semantic_conventions/instrumentation/aws-sdk.md @@ -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. + + +| 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 | + + +## DynamoDB + +### Common Attributes + +These attributes are filled in for all DynamoDB request types. + + +| Attribute | Type | Description | Examples | Required | +|---|---|---|---|---| +| [`db.system`](../database.md) | string | The value `dynamodb`. | `dynamodb` | Yes | + + +### 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 | + + +### 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 | + + +### 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 | + + +### 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 | + + +### 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 | + + +### 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 | + + +### 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 | + + +### 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 | + + +### 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 | + + +### 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 | + + +### 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 | + + +### 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 | + + +### 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 | +