in lib/elastic_apm/spies/sns.rb [77:112]
def publish(params = {}, options = {})
unless (transaction = ElasticAPM.current_transaction)
return super(params, options)
end
topic = ElasticAPM::Spies::SNSSpy.get_topic(params)
span_name = topic ? "SNS PUBLISH to #{topic}" : 'SNS PUBLISH'
region = ElasticAPM::Spies::SNSSpy.arn_region(
params[:topic_arn] || params[:target_arn]
)
context = ElasticAPM::Spies::SNSSpy.span_context(
topic,
region || config.region
)
ElasticAPM.with_span(
span_name,
TYPE,
subtype: SUBTYPE,
action: 'publish',
context: context
) do |span|
trace_context = span&.trace_context || transaction.trace_context
trace_context.apply_headers do |key, value|
params[:message_attributes] ||= {}
params[:message_attributes][key] ||= {}
params[:message_attributes][key][:string_value] = value
params[:message_attributes][key][:data_type] = 'String'
end
ElasticAPM::Spies::SNSSpy.without_net_http do
super(params, options)
end
end
end