1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
impl super::Client {
    /// Constructs a fluent builder for the [`CreateRole`](crate::operation::create_role::builders::CreateRoleFluentBuilder) operation.
    ///
    /// - The fluent builder is configurable:
    ///   - [`path(impl Into<String>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::path) / [`set_path(Option<String>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::set_path):<br>required: **false**<br><p> The path to the role. For more information about paths, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html">IAM Identifiers</a> in the <i>IAM User Guide</i>.</p>  <p>This parameter is optional. If it is not included, it defaults to a slash (/).</p>  <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes. In addition, it can contain any ASCII character from the ! (<code>\u0021</code>) through the DEL character (<code>\u007F</code>), including most punctuation characters, digits, and upper and lowercased letters.</p><br>
    ///   - [`role_name(impl Into<String>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::role_name) / [`set_role_name(Option<String>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::set_role_name):<br>required: **true**<br><p>The name of the role to create.</p>  <p>IAM user, group, role, and policy names must be unique within the account. Names are not distinguished by case. For example, you cannot create resources named both "MyResource" and "myresource".</p>  <p>This parameter allows (through its <a href="http://wikipedia.org/wiki/regex">regex pattern</a>) a string of characters consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: _+=,.@-</p><br>
    ///   - [`assume_role_policy_document(impl Into<String>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::assume_role_policy_document) / [`set_assume_role_policy_document(Option<String>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::set_assume_role_policy_document):<br>required: **true**<br><p>The trust relationship policy document that grants an entity permission to assume the role.</p>  <p>In IAM, you must provide a JSON policy that has been converted to a string. However, for CloudFormation templates formatted in YAML, you can provide the policy in JSON or YAML format. CloudFormation always converts a YAML policy to JSON format before submitting it to IAM.</p>  <p>The <a href="http://wikipedia.org/wiki/regex">regex pattern</a> used to validate this parameter is a string of characters consisting of the following:</p>  <ul>   <li> <p>Any printable ASCII character ranging from the space character (<code>\u0020</code>) through the end of the ASCII character range</p> </li>   <li> <p>The printable characters in the Basic Latin and Latin-1 Supplement character set (through <code>\u00FF</code>)</p> </li>   <li> <p>The special characters tab (<code>\u0009</code>), line feed (<code>\u000A</code>), and carriage return (<code>\u000D</code>)</p> </li>  </ul>  <p> Upon success, the response includes the same trust policy in JSON format.</p><br>
    ///   - [`description(impl Into<String>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::description) / [`set_description(Option<String>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::set_description):<br>required: **false**<br><p>A description of the role.</p><br>
    ///   - [`max_session_duration(i32)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::max_session_duration) / [`set_max_session_duration(Option<i32>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::set_max_session_duration):<br>required: **false**<br><p>The maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default value of one hour is applied. This setting can have a value from 1 hour to 12 hours.</p>  <p>Anyone who assumes the role from the CLI or API can use the <code>DurationSeconds</code> API parameter or the <code>duration-seconds</code> CLI parameter to request a longer session. The <code>MaxSessionDuration</code> setting determines the maximum duration that can be requested using the <code>DurationSeconds</code> parameter. If users don't specify a value for the <code>DurationSeconds</code> parameter, their security credentials are valid for one hour by default. This applies when you use the <code>AssumeRole*</code> API operations or the <code>assume-role*</code> CLI operations but does not apply when you use those operations to create a console URL. For more information, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html">Using IAM roles</a> in the <i>IAM User Guide</i>.</p><br>
    ///   - [`permissions_boundary(impl Into<String>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::permissions_boundary) / [`set_permissions_boundary(Option<String>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::set_permissions_boundary):<br>required: **false**<br><p>The ARN of the managed policy that is used to set the permissions boundary for the role.</p>  <p>A permissions boundary policy defines the maximum permissions that identity-based policies can grant to an entity, but does not grant permissions. Permissions boundaries do not define the maximum permissions that a resource-based policy can grant to an entity. To learn more, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html">Permissions boundaries for IAM entities</a> in the <i>IAM User Guide</i>.</p>  <p>For more information about policy types, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policy-types">Policy types </a> in the <i>IAM User Guide</i>.</p><br>
    ///   - [`tags(Tag)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::tags) / [`set_tags(Option<Vec::<Tag>>)`](crate::operation::create_role::builders::CreateRoleFluentBuilder::set_tags):<br>required: **false**<br><p>A list of tags that you want to attach to the new role. Each tag consists of a key name and an associated value. For more information about tagging, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html">Tagging IAM resources</a> in the <i>IAM User Guide</i>.</p> <note>   <p>If any one of the tags is invalid or if you exceed the allowed maximum number of tags, then the entire request fails and the resource is not created.</p>  </note><br>
    /// - On success, responds with [`CreateRoleOutput`](crate::operation::create_role::CreateRoleOutput) with field(s):
    ///   - [`role(Option<Role>)`](crate::operation::create_role::CreateRoleOutput::role): <p>A structure containing details about the new role.</p>
    /// - On failure, responds with [`SdkError<CreateRoleError>`](crate::operation::create_role::CreateRoleError)
    pub fn create_role(&self) -> crate::operation::create_role::builders::CreateRoleFluentBuilder {
        crate::operation::create_role::builders::CreateRoleFluentBuilder::new(self.handle.clone())
    }
}