Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Describe falling back to string mangling for AWS SDK RPC specifiers. #1851

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion semantic_conventions/trace/instrumentation/aws-sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,23 @@ groups:
- aws-api
- ref: rpc.service
brief: "The name of the service to which a request is made, as returned by the AWS SDK."
note: >
If the SDK does not provide a away to retrieve a name, the name of the SDK's client interface for a
service SHOULD be used, removing the suffix `Client` if present, resulting in a PascalCase name with
no spaces. For example, `DynamoDBClient` would be `DynamoDB`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
no spaces. For example, `DynamoDBClient` would be `DynamoDB`.
no spaces. For example, `DynamoDBClient` would become `DynamoDB`.

examples:
- DynamoDB
- S3
- Route53
- ref: rpc.method
brief: "The name of the operation corresponding to the request, as returned by the AWS SDK"
brief: >
The name of the operation corresponding to the request, as returned by the AWS SDK. If the SDK does
not provide a way to retrieve a name, the name of the command SHOULD be used, removing the suffix
`Command` if present, resulting in a PascalCase name with no spaces.
note: >
If the SDK does not provide a way to retrieve a name, the name of the command SHOULD be used,
removing the suffix `Command` if present, resulting in a PascalCase name with no spaces. For example,
`GetItemCommand` would be `GetItem`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`GetItemCommand` would be `GetItem`.
`getItemCommand` would become `getItem`.

Is that correct? Or do we want case normalization too?

examples:
- GetItem
- PutItem
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ 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 [1] | `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. [2] | `DynamoDB`; `S3` | No |
| [`rpc.method`](../rpc.md) | string | The name of the operation corresponding to the request, as returned by the AWS SDK. If the SDK does not provide a way to retrieve a name, the name of the command SHOULD be used, removing the suffix `Command` if present, resulting in a PascalCase name with no spaces. [1] | `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. [2] | `DynamoDB`; `S3`; `Route53` | No |
| [`rpc.system`](../rpc.md) | 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).
**[1]:** If the SDK does not provide a way to retrieve a name, the name of the command SHOULD be used, removing the suffix `Command` if present, resulting in a PascalCase name with no spaces. For example, `GetItemCommand` would be `GetItem`.

**[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).
**[2]:** If the SDK does not provide a away to retrieve a name, the name of the SDK's client interface for a service SHOULD be used, removing the suffix `Client` if present, resulting in a PascalCase name with no spaces. For example, `DynamoDBClient` would be `DynamoDB`.
<!-- endsemconv -->

## DynamoDB
Expand Down