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: - ref: faas.trigger 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). - ref: faas.invocation_id - ref: cloud.resource_id - id: faas_span.datasource prefix: faas.document type: span brief: > Semantic Convention for FaaS triggered as a response to some data source operation such as a database or filesystem read/write. attributes: - ref: faas.document.collection requirement_level: required - ref: faas.document.operation requirement_level: required - ref: faas.document.time - ref: faas.document.name - id: faas_span.http type: span brief: > Semantic Convention for FaaS triggered as a response to some data source operation such as a database or filesystem read/write. - id: faas_span.pubsub type: span brief: > Semantic Convention for FaaS set to be executed when messages are sent to a messaging system. - id: faas_span.timer prefix: faas type: span brief: > Semantic Convention for FaaS scheduled to be executed regularly. attributes: - ref: faas.time - ref: faas.cron - id: faas_span.in span_kind: server prefix: faas type: span brief: > Contains additional attributes for incoming FaaS spans. attributes: - ref: faas.coldstart - ref: faas.trigger requirement_level: required 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). - id: faas_span.out span_kind: client prefix: faas type: span brief: > Contains additional attributes for outgoing FaaS spans. attributes: - ref: faas.invoked_name requirement_level: required - ref: faas.invoked_provider requirement_level: required - ref: faas.invoked_region 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.