Semantic conventions for AWS SDK

Status: Experimental

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 string The name of the operation corresponding to the request, as returned by the AWS SDK [1] GetItem; PutItem No
rpc.service string The name of the service to which a request is made, as returned by the AWS SDK. [2] DynamoDB; S3 No
rpc.system string The value aws-api. aws-api Yes

[1]: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The code.function attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).

[2]: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The code.namespace attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).

DynamoDB

Common Attributes

These attributes are filled in for all DynamoDB request types.

Attribute Type Description Examples Required
db.system 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