groups: - id: faas_span prefix: faas type: span brief: > This semantic convention describes an instance of a function that runs without provisioning or managing of servers (also known as serverless functions or Function as a Service (FaaS)) with spans. attributes: - id: trigger brief: 'Type of the trigger which caused this function invocation.' note: | For the server/consumer span on the incoming side, `faas.trigger` MUST be set. Clients invoking FaaS instances usually cannot set `faas.trigger`, since they would typically need to look in the payload to determine the event type. If clients set it, it should be the same as the trigger that corresponding incoming would have (i.e., this has nothing to do with the underlying transport used to make the API call to invoke the lambda, which is often HTTP). type: allow_custom_values: false members: - id: datasource value: 'datasource' brief: 'A response to some data source operation such as a database or filesystem read/write.' - id: http value: 'http' brief: 'To provide an answer to an inbound HTTP request' - id: pubsub value: 'pubsub' brief: 'A function is set to be executed when messages are sent to a messaging system.' - id: timer value: 'timer' brief: 'A function is scheduled to be executed regularly.' - id: other value: 'other' brief: 'If none of the others apply' - id: invocation_id type: string brief: 'The invocation ID of the current function invocation.' examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28' - ref: cloud.resource_id - id: faas_span.datasource prefix: faas.document type: span extends: faas_span brief: > Semantic Convention for FaaS triggered as a response to some data source operation such as a database or filesystem read/write. attributes: - id: collection type: string requirement_level: required brief: > The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name. examples: ['myBucketName', 'myDbName'] - id: operation requirement_level: required type: allow_custom_values: true members: - id: insert value: 'insert' brief: 'When a new object is created.' - id: edit value: 'edit' brief: 'When an object is modified.' - id: delete value: 'delete' brief: 'When an object is deleted.' brief: 'Describes the type of the operation that was performed on the data.' - id: time type: string brief: > A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). examples: "2020-01-23T13:47:06Z" - id: name type: string brief: > The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name. examples: ["myFile.txt", "myTableName"] - id: faas_span.http type: span extends: faas_span brief: > Semantic Convention for FaaS triggered as a response to some data source operation such as a database or filesystem read/write. constraints: - include: trace.http.server - id: faas_span.pubsub type: span extends: faas_span brief: > Semantic Convention for FaaS set to be executed when messages are sent to a messaging system. constraints: - include: messaging - id: faas_span.timer extends: faas_span prefix: faas type: span brief: > Semantic Convention for FaaS scheduled to be executed regularly. attributes: - id: time type: string brief: > A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). examples: "2020-01-23T13:47:06Z" - id: cron type: string brief: > A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). examples: "0/5 * * * ? *" - id: faas_span.in extends: faas_span span_kind: server prefix: faas type: span brief: > Contains additional attributes for incoming FaaS spans. attributes: - id: coldstart type: boolean brief: > A boolean that is true if the serverless function is executed for the first time (aka cold-start). - ref: faas.trigger requirement_level: required - id: faas_span.out extends: faas_span span_kind: client prefix: faas type: span brief: > Contains additional attributes for outgoing FaaS spans. attributes: - id: invoked_name type: string requirement_level: required brief: > The name of the invoked function. note: > SHOULD be equal to the `faas.name` resource attribute of the invoked function. examples: 'my-function' - id: invoked_provider type: allow_custom_values: true members: - id: 'alibaba_cloud' value: 'alibaba_cloud' brief: 'Alibaba Cloud' - id: 'aws' value: 'aws' brief: 'Amazon Web Services' - id: 'azure' value: 'azure' brief: 'Microsoft Azure' - id: 'gcp' value: 'gcp' brief: 'Google Cloud Platform' - id: 'tencent_cloud' value: 'tencent_cloud' brief: 'Tencent Cloud' requirement_level: required brief: > The cloud provider of the invoked function. note: > SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. - id: invoked_region type: string requirement_level: conditionally_required: > For some cloud providers, like AWS or GCP, the region in which a function is hosted is essential to uniquely identify the function and also part of its endpoint. Since it's part of the endpoint being called, the region is always known to clients. In these cases, `faas.invoked_region` MUST be set accordingly. If the region is unknown to the client or not required for identifying the invoked function, setting `faas.invoked_region` is optional. brief: > The cloud region of the invoked function. note: > SHOULD be equal to the `cloud.region` resource attribute of the invoked function. examples: 'eu-central-1'