telemetry_rust/middleware/aws/instrumentation/fluent_builder/
sns.rs1use super::{utils::*, *};
4use crate::semconv;
5
6impl<'a> AwsBuilderInstrument<'a> for PublishFluentBuilder {
7 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
8 let topic_arn = self.get_topic_arn().clone().unwrap_or_default();
9 SnsSpanBuilder::publish(topic_arn)
10 }
11}
12impl InstrumentedFluentBuilderOutput for PublishOutput {
13 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
14 attributes![
15 self.message_id()
16 .as_attribute(semconv::MESSAGING_MESSAGE_ID),
17 ]
18 }
19}
20instrument_aws_operation!(aws_sdk_sns::operation::publish);
21
22impl<'a> AwsBuilderInstrument<'a> for PublishBatchFluentBuilder {
23 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
24 let topic_arn = self.get_topic_arn().clone().unwrap_or_default();
25 let attributes = attributes![
26 self.get_publish_batch_request_entries()
27 .as_ref()
28 .map(|entries| entries.len())
29 .as_attribute(semconv::MESSAGING_BATCH_MESSAGE_COUNT)
30 ];
31 SnsSpanBuilder::publish_batch(topic_arn).attributes(attributes)
32 }
33}
34impl InstrumentedFluentBuilderOutput for PublishBatchOutput {
35 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
36 attributes![
37 self.failed()
38 .len()
39 .as_attribute("messaging.batch.message_count.failed"),
40 ]
41 }
42}
43instrument_aws_operation!(aws_sdk_sns::operation::publish_batch);
44
45impl<'a> AwsBuilderInstrument<'a> for CreateTopicFluentBuilder {
47 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
48 SnsSpanBuilder::create_topic()
49 }
50}
51impl InstrumentedFluentBuilderOutput for CreateTopicOutput {
52 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
53 attributes![
54 self.topic_arn()
55 .as_attribute(semconv::MESSAGING_DESTINATION_NAME),
56 ]
57 }
58}
59instrument_aws_operation!(aws_sdk_sns::operation::create_topic);
60
61impl<'a> AwsBuilderInstrument<'a> for DeleteTopicFluentBuilder {
62 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
63 let topic_arn = self.get_topic_arn().clone().unwrap_or_default();
64 SnsSpanBuilder::delete_topic(topic_arn)
65 }
66}
67impl InstrumentedFluentBuilderOutput for DeleteTopicOutput {}
68instrument_aws_operation!(aws_sdk_sns::operation::delete_topic);
69
70impl<'a> AwsBuilderInstrument<'a> for GetTopicAttributesFluentBuilder {
71 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
72 let topic_arn = self.get_topic_arn().clone().unwrap_or_default();
73 SnsSpanBuilder::get_topic_attributes(topic_arn)
74 }
75}
76impl InstrumentedFluentBuilderOutput for GetTopicAttributesOutput {}
77instrument_aws_operation!(aws_sdk_sns::operation::get_topic_attributes);
78
79impl<'a> AwsBuilderInstrument<'a> for SetTopicAttributesFluentBuilder {
80 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
81 let topic_arn = self.get_topic_arn().clone().unwrap_or_default();
82 SnsSpanBuilder::set_topic_attributes(topic_arn)
83 }
84}
85impl InstrumentedFluentBuilderOutput for SetTopicAttributesOutput {}
86instrument_aws_operation!(aws_sdk_sns::operation::set_topic_attributes);
87
88impl<'a> AwsBuilderInstrument<'a> for ListTopicsFluentBuilder {
89 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
90 SnsSpanBuilder::list_topics()
91 }
92}
93impl InstrumentedFluentBuilderOutput for ListTopicsOutput {}
94instrument_aws_operation!(aws_sdk_sns::operation::list_topics);
95
96impl<'a> AwsBuilderInstrument<'a> for SubscribeFluentBuilder {
98 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
99 let topic_arn = self.get_topic_arn().clone().unwrap_or_default();
100 SnsSpanBuilder::subscribe(topic_arn)
101 }
102}
103impl InstrumentedFluentBuilderOutput for SubscribeOutput {}
104instrument_aws_operation!(aws_sdk_sns::operation::subscribe);
105
106impl<'a> AwsBuilderInstrument<'a> for UnsubscribeFluentBuilder {
107 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
108 SnsSpanBuilder::unsubscribe()
109 }
110}
111impl InstrumentedFluentBuilderOutput for UnsubscribeOutput {}
112instrument_aws_operation!(aws_sdk_sns::operation::unsubscribe);
113
114impl<'a> AwsBuilderInstrument<'a> for ConfirmSubscriptionFluentBuilder {
115 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
116 let topic_arn = self.get_topic_arn().clone().unwrap_or_default();
117 SnsSpanBuilder::confirm_subscription(topic_arn)
118 }
119}
120impl InstrumentedFluentBuilderOutput for ConfirmSubscriptionOutput {}
121instrument_aws_operation!(aws_sdk_sns::operation::confirm_subscription);
122
123impl<'a> AwsBuilderInstrument<'a> for ListSubscriptionsFluentBuilder {
124 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
125 SnsSpanBuilder::list_subscriptions()
126 }
127}
128impl InstrumentedFluentBuilderOutput for ListSubscriptionsOutput {}
129instrument_aws_operation!(aws_sdk_sns::operation::list_subscriptions);
130
131impl<'a> AwsBuilderInstrument<'a> for ListSubscriptionsByTopicFluentBuilder {
132 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
133 let topic_arn = self.get_topic_arn().clone().unwrap_or_default();
134 SnsSpanBuilder::list_subscriptions_by_topic(topic_arn)
135 }
136}
137impl InstrumentedFluentBuilderOutput for ListSubscriptionsByTopicOutput {}
138instrument_aws_operation!(aws_sdk_sns::operation::list_subscriptions_by_topic);
139
140impl<'a> AwsBuilderInstrument<'a> for GetSubscriptionAttributesFluentBuilder {
141 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
142 SnsSpanBuilder::get_subscription_attributes()
143 }
144}
145impl InstrumentedFluentBuilderOutput for GetSubscriptionAttributesOutput {}
146instrument_aws_operation!(aws_sdk_sns::operation::get_subscription_attributes);
147
148impl<'a> AwsBuilderInstrument<'a> for SetSubscriptionAttributesFluentBuilder {
149 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
150 SnsSpanBuilder::set_subscription_attributes()
151 }
152}
153impl InstrumentedFluentBuilderOutput for SetSubscriptionAttributesOutput {}
154instrument_aws_operation!(aws_sdk_sns::operation::set_subscription_attributes);
155
156impl<'a> AwsBuilderInstrument<'a> for AddPermissionFluentBuilder {
158 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
159 let topic_arn = self.get_topic_arn().clone().unwrap_or_default();
160 SnsSpanBuilder::add_permission(topic_arn)
161 }
162}
163impl InstrumentedFluentBuilderOutput for AddPermissionOutput {}
164instrument_aws_operation!(aws_sdk_sns::operation::add_permission);
165
166impl<'a> AwsBuilderInstrument<'a> for RemovePermissionFluentBuilder {
167 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
168 let topic_arn = self.get_topic_arn().clone().unwrap_or_default();
169 SnsSpanBuilder::remove_permission(topic_arn)
170 }
171}
172impl InstrumentedFluentBuilderOutput for RemovePermissionOutput {}
173instrument_aws_operation!(aws_sdk_sns::operation::remove_permission);
174
175impl<'a> AwsBuilderInstrument<'a> for CreatePlatformApplicationFluentBuilder {
177 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
178 SnsSpanBuilder::create_platform_application()
179 }
180}
181impl InstrumentedFluentBuilderOutput for CreatePlatformApplicationOutput {}
182instrument_aws_operation!(aws_sdk_sns::operation::create_platform_application);
183
184impl<'a> AwsBuilderInstrument<'a> for DeletePlatformApplicationFluentBuilder {
185 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
186 SnsSpanBuilder::delete_platform_application()
187 }
188}
189impl InstrumentedFluentBuilderOutput for DeletePlatformApplicationOutput {}
190instrument_aws_operation!(aws_sdk_sns::operation::delete_platform_application);
191
192impl<'a> AwsBuilderInstrument<'a> for GetPlatformApplicationAttributesFluentBuilder {
193 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
194 SnsSpanBuilder::get_platform_application_attributes()
195 }
196}
197impl InstrumentedFluentBuilderOutput for GetPlatformApplicationAttributesOutput {}
198instrument_aws_operation!(aws_sdk_sns::operation::get_platform_application_attributes);
199
200impl<'a> AwsBuilderInstrument<'a> for SetPlatformApplicationAttributesFluentBuilder {
201 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
202 SnsSpanBuilder::set_platform_application_attributes()
203 }
204}
205impl InstrumentedFluentBuilderOutput for SetPlatformApplicationAttributesOutput {}
206instrument_aws_operation!(aws_sdk_sns::operation::set_platform_application_attributes);
207
208impl<'a> AwsBuilderInstrument<'a> for ListPlatformApplicationsFluentBuilder {
209 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
210 SnsSpanBuilder::list_platform_applications()
211 }
212}
213impl InstrumentedFluentBuilderOutput for ListPlatformApplicationsOutput {}
214instrument_aws_operation!(aws_sdk_sns::operation::list_platform_applications);
215
216impl<'a> AwsBuilderInstrument<'a> for CreatePlatformEndpointFluentBuilder {
218 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
219 SnsSpanBuilder::create_platform_endpoint()
220 }
221}
222impl InstrumentedFluentBuilderOutput for CreatePlatformEndpointOutput {}
223instrument_aws_operation!(aws_sdk_sns::operation::create_platform_endpoint);
224
225impl<'a> AwsBuilderInstrument<'a> for DeleteEndpointFluentBuilder {
226 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
227 SnsSpanBuilder::delete_endpoint()
228 }
229}
230impl InstrumentedFluentBuilderOutput for DeleteEndpointOutput {}
231instrument_aws_operation!(aws_sdk_sns::operation::delete_endpoint);
232
233impl<'a> AwsBuilderInstrument<'a> for GetEndpointAttributesFluentBuilder {
234 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
235 SnsSpanBuilder::get_endpoint_attributes()
236 }
237}
238impl InstrumentedFluentBuilderOutput for GetEndpointAttributesOutput {}
239instrument_aws_operation!(aws_sdk_sns::operation::get_endpoint_attributes);
240
241impl<'a> AwsBuilderInstrument<'a> for SetEndpointAttributesFluentBuilder {
242 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
243 SnsSpanBuilder::set_endpoint_attributes()
244 }
245}
246impl InstrumentedFluentBuilderOutput for SetEndpointAttributesOutput {}
247instrument_aws_operation!(aws_sdk_sns::operation::set_endpoint_attributes);
248
249impl<'a> AwsBuilderInstrument<'a> for ListEndpointsByPlatformApplicationFluentBuilder {
250 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
251 SnsSpanBuilder::list_endpoints_by_platform_application()
252 }
253}
254impl InstrumentedFluentBuilderOutput for ListEndpointsByPlatformApplicationOutput {}
255instrument_aws_operation!(aws_sdk_sns::operation::list_endpoints_by_platform_application);
256
257impl<'a> AwsBuilderInstrument<'a> for ListOriginationNumbersFluentBuilder {
259 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
260 SnsSpanBuilder::list_origination_numbers()
261 }
262}
263impl InstrumentedFluentBuilderOutput for ListOriginationNumbersOutput {}
264instrument_aws_operation!(aws_sdk_sns::operation::list_origination_numbers);
265
266impl<'a> AwsBuilderInstrument<'a> for CheckIfPhoneNumberIsOptedOutFluentBuilder {
268 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
269 SnsSpanBuilder::check_if_phone_number_is_opted_out()
270 }
271}
272impl InstrumentedFluentBuilderOutput for CheckIfPhoneNumberIsOptedOutOutput {}
273instrument_aws_operation!(aws_sdk_sns::operation::check_if_phone_number_is_opted_out);
274
275impl<'a> AwsBuilderInstrument<'a> for OptInPhoneNumberFluentBuilder {
276 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
277 SnsSpanBuilder::opt_in_phone_number()
278 }
279}
280impl InstrumentedFluentBuilderOutput for OptInPhoneNumberOutput {}
281instrument_aws_operation!(aws_sdk_sns::operation::opt_in_phone_number);
282
283impl<'a> AwsBuilderInstrument<'a> for ListPhoneNumbersOptedOutFluentBuilder {
284 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
285 SnsSpanBuilder::list_phone_numbers_opted_out()
286 }
287}
288impl InstrumentedFluentBuilderOutput for ListPhoneNumbersOptedOutOutput {}
289instrument_aws_operation!(aws_sdk_sns::operation::list_phone_numbers_opted_out);
290
291impl<'a> AwsBuilderInstrument<'a> for GetSMSAttributesFluentBuilder {
293 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
294 SnsSpanBuilder::get_sms_attributes()
295 }
296}
297impl InstrumentedFluentBuilderOutput for GetSmsAttributesOutput {}
298instrument_aws_operation!(
299 aws_sdk_sns::operation::get_sms_attributes,
300 GetSMSAttributesFluentBuilder,
301 GetSmsAttributesOutput,
302 GetSMSAttributesError
303);
304
305impl<'a> AwsBuilderInstrument<'a> for CreateSMSSandboxPhoneNumberFluentBuilder {
307 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
308 SnsSpanBuilder::create_sms_sandbox_phone_number()
309 }
310}
311impl InstrumentedFluentBuilderOutput for CreateSmsSandboxPhoneNumberOutput {}
312instrument_aws_operation!(
313 aws_sdk_sns::operation::create_sms_sandbox_phone_number,
314 CreateSMSSandboxPhoneNumberFluentBuilder,
315 CreateSmsSandboxPhoneNumberOutput,
316 CreateSMSSandboxPhoneNumberError
317);
318
319impl<'a> AwsBuilderInstrument<'a> for DeleteSMSSandboxPhoneNumberFluentBuilder {
320 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
321 SnsSpanBuilder::delete_sms_sandbox_phone_number()
322 }
323}
324impl InstrumentedFluentBuilderOutput for DeleteSmsSandboxPhoneNumberOutput {}
325instrument_aws_operation!(
326 aws_sdk_sns::operation::delete_sms_sandbox_phone_number,
327 DeleteSMSSandboxPhoneNumberFluentBuilder,
328 DeleteSmsSandboxPhoneNumberOutput,
329 DeleteSMSSandboxPhoneNumberError
330);
331
332impl<'a> AwsBuilderInstrument<'a> for GetSMSSandboxAccountStatusFluentBuilder {
333 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
334 SnsSpanBuilder::get_sms_sandbox_account_status()
335 }
336}
337impl InstrumentedFluentBuilderOutput for GetSmsSandboxAccountStatusOutput {}
338instrument_aws_operation!(
339 aws_sdk_sns::operation::get_sms_sandbox_account_status,
340 GetSMSSandboxAccountStatusFluentBuilder,
341 GetSmsSandboxAccountStatusOutput,
342 GetSMSSandboxAccountStatusError
343);
344
345impl<'a> AwsBuilderInstrument<'a> for ListSMSSandboxPhoneNumbersFluentBuilder {
346 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
347 SnsSpanBuilder::list_sms_sandbox_phone_numbers()
348 }
349}
350impl InstrumentedFluentBuilderOutput for ListSmsSandboxPhoneNumbersOutput {}
351instrument_aws_operation!(
352 aws_sdk_sns::operation::list_sms_sandbox_phone_numbers,
353 ListSMSSandboxPhoneNumbersFluentBuilder,
354 ListSmsSandboxPhoneNumbersOutput,
355 ListSMSSandboxPhoneNumbersError
356);
357
358impl<'a> AwsBuilderInstrument<'a> for VerifySMSSandboxPhoneNumberFluentBuilder {
359 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
360 SnsSpanBuilder::verify_sms_sandbox_phone_number()
361 }
362}
363impl InstrumentedFluentBuilderOutput for VerifySmsSandboxPhoneNumberOutput {}
364instrument_aws_operation!(
365 aws_sdk_sns::operation::verify_sms_sandbox_phone_number,
366 VerifySMSSandboxPhoneNumberFluentBuilder,
367 VerifySmsSandboxPhoneNumberOutput,
368 VerifySMSSandboxPhoneNumberError
369);
370
371impl<'a> AwsBuilderInstrument<'a> for SetSMSAttributesFluentBuilder {
373 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
374 SnsSpanBuilder::set_sms_attributes()
375 }
376}
377impl InstrumentedFluentBuilderOutput for SetSmsAttributesOutput {}
378instrument_aws_operation!(
379 aws_sdk_sns::operation::set_sms_attributes,
380 SetSMSAttributesFluentBuilder,
381 SetSmsAttributesOutput,
382 SetSMSAttributesError
383);
384
385impl<'a> AwsBuilderInstrument<'a> for GetDataProtectionPolicyFluentBuilder {
387 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
388 SnsSpanBuilder::get_data_protection_policy()
389 }
390}
391impl InstrumentedFluentBuilderOutput for GetDataProtectionPolicyOutput {}
392instrument_aws_operation!(aws_sdk_sns::operation::get_data_protection_policy);
393
394impl<'a> AwsBuilderInstrument<'a> for PutDataProtectionPolicyFluentBuilder {
395 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
396 SnsSpanBuilder::put_data_protection_policy()
397 }
398}
399impl InstrumentedFluentBuilderOutput for PutDataProtectionPolicyOutput {}
400instrument_aws_operation!(aws_sdk_sns::operation::put_data_protection_policy);
401
402impl<'a> AwsBuilderInstrument<'a> for ListTagsForResourceFluentBuilder {
404 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
405 SnsSpanBuilder::list_tags_for_resource()
406 }
407}
408impl InstrumentedFluentBuilderOutput for ListTagsForResourceOutput {}
409instrument_aws_operation!(aws_sdk_sns::operation::list_tags_for_resource);
410
411impl<'a> AwsBuilderInstrument<'a> for TagResourceFluentBuilder {
412 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
413 SnsSpanBuilder::tag_resource()
414 }
415}
416impl InstrumentedFluentBuilderOutput for TagResourceOutput {}
417instrument_aws_operation!(aws_sdk_sns::operation::tag_resource);
418
419impl<'a> AwsBuilderInstrument<'a> for UntagResourceFluentBuilder {
420 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
421 SnsSpanBuilder::untag_resource()
422 }
423}
424impl InstrumentedFluentBuilderOutput for UntagResourceOutput {}
425instrument_aws_operation!(aws_sdk_sns::operation::untag_resource);