aws_sdk_iam/operation/delete_service_linked_role/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::delete_service_linked_role::_delete_service_linked_role_output::DeleteServiceLinkedRoleOutputBuilder;
3
4pub use crate::operation::delete_service_linked_role::_delete_service_linked_role_input::DeleteServiceLinkedRoleInputBuilder;
5
6impl crate::operation::delete_service_linked_role::builders::DeleteServiceLinkedRoleInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::delete_service_linked_role::DeleteServiceLinkedRoleOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::delete_service_linked_role::DeleteServiceLinkedRoleError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.delete_service_linked_role();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `DeleteServiceLinkedRole`.
24///
25/// <p>Submits a service-linked role deletion request and returns a <code>DeletionTaskId</code>, which you can use to check the status of the deletion. Before you call this operation, confirm that the role has no active sessions and that any resources used by the role in the linked service are deleted. If you call this operation more than once for the same service-linked role and an earlier deletion task is not complete, then the <code>DeletionTaskId</code> of the earlier request is returned.</p>
26/// <p>If you submit a deletion request for a service-linked role whose linked service is still accessing a resource, then the deletion task fails. If it fails, the <a href="https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html">GetServiceLinkedRoleDeletionStatus</a> operation returns the reason for the failure, usually including the resources that must be deleted. To delete the service-linked role, you must first remove those resources from the linked service and then submit the deletion request again. Resources are specific to the service that is linked to the role. For more information about removing resources from a service, see the <a href="http://docs.aws.amazon.com/">Amazon Web Services documentation</a> for your service.</p>
27/// <p>For more information about service-linked roles, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role">Roles terms and concepts: Amazon Web Services service-linked role</a> in the <i>IAM User Guide</i>.</p>
28#[derive(::std::clone::Clone, ::std::fmt::Debug)]
29pub struct DeleteServiceLinkedRoleFluentBuilder {
30    handle: ::std::sync::Arc<crate::client::Handle>,
31    inner: crate::operation::delete_service_linked_role::builders::DeleteServiceLinkedRoleInputBuilder,
32    config_override: ::std::option::Option<crate::config::Builder>,
33}
34impl
35    crate::client::customize::internal::CustomizableSend<
36        crate::operation::delete_service_linked_role::DeleteServiceLinkedRoleOutput,
37        crate::operation::delete_service_linked_role::DeleteServiceLinkedRoleError,
38    > for DeleteServiceLinkedRoleFluentBuilder
39{
40    fn send(
41        self,
42        config_override: crate::config::Builder,
43    ) -> crate::client::customize::internal::BoxFuture<
44        crate::client::customize::internal::SendResult<
45            crate::operation::delete_service_linked_role::DeleteServiceLinkedRoleOutput,
46            crate::operation::delete_service_linked_role::DeleteServiceLinkedRoleError,
47        >,
48    > {
49        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
50    }
51}
52impl DeleteServiceLinkedRoleFluentBuilder {
53    /// Creates a new `DeleteServiceLinkedRoleFluentBuilder`.
54    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
55        Self {
56            handle,
57            inner: ::std::default::Default::default(),
58            config_override: ::std::option::Option::None,
59        }
60    }
61    /// Access the DeleteServiceLinkedRole as a reference.
62    pub fn as_input(&self) -> &crate::operation::delete_service_linked_role::builders::DeleteServiceLinkedRoleInputBuilder {
63        &self.inner
64    }
65    /// Sends the request and returns the response.
66    ///
67    /// If an error occurs, an `SdkError` will be returned with additional details that
68    /// can be matched against.
69    ///
70    /// By default, any retryable failures will be retried twice. Retry behavior
71    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
72    /// set when configuring the client.
73    pub async fn send(
74        self,
75    ) -> ::std::result::Result<
76        crate::operation::delete_service_linked_role::DeleteServiceLinkedRoleOutput,
77        ::aws_smithy_runtime_api::client::result::SdkError<
78            crate::operation::delete_service_linked_role::DeleteServiceLinkedRoleError,
79            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
80        >,
81    > {
82        let input = self
83            .inner
84            .build()
85            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
86        let runtime_plugins = crate::operation::delete_service_linked_role::DeleteServiceLinkedRole::operation_runtime_plugins(
87            self.handle.runtime_plugins.clone(),
88            &self.handle.conf,
89            self.config_override,
90        );
91        crate::operation::delete_service_linked_role::DeleteServiceLinkedRole::orchestrate(&runtime_plugins, input).await
92    }
93
94    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
95    pub fn customize(
96        self,
97    ) -> crate::client::customize::CustomizableOperation<
98        crate::operation::delete_service_linked_role::DeleteServiceLinkedRoleOutput,
99        crate::operation::delete_service_linked_role::DeleteServiceLinkedRoleError,
100        Self,
101    > {
102        crate::client::customize::CustomizableOperation::new(self)
103    }
104    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
105        self.set_config_override(::std::option::Option::Some(config_override.into()));
106        self
107    }
108
109    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
110        self.config_override = config_override;
111        self
112    }
113    /// <p>The name of the service-linked role to be deleted.</p>
114    pub fn role_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
115        self.inner = self.inner.role_name(input.into());
116        self
117    }
118    /// <p>The name of the service-linked role to be deleted.</p>
119    pub fn set_role_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
120        self.inner = self.inner.set_role_name(input);
121        self
122    }
123    /// <p>The name of the service-linked role to be deleted.</p>
124    pub fn get_role_name(&self) -> &::std::option::Option<::std::string::String> {
125        self.inner.get_role_name()
126    }
127}