Module: Datadog::Lambda::AppSec::Tagging
- Defined in:
- lib/datadog/lambda/appsec/tagging.rb
Overview
Applies AppSec request, response, and keep-decision tags to the Lambda span
Class Method Summary collapse
- .tag_and_keep(context, cold_start:) ⇒ Object
- .tag_request(request, context:) ⇒ Object
- .tag_response(response, context:) ⇒ Object
Class Method Details
.tag_and_keep(context, cold_start:) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/datadog/lambda/appsec/tagging.rb', line 44 def tag_and_keep(context, cold_start:) span = context.span trace = context.trace return unless trace && span span.set_metric(Datadog::AppSec::Ext::TAG_APPSEC_ENABLED, 1) span.set_tag('_dd.runtime_family', 'ruby') span.set_tag('_dd.appsec.waf.version', Datadog::AppSec::WAF::VERSION::BASE_STRING) ruleset_version = context.waf_runner_ruleset_version return unless ruleset_version span.set_tag('_dd.appsec.event_rules.version', ruleset_version) return unless cold_start trace.keep! trace.set_tag( Datadog::Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER, Datadog::Tracing::Sampling::Ext::Decision::ASM ) span.set_tag( '_dd.appsec.event_rules.addresses', JSON.dump(context.waf_runner_known_addresses) ) end |
.tag_request(request, context:) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/datadog/lambda/appsec/tagging.rb', line 16 def tag_request(request, context:) span = context.span return unless span headers = Datadog::Core::HeaderCollection.from_hash(request.headers) Datadog::AppSec::DefaultHeaderTags.tag_request(span, headers) return if span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_CLIENT_IP) Datadog::Tracing::ClientIp.set_client_ip_tag!( span, headers: headers, remote_ip: request.remote_addr ) end |
.tag_response(response, context:) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/datadog/lambda/appsec/tagging.rb', line 30 def tag_response(response, context:) span = context.span return unless span headers = Datadog::Core::HeaderCollection.from_hash(response.headers) Datadog::AppSec::DefaultHeaderTags.tag_response(span, headers) return if headers.get('content-length') if (body = response.body) span.set_tag('http.response.headers.content-length', body.bytesize.to_s) end end |