telemetry_rust/middleware/aws/instrumentation/fluent_builder/
s3.rs1use super::{utils::*, *};
3use crate::semconv;
4
5impl<'a> AwsBuilderInstrument<'a> for GetObjectFluentBuilder {
7 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
8 let bucket = self.get_bucket().clone().unwrap_or_default();
9 let key = self.get_key().clone().unwrap_or_default();
10 let attributes = attributes![
11 self.get_part_number()
12 .as_attribute(semconv::AWS_S3_PART_NUMBER),
13 self.get_version_id().as_attribute("aws.s3.version_id"),
14 ];
15 S3SpanBuilder::get_object(bucket, key).attributes(attributes)
16 }
17}
18impl InstrumentedFluentBuilderOutput for GetObjectOutput {
19 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
20 attributes![
21 self.content_length().as_attribute("aws.s3.content_length"),
22 self.content_type().as_attribute("aws.s3.content_type"),
23 self.e_tag().as_attribute("aws.s3.etag"),
24 self.version_id().as_attribute("aws.s3.version_id"),
25 self.last_modified()
26 .map(|lm| KeyValue::new("aws.s3.last_modified", lm.to_string())),
27 self.server_side_encryption().map(|sse| KeyValue::new(
28 "aws.s3.server_side_encryption",
29 sse.as_str().to_owned()
30 )),
31 ]
32 }
33}
34instrument_aws_operation!(aws_sdk_s3::operation::get_object);
35
36impl<'a> AwsBuilderInstrument<'a> for PutObjectFluentBuilder {
37 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
38 let bucket = self.get_bucket().clone().unwrap_or_default();
39 let key = self.get_key().clone().unwrap_or_default();
40 let attributes = attributes![
41 self.get_content_length()
42 .as_attribute("aws.s3.content_length"),
43 ];
44 S3SpanBuilder::put_object(bucket, key).attributes(attributes)
45 }
46}
47impl InstrumentedFluentBuilderOutput for PutObjectOutput {
48 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
49 attributes![
50 self.e_tag().as_attribute("aws.s3.etag"),
51 self.version_id().as_attribute("aws.s3.version_id"),
52 self.server_side_encryption().map(|sse| KeyValue::new(
53 "aws.s3.server_side_encryption",
54 sse.as_str().to_owned()
55 )),
56 ]
57 }
58}
59instrument_aws_operation!(aws_sdk_s3::operation::put_object);
60
61impl<'a> AwsBuilderInstrument<'a> for HeadObjectFluentBuilder {
62 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
63 let bucket = self.get_bucket().clone().unwrap_or_default();
64 let key = self.get_key().clone().unwrap_or_default();
65 let attributes = attributes![
66 self.get_part_number()
67 .as_attribute(semconv::AWS_S3_PART_NUMBER),
68 self.get_version_id().as_attribute("aws.s3.version_id"),
69 ];
70 S3SpanBuilder::head_object(bucket, key).attributes(attributes)
71 }
72}
73impl InstrumentedFluentBuilderOutput for HeadObjectOutput {
74 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
75 attributes![
76 self.content_length().as_attribute("aws.s3.content_length"),
77 self.content_type().as_attribute("aws.s3.content_type"),
78 self.e_tag().as_attribute("aws.s3.etag"),
79 self.version_id().as_attribute("aws.s3.version_id"),
80 self.last_modified()
81 .map(|lm| KeyValue::new("aws.s3.last_modified", lm.to_string())),
82 self.server_side_encryption().map(|sse| KeyValue::new(
83 "aws.s3.server_side_encryption",
84 sse.as_str().to_owned()
85 )),
86 ]
87 }
88}
89instrument_aws_operation!(aws_sdk_s3::operation::head_object);
90
91impl<'a> AwsBuilderInstrument<'a> for CopyObjectFluentBuilder {
92 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
93 let bucket = self.get_bucket().clone().unwrap_or_default();
94 let key = self.get_key().clone().unwrap_or_default();
95 let attributes = attributes![
96 self.get_copy_source()
97 .as_attribute(semconv::AWS_S3_COPY_SOURCE),
98 ];
99 S3SpanBuilder::copy_object(bucket, key).attributes(attributes)
100 }
101}
102impl InstrumentedFluentBuilderOutput for CopyObjectOutput {
103 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
104 attributes![
105 self.copy_object_result()
106 .and_then(|r| r.e_tag())
107 .as_attribute("aws.s3.etag"),
108 self.version_id().as_attribute("aws.s3.version_id"),
109 self.server_side_encryption().map(|sse| KeyValue::new(
110 "aws.s3.server_side_encryption",
111 sse.as_str().to_owned()
112 )),
113 ]
114 }
115}
116instrument_aws_operation!(aws_sdk_s3::operation::copy_object);
117
118impl<'a> AwsBuilderInstrument<'a> for DeleteObjectFluentBuilder {
119 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
120 let bucket = self.get_bucket().clone().unwrap_or_default();
121 let key = self.get_key().clone().unwrap_or_default();
122 let attributes =
123 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
124 S3SpanBuilder::delete_object(bucket, key).attributes(attributes)
125 }
126}
127impl InstrumentedFluentBuilderOutput for DeleteObjectOutput {
128 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
129 attributes![
130 self.delete_marker().as_attribute(semconv::AWS_S3_DELETE),
131 self.version_id().as_attribute("aws.s3.version_id"),
132 ]
133 }
134}
135instrument_aws_operation!(aws_sdk_s3::operation::delete_object);
136
137impl<'a> AwsBuilderInstrument<'a> for DeleteObjectsFluentBuilder {
138 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
139 let bucket = self.get_bucket().clone().unwrap_or_default();
140 let attributes =
141 attributes![self.get_delete().as_ref().map(|del| KeyValue::new(
142 "aws.s3.delete_objects.request_count",
143 del.objects().len() as i64
144 )),];
145 S3SpanBuilder::delete_objects(bucket).attributes(attributes)
146 }
147}
148impl InstrumentedFluentBuilderOutput for DeleteObjectsOutput {
149 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
150 attributes![
151 self.deleted()
152 .len()
153 .as_attribute("aws.s3.delete_objects.deleted_count"),
154 self.errors()
155 .len()
156 .as_attribute("aws.s3.delete_objects.error_count"),
157 ]
158 }
159}
160instrument_aws_operation!(aws_sdk_s3::operation::delete_objects);
161
162impl<'a> AwsBuilderInstrument<'a> for RenameObjectFluentBuilder {
163 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
164 let bucket = self.get_bucket().clone().unwrap_or_default();
165 let key = self.get_key().clone().unwrap_or_default();
166 S3SpanBuilder::rename_object(bucket, key)
167 }
168}
169impl InstrumentedFluentBuilderOutput for RenameObjectOutput {}
170instrument_aws_operation!(aws_sdk_s3::operation::rename_object);
171
172impl<'a> AwsBuilderInstrument<'a> for RestoreObjectFluentBuilder {
173 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
174 let bucket = self.get_bucket().clone().unwrap_or_default();
175 let key = self.get_key().clone().unwrap_or_default();
176 let attributes =
177 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
178 S3SpanBuilder::restore_object(bucket, key).attributes(attributes)
179 }
180}
181impl InstrumentedFluentBuilderOutput for RestoreObjectOutput {}
182instrument_aws_operation!(aws_sdk_s3::operation::restore_object);
183
184impl<'a> AwsBuilderInstrument<'a> for SelectObjectContentFluentBuilder {
185 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
186 let bucket = self.get_bucket().clone().unwrap_or_default();
187 let key = self.get_key().clone().unwrap_or_default();
188 S3SpanBuilder::select_object_content(bucket, key)
189 }
190}
191impl InstrumentedFluentBuilderOutput for SelectObjectContentOutput {}
192instrument_aws_operation!(aws_sdk_s3::operation::select_object_content);
193
194impl<'a> AwsBuilderInstrument<'a> for GetObjectTorrentFluentBuilder {
195 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
196 let bucket = self.get_bucket().clone().unwrap_or_default();
197 let key = self.get_key().clone().unwrap_or_default();
198 S3SpanBuilder::get_object_torrent(bucket, key)
199 }
200}
201impl InstrumentedFluentBuilderOutput for GetObjectTorrentOutput {}
202instrument_aws_operation!(aws_sdk_s3::operation::get_object_torrent);
203
204impl<'a> AwsBuilderInstrument<'a> for ListObjectsFluentBuilder {
206 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
207 let bucket = self.get_bucket().clone().unwrap_or_default();
208 let attributes = attributes![
209 self.get_prefix().as_attribute("aws.s3.prefix"),
210 self.get_max_keys().as_attribute("aws.s3.max_keys"),
211 ];
212 S3SpanBuilder::list_objects(bucket).attributes(attributes)
213 }
214}
215impl InstrumentedFluentBuilderOutput for ListObjectsOutput {
216 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
217 attributes![self.is_truncated().as_attribute("aws.s3.is_truncated"),]
218 }
219}
220instrument_aws_operation!(aws_sdk_s3::operation::list_objects);
221
222impl<'a> AwsBuilderInstrument<'a> for ListObjectsV2FluentBuilder {
223 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
224 let bucket = self.get_bucket().clone().unwrap_or_default();
225 let attributes = attributes![
226 self.get_prefix().as_attribute("aws.s3.prefix"),
227 self.get_max_keys().as_attribute("aws.s3.max_keys"),
228 ];
229 S3SpanBuilder::list_objects_v2(bucket).attributes(attributes)
230 }
231}
232impl InstrumentedFluentBuilderOutput for ListObjectsV2Output {
233 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
234 attributes![
235 self.key_count().as_attribute("aws.s3.key_count"),
236 self.is_truncated().as_attribute("aws.s3.is_truncated"),
237 ]
238 }
239}
240instrument_aws_operation!(aws_sdk_s3::operation::list_objects_v2);
241
242impl<'a> AwsBuilderInstrument<'a> for ListObjectVersionsFluentBuilder {
243 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
244 let bucket = self.get_bucket().clone().unwrap_or_default();
245 let attributes = attributes![
246 self.get_prefix().as_attribute("aws.s3.prefix"),
247 self.get_max_keys().as_attribute("aws.s3.max_keys"),
248 ];
249 S3SpanBuilder::list_object_versions(bucket).attributes(attributes)
250 }
251}
252impl InstrumentedFluentBuilderOutput for ListObjectVersionsOutput {
253 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
254 attributes![self.is_truncated().as_attribute("aws.s3.is_truncated"),]
255 }
256}
257instrument_aws_operation!(aws_sdk_s3::operation::list_object_versions);
258
259impl<'a> AwsBuilderInstrument<'a> for CreateMultipartUploadFluentBuilder {
261 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
262 let bucket = self.get_bucket().clone().unwrap_or_default();
263 let key = self.get_key().clone().unwrap_or_default();
264 S3SpanBuilder::create_multipart_upload(bucket, key)
265 }
266}
267impl InstrumentedFluentBuilderOutput for CreateMultipartUploadOutput {
268 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
269 attributes![
270 self.upload_id().as_attribute(semconv::AWS_S3_UPLOAD_ID),
271 self.server_side_encryption().map(|sse| KeyValue::new(
272 "aws.s3.server_side_encryption",
273 sse.as_str().to_owned()
274 )),
275 ]
276 }
277}
278instrument_aws_operation!(aws_sdk_s3::operation::create_multipart_upload);
279
280impl<'a> AwsBuilderInstrument<'a> for UploadPartFluentBuilder {
281 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
282 let bucket = self.get_bucket().clone().unwrap_or_default();
283 let key = self.get_key().clone().unwrap_or_default();
284 let attributes = attributes![
285 self.get_upload_id().as_attribute(semconv::AWS_S3_UPLOAD_ID),
286 self.get_part_number()
287 .as_attribute(semconv::AWS_S3_PART_NUMBER),
288 self.get_content_length()
289 .as_attribute("aws.s3.content_length"),
290 ];
291 S3SpanBuilder::upload_part(bucket, key).attributes(attributes)
292 }
293}
294impl InstrumentedFluentBuilderOutput for UploadPartOutput {
295 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
296 attributes![
297 self.e_tag().as_attribute("aws.s3.etag"),
298 self.server_side_encryption().map(|sse| KeyValue::new(
299 "aws.s3.server_side_encryption",
300 sse.as_str().to_owned()
301 )),
302 ]
303 }
304}
305instrument_aws_operation!(aws_sdk_s3::operation::upload_part);
306
307impl<'a> AwsBuilderInstrument<'a> for UploadPartCopyFluentBuilder {
308 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
309 let bucket = self.get_bucket().clone().unwrap_or_default();
310 let key = self.get_key().clone().unwrap_or_default();
311 let attributes = attributes![
312 self.get_upload_id().as_attribute(semconv::AWS_S3_UPLOAD_ID),
313 self.get_part_number()
314 .as_attribute(semconv::AWS_S3_PART_NUMBER),
315 self.get_copy_source()
316 .as_attribute(semconv::AWS_S3_COPY_SOURCE),
317 ];
318 S3SpanBuilder::upload_part_copy(bucket, key).attributes(attributes)
319 }
320}
321impl InstrumentedFluentBuilderOutput for UploadPartCopyOutput {
322 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
323 attributes![
324 self.copy_part_result()
325 .and_then(|r| r.e_tag())
326 .as_attribute("aws.s3.etag"),
327 self.server_side_encryption().map(|sse| KeyValue::new(
328 "aws.s3.server_side_encryption",
329 sse.as_str().to_owned()
330 )),
331 ]
332 }
333}
334instrument_aws_operation!(aws_sdk_s3::operation::upload_part_copy);
335
336impl<'a> AwsBuilderInstrument<'a> for CompleteMultipartUploadFluentBuilder {
337 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
338 let bucket = self.get_bucket().clone().unwrap_or_default();
339 let key = self.get_key().clone().unwrap_or_default();
340 let attributes = attributes![
341 self.get_upload_id().as_attribute(semconv::AWS_S3_UPLOAD_ID),
342 self.get_multipart_upload().as_ref().map(|mu| KeyValue::new(
343 "aws.s3.multipart.parts_count",
344 mu.parts().len() as i64
345 )),
346 ];
347 S3SpanBuilder::complete_multipart_upload(bucket, key).attributes(attributes)
348 }
349}
350impl InstrumentedFluentBuilderOutput for CompleteMultipartUploadOutput {
351 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
352 attributes![
353 self.e_tag().as_attribute("aws.s3.etag"),
354 self.version_id().as_attribute("aws.s3.version_id"),
355 self.location().as_attribute("aws.s3.location"),
356 self.server_side_encryption().map(|sse| KeyValue::new(
357 "aws.s3.server_side_encryption",
358 sse.as_str().to_owned()
359 )),
360 ]
361 }
362}
363instrument_aws_operation!(aws_sdk_s3::operation::complete_multipart_upload);
364
365impl<'a> AwsBuilderInstrument<'a> for AbortMultipartUploadFluentBuilder {
366 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
367 let bucket = self.get_bucket().clone().unwrap_or_default();
368 let key = self.get_key().clone().unwrap_or_default();
369 let attributes =
370 attributes![self.get_upload_id().as_attribute(semconv::AWS_S3_UPLOAD_ID),];
371 S3SpanBuilder::abort_multipart_upload(bucket, key).attributes(attributes)
372 }
373}
374impl InstrumentedFluentBuilderOutput for AbortMultipartUploadOutput {}
375instrument_aws_operation!(aws_sdk_s3::operation::abort_multipart_upload);
376
377impl<'a> AwsBuilderInstrument<'a> for ListMultipartUploadsFluentBuilder {
378 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
379 let bucket = self.get_bucket().clone().unwrap_or_default();
380 let attributes = attributes![
381 self.get_prefix().as_attribute("aws.s3.prefix"),
382 self.get_max_uploads().as_attribute("aws.s3.max_uploads"),
383 ];
384 S3SpanBuilder::list_multipart_uploads(bucket).attributes(attributes)
385 }
386}
387impl InstrumentedFluentBuilderOutput for ListMultipartUploadsOutput {
388 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
389 attributes![self.is_truncated().as_attribute("aws.s3.is_truncated"),]
390 }
391}
392instrument_aws_operation!(aws_sdk_s3::operation::list_multipart_uploads);
393
394impl<'a> AwsBuilderInstrument<'a> for ListPartsFluentBuilder {
395 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
396 let bucket = self.get_bucket().clone().unwrap_or_default();
397 let key = self.get_key().clone().unwrap_or_default();
398 let attributes = attributes![
399 self.get_upload_id().as_attribute(semconv::AWS_S3_UPLOAD_ID),
400 self.get_max_parts().as_attribute("aws.s3.max_parts"),
401 ];
402 S3SpanBuilder::list_parts(bucket, key).attributes(attributes)
403 }
404}
405impl InstrumentedFluentBuilderOutput for ListPartsOutput {
406 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
407 attributes![
408 self.parts()
409 .len()
410 .as_attribute("aws.s3.multipart.parts_count"),
411 self.is_truncated().as_attribute("aws.s3.is_truncated"),
412 ]
413 }
414}
415instrument_aws_operation!(aws_sdk_s3::operation::list_parts);
416
417impl<'a> AwsBuilderInstrument<'a> for CreateBucketFluentBuilder {
419 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
420 let bucket = self.get_bucket().clone().unwrap_or_default();
421 S3SpanBuilder::create_bucket(bucket)
422 }
423}
424impl InstrumentedFluentBuilderOutput for CreateBucketOutput {
425 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
426 attributes![self.location().as_attribute("aws.s3.bucket.location"),]
427 }
428}
429instrument_aws_operation!(aws_sdk_s3::operation::create_bucket);
430
431impl<'a> AwsBuilderInstrument<'a> for DeleteBucketFluentBuilder {
432 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
433 let bucket = self.get_bucket().clone().unwrap_or_default();
434 S3SpanBuilder::delete_bucket(bucket)
435 }
436}
437impl InstrumentedFluentBuilderOutput for DeleteBucketOutput {}
438instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket);
439
440impl<'a> AwsBuilderInstrument<'a> for HeadBucketFluentBuilder {
441 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
442 let bucket = self.get_bucket().clone().unwrap_or_default();
443 S3SpanBuilder::head_bucket(bucket)
444 }
445}
446impl InstrumentedFluentBuilderOutput for HeadBucketOutput {
447 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
448 attributes![self.bucket_region().as_attribute("aws.s3.bucket.region"),]
449 }
450}
451instrument_aws_operation!(aws_sdk_s3::operation::head_bucket);
452
453impl<'a> AwsBuilderInstrument<'a> for CreateSessionFluentBuilder {
454 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
455 let bucket = self.get_bucket().clone().unwrap_or_default();
456 S3SpanBuilder::create_session(bucket)
457 }
458}
459impl InstrumentedFluentBuilderOutput for CreateSessionOutput {
460 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
461 attributes![self.server_side_encryption().map(|sse| KeyValue::new(
462 "aws.s3.server_side_encryption",
463 sse.as_str().to_owned()
464 )),]
465 }
466}
467instrument_aws_operation!(aws_sdk_s3::operation::create_session);
468
469impl<'a> AwsBuilderInstrument<'a> for ListBucketsFluentBuilder {
471 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
472 S3SpanBuilder::list_buckets()
473 }
474}
475impl InstrumentedFluentBuilderOutput for ListBucketsOutput {
476 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
477 attributes![self.buckets().len().as_attribute("aws.s3.bucket.count"),]
478 }
479}
480instrument_aws_operation!(aws_sdk_s3::operation::list_buckets);
481
482impl<'a> AwsBuilderInstrument<'a> for ListDirectoryBucketsFluentBuilder {
483 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
484 S3SpanBuilder::list_directory_buckets()
485 }
486}
487impl InstrumentedFluentBuilderOutput for ListDirectoryBucketsOutput {}
488instrument_aws_operation!(aws_sdk_s3::operation::list_directory_buckets);
489
490impl<'a> AwsBuilderInstrument<'a> for WriteGetObjectResponseFluentBuilder {
491 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
492 let attributes = attributes![
493 self.get_content_length()
494 .as_attribute("aws.s3.content_length"),
495 self.get_version_id().as_attribute("aws.s3.version_id"),
496 ];
497 S3SpanBuilder::write_get_object_response().attributes(attributes)
498 }
499}
500impl InstrumentedFluentBuilderOutput for WriteGetObjectResponseOutput {}
501instrument_aws_operation!(aws_sdk_s3::operation::write_get_object_response);
502
503impl<'a> AwsBuilderInstrument<'a> for GetObjectAclFluentBuilder {
505 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
506 let bucket = self.get_bucket().clone().unwrap_or_default();
507 let key = self.get_key().clone().unwrap_or_default();
508 let attributes =
509 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
510 S3SpanBuilder::get_object_acl(bucket, key).attributes(attributes)
511 }
512}
513impl InstrumentedFluentBuilderOutput for GetObjectAclOutput {}
514instrument_aws_operation!(aws_sdk_s3::operation::get_object_acl);
515
516impl<'a> AwsBuilderInstrument<'a> for PutObjectAclFluentBuilder {
517 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
518 let bucket = self.get_bucket().clone().unwrap_or_default();
519 let key = self.get_key().clone().unwrap_or_default();
520 let attributes =
521 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
522 S3SpanBuilder::put_object_acl(bucket, key).attributes(attributes)
523 }
524}
525impl InstrumentedFluentBuilderOutput for PutObjectAclOutput {}
526instrument_aws_operation!(aws_sdk_s3::operation::put_object_acl);
527
528impl<'a> AwsBuilderInstrument<'a> for GetObjectAttributesFluentBuilder {
529 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
530 let bucket = self.get_bucket().clone().unwrap_or_default();
531 let key = self.get_key().clone().unwrap_or_default();
532 let attributes =
533 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
534 S3SpanBuilder::get_object_attributes(bucket, key).attributes(attributes)
535 }
536}
537impl InstrumentedFluentBuilderOutput for GetObjectAttributesOutput {
538 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
539 attributes![
540 self.e_tag().as_attribute("aws.s3.etag"),
541 self.version_id().as_attribute("aws.s3.version_id"),
542 self.last_modified()
543 .map(|lm| KeyValue::new("aws.s3.last_modified", lm.to_string())),
544 ]
545 }
546}
547instrument_aws_operation!(aws_sdk_s3::operation::get_object_attributes);
548
549impl<'a> AwsBuilderInstrument<'a> for GetObjectTaggingFluentBuilder {
551 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
552 let bucket = self.get_bucket().clone().unwrap_or_default();
553 let key = self.get_key().clone().unwrap_or_default();
554 let attributes =
555 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
556 S3SpanBuilder::get_object_tagging(bucket, key).attributes(attributes)
557 }
558}
559impl InstrumentedFluentBuilderOutput for GetObjectTaggingOutput {
560 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
561 attributes![self.version_id().as_attribute("aws.s3.version_id"),]
562 }
563}
564instrument_aws_operation!(aws_sdk_s3::operation::get_object_tagging);
565
566impl<'a> AwsBuilderInstrument<'a> for PutObjectTaggingFluentBuilder {
567 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
568 let bucket = self.get_bucket().clone().unwrap_or_default();
569 let key = self.get_key().clone().unwrap_or_default();
570 let attributes =
571 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
572 S3SpanBuilder::put_object_tagging(bucket, key).attributes(attributes)
573 }
574}
575impl InstrumentedFluentBuilderOutput for PutObjectTaggingOutput {
576 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
577 attributes![self.version_id().as_attribute("aws.s3.version_id"),]
578 }
579}
580instrument_aws_operation!(aws_sdk_s3::operation::put_object_tagging);
581
582impl<'a> AwsBuilderInstrument<'a> for DeleteObjectTaggingFluentBuilder {
583 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
584 let bucket = self.get_bucket().clone().unwrap_or_default();
585 let key = self.get_key().clone().unwrap_or_default();
586 let attributes =
587 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
588 S3SpanBuilder::delete_object_tagging(bucket, key).attributes(attributes)
589 }
590}
591impl InstrumentedFluentBuilderOutput for DeleteObjectTaggingOutput {
592 fn extract_attributes(&self) -> impl IntoIterator<Item = KeyValue> {
593 attributes![self.version_id().as_attribute("aws.s3.version_id"),]
594 }
595}
596instrument_aws_operation!(aws_sdk_s3::operation::delete_object_tagging);
597
598impl<'a> AwsBuilderInstrument<'a> for GetObjectLegalHoldFluentBuilder {
600 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
601 let bucket = self.get_bucket().clone().unwrap_or_default();
602 let key = self.get_key().clone().unwrap_or_default();
603 let attributes =
604 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
605 S3SpanBuilder::get_object_legal_hold(bucket, key).attributes(attributes)
606 }
607}
608impl InstrumentedFluentBuilderOutput for GetObjectLegalHoldOutput {}
609instrument_aws_operation!(aws_sdk_s3::operation::get_object_legal_hold);
610
611impl<'a> AwsBuilderInstrument<'a> for PutObjectLegalHoldFluentBuilder {
612 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
613 let bucket = self.get_bucket().clone().unwrap_or_default();
614 let key = self.get_key().clone().unwrap_or_default();
615 let attributes =
616 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
617 S3SpanBuilder::put_object_legal_hold(bucket, key).attributes(attributes)
618 }
619}
620impl InstrumentedFluentBuilderOutput for PutObjectLegalHoldOutput {}
621instrument_aws_operation!(aws_sdk_s3::operation::put_object_legal_hold);
622
623impl<'a> AwsBuilderInstrument<'a> for GetObjectRetentionFluentBuilder {
624 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
625 let bucket = self.get_bucket().clone().unwrap_or_default();
626 let key = self.get_key().clone().unwrap_or_default();
627 let attributes =
628 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
629 S3SpanBuilder::get_object_retention(bucket, key).attributes(attributes)
630 }
631}
632impl InstrumentedFluentBuilderOutput for GetObjectRetentionOutput {}
633instrument_aws_operation!(aws_sdk_s3::operation::get_object_retention);
634
635impl<'a> AwsBuilderInstrument<'a> for PutObjectRetentionFluentBuilder {
636 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
637 let bucket = self.get_bucket().clone().unwrap_or_default();
638 let key = self.get_key().clone().unwrap_or_default();
639 let attributes =
640 attributes![self.get_version_id().as_attribute("aws.s3.version_id"),];
641 S3SpanBuilder::put_object_retention(bucket, key).attributes(attributes)
642 }
643}
644impl InstrumentedFluentBuilderOutput for PutObjectRetentionOutput {}
645instrument_aws_operation!(aws_sdk_s3::operation::put_object_retention);
646
647impl<'a> AwsBuilderInstrument<'a> for GetObjectLockConfigurationFluentBuilder {
648 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
649 let bucket = self.get_bucket().clone().unwrap_or_default();
650 S3SpanBuilder::get_object_lock_configuration(bucket)
651 }
652}
653impl InstrumentedFluentBuilderOutput for GetObjectLockConfigurationOutput {}
654instrument_aws_operation!(aws_sdk_s3::operation::get_object_lock_configuration);
655
656impl<'a> AwsBuilderInstrument<'a> for PutObjectLockConfigurationFluentBuilder {
657 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
658 let bucket = self.get_bucket().clone().unwrap_or_default();
659 S3SpanBuilder::put_object_lock_configuration(bucket)
660 }
661}
662impl InstrumentedFluentBuilderOutput for PutObjectLockConfigurationOutput {}
663instrument_aws_operation!(aws_sdk_s3::operation::put_object_lock_configuration);
664
665impl<'a> AwsBuilderInstrument<'a> for GetBucketAclFluentBuilder {
667 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
668 let bucket = self.get_bucket().clone().unwrap_or_default();
669 S3SpanBuilder::get_bucket_acl(bucket)
670 }
671}
672impl InstrumentedFluentBuilderOutput for GetBucketAclOutput {}
673instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_acl);
674
675impl<'a> AwsBuilderInstrument<'a> for PutBucketAclFluentBuilder {
676 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
677 let bucket = self.get_bucket().clone().unwrap_or_default();
678 S3SpanBuilder::put_bucket_acl(bucket)
679 }
680}
681impl InstrumentedFluentBuilderOutput for PutBucketAclOutput {}
682instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_acl);
683
684impl<'a> AwsBuilderInstrument<'a> for GetBucketPolicyFluentBuilder {
685 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
686 let bucket = self.get_bucket().clone().unwrap_or_default();
687 S3SpanBuilder::get_bucket_policy(bucket)
688 }
689}
690impl InstrumentedFluentBuilderOutput for GetBucketPolicyOutput {}
691instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_policy);
692
693impl<'a> AwsBuilderInstrument<'a> for PutBucketPolicyFluentBuilder {
694 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
695 let bucket = self.get_bucket().clone().unwrap_or_default();
696 S3SpanBuilder::put_bucket_policy(bucket)
697 }
698}
699impl InstrumentedFluentBuilderOutput for PutBucketPolicyOutput {}
700instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_policy);
701
702impl<'a> AwsBuilderInstrument<'a> for DeleteBucketPolicyFluentBuilder {
703 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
704 let bucket = self.get_bucket().clone().unwrap_or_default();
705 S3SpanBuilder::delete_bucket_policy(bucket)
706 }
707}
708impl InstrumentedFluentBuilderOutput for DeleteBucketPolicyOutput {}
709instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_policy);
710
711impl<'a> AwsBuilderInstrument<'a> for GetBucketPolicyStatusFluentBuilder {
712 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
713 let bucket = self.get_bucket().clone().unwrap_or_default();
714 S3SpanBuilder::get_bucket_policy_status(bucket)
715 }
716}
717impl InstrumentedFluentBuilderOutput for GetBucketPolicyStatusOutput {}
718instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_policy_status);
719
720impl<'a> AwsBuilderInstrument<'a> for GetBucketCorsFluentBuilder {
722 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
723 let bucket = self.get_bucket().clone().unwrap_or_default();
724 S3SpanBuilder::get_bucket_cors(bucket)
725 }
726}
727impl InstrumentedFluentBuilderOutput for GetBucketCorsOutput {}
728instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_cors);
729
730impl<'a> AwsBuilderInstrument<'a> for PutBucketCorsFluentBuilder {
731 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
732 let bucket = self.get_bucket().clone().unwrap_or_default();
733 S3SpanBuilder::put_bucket_cors(bucket)
734 }
735}
736impl InstrumentedFluentBuilderOutput for PutBucketCorsOutput {}
737instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_cors);
738
739impl<'a> AwsBuilderInstrument<'a> for DeleteBucketCorsFluentBuilder {
740 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
741 let bucket = self.get_bucket().clone().unwrap_or_default();
742 S3SpanBuilder::delete_bucket_cors(bucket)
743 }
744}
745impl InstrumentedFluentBuilderOutput for DeleteBucketCorsOutput {}
746instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_cors);
747
748impl<'a> AwsBuilderInstrument<'a> for GetBucketEncryptionFluentBuilder {
750 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
751 let bucket = self.get_bucket().clone().unwrap_or_default();
752 S3SpanBuilder::get_bucket_encryption(bucket)
753 }
754}
755impl InstrumentedFluentBuilderOutput for GetBucketEncryptionOutput {}
756instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_encryption);
757
758impl<'a> AwsBuilderInstrument<'a> for PutBucketEncryptionFluentBuilder {
759 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
760 let bucket = self.get_bucket().clone().unwrap_or_default();
761 S3SpanBuilder::put_bucket_encryption(bucket)
762 }
763}
764impl InstrumentedFluentBuilderOutput for PutBucketEncryptionOutput {}
765instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_encryption);
766
767impl<'a> AwsBuilderInstrument<'a> for DeleteBucketEncryptionFluentBuilder {
768 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
769 let bucket = self.get_bucket().clone().unwrap_or_default();
770 S3SpanBuilder::delete_bucket_encryption(bucket)
771 }
772}
773impl InstrumentedFluentBuilderOutput for DeleteBucketEncryptionOutput {}
774instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_encryption);
775
776impl<'a> AwsBuilderInstrument<'a> for GetBucketLifecycleConfigurationFluentBuilder {
778 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
779 let bucket = self.get_bucket().clone().unwrap_or_default();
780 S3SpanBuilder::get_bucket_lifecycle_configuration(bucket)
781 }
782}
783impl InstrumentedFluentBuilderOutput for GetBucketLifecycleConfigurationOutput {}
784instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_lifecycle_configuration);
785
786impl<'a> AwsBuilderInstrument<'a> for PutBucketLifecycleConfigurationFluentBuilder {
787 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
788 let bucket = self.get_bucket().clone().unwrap_or_default();
789 S3SpanBuilder::put_bucket_lifecycle_configuration(bucket)
790 }
791}
792impl InstrumentedFluentBuilderOutput for PutBucketLifecycleConfigurationOutput {}
793instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_lifecycle_configuration);
794
795impl<'a> AwsBuilderInstrument<'a> for DeleteBucketLifecycleFluentBuilder {
796 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
797 let bucket = self.get_bucket().clone().unwrap_or_default();
798 S3SpanBuilder::delete_bucket_lifecycle(bucket)
799 }
800}
801impl InstrumentedFluentBuilderOutput for DeleteBucketLifecycleOutput {}
802instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_lifecycle);
803
804impl<'a> AwsBuilderInstrument<'a> for GetBucketReplicationFluentBuilder {
806 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
807 let bucket = self.get_bucket().clone().unwrap_or_default();
808 S3SpanBuilder::get_bucket_replication(bucket)
809 }
810}
811impl InstrumentedFluentBuilderOutput for GetBucketReplicationOutput {}
812instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_replication);
813
814impl<'a> AwsBuilderInstrument<'a> for PutBucketReplicationFluentBuilder {
815 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
816 let bucket = self.get_bucket().clone().unwrap_or_default();
817 S3SpanBuilder::put_bucket_replication(bucket)
818 }
819}
820impl InstrumentedFluentBuilderOutput for PutBucketReplicationOutput {}
821instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_replication);
822
823impl<'a> AwsBuilderInstrument<'a> for DeleteBucketReplicationFluentBuilder {
824 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
825 let bucket = self.get_bucket().clone().unwrap_or_default();
826 S3SpanBuilder::delete_bucket_replication(bucket)
827 }
828}
829impl InstrumentedFluentBuilderOutput for DeleteBucketReplicationOutput {}
830instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_replication);
831
832impl<'a> AwsBuilderInstrument<'a> for GetBucketTaggingFluentBuilder {
834 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
835 let bucket = self.get_bucket().clone().unwrap_or_default();
836 S3SpanBuilder::get_bucket_tagging(bucket)
837 }
838}
839impl InstrumentedFluentBuilderOutput for GetBucketTaggingOutput {}
840instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_tagging);
841
842impl<'a> AwsBuilderInstrument<'a> for PutBucketTaggingFluentBuilder {
843 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
844 let bucket = self.get_bucket().clone().unwrap_or_default();
845 S3SpanBuilder::put_bucket_tagging(bucket)
846 }
847}
848impl InstrumentedFluentBuilderOutput for PutBucketTaggingOutput {}
849instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_tagging);
850
851impl<'a> AwsBuilderInstrument<'a> for DeleteBucketTaggingFluentBuilder {
852 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
853 let bucket = self.get_bucket().clone().unwrap_or_default();
854 S3SpanBuilder::delete_bucket_tagging(bucket)
855 }
856}
857impl InstrumentedFluentBuilderOutput for DeleteBucketTaggingOutput {}
858instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_tagging);
859
860impl<'a> AwsBuilderInstrument<'a> for GetBucketVersioningFluentBuilder {
862 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
863 let bucket = self.get_bucket().clone().unwrap_or_default();
864 S3SpanBuilder::get_bucket_versioning(bucket)
865 }
866}
867impl InstrumentedFluentBuilderOutput for GetBucketVersioningOutput {}
868instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_versioning);
869
870impl<'a> AwsBuilderInstrument<'a> for PutBucketVersioningFluentBuilder {
871 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
872 let bucket = self.get_bucket().clone().unwrap_or_default();
873 S3SpanBuilder::put_bucket_versioning(bucket)
874 }
875}
876impl InstrumentedFluentBuilderOutput for PutBucketVersioningOutput {}
877instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_versioning);
878
879impl<'a> AwsBuilderInstrument<'a> for GetBucketWebsiteFluentBuilder {
881 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
882 let bucket = self.get_bucket().clone().unwrap_or_default();
883 S3SpanBuilder::get_bucket_website(bucket)
884 }
885}
886impl InstrumentedFluentBuilderOutput for GetBucketWebsiteOutput {}
887instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_website);
888
889impl<'a> AwsBuilderInstrument<'a> for PutBucketWebsiteFluentBuilder {
890 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
891 let bucket = self.get_bucket().clone().unwrap_or_default();
892 S3SpanBuilder::put_bucket_website(bucket)
893 }
894}
895impl InstrumentedFluentBuilderOutput for PutBucketWebsiteOutput {}
896instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_website);
897
898impl<'a> AwsBuilderInstrument<'a> for DeleteBucketWebsiteFluentBuilder {
899 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
900 let bucket = self.get_bucket().clone().unwrap_or_default();
901 S3SpanBuilder::delete_bucket_website(bucket)
902 }
903}
904impl InstrumentedFluentBuilderOutput for DeleteBucketWebsiteOutput {}
905instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_website);
906
907impl<'a> AwsBuilderInstrument<'a> for GetBucketLoggingFluentBuilder {
909 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
910 let bucket = self.get_bucket().clone().unwrap_or_default();
911 S3SpanBuilder::get_bucket_logging(bucket)
912 }
913}
914impl InstrumentedFluentBuilderOutput for GetBucketLoggingOutput {}
915instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_logging);
916
917impl<'a> AwsBuilderInstrument<'a> for PutBucketLoggingFluentBuilder {
918 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
919 let bucket = self.get_bucket().clone().unwrap_or_default();
920 S3SpanBuilder::put_bucket_logging(bucket)
921 }
922}
923impl InstrumentedFluentBuilderOutput for PutBucketLoggingOutput {}
924instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_logging);
925
926impl<'a> AwsBuilderInstrument<'a> for GetBucketNotificationConfigurationFluentBuilder {
928 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
929 let bucket = self.get_bucket().clone().unwrap_or_default();
930 S3SpanBuilder::get_bucket_notification_configuration(bucket)
931 }
932}
933impl InstrumentedFluentBuilderOutput for GetBucketNotificationConfigurationOutput {}
934instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_notification_configuration);
935
936impl<'a> AwsBuilderInstrument<'a> for PutBucketNotificationConfigurationFluentBuilder {
937 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
938 let bucket = self.get_bucket().clone().unwrap_or_default();
939 S3SpanBuilder::put_bucket_notification_configuration(bucket)
940 }
941}
942impl InstrumentedFluentBuilderOutput for PutBucketNotificationConfigurationOutput {}
943instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_notification_configuration);
944
945impl<'a> AwsBuilderInstrument<'a> for GetBucketLocationFluentBuilder {
947 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
948 let bucket = self.get_bucket().clone().unwrap_or_default();
949 S3SpanBuilder::get_bucket_location(bucket)
950 }
951}
952impl InstrumentedFluentBuilderOutput for GetBucketLocationOutput {}
953instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_location);
954
955impl<'a> AwsBuilderInstrument<'a> for GetBucketAccelerateConfigurationFluentBuilder {
957 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
958 let bucket = self.get_bucket().clone().unwrap_or_default();
959 S3SpanBuilder::get_bucket_accelerate_configuration(bucket)
960 }
961}
962impl InstrumentedFluentBuilderOutput for GetBucketAccelerateConfigurationOutput {}
963instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_accelerate_configuration);
964
965impl<'a> AwsBuilderInstrument<'a> for PutBucketAccelerateConfigurationFluentBuilder {
966 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
967 let bucket = self.get_bucket().clone().unwrap_or_default();
968 S3SpanBuilder::put_bucket_accelerate_configuration(bucket)
969 }
970}
971impl InstrumentedFluentBuilderOutput for PutBucketAccelerateConfigurationOutput {}
972instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_accelerate_configuration);
973
974impl<'a> AwsBuilderInstrument<'a> for GetBucketRequestPaymentFluentBuilder {
976 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
977 let bucket = self.get_bucket().clone().unwrap_or_default();
978 S3SpanBuilder::get_bucket_request_payment(bucket)
979 }
980}
981impl InstrumentedFluentBuilderOutput for GetBucketRequestPaymentOutput {}
982instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_request_payment);
983
984impl<'a> AwsBuilderInstrument<'a> for PutBucketRequestPaymentFluentBuilder {
985 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
986 let bucket = self.get_bucket().clone().unwrap_or_default();
987 S3SpanBuilder::put_bucket_request_payment(bucket)
988 }
989}
990impl InstrumentedFluentBuilderOutput for PutBucketRequestPaymentOutput {}
991instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_request_payment);
992
993impl<'a> AwsBuilderInstrument<'a> for GetBucketOwnershipControlsFluentBuilder {
995 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
996 let bucket = self.get_bucket().clone().unwrap_or_default();
997 S3SpanBuilder::get_bucket_ownership_controls(bucket)
998 }
999}
1000impl InstrumentedFluentBuilderOutput for GetBucketOwnershipControlsOutput {}
1001instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_ownership_controls);
1002
1003impl<'a> AwsBuilderInstrument<'a> for PutBucketOwnershipControlsFluentBuilder {
1004 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1005 let bucket = self.get_bucket().clone().unwrap_or_default();
1006 S3SpanBuilder::put_bucket_ownership_controls(bucket)
1007 }
1008}
1009impl InstrumentedFluentBuilderOutput for PutBucketOwnershipControlsOutput {}
1010instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_ownership_controls);
1011
1012impl<'a> AwsBuilderInstrument<'a> for DeleteBucketOwnershipControlsFluentBuilder {
1013 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1014 let bucket = self.get_bucket().clone().unwrap_or_default();
1015 S3SpanBuilder::delete_bucket_ownership_controls(bucket)
1016 }
1017}
1018impl InstrumentedFluentBuilderOutput for DeleteBucketOwnershipControlsOutput {}
1019instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_ownership_controls);
1020
1021impl<'a> AwsBuilderInstrument<'a> for GetBucketAnalyticsConfigurationFluentBuilder {
1023 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1024 let bucket = self.get_bucket().clone().unwrap_or_default();
1025 S3SpanBuilder::get_bucket_analytics_configuration(bucket)
1026 }
1027}
1028impl InstrumentedFluentBuilderOutput for GetBucketAnalyticsConfigurationOutput {}
1029instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_analytics_configuration);
1030
1031impl<'a> AwsBuilderInstrument<'a> for PutBucketAnalyticsConfigurationFluentBuilder {
1032 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1033 let bucket = self.get_bucket().clone().unwrap_or_default();
1034 S3SpanBuilder::put_bucket_analytics_configuration(bucket)
1035 }
1036}
1037impl InstrumentedFluentBuilderOutput for PutBucketAnalyticsConfigurationOutput {}
1038instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_analytics_configuration);
1039
1040impl<'a> AwsBuilderInstrument<'a> for DeleteBucketAnalyticsConfigurationFluentBuilder {
1041 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1042 let bucket = self.get_bucket().clone().unwrap_or_default();
1043 S3SpanBuilder::delete_bucket_analytics_configuration(bucket)
1044 }
1045}
1046impl InstrumentedFluentBuilderOutput for DeleteBucketAnalyticsConfigurationOutput {}
1047instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_analytics_configuration);
1048
1049impl<'a> AwsBuilderInstrument<'a> for ListBucketAnalyticsConfigurationsFluentBuilder {
1050 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1051 let bucket = self.get_bucket().clone().unwrap_or_default();
1052 S3SpanBuilder::list_bucket_analytics_configurations(bucket)
1053 }
1054}
1055impl InstrumentedFluentBuilderOutput for ListBucketAnalyticsConfigurationsOutput {}
1056instrument_aws_operation!(aws_sdk_s3::operation::list_bucket_analytics_configurations);
1057
1058impl<'a> AwsBuilderInstrument<'a>
1060 for GetBucketIntelligentTieringConfigurationFluentBuilder
1061{
1062 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1063 let bucket = self.get_bucket().clone().unwrap_or_default();
1064 S3SpanBuilder::get_bucket_intelligent_tiering_configuration(bucket)
1065 }
1066}
1067impl InstrumentedFluentBuilderOutput for GetBucketIntelligentTieringConfigurationOutput {}
1068instrument_aws_operation!(
1069 aws_sdk_s3::operation::get_bucket_intelligent_tiering_configuration
1070);
1071
1072impl<'a> AwsBuilderInstrument<'a>
1073 for PutBucketIntelligentTieringConfigurationFluentBuilder
1074{
1075 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1076 let bucket = self.get_bucket().clone().unwrap_or_default();
1077 S3SpanBuilder::put_bucket_intelligent_tiering_configuration(bucket)
1078 }
1079}
1080impl InstrumentedFluentBuilderOutput for PutBucketIntelligentTieringConfigurationOutput {}
1081instrument_aws_operation!(
1082 aws_sdk_s3::operation::put_bucket_intelligent_tiering_configuration
1083);
1084
1085impl<'a> AwsBuilderInstrument<'a>
1086 for DeleteBucketIntelligentTieringConfigurationFluentBuilder
1087{
1088 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1089 let bucket = self.get_bucket().clone().unwrap_or_default();
1090 S3SpanBuilder::delete_bucket_intelligent_tiering_configuration(bucket)
1091 }
1092}
1093impl InstrumentedFluentBuilderOutput
1094 for DeleteBucketIntelligentTieringConfigurationOutput
1095{
1096}
1097instrument_aws_operation!(
1098 aws_sdk_s3::operation::delete_bucket_intelligent_tiering_configuration
1099);
1100
1101impl<'a> AwsBuilderInstrument<'a>
1102 for ListBucketIntelligentTieringConfigurationsFluentBuilder
1103{
1104 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1105 let bucket = self.get_bucket().clone().unwrap_or_default();
1106 S3SpanBuilder::list_bucket_intelligent_tiering_configurations(bucket)
1107 }
1108}
1109impl InstrumentedFluentBuilderOutput
1110 for ListBucketIntelligentTieringConfigurationsOutput
1111{
1112}
1113instrument_aws_operation!(
1114 aws_sdk_s3::operation::list_bucket_intelligent_tiering_configurations
1115);
1116
1117impl<'a> AwsBuilderInstrument<'a> for GetBucketInventoryConfigurationFluentBuilder {
1119 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1120 let bucket = self.get_bucket().clone().unwrap_or_default();
1121 S3SpanBuilder::get_bucket_inventory_configuration(bucket)
1122 }
1123}
1124impl InstrumentedFluentBuilderOutput for GetBucketInventoryConfigurationOutput {}
1125instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_inventory_configuration);
1126
1127impl<'a> AwsBuilderInstrument<'a> for PutBucketInventoryConfigurationFluentBuilder {
1128 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1129 let bucket = self.get_bucket().clone().unwrap_or_default();
1130 S3SpanBuilder::put_bucket_inventory_configuration(bucket)
1131 }
1132}
1133impl InstrumentedFluentBuilderOutput for PutBucketInventoryConfigurationOutput {}
1134instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_inventory_configuration);
1135
1136impl<'a> AwsBuilderInstrument<'a> for DeleteBucketInventoryConfigurationFluentBuilder {
1137 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1138 let bucket = self.get_bucket().clone().unwrap_or_default();
1139 S3SpanBuilder::delete_bucket_inventory_configuration(bucket)
1140 }
1141}
1142impl InstrumentedFluentBuilderOutput for DeleteBucketInventoryConfigurationOutput {}
1143instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_inventory_configuration);
1144
1145impl<'a> AwsBuilderInstrument<'a> for ListBucketInventoryConfigurationsFluentBuilder {
1146 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1147 let bucket = self.get_bucket().clone().unwrap_or_default();
1148 S3SpanBuilder::list_bucket_inventory_configurations(bucket)
1149 }
1150}
1151impl InstrumentedFluentBuilderOutput for ListBucketInventoryConfigurationsOutput {}
1152instrument_aws_operation!(aws_sdk_s3::operation::list_bucket_inventory_configurations);
1153
1154impl<'a> AwsBuilderInstrument<'a> for GetBucketMetricsConfigurationFluentBuilder {
1156 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1157 let bucket = self.get_bucket().clone().unwrap_or_default();
1158 S3SpanBuilder::get_bucket_metrics_configuration(bucket)
1159 }
1160}
1161impl InstrumentedFluentBuilderOutput for GetBucketMetricsConfigurationOutput {}
1162instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_metrics_configuration);
1163
1164impl<'a> AwsBuilderInstrument<'a> for PutBucketMetricsConfigurationFluentBuilder {
1165 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1166 let bucket = self.get_bucket().clone().unwrap_or_default();
1167 S3SpanBuilder::put_bucket_metrics_configuration(bucket)
1168 }
1169}
1170impl InstrumentedFluentBuilderOutput for PutBucketMetricsConfigurationOutput {}
1171instrument_aws_operation!(aws_sdk_s3::operation::put_bucket_metrics_configuration);
1172
1173impl<'a> AwsBuilderInstrument<'a> for DeleteBucketMetricsConfigurationFluentBuilder {
1174 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1175 let bucket = self.get_bucket().clone().unwrap_or_default();
1176 S3SpanBuilder::delete_bucket_metrics_configuration(bucket)
1177 }
1178}
1179impl InstrumentedFluentBuilderOutput for DeleteBucketMetricsConfigurationOutput {}
1180instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_metrics_configuration);
1181
1182impl<'a> AwsBuilderInstrument<'a> for ListBucketMetricsConfigurationsFluentBuilder {
1183 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1184 let bucket = self.get_bucket().clone().unwrap_or_default();
1185 S3SpanBuilder::list_bucket_metrics_configurations(bucket)
1186 }
1187}
1188impl InstrumentedFluentBuilderOutput for ListBucketMetricsConfigurationsOutput {}
1189instrument_aws_operation!(aws_sdk_s3::operation::list_bucket_metrics_configurations);
1190
1191impl<'a> AwsBuilderInstrument<'a> for GetPublicAccessBlockFluentBuilder {
1193 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1194 let bucket = self.get_bucket().clone().unwrap_or_default();
1195 S3SpanBuilder::get_public_access_block(bucket)
1196 }
1197}
1198impl InstrumentedFluentBuilderOutput for GetPublicAccessBlockOutput {}
1199instrument_aws_operation!(aws_sdk_s3::operation::get_public_access_block);
1200
1201impl<'a> AwsBuilderInstrument<'a> for PutPublicAccessBlockFluentBuilder {
1202 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1203 let bucket = self.get_bucket().clone().unwrap_or_default();
1204 S3SpanBuilder::put_public_access_block(bucket)
1205 }
1206}
1207impl InstrumentedFluentBuilderOutput for PutPublicAccessBlockOutput {}
1208instrument_aws_operation!(aws_sdk_s3::operation::put_public_access_block);
1209
1210impl<'a> AwsBuilderInstrument<'a> for DeletePublicAccessBlockFluentBuilder {
1211 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1212 let bucket = self.get_bucket().clone().unwrap_or_default();
1213 S3SpanBuilder::delete_public_access_block(bucket)
1214 }
1215}
1216impl InstrumentedFluentBuilderOutput for DeletePublicAccessBlockOutput {}
1217instrument_aws_operation!(aws_sdk_s3::operation::delete_public_access_block);
1218
1219impl<'a> AwsBuilderInstrument<'a> for CreateBucketMetadataConfigurationFluentBuilder {
1221 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1222 let bucket = self.get_bucket().clone().unwrap_or_default();
1223 S3SpanBuilder::create_bucket_metadata_configuration(bucket)
1224 }
1225}
1226impl InstrumentedFluentBuilderOutput for CreateBucketMetadataConfigurationOutput {}
1227instrument_aws_operation!(aws_sdk_s3::operation::create_bucket_metadata_configuration);
1228
1229impl<'a> AwsBuilderInstrument<'a>
1230 for CreateBucketMetadataTableConfigurationFluentBuilder
1231{
1232 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1233 let bucket = self.get_bucket().clone().unwrap_or_default();
1234 S3SpanBuilder::create_bucket_metadata_table_configuration(bucket)
1235 }
1236}
1237impl InstrumentedFluentBuilderOutput for CreateBucketMetadataTableConfigurationOutput {}
1238instrument_aws_operation!(
1239 aws_sdk_s3::operation::create_bucket_metadata_table_configuration
1240);
1241
1242impl<'a> AwsBuilderInstrument<'a> for DeleteBucketMetadataConfigurationFluentBuilder {
1243 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1244 let bucket = self.get_bucket().clone().unwrap_or_default();
1245 S3SpanBuilder::delete_bucket_metadata_configuration(bucket)
1246 }
1247}
1248impl InstrumentedFluentBuilderOutput for DeleteBucketMetadataConfigurationOutput {}
1249instrument_aws_operation!(aws_sdk_s3::operation::delete_bucket_metadata_configuration);
1250
1251impl<'a> AwsBuilderInstrument<'a>
1252 for DeleteBucketMetadataTableConfigurationFluentBuilder
1253{
1254 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1255 let bucket = self.get_bucket().clone().unwrap_or_default();
1256 S3SpanBuilder::delete_bucket_metadata_table_configuration(bucket)
1257 }
1258}
1259impl InstrumentedFluentBuilderOutput for DeleteBucketMetadataTableConfigurationOutput {}
1260instrument_aws_operation!(
1261 aws_sdk_s3::operation::delete_bucket_metadata_table_configuration
1262);
1263
1264impl<'a> AwsBuilderInstrument<'a> for GetBucketMetadataConfigurationFluentBuilder {
1265 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1266 let bucket = self.get_bucket().clone().unwrap_or_default();
1267 S3SpanBuilder::get_bucket_metadata_configuration(bucket)
1268 }
1269}
1270impl InstrumentedFluentBuilderOutput for GetBucketMetadataConfigurationOutput {}
1271instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_metadata_configuration);
1272
1273impl<'a> AwsBuilderInstrument<'a> for GetBucketMetadataTableConfigurationFluentBuilder {
1274 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1275 let bucket = self.get_bucket().clone().unwrap_or_default();
1276 S3SpanBuilder::get_bucket_metadata_table_configuration(bucket)
1277 }
1278}
1279impl InstrumentedFluentBuilderOutput for GetBucketMetadataTableConfigurationOutput {}
1280instrument_aws_operation!(aws_sdk_s3::operation::get_bucket_metadata_table_configuration);
1281
1282impl<'a> AwsBuilderInstrument<'a>
1283 for UpdateBucketMetadataInventoryTableConfigurationFluentBuilder
1284{
1285 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1286 let bucket = self.get_bucket().clone().unwrap_or_default();
1287 S3SpanBuilder::update_bucket_metadata_inventory_table_configuration(bucket)
1288 }
1289}
1290impl InstrumentedFluentBuilderOutput
1291 for UpdateBucketMetadataInventoryTableConfigurationOutput
1292{
1293}
1294instrument_aws_operation!(
1295 aws_sdk_s3::operation::update_bucket_metadata_inventory_table_configuration
1296);
1297
1298impl<'a> AwsBuilderInstrument<'a>
1299 for UpdateBucketMetadataJournalTableConfigurationFluentBuilder
1300{
1301 fn build_aws_span(&self) -> AwsSpanBuilder<'a> {
1302 let bucket = self.get_bucket().clone().unwrap_or_default();
1303 S3SpanBuilder::update_bucket_metadata_journal_table_configuration(bucket)
1304 }
1305}
1306impl InstrumentedFluentBuilderOutput
1307 for UpdateBucketMetadataJournalTableConfigurationOutput
1308{
1309}
1310instrument_aws_operation!(
1311 aws_sdk_s3::operation::update_bucket_metadata_journal_table_configuration
1312);