telemetry_rust/middleware/aws/instrumentation/fluent_builder/
dynamodb.rs1use std::collections::HashSet;
4
5use super::{utils::*, *};
6use crate::semconv;
7
8impl<'a> AwsBuilderInstrument<'a> for GetItemFluentBuilder {
9 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
10 let table_name = self.get_table_name().clone().unwrap_or_default();
11 let attributes = attributes![
12 self.get_consistent_read()
13 .as_attribute(semconv::AWS_DYNAMODB_CONSISTENT_READ),
14 self.get_projection_expression()
15 .as_attribute(semconv::AWS_DYNAMODB_PROJECTION),
16 ];
17 DynamodbSpanBuilder::get_item(table_name).attributes(attributes)
18 }
19}
20impl InstrumentedFluentBuilderOutput for GetItemOutput {}
21instrument_aws_operation!(aws_sdk_dynamodb::operation::get_item);
22
23impl<'a> AwsBuilderInstrument<'a> for GetResourcePolicyFluentBuilder {
24 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
25 let table_name = self.get_resource_arn().clone().unwrap_or_default();
26 DynamodbSpanBuilder::get_resource_policy(table_name)
27 }
28}
29impl InstrumentedFluentBuilderOutput for GetResourcePolicyOutput {}
30instrument_aws_operation!(aws_sdk_dynamodb::operation::get_resource_policy);
31
32impl<'a> AwsBuilderInstrument<'a> for PutItemFluentBuilder {
33 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
34 let table_name = self.get_table_name().clone().unwrap_or_default();
35 DynamodbSpanBuilder::put_item(table_name)
36 }
37}
38impl InstrumentedFluentBuilderOutput for PutItemOutput {}
39instrument_aws_operation!(aws_sdk_dynamodb::operation::put_item);
40
41impl<'a> AwsBuilderInstrument<'a> for PutResourcePolicyFluentBuilder {
42 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
43 let table_name = self.get_resource_arn().clone().unwrap_or_default();
44 DynamodbSpanBuilder::put_resource_policy(table_name)
45 }
46}
47impl InstrumentedFluentBuilderOutput for PutResourcePolicyOutput {}
48instrument_aws_operation!(aws_sdk_dynamodb::operation::put_resource_policy);
49
50impl<'a> AwsBuilderInstrument<'a> for UpdateItemFluentBuilder {
51 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
52 let table_name = self.get_table_name().clone().unwrap_or_default();
53 DynamodbSpanBuilder::update_item(table_name)
54 }
55}
56impl InstrumentedFluentBuilderOutput for UpdateItemOutput {}
57instrument_aws_operation!(aws_sdk_dynamodb::operation::update_item);
58
59impl<'a> AwsBuilderInstrument<'a> for DeleteItemFluentBuilder {
60 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
61 let table_name = self.get_table_name().clone().unwrap_or_default();
62 DynamodbSpanBuilder::delete_item(table_name)
63 }
64}
65impl InstrumentedFluentBuilderOutput for DeleteItemOutput {}
66instrument_aws_operation!(aws_sdk_dynamodb::operation::delete_item);
67
68impl<'a> AwsBuilderInstrument<'a> for DeleteResourcePolicyFluentBuilder {
69 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
70 let table_name = self.get_resource_arn().clone().unwrap_or_default();
71 DynamodbSpanBuilder::delete_resource_policy(table_name)
72 }
73}
74impl InstrumentedFluentBuilderOutput for DeleteResourcePolicyOutput {}
75instrument_aws_operation!(aws_sdk_dynamodb::operation::delete_resource_policy);
76
77impl<'a> AwsBuilderInstrument<'a> for QueryFluentBuilder {
78 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
79 let table_name = self.get_table_name().clone().unwrap_or_default();
80 let attributes = attributes![
81 self.get_attributes_to_get()
82 .as_attribute(semconv::AWS_DYNAMODB_ATTRIBUTES_TO_GET),
83 self.get_consistent_read()
84 .as_attribute(semconv::AWS_DYNAMODB_CONSISTENT_READ),
85 self.get_index_name()
86 .as_attribute(semconv::AWS_DYNAMODB_INDEX_NAME),
87 self.get_limit().as_attribute(semconv::AWS_DYNAMODB_LIMIT),
88 self.get_projection_expression()
89 .as_attribute(semconv::AWS_DYNAMODB_PROJECTION),
90 self.get_scan_index_forward()
91 .as_attribute(semconv::AWS_DYNAMODB_SCAN_FORWARD),
92 self.get_select().as_attribute(semconv::AWS_DYNAMODB_SELECT),
93 ];
94 DynamodbSpanBuilder::query(table_name).attributes(attributes)
95 }
96}
97impl InstrumentedFluentBuilderOutput for QueryOutput {
98 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
99 [
100 KeyValue::new(semconv::AWS_DYNAMODB_COUNT, self.count() as i64),
101 KeyValue::new(
102 semconv::AWS_DYNAMODB_SCANNED_COUNT,
103 self.scanned_count() as i64,
104 ),
105 ]
106 }
107}
108instrument_aws_operation!(aws_sdk_dynamodb::operation::query);
109
110impl<'a> AwsBuilderInstrument<'a> for ScanFluentBuilder {
111 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
112 let table_name = self.get_table_name().clone().unwrap_or_default();
113 let attributes = attributes![
114 self.get_attributes_to_get()
115 .as_attribute(semconv::AWS_DYNAMODB_ATTRIBUTES_TO_GET),
116 self.get_consistent_read()
117 .as_attribute(semconv::AWS_DYNAMODB_CONSISTENT_READ),
118 self.get_index_name()
119 .as_attribute(semconv::AWS_DYNAMODB_INDEX_NAME),
120 self.get_limit().as_attribute(semconv::AWS_DYNAMODB_LIMIT),
121 self.get_projection_expression()
122 .as_attribute(semconv::AWS_DYNAMODB_PROJECTION),
123 self.get_select().as_attribute(semconv::AWS_DYNAMODB_SELECT),
124 self.get_segment()
125 .as_attribute(semconv::AWS_DYNAMODB_SEGMENT),
126 self.get_total_segments()
127 .as_attribute(semconv::AWS_DYNAMODB_TOTAL_SEGMENTS),
128 ];
129 DynamodbSpanBuilder::scan(table_name).attributes(attributes)
130 }
131}
132impl InstrumentedFluentBuilderOutput for ScanOutput {
133 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
134 [
135 KeyValue::new(semconv::AWS_DYNAMODB_COUNT, self.count() as i64),
136 KeyValue::new(
137 semconv::AWS_DYNAMODB_SCANNED_COUNT,
138 self.scanned_count() as i64,
139 ),
140 ]
141 }
142}
143instrument_aws_operation!(aws_sdk_dynamodb::operation::scan);
144
145impl<'a> AwsBuilderInstrument<'a> for BatchGetItemFluentBuilder {
146 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
147 let table_names = self
148 .get_request_items()
149 .iter()
150 .flat_map(|items| items.keys())
151 .map(ToOwned::to_owned);
152 let attributes = attributes![
153 self.get_request_items()
154 .as_ref()
155 .map(|items| items.len())
156 .as_attribute(semconv::DB_OPERATION_BATCH_SIZE)
157 ];
158 DynamodbSpanBuilder::batch_get_item(table_names).attributes(attributes)
159 }
160}
161impl InstrumentedFluentBuilderOutput for BatchGetItemOutput {}
162instrument_aws_operation!(aws_sdk_dynamodb::operation::batch_get_item);
163
164impl<'a> AwsBuilderInstrument<'a> for BatchWriteItemFluentBuilder {
165 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
166 let table_names = self
167 .get_request_items()
168 .iter()
169 .flat_map(|items| items.keys())
170 .map(ToOwned::to_owned);
171 let attributes = attributes![
172 self.get_request_items()
173 .as_ref()
174 .map(|items| items.len())
175 .as_attribute(semconv::DB_OPERATION_BATCH_SIZE)
176 ];
177 DynamodbSpanBuilder::batch_write_item(table_names).attributes(attributes)
178 }
179}
180impl InstrumentedFluentBuilderOutput for BatchWriteItemOutput {}
181instrument_aws_operation!(aws_sdk_dynamodb::operation::batch_write_item);
182
183impl<'a> AwsBuilderInstrument<'a> for TransactGetItemsFluentBuilder {
184 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
185 let table_names = self
186 .get_transact_items()
187 .iter()
188 .flatten()
189 .flat_map(|item| item.get().map(|op| op.table_name()))
190 .collect::<HashSet<_>>()
191 .into_iter()
192 .map(ToOwned::to_owned);
193 DynamodbSpanBuilder::transact_get_items(table_names)
194 }
195}
196impl InstrumentedFluentBuilderOutput for TransactGetItemsOutput {}
197instrument_aws_operation!(aws_sdk_dynamodb::operation::transact_get_items);
198
199impl<'a> AwsBuilderInstrument<'a> for TransactWriteItemsFluentBuilder {
200 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
201 let table_names = self
202 .get_transact_items()
203 .iter()
204 .flatten()
205 .flat_map(|item| {
206 [
207 item.condition_check().map(|op| op.table_name()),
208 item.put().map(|op| op.table_name()),
209 item.delete().map(|op| op.table_name()),
210 item.update().map(|op| op.table_name()),
211 ]
212 })
213 .flatten()
214 .collect::<HashSet<_>>()
215 .into_iter()
216 .map(ToOwned::to_owned);
217 DynamodbSpanBuilder::transact_write_items(table_names)
218 }
219}
220impl InstrumentedFluentBuilderOutput for TransactWriteItemsOutput {}
221instrument_aws_operation!(aws_sdk_dynamodb::operation::transact_write_items);
222
223impl<'a> AwsBuilderInstrument<'a> for CreateTableFluentBuilder {
225 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
226 let table_name = self.get_table_name().clone().unwrap_or_default();
227 let throughput = self.get_provisioned_throughput().as_ref();
228 let attributes = attributes![
229 throughput
230 .map(|pt| pt.read_capacity_units())
231 .as_attribute(semconv::AWS_DYNAMODB_PROVISIONED_READ_CAPACITY),
232 throughput
233 .map(|pt| pt.write_capacity_units())
234 .as_attribute(semconv::AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY),
235 ];
236 DynamodbSpanBuilder::create_table(table_name).attributes(attributes)
237 }
238}
239impl InstrumentedFluentBuilderOutput for CreateTableOutput {}
240instrument_aws_operation!(aws_sdk_dynamodb::operation::create_table);
241
242impl<'a> AwsBuilderInstrument<'a> for DeleteTableFluentBuilder {
243 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
244 let table_name = self.get_table_name().clone().unwrap_or_default();
245 DynamodbSpanBuilder::delete_table(table_name)
246 }
247}
248impl InstrumentedFluentBuilderOutput for DeleteTableOutput {}
249instrument_aws_operation!(aws_sdk_dynamodb::operation::delete_table);
250
251impl<'a> AwsBuilderInstrument<'a> for DescribeTableFluentBuilder {
252 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
253 let table_name = self.get_table_name().clone().unwrap_or_default();
254 DynamodbSpanBuilder::describe_table(table_name)
255 }
256}
257impl InstrumentedFluentBuilderOutput for DescribeTableOutput {}
258instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_table);
259
260impl<'a> AwsBuilderInstrument<'a> for UpdateTableFluentBuilder {
261 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
262 let table_name = self.get_table_name().clone().unwrap_or_default();
263 let throughput = self.get_provisioned_throughput().as_ref();
264 let attributes = attributes![
265 throughput
266 .map(|pt| pt.read_capacity_units())
267 .as_attribute(semconv::AWS_DYNAMODB_PROVISIONED_READ_CAPACITY),
268 throughput
269 .map(|pt| pt.write_capacity_units())
270 .as_attribute(semconv::AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY),
271 ];
272 DynamodbSpanBuilder::update_table(table_name).attributes(attributes)
273 }
274}
275impl InstrumentedFluentBuilderOutput for UpdateTableOutput {}
276instrument_aws_operation!(aws_sdk_dynamodb::operation::update_table);
277
278impl<'a> AwsBuilderInstrument<'a> for ListTablesFluentBuilder {
279 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
280 let attributes = attributes![
281 self.get_exclusive_start_table_name()
282 .as_attribute(semconv::AWS_DYNAMODB_EXCLUSIVE_START_TABLE),
283 self.get_limit().as_attribute(semconv::AWS_DYNAMODB_LIMIT),
284 ];
285 DynamodbSpanBuilder::list_tables().attributes(attributes)
286 }
287}
288impl InstrumentedFluentBuilderOutput for ListTablesOutput {}
289instrument_aws_operation!(aws_sdk_dynamodb::operation::list_tables);
290
291impl<'a> AwsBuilderInstrument<'a> for CreateBackupFluentBuilder {
293 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
294 let table_name = self.get_table_name().clone().unwrap_or_default();
295 DynamodbSpanBuilder::create_backup(table_name)
296 }
297}
298impl InstrumentedFluentBuilderOutput for CreateBackupOutput {}
299instrument_aws_operation!(aws_sdk_dynamodb::operation::create_backup);
300
301impl<'a> AwsBuilderInstrument<'a> for DeleteBackupFluentBuilder {
302 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
303 DynamodbSpanBuilder::delete_backup()
304 }
305}
306impl InstrumentedFluentBuilderOutput for DeleteBackupOutput {}
307instrument_aws_operation!(aws_sdk_dynamodb::operation::delete_backup);
308
309impl<'a> AwsBuilderInstrument<'a> for DescribeBackupFluentBuilder {
310 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
311 DynamodbSpanBuilder::describe_backup()
312 }
313}
314impl InstrumentedFluentBuilderOutput for DescribeBackupOutput {}
315instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_backup);
316
317impl<'a> AwsBuilderInstrument<'a> for ListBackupsFluentBuilder {
318 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
319 let table_name = self.get_table_name().clone().unwrap_or_default();
320 DynamodbSpanBuilder::list_backups(table_name)
321 }
322}
323impl InstrumentedFluentBuilderOutput for ListBackupsOutput {}
324instrument_aws_operation!(aws_sdk_dynamodb::operation::list_backups);
325
326impl<'a> AwsBuilderInstrument<'a> for RestoreTableFromBackupFluentBuilder {
327 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
328 let target_table_name = self.get_target_table_name().clone().unwrap_or_default();
329 DynamodbSpanBuilder::restore_table_from_backup(target_table_name)
330 }
331}
332impl InstrumentedFluentBuilderOutput for RestoreTableFromBackupOutput {}
333instrument_aws_operation!(aws_sdk_dynamodb::operation::restore_table_from_backup);
334
335impl<'a> AwsBuilderInstrument<'a> for RestoreTableToPointInTimeFluentBuilder {
336 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
337 let target_table_name = self.get_target_table_name().clone().unwrap_or_default();
338 DynamodbSpanBuilder::restore_table_to_point_in_time(target_table_name)
339 }
340}
341impl InstrumentedFluentBuilderOutput for RestoreTableToPointInTimeOutput {}
342instrument_aws_operation!(aws_sdk_dynamodb::operation::restore_table_to_point_in_time);
343
344impl<'a> AwsBuilderInstrument<'a> for ExecuteStatementFluentBuilder {
346 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
348 let attributes = attributes![
349 self.get_consistent_read()
350 .as_attribute(semconv::AWS_DYNAMODB_CONSISTENT_READ),
351 self.get_limit().as_attribute(semconv::AWS_DYNAMODB_LIMIT),
352 ];
353 DynamodbSpanBuilder::execute_statement("").attributes(attributes)
354 }
355}
356impl InstrumentedFluentBuilderOutput for ExecuteStatementOutput {}
357instrument_aws_operation!(aws_sdk_dynamodb::operation::execute_statement);
358
359impl<'a> AwsBuilderInstrument<'a> for BatchExecuteStatementFluentBuilder {
360 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
362 DynamodbSpanBuilder::batch_execute_statement(None::<StringValue>)
363 }
364}
365impl InstrumentedFluentBuilderOutput for BatchExecuteStatementOutput {}
366instrument_aws_operation!(aws_sdk_dynamodb::operation::batch_execute_statement);
367
368impl<'a> AwsBuilderInstrument<'a> for ExecuteTransactionFluentBuilder {
369 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
371 DynamodbSpanBuilder::execute_transaction(None::<StringValue>)
372 }
373}
374impl InstrumentedFluentBuilderOutput for ExecuteTransactionOutput {}
375instrument_aws_operation!(aws_sdk_dynamodb::operation::execute_transaction);
376
377impl<'a> AwsBuilderInstrument<'a> for DescribeEndpointsFluentBuilder {
379 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
380 DynamodbSpanBuilder::describe_endpoints()
381 }
382}
383impl InstrumentedFluentBuilderOutput for DescribeEndpointsOutput {}
384instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_endpoints);
385
386impl<'a> AwsBuilderInstrument<'a> for DescribeLimitsFluentBuilder {
387 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
388 DynamodbSpanBuilder::describe_limits()
389 }
390}
391impl InstrumentedFluentBuilderOutput for DescribeLimitsOutput {}
392instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_limits);
393
394impl<'a> AwsBuilderInstrument<'a> for ListGlobalTablesFluentBuilder {
395 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
396 let attributes = attributes![
397 self.get_exclusive_start_global_table_name()
398 .as_attribute(semconv::AWS_DYNAMODB_EXCLUSIVE_START_TABLE),
399 self.get_limit().as_attribute(semconv::AWS_DYNAMODB_LIMIT),
400 self.get_region_name().as_attribute(semconv::CLOUD_REGION),
401 ];
402 DynamodbSpanBuilder::list_global_tables().attributes(attributes)
403 }
404}
405impl InstrumentedFluentBuilderOutput for ListGlobalTablesOutput {}
406instrument_aws_operation!(aws_sdk_dynamodb::operation::list_global_tables);
407
408impl<'a> AwsBuilderInstrument<'a> for DescribeExportFluentBuilder {
410 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
411 DynamodbSpanBuilder::describe_export()
412 }
413}
414impl InstrumentedFluentBuilderOutput for DescribeExportOutput {}
415instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_export);
416
417impl<'a> AwsBuilderInstrument<'a> for DescribeImportFluentBuilder {
418 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
419 DynamodbSpanBuilder::describe_import()
420 }
421}
422impl InstrumentedFluentBuilderOutput for DescribeImportOutput {}
423instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_import);
424
425impl<'a> AwsBuilderInstrument<'a> for ImportTableFluentBuilder {
426 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
427 let table_name = self
428 .get_table_creation_parameters()
429 .as_ref()
430 .map(|p| p.table_name())
431 .map(ToOwned::to_owned)
432 .unwrap_or_default();
433 DynamodbSpanBuilder::import_table(table_name)
434 }
435}
436impl InstrumentedFluentBuilderOutput for ImportTableOutput {}
437instrument_aws_operation!(aws_sdk_dynamodb::operation::import_table);
438
439impl<'a> AwsBuilderInstrument<'a> for ExportTableToPointInTimeFluentBuilder {
440 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
441 let table_arn = self.get_table_arn().clone().unwrap_or_default();
442 DynamodbSpanBuilder::export_table_to_point_in_time(table_arn)
443 }
444}
445impl InstrumentedFluentBuilderOutput for ExportTableToPointInTimeOutput {}
446instrument_aws_operation!(aws_sdk_dynamodb::operation::export_table_to_point_in_time);
447
448impl<'a> AwsBuilderInstrument<'a> for ListExportsFluentBuilder {
449 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
450 let table_arn = self.get_table_arn().clone().unwrap_or_default();
451 let attributes = attributes![
452 self.get_max_results()
453 .as_attribute(semconv::AWS_DYNAMODB_LIMIT)
454 ];
455 DynamodbSpanBuilder::list_exports(table_arn).attributes(attributes)
456 }
457}
458impl InstrumentedFluentBuilderOutput for ListExportsOutput {}
459instrument_aws_operation!(aws_sdk_dynamodb::operation::list_exports);
460
461impl<'a> AwsBuilderInstrument<'a> for ListImportsFluentBuilder {
462 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
463 let table_arn = self.get_table_arn().clone().unwrap_or_default();
464 let attributes = attributes![
465 self.get_page_size()
466 .as_attribute(semconv::AWS_DYNAMODB_LIMIT)
467 ];
468 DynamodbSpanBuilder::list_imports(table_arn).attributes(attributes)
469 }
470}
471impl InstrumentedFluentBuilderOutput for ListImportsOutput {}
472instrument_aws_operation!(aws_sdk_dynamodb::operation::list_imports);
473
474impl<'a> AwsBuilderInstrument<'a> for CreateGlobalTableFluentBuilder {
476 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
477 let global_table_name = self.get_global_table_name().clone().unwrap_or_default();
478 DynamodbSpanBuilder::create_global_table(global_table_name)
479 }
480}
481impl InstrumentedFluentBuilderOutput for CreateGlobalTableOutput {}
482instrument_aws_operation!(aws_sdk_dynamodb::operation::create_global_table);
483
484impl<'a> AwsBuilderInstrument<'a> for DescribeGlobalTableFluentBuilder {
485 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
486 let global_table_name = self.get_global_table_name().clone().unwrap_or_default();
487 DynamodbSpanBuilder::describe_global_table(global_table_name)
488 }
489}
490impl InstrumentedFluentBuilderOutput for DescribeGlobalTableOutput {}
491instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_global_table);
492
493impl<'a> AwsBuilderInstrument<'a> for DescribeGlobalTableSettingsFluentBuilder {
494 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
495 let global_table_name = self.get_global_table_name().clone().unwrap_or_default();
496 DynamodbSpanBuilder::describe_global_table_settings(global_table_name)
497 }
498}
499impl InstrumentedFluentBuilderOutput for DescribeGlobalTableSettingsOutput {}
500instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_global_table_settings);
501
502impl<'a> AwsBuilderInstrument<'a> for UpdateGlobalTableFluentBuilder {
503 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
504 let global_table_name = self.get_global_table_name().clone().unwrap_or_default();
505 DynamodbSpanBuilder::update_global_table(global_table_name)
506 }
507}
508impl InstrumentedFluentBuilderOutput for UpdateGlobalTableOutput {}
509instrument_aws_operation!(aws_sdk_dynamodb::operation::update_global_table);
510
511impl<'a> AwsBuilderInstrument<'a> for UpdateGlobalTableSettingsFluentBuilder {
512 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
513 let global_table_name = self.get_global_table_name().clone().unwrap_or_default();
514 DynamodbSpanBuilder::update_global_table_settings(global_table_name)
515 }
516}
517impl InstrumentedFluentBuilderOutput for UpdateGlobalTableSettingsOutput {}
518instrument_aws_operation!(aws_sdk_dynamodb::operation::update_global_table_settings);
519
520impl<'a> AwsBuilderInstrument<'a> for DescribeContinuousBackupsFluentBuilder {
522 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
523 let table_name = self.get_table_name().clone().unwrap_or_default();
524 DynamodbSpanBuilder::describe_continuous_backups(table_name)
525 }
526}
527impl InstrumentedFluentBuilderOutput for DescribeContinuousBackupsOutput {}
528instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_continuous_backups);
529
530impl<'a> AwsBuilderInstrument<'a> for UpdateContinuousBackupsFluentBuilder {
531 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
532 let table_name = self.get_table_name().clone().unwrap_or_default();
533 DynamodbSpanBuilder::update_continuous_backups(table_name)
534 }
535}
536impl InstrumentedFluentBuilderOutput for UpdateContinuousBackupsOutput {}
537instrument_aws_operation!(aws_sdk_dynamodb::operation::update_continuous_backups);
538
539impl<'a> AwsBuilderInstrument<'a> for DescribeTimeToLiveFluentBuilder {
540 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
541 let table_name = self.get_table_name().clone().unwrap_or_default();
542 DynamodbSpanBuilder::describe_time_to_live(table_name)
543 }
544}
545impl InstrumentedFluentBuilderOutput for DescribeTimeToLiveOutput {}
546instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_time_to_live);
547
548impl<'a> AwsBuilderInstrument<'a> for UpdateTimeToLiveFluentBuilder {
549 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
550 let table_name = self.get_table_name().clone().unwrap_or_default();
551 DynamodbSpanBuilder::update_time_to_live(table_name)
552 }
553}
554impl InstrumentedFluentBuilderOutput for UpdateTimeToLiveOutput {}
555instrument_aws_operation!(aws_sdk_dynamodb::operation::update_time_to_live);
556
557impl<'a> AwsBuilderInstrument<'a> for DescribeTableReplicaAutoScalingFluentBuilder {
558 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
559 let table_name = self.get_table_name().clone().unwrap_or_default();
560 DynamodbSpanBuilder::describe_table_replica_auto_scaling(table_name)
561 }
562}
563impl InstrumentedFluentBuilderOutput for DescribeTableReplicaAutoScalingOutput {}
564instrument_aws_operation!(
565 aws_sdk_dynamodb::operation::describe_table_replica_auto_scaling
566);
567
568impl<'a> AwsBuilderInstrument<'a> for UpdateTableReplicaAutoScalingFluentBuilder {
569 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
570 let table_name = self.get_table_name().clone().unwrap_or_default();
571 DynamodbSpanBuilder::update_table_replica_auto_scaling(table_name)
572 }
573}
574impl InstrumentedFluentBuilderOutput for UpdateTableReplicaAutoScalingOutput {}
575instrument_aws_operation!(aws_sdk_dynamodb::operation::update_table_replica_auto_scaling);
576
577impl<'a> AwsBuilderInstrument<'a> for DescribeKinesisStreamingDestinationFluentBuilder {
579 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
580 let table_name = self.get_table_name().clone().unwrap_or_default();
581 DynamodbSpanBuilder::describe_kinesis_streaming_destination(table_name)
582 }
583}
584impl InstrumentedFluentBuilderOutput for DescribeKinesisStreamingDestinationOutput {}
585instrument_aws_operation!(
586 aws_sdk_dynamodb::operation::describe_kinesis_streaming_destination
587);
588
589impl<'a> AwsBuilderInstrument<'a> for EnableKinesisStreamingDestinationFluentBuilder {
590 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
591 let table_name = self.get_table_name().clone().unwrap_or_default();
592 DynamodbSpanBuilder::enable_kinesis_streaming_destination(table_name)
593 }
594}
595impl InstrumentedFluentBuilderOutput for EnableKinesisStreamingDestinationOutput {}
596instrument_aws_operation!(
597 aws_sdk_dynamodb::operation::enable_kinesis_streaming_destination
598);
599
600impl<'a> AwsBuilderInstrument<'a> for DisableKinesisStreamingDestinationFluentBuilder {
601 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
602 let table_name = self.get_table_name().clone().unwrap_or_default();
603 DynamodbSpanBuilder::disable_kinesis_streaming_destination(table_name)
604 }
605}
606impl InstrumentedFluentBuilderOutput for DisableKinesisStreamingDestinationOutput {}
607instrument_aws_operation!(
608 aws_sdk_dynamodb::operation::disable_kinesis_streaming_destination
609);
610
611impl<'a> AwsBuilderInstrument<'a> for UpdateKinesisStreamingDestinationFluentBuilder {
612 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
613 let table_name = self.get_table_name().clone().unwrap_or_default();
614 DynamodbSpanBuilder::update_kinesis_streaming_destination(table_name)
615 }
616}
617impl InstrumentedFluentBuilderOutput for UpdateKinesisStreamingDestinationOutput {}
618instrument_aws_operation!(
619 aws_sdk_dynamodb::operation::update_kinesis_streaming_destination
620);
621
622impl<'a> AwsBuilderInstrument<'a> for DescribeContributorInsightsFluentBuilder {
624 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
625 let table_name = self.get_table_name().clone().unwrap_or_default();
626 let attributes = attributes![
627 self.get_index_name()
628 .as_attribute(semconv::AWS_DYNAMODB_INDEX_NAME)
629 ];
630 DynamodbSpanBuilder::describe_contributor_insights(table_name)
631 .attributes(attributes)
632 }
633}
634impl InstrumentedFluentBuilderOutput for DescribeContributorInsightsOutput {}
635instrument_aws_operation!(aws_sdk_dynamodb::operation::describe_contributor_insights);
636
637impl<'a> AwsBuilderInstrument<'a> for ListContributorInsightsFluentBuilder {
638 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
639 let table_name = self.get_table_name().clone().unwrap_or_default();
640 let attributes = attributes![
641 self.get_max_results()
642 .as_attribute(semconv::AWS_DYNAMODB_LIMIT)
643 ];
644 DynamodbSpanBuilder::list_contributor_insights(table_name).attributes(attributes)
645 }
646}
647impl InstrumentedFluentBuilderOutput for ListContributorInsightsOutput {}
648instrument_aws_operation!(aws_sdk_dynamodb::operation::list_contributor_insights);
649
650impl<'a> AwsBuilderInstrument<'a> for UpdateContributorInsightsFluentBuilder {
651 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
652 let table_name = self.get_table_name().clone().unwrap_or_default();
653 let attributes = attributes![
654 self.get_index_name()
655 .as_attribute(semconv::AWS_DYNAMODB_INDEX_NAME)
656 ];
657 DynamodbSpanBuilder::update_contributor_insights(table_name)
658 .attributes(attributes)
659 }
660}
661impl InstrumentedFluentBuilderOutput for UpdateContributorInsightsOutput {}
662instrument_aws_operation!(aws_sdk_dynamodb::operation::update_contributor_insights);
663
664impl<'a> AwsBuilderInstrument<'a> for ListTagsOfResourceFluentBuilder {
666 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
667 let resource_arn = self.get_resource_arn().clone().unwrap_or_default();
668 DynamodbSpanBuilder::list_tags_of_resource(resource_arn)
669 }
670}
671impl InstrumentedFluentBuilderOutput for ListTagsOfResourceOutput {}
672instrument_aws_operation!(aws_sdk_dynamodb::operation::list_tags_of_resource);
673
674impl<'a> AwsBuilderInstrument<'a> for TagResourceFluentBuilder {
675 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
676 let resource_arn = self.get_resource_arn().clone().unwrap_or_default();
677 DynamodbSpanBuilder::tag_resource(resource_arn)
678 }
679}
680impl InstrumentedFluentBuilderOutput for TagResourceOutput {}
681instrument_aws_operation!(aws_sdk_dynamodb::operation::tag_resource);
682
683impl<'a> AwsBuilderInstrument<'a> for UntagResourceFluentBuilder {
684 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
685 let resource_arn = self.get_resource_arn().clone().unwrap_or_default();
686 DynamodbSpanBuilder::untag_resource(resource_arn)
687 }
688}
689impl InstrumentedFluentBuilderOutput for UntagResourceOutput {}
690instrument_aws_operation!(aws_sdk_dynamodb::operation::untag_resource);