AWS SDK

AWS SDK

rev. bf7b54724930715a0014743ff218858d02acbe40 (ignoring whitespace)

Files changed:

tmp-codegen-diff/aws-sdk/sdk/s3control/src/endpoint_lib.rs

@@ -1,1 +28,32 @@
    8      8   
            let partition_dot_json = std::fs::read_to_string(partitions).expect("should be able to read a custom partition JSON");
    9      9   
            crate::endpoint_lib::partition::PartitionResolver::new_from_json(partition_dot_json.as_bytes()).expect("valid JSON")
   10     10   
        }
   11     11   
        _ => {
   12     12   
            ::tracing::debug!("loading default partitions");
   13     13   
            crate::endpoint_lib::partition::PartitionResolver::new_from_json(b"{\"partitions\":[{\"id\":\"aws\",\"outputs\":{\"dnsSuffix\":\"amazonaws.com\",\"dualStackDnsSuffix\":\"api.aws\",\"implicitGlobalRegion\":\"us-east-1\",\"name\":\"aws\",\"supportsDualStack\":true,\"supportsFIPS\":true},\"regionRegex\":\"^(us|eu|ap|sa|ca|me|af|il|mx)\\\\-\\\\w+\\\\-\\\\d+$\",\"regions\":{\"af-south-1\":{\"description\":\"Africa (Cape Town)\"},\"ap-east-1\":{\"description\":\"Asia Pacific (Hong Kong)\"},\"ap-east-2\":{\"description\":\"Asia Pacific (Taipei)\"},\"ap-northeast-1\":{\"description\":\"Asia Pacific (Tokyo)\"},\"ap-northeast-2\":{\"description\":\"Asia Pacific (Seoul)\"},\"ap-northeast-3\":{\"description\":\"Asia Pacific (Osaka)\"},\"ap-south-1\":{\"description\":\"Asia Pacific (Mumbai)\"},\"ap-south-2\":{\"description\":\"Asia Pacific (Hyderabad)\"},\"ap-southeast-1\":{\"description\":\"Asia Pacific (Singapore)\"},\"ap-southeast-2\":{\"description\":\"Asia Pacific (Sydney)\"},\"ap-southeast-3\":{\"description\":\"Asia Pacific (Jakarta)\"},\"ap-southeast-4\":{\"description\":\"Asia Pacific (Melbourne)\"},\"ap-southeast-5\":{\"description\":\"Asia Pacific (Malaysia)\"},\"ap-southeast-6\":{\"description\":\"Asia Pacific (New Zealand)\"},\"ap-southeast-7\":{\"description\":\"Asia Pacific (Thailand)\"},\"aws-global\":{\"description\":\"aws global region\"},\"ca-central-1\":{\"description\":\"Canada (Central)\"},\"ca-west-1\":{\"description\":\"Canada West (Calgary)\"},\"eu-central-1\":{\"description\":\"Europe (Frankfurt)\"},\"eu-central-2\":{\"description\":\"Europe (Zurich)\"},\"eu-north-1\":{\"description\":\"Europe (Stockholm)\"},\"eu-south-1\":{\"description\":\"Europe (Milan)\"},\"eu-south-2\":{\"description\":\"Europe (Spain)\"},\"eu-west-1\":{\"description\":\"Europe (Ireland)\"},\"eu-west-2\":{\"description\":\"Europe (London)\"},\"eu-west-3\":{\"description\":\"Europe (Paris)\"},\"il-central-1\":{\"description\":\"Israel (Tel Aviv)\"},\"me-central-1\":{\"description\":\"Middle East (UAE)\"},\"me-south-1\":{\"description\":\"Middle East (Bahrain)\"},\"mx-central-1\":{\"description\":\"Mexico (Central)\"},\"sa-east-1\":{\"description\":\"South America (Sao Paulo)\"},\"us-east-1\":{\"description\":\"US East (N. Virginia)\"},\"us-east-2\":{\"description\":\"US East (Ohio)\"},\"us-west-1\":{\"description\":\"US West (N. California)\"},\"us-west-2\":{\"description\":\"US West (Oregon)\"}}},{\"id\":\"aws-cn\",\"outputs\":{\"dnsSuffix\":\"amazonaws.com.cn\",\"dualStackDnsSuffix\":\"api.amazonwebservices.com.cn\",\"implicitGlobalRegion\":\"cn-northwest-1\",\"name\":\"aws-cn\",\"supportsDualStack\":true,\"supportsFIPS\":true},\"regionRegex\":\"^cn\\\\-\\\\w+\\\\-\\\\d+$\",\"regions\":{\"aws-cn-global\":{\"description\":\"aws-cn global region\"},\"cn-north-1\":{\"description\":\"China (Beijing)\"},\"cn-northwest-1\":{\"description\":\"China (Ningxia)\"}}},{\"id\":\"aws-eusc\",\"outputs\":{\"dnsSuffix\":\"amazonaws.eu\",\"dualStackDnsSuffix\":\"api.amazonwebservices.eu\",\"implicitGlobalRegion\":\"eusc-de-east-1\",\"name\":\"aws-eusc\",\"supportsDualStack\":true,\"supportsFIPS\":true},\"regionRegex\":\"^eusc\\\\-(de)\\\\-\\\\w+\\\\-\\\\d+$\",\"regions\":{\"eusc-de-east-1\":{\"description\":\"EU (Germany)\"}}},{\"id\":\"aws-iso\",\"outputs\":{\"dnsSuffix\":\"c2s.ic.gov\",\"dualStackDnsSuffix\":\"api.aws.ic.gov\",\"implicitGlobalRegion\":\"us-iso-east-1\",\"name\":\"aws-iso\",\"supportsDualStack\":true,\"supportsFIPS\":true},\"regionRegex\":\"^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$\",\"regions\":{\"aws-iso-global\":{\"description\":\"aws-iso global region\"},\"us-iso-east-1\":{\"description\":\"US ISO East\"},\"us-iso-west-1\":{\"description\":\"US ISO WEST\"}}},{\"id\":\"aws-iso-b\",\"outputs\":{\"dnsSuffix\":\"sc2s.sgov.gov\",\"dualStackDnsSuffix\":\"api.aws.scloud\",\"implicitGlobalRegion\":\"us-isob-east-1\",\"name\":\"aws-iso-b\",\"supportsDualStack\":true,\"supportsFIPS\":true},\"regionRegex\":\"^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$\",\"regions\":{\"aws-iso-b-global\":{\"description\":\"aws-iso-b global region\"},\"us-isob-east-1\":{\"description\":\"US ISOB East (Ohio)\"}}},{\"id\":\"aws-iso-e\",\"outputs\":{\"dnsSuffix\":\"cloud.adc-e.uk\",\"dualStackDnsSuffix\":\"api.cloud-aws.adc-e.uk\",\"implicitGlobalRegion\":\"eu-isoe-west-1\",\"name\":\"aws-iso-e\",\"supportsDualStack\":true,\"supportsFIPS\":true},\"regionRegex\":\"^eu\\\\-isoe\\\\-\\\\w+\\\\-\\\\d+$\",\"regions\":{\"aws-iso-e-global\":{\"description\":\"aws-iso-e global region\"},\"eu-isoe-west-1\":{\"description\":\"EU ISOE West\"}}},{\"id\":\"aws-iso-f\",\"outputs\":{\"dnsSuffix\":\"csp.hci.ic.gov\",\"dualStackDnsSuffix\":\"api.aws.hci.ic.gov\",\"implicitGlobalRegion\":\"us-isof-south-1\",\"name\":\"aws-iso-f\",\"supportsDualStack\":true,\"supportsFIPS\":true},\"regionRegex\":\"^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$\",\"regions\":{\"aws-iso-f-global\":{\"description\":\"aws-iso-f global region\"},\"us-isof-east-1\":{\"description\":\"US ISOF EAST\"},\"us-isof-south-1\":{\"description\":\"US ISOF SOUTH\"}}},{\"id\":\"aws-us-gov\",\"outputs\":{\"dnsSuffix\":\"amazonaws.com\",\"dualStackDnsSuffix\":\"api.aws\",\"implicitGlobalRegion\":\"us-gov-west-1\",\"name\":\"aws-us-gov\",\"supportsDualStack\":true,\"supportsFIPS\":true},\"regionRegex\":\"^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$\",\"regions\":{\"aws-us-gov-global\":{\"description\":\"aws-us-gov global region\"},\"us-gov-east-1\":{\"description\":\"AWS GovCloud (US-East)\"},\"us-gov-west-1\":{\"description\":\"AWS GovCloud (US-West)\"}}}],\"version\":\"1.1\"}").expect("valid JSON")
   14     14   
        }
   15     15   
    },
   16     16   
);
   17     17   
   18         -
pub(crate) mod diagnostic;
          18  +
pub(crate) mod arn;
   19     19   
   20         -
pub(crate) mod partition;
          20  +
pub(crate) mod bdd_interpreter;
   21     21   
   22         -
pub(crate) mod arn;
          22  +
pub(crate) mod coalesce;
          23  +
          24  +
pub(crate) mod diagnostic;
   23     25   
   24     26   
pub(crate) mod host;
   25     27   
   26     28   
pub(crate) mod parse_url;
   27     29   
          30  +
pub(crate) mod partition;
          31  +
   28     32   
pub(crate) mod substring;

tmp-codegen-diff/aws-sdk/sdk/s3control/src/endpoint_lib/bdd_interpreter.rs

@@ -0,1 +0,75 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/*
           3  +
 *  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
           4  +
 *  SPDX-License-Identifier: Apache-2.0
           5  +
 */
           6  +
           7  +
//TODO(bdd): Should this just be an [i32; 3]? Might make it easier to make things const?
           8  +
/// Binary Decision Diagram node representation
           9  +
#[derive(Debug, Clone, Copy)]
          10  +
pub(crate) struct BddNode {
          11  +
    pub condition_index: i32,
          12  +
    pub high_ref: i32,
          13  +
    pub low_ref: i32,
          14  +
}
          15  +
          16  +
#[allow(dead_code)]
          17  +
const RESULT_LIMIT: i32 = 100_000_000;
          18  +
#[allow(dead_code)]
          19  +
const TERMINAL_TRUE: i32 = 1;
          20  +
#[allow(dead_code)]
          21  +
const TERMINAL_FALSE: i32 = -1;
          22  +
          23  +
/// Evaluates a BDD to resolve an endpoint result
          24  +
///
          25  +
/// Arguments
          26  +
/// * `nodes` - Array of BddNodes
          27  +
/// * `conditions` - Array of conditions referenced by nodes
          28  +
/// * `root_ref` - Root reference to start evaluation
          29  +
/// * `params` - Parameters for condition evaluation
          30  +
/// * `context` - Values that can be set/mutated by the conditions
          31  +
/// * `diagnostic_collector` - a struct for collecting information about the execution of conditions
          32  +
/// * `condition_evaluator` - Function to evaluate individual conditions with params and context
          33  +
/// * `result_builder` - Function to construct the endpoint result from a result index
          34  +
///
          35  +
/// Returns
          36  +
/// * `Some(R)` - Result if evaluation succeeds
          37  +
/// * `None` - No match found
          38  +
#[allow(clippy::too_many_arguments, dead_code)]
          39  +
pub(crate) fn evaluate_bdd<'a, Cond, Params, R, Context>(
          40  +
    nodes: &[BddNode],
          41  +
    conditions: &[Cond],
          42  +
    root_ref: i32,
          43  +
    params: &'a Params,
          44  +
    context: &mut Context,
          45  +
    diagnostic_collector: &mut crate::endpoint_lib::diagnostic::DiagnosticCollector,
          46  +
    mut condition_evaluator: impl FnMut(&Cond, &'a Params, &mut Context, &mut crate::endpoint_lib::diagnostic::DiagnosticCollector) -> bool,
          47  +
    result_builder: impl FnOnce(usize, &'a Params, &Context) -> R,
          48  +
) -> Option<R> {
          49  +
    let mut current_ref = root_ref;
          50  +
          51  +
    loop {
          52  +
        match current_ref {
          53  +
            // Result references (>= 100_000_000)
          54  +
            ref_val if ref_val >= RESULT_LIMIT => {
          55  +
                let result_index = (ref_val - RESULT_LIMIT) as usize;
          56  +
                return Some(result_builder(result_index, params, context));
          57  +
            }
          58  +
            // Terminals (1 = TRUE, -1 = FALSE) NoMatchRule
          59  +
            TERMINAL_TRUE | TERMINAL_FALSE => {
          60  +
                return Some(result_builder(0, params, context));
          61  +
            }
          62  +
            // Node references
          63  +
            ref_val => {
          64  +
                let is_complement = ref_val < 0;
          65  +
                let node_index = (ref_val.abs() - 1) as usize;
          66  +
                let node = nodes.get(node_index)?;
          67  +
                let condition_index = node.condition_index as usize;
          68  +
                let condition = conditions.get(condition_index)?;
          69  +
                let condition_result = condition_evaluator(condition, params, context, diagnostic_collector);
          70  +
                // Handle complement edges: complement inverts the branch selection
          71  +
                current_ref = if is_complement ^ condition_result { node.high_ref } else { node.low_ref };
          72  +
            }
          73  +
        }
          74  +
    }
          75  +
}

tmp-codegen-diff/aws-sdk/sdk/s3control/src/endpoint_lib/coalesce.rs

@@ -0,1 +0,211 @@
           1  +
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
           2  +
/*
           3  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
           4  +
 * SPDX-License-Identifier: Apache-2.0
           5  +
 */
           6  +
           7  +
//! Coalesce function that returns the first non-None value.
           8  +
           9  +
/*
          10  +
 * Implementation Note: Autoderef Specialization
          11  +
 *
          12  +
 * This implementation uses autoderef specialization to dispatch to different
          13  +
 * coalesce behaviors based on the types of the two arguments at compile time.
          14  +
 *
          15  +
 * The technique exploits Rust's method resolution, which automatically dereferences
          16  +
 * types to find matching method implementations. Method resolution prefers implementations
          17  +
 * that require fewer dereferences, creating a priority ordering.
          18  +
 *
          19  +
 * Three specialization levels (highest to lowest priority):
          20  +
 *
          21  +
 * 1. `&&&(&Option<T>, &Option<T>)` - Both args are Option
          22  +
 *    Returns: Option<T> via a.or(b)
          23  +
 *
          24  +
 * 2. `&&(&Option<T>, &T)` - First arg is Option, second is concrete
          25  +
 *    Returns: T via a.unwrap_or(b)
          26  +
 *
          27  +
 * 3. `&(&T, &U)` - Both args are concrete (or any other combination)
          28  +
 *    Returns: T (always returns first arg)
          29  +
 *
          30  +
 * The macro call `(&&&(&a, &b)).coalesce()` starts with three references. Method resolution
          31  +
 * tries each impl in order by dereferencing:
          32  +
 * - First tries `&&&(&Option<T>, &Option<T>)` (no deref needed) - matches if both are Option
          33  +
 * - Then tries `&&(&Option<T>, &T)` (one deref) - matches if first is Option, second isn't
          34  +
 * - Finally tries `&(&T, &U)` (two derefs) - matches everything else
          35  +
 *
          36  +
 * This allows the macro to handle Option/non-Option combinations without runtime checks,
          37  +
 * selecting the appropriate coalesce logic at compile time based on argument types.
          38  +
 *
          39  +
 * This approach was heavily inspired by this blog post: https://lukaskalbertodt.github.io/2019/12/05/generalized-autoref-based-specialization.html
          40  +
 */
          41  +
          42  +
/// Helper trait to implement the coalesce! macro
          43  +
pub(crate) trait Coalesce {
          44  +
    /// The first arg
          45  +
    type Arg1;
          46  +
    /// The second arg
          47  +
    type Arg2;
          48  +
    /// The result of comparing Arg1 and Arg1
          49  +
    type Result;
          50  +
          51  +
    /// Evaluates arguments in order and returns the first non-empty result, otherwise returns the result of the last argument.
          52  +
    fn coalesce(&self) -> fn(Self::Arg1, Self::Arg2) -> Self::Result;
          53  +
}
          54  +
          55  +
impl<T> Coalesce for &&&(&Option<T>, &Option<T>) {
          56  +
    type Arg1 = Option<T>;
          57  +
    type Arg2 = Option<T>;
          58  +
    type Result = Option<T>;
          59  +
          60  +
    fn coalesce(&self) -> fn(Self::Arg1, Self::Arg2) -> Self::Result {
          61  +
        |a: Option<T>, b: Option<T>| a.or(b)
          62  +
    }
          63  +
}
          64  +
          65  +
impl<T> Coalesce for &&(&Option<T>, &T) {
          66  +
    type Arg1 = Option<T>;
          67  +
    type Arg2 = T;
          68  +
    type Result = T;
          69  +
          70  +
    fn coalesce(&self) -> fn(Self::Arg1, Self::Arg2) -> Self::Result {
          71  +
        |a: Option<T>, b: T| a.unwrap_or(b)
          72  +
    }
          73  +
}
          74  +
          75  +
impl<T, U> Coalesce for &(&T, &U) {
          76  +
    type Arg1 = T;
          77  +
    type Arg2 = U;
          78  +
    type Result = T;
          79  +
          80  +
    fn coalesce(&self) -> fn(Self::Arg1, Self::Arg2) -> Self::Result {
          81  +
        |a: T, _b| a
          82  +
    }
          83  +
}
          84  +
          85  +
/// Evaluates arguments in order and returns the first non-empty result, otherwise returns the result of the last argument.
          86  +
macro_rules! coalesce {
          87  +
    ($a:expr) => {$a};
          88  +
    ($a:expr, $b:expr) => {{
          89  +
        use crate::endpoint_lib::coalesce::Coalesce;
          90  +
        let a = $a;
          91  +
        let b = $b;
          92  +
        (&&&(&a, &b)).coalesce()(a, b)
          93  +
    }};
          94  +
    ($a:expr, $b:expr $(, $c:expr)* $(,)?) => {
          95  +
        $crate::endpoint_lib::coalesce::coalesce!($crate::endpoint_lib::coalesce::coalesce!($a, $b) $(, $c)*)
          96  +
    }
          97  +
}
          98  +
          99  +
pub(crate) use coalesce;
         100  +
         101  +
#[cfg(test)]
         102  +
mod test {
         103  +
    use super::*;
         104  +
         105  +
    #[test]
         106  +
    fn base_cases() {
         107  +
        // All types optional
         108  +
        let a = Some("a");
         109  +
        let b = Some("b");
         110  +
         111  +
        assert_eq!(coalesce!(a, b), Some("a"));
         112  +
         113  +
        let a = None;
         114  +
        let b = Some("b");
         115  +
         116  +
        assert_eq!(coalesce!(a, b), Some("b"));
         117  +
         118  +
        let a = Some("a");
         119  +
        let b = None;
         120  +
         121  +
        assert_eq!(coalesce!(a, b), Some("a"));
         122  +
         123  +
        let a: Option<&str> = None;
         124  +
        let b: Option<&str> = None;
         125  +
         126  +
        assert_eq!(coalesce!(a, b), None);
         127  +
         128  +
        // Some non-optional types
         129  +
        let a = "a";
         130  +
        let b = Some("b");
         131  +
         132  +
        assert_eq!(coalesce!(a, b), "a");
         133  +
         134  +
        let a = Some("a");
         135  +
        let b = "b";
         136  +
         137  +
        assert_eq!(coalesce!(a, b), "a");
         138  +
         139  +
        let a = None;
         140  +
        let b = "b";
         141  +
         142  +
        assert_eq!(coalesce!(a, b), "b");
         143  +
         144  +
        let a = "a";
         145  +
        let b: Option<&str> = None;
         146  +
         147  +
        assert_eq!(coalesce!(a, b), "a");
         148  +
         149  +
        // All types non-optional
         150  +
        let a = "a";
         151  +
        let b = "b";
         152  +
         153  +
        assert_eq!(coalesce!(a, b), "a");
         154  +
         155  +
        // Works with trailing comma (makes codegen easier)
         156  +
        let a = "a";
         157  +
        let b = "b";
         158  +
         159  +
        assert_eq!(coalesce!(a, b,), "a");
         160  +
    }
         161  +
         162  +
    #[test]
         163  +
    fn longer_cases() {
         164  +
        assert_eq!(coalesce!(None, None, None, None, None, None, None, None, None, None, "a"), "a");
         165  +
         166  +
        // In the generated code all of the inputs are typed variables, so the turbofish isn't needed in practice
         167  +
        assert_eq!(
         168  +
            coalesce!(
         169  +
                None,
         170  +
                None,
         171  +
                None,
         172  +
                None,
         173  +
                "a",
         174  +
                None::<&str>,
         175  +
                None::<&str>,
         176  +
                None::<&str>,
         177  +
                None::<&str>,
         178  +
                None::<&str>,
         179  +
                None::<&str>
         180  +
            ),
         181  +
            "a"
         182  +
        );
         183  +
         184  +
        assert_eq!(
         185  +
            coalesce!(
         186  +
                None,
         187  +
                None,
         188  +
                None,
         189  +
                None,
         190  +
                "a",
         191  +
                None::<&str>,
         192  +
                Some("b"),
         193  +
                None::<&str>,
         194  +
                None::<&str>,
         195  +
                None::<&str>,
         196  +
                "c"
         197  +
            ),
         198  +
            "a"
         199  +
        );
         200  +
         201  +
        assert_eq!(coalesce!(None, None, None, Some("a"), None, None, None, None, None, None, "b"), "a");
         202  +
        assert_eq!(
         203  +
            coalesce!(Some("a"), None, None, Some("b"), None, None, None, None, None, None,),
         204  +
            Some("a")
         205  +
        );
         206  +
         207  +
        assert_eq!(coalesce!("a", "b", "c", "d", "e", "f", "g",), "a");
         208  +
         209  +
        assert_eq!(coalesce!(None, None, None, None, None, None, None, None, None, None::<&str>,), None);
         210  +
    }
         211  +
}

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/associate_access_grants_identity_center/builders.rs

@@ -9,9 +71,69 @@
   29     29   
/// </dt>
   30     30   
/// <dd>
   31     31   
/// <p>You must have the <code>s3:AssociateAccessGrantsIdentityCenter</code> permission to use this operation.</p>
   32     32   
/// </dd>
   33     33   
/// <dt>
   34     34   
/// Additional Permissions
   35     35   
/// </dt>
   36     36   
/// <dd>
   37     37   
/// <p>You must also have the following permissions: <code>sso:CreateApplication</code>, <code>sso:PutApplicationGrant</code>, and <code>sso:PutApplicationAuthenticationMethod</code>.</p>
   38     38   
/// </dd>
   39         -
/// </dl><important>
   40         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   41         -
/// </important>
          39  +
/// </dl>
   42     40   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   43     41   
pub struct AssociateAccessGrantsIdentityCenterFluentBuilder {
   44     42   
    handle: ::std::sync::Arc<crate::client::Handle>,
   45     43   
    inner: crate::operation::associate_access_grants_identity_center::builders::AssociateAccessGrantsIdentityCenterInputBuilder,
   46     44   
    config_override: ::std::option::Option<crate::config::Builder>,
   47     45   
}
   48     46   
impl
   49     47   
    crate::client::customize::internal::CustomizableSend<
   50     48   
        crate::operation::associate_access_grants_identity_center::AssociateAccessGrantsIdentityCenterOutput,
   51     49   
        crate::operation::associate_access_grants_identity_center::AssociateAccessGrantsIdentityCenterError,

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/create_access_grant/builders.rs

@@ -11,11 +73,71 @@
   31     31   
/// <p>You must have the <code>s3:CreateAccessGrant</code> permission to use this operation.</p>
   32     32   
/// </dd>
   33     33   
/// <dt>
   34     34   
/// Additional Permissions
   35     35   
/// </dt>
   36     36   
/// <dd>
   37     37   
/// <p>For any directory identity - <code>sso:DescribeInstance</code> and <code>sso:DescribeApplication</code></p>
   38     38   
/// <p>For directory users - <code>identitystore:DescribeUser</code></p>
   39     39   
/// <p>For directory groups - <code>identitystore:DescribeGroup</code></p>
   40     40   
/// </dd>
   41         -
/// </dl><important>
   42         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   43         -
/// </important>
          41  +
/// </dl>
   44     42   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   45     43   
pub struct CreateAccessGrantFluentBuilder {
   46     44   
    handle: ::std::sync::Arc<crate::client::Handle>,
   47     45   
    inner: crate::operation::create_access_grant::builders::CreateAccessGrantInputBuilder,
   48     46   
    config_override: ::std::option::Option<crate::config::Builder>,
   49     47   
}
   50     48   
impl
   51     49   
    crate::client::customize::internal::CustomizableSend<
   52     50   
        crate::operation::create_access_grant::CreateAccessGrantOutput,
   53     51   
        crate::operation::create_access_grant::CreateAccessGrantError,

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/create_access_grants_instance/builders.rs

@@ -9,9 +71,69 @@
   29     29   
/// </dt>
   30     30   
/// <dd>
   31     31   
/// <p>You must have the <code>s3:CreateAccessGrantsInstance</code> permission to use this operation.</p>
   32     32   
/// </dd>
   33     33   
/// <dt>
   34     34   
/// Additional Permissions
   35     35   
/// </dt>
   36     36   
/// <dd>
   37     37   
/// <p>To associate an IAM Identity Center instance with your S3 Access Grants instance, you must also have the <code>sso:DescribeInstance</code>, <code>sso:CreateApplication</code>, <code>sso:PutApplicationGrant</code>, and <code>sso:PutApplicationAuthenticationMethod</code> permissions.</p>
   38     38   
/// </dd>
   39         -
/// </dl><important>
   40         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   41         -
/// </important>
          39  +
/// </dl>
   42     40   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   43     41   
pub struct CreateAccessGrantsInstanceFluentBuilder {
   44     42   
    handle: ::std::sync::Arc<crate::client::Handle>,
   45     43   
    inner: crate::operation::create_access_grants_instance::builders::CreateAccessGrantsInstanceInputBuilder,
   46     44   
    config_override: ::std::option::Option<crate::config::Builder>,
   47     45   
}
   48     46   
impl
   49     47   
    crate::client::customize::internal::CustomizableSend<
   50     48   
        crate::operation::create_access_grants_instance::CreateAccessGrantsInstanceOutput,
   51     49   
        crate::operation::create_access_grants_instance::CreateAccessGrantsInstanceError,

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/create_access_grants_location/builders.rs

@@ -21,21 +83,81 @@
   41     41   
/// </dt>
   42     42   
/// <dd>
   43     43   
/// <p>You must have the <code>s3:CreateAccessGrantsLocation</code> permission to use this operation.</p>
   44     44   
/// </dd>
   45     45   
/// <dt>
   46     46   
/// Additional Permissions
   47     47   
/// </dt>
   48     48   
/// <dd>
   49     49   
/// <p>You must also have the following permission for the specified IAM role: <code>iam:PassRole</code></p>
   50     50   
/// </dd>
   51         -
/// </dl><important>
   52         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   53         -
/// </important>
          51  +
/// </dl>
   54     52   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   55     53   
pub struct CreateAccessGrantsLocationFluentBuilder {
   56     54   
    handle: ::std::sync::Arc<crate::client::Handle>,
   57     55   
    inner: crate::operation::create_access_grants_location::builders::CreateAccessGrantsLocationInputBuilder,
   58     56   
    config_override: ::std::option::Option<crate::config::Builder>,
   59     57   
}
   60     58   
impl
   61     59   
    crate::client::customize::internal::CustomizableSend<
   62     60   
        crate::operation::create_access_grants_location::CreateAccessGrantsLocationOutput,
   63     61   
        crate::operation::create_access_grants_location::CreateAccessGrantsLocationError,

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/create_access_point/_create_access_point_input.rs

@@ -7,7 +130,116 @@
   27     27   
    pub vpc_configuration: ::std::option::Option<crate::types::VpcConfiguration>,
   28     28   
    /// <p>The <code>PublicAccessBlock</code> configuration that you want to apply to the access point.</p>
   29     29   
    pub public_access_block_configuration: ::std::option::Option<crate::types::PublicAccessBlockConfiguration>,
   30     30   
    /// <p>The Amazon Web Services account ID associated with the S3 bucket associated with this access point.</p>
   31     31   
    /// <p>For same account access point when your bucket and access point belong to the same account owner, the <code>BucketAccountId</code> is not required. For cross-account access point when your bucket and access point are not in the same account, the <code>BucketAccountId</code> is required.</p>
   32     32   
    pub bucket_account_id: ::std::option::Option<::std::string::String>,
   33     33   
    /// <p>For directory buckets, you can filter access control to specific prefixes, API operations, or a combination of both. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets.html">Managing access to shared datasets in directory buckets with access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
   34     34   
    /// <p>Scope is only supported for access points attached to directory buckets.</p>
   35     35   
    /// </note>
   36     36   
    pub scope: ::std::option::Option<crate::types::Scope>,
   37         -
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p><note>
   38         -
    /// <ul>
   39         -
    /// <li>
   40         -
    /// <p>You must have the <code>s3:TagResource</code> permission to create an access point with tags for a general purpose bucket.</p></li>
   41         -
    /// <li>
   42         -
    /// <p>You must have the <code>s3express:TagResource</code> permission to create an access point with tags for a directory bucket.</p></li>
   43         -
    /// </ul>
   44         -
    /// </note>
          37  +
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p>
   45     38   
    pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
   46     39   
}
   47     40   
impl CreateAccessPointInput {
   48     41   
    /// <p>The Amazon Web Services account ID for the account that owns the specified access point.</p>
   49     42   
    pub fn account_id(&self) -> ::std::option::Option<&str> {
   50     43   
        self.account_id.as_deref()
   51     44   
    }
   52     45   
    /// <p>The name you want to assign to this access point.</p>
   53     46   
    /// <p>For directory buckets, the access point name must consist of a base name that you provide and suffix that includes the <code>ZoneID</code> (Amazon Web Services Availability Zone or Local Zone) of your bucket location, followed by <code>--xa-s3</code>. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets.html">Managing access to shared datasets in directory buckets with access points</a> in the <i>Amazon S3 User Guide</i>.</p>
   54     47   
    pub fn name(&self) -> ::std::option::Option<&str> {
   55     48   
        self.name.as_deref()
   56     49   
    }
   57     50   
    /// <p>The name of the bucket that you want to associate this access point with.</p>
   58     51   
    /// <p>For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well.</p>
   59     52   
    /// <p>For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format <code>arn:aws:s3-outposts:<region>
   60     53   
    /// :
   61     54   
    /// <account-id>
   62     55   
    /// :outpost/
   63     56   
    /// <outpost-id>
   64     57   
    /// /bucket/
   65     58   
    /// <my-bucket-name></my-bucket-name>
   66     59   
    /// </outpost-id>
   67     60   
    /// </account-id>
   68     61   
    /// </region></code>. For example, to access the bucket <code>reports</code> through Outpost <code>my-outpost</code> owned by account <code>123456789012</code> in Region <code>us-west-2</code>, use the URL encoding of <code>arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports</code>. The value must be URL encoded.</p>
   69     62   
    pub fn bucket(&self) -> ::std::option::Option<&str> {
   70     63   
        self.bucket.as_deref()
   71     64   
    }
   72     65   
    /// <p>If you include this field, Amazon S3 restricts access to this access point to requests from the specified virtual private cloud (VPC).</p><note>
   73     66   
    /// <p>This is required for creating an access point for Amazon S3 on Outposts buckets.</p>
   74     67   
    /// </note>
   75     68   
    pub fn vpc_configuration(&self) -> ::std::option::Option<&crate::types::VpcConfiguration> {
   76     69   
        self.vpc_configuration.as_ref()
   77     70   
    }
   78     71   
    /// <p>The <code>PublicAccessBlock</code> configuration that you want to apply to the access point.</p>
   79     72   
    pub fn public_access_block_configuration(&self) -> ::std::option::Option<&crate::types::PublicAccessBlockConfiguration> {
   80     73   
        self.public_access_block_configuration.as_ref()
   81     74   
    }
   82     75   
    /// <p>The Amazon Web Services account ID associated with the S3 bucket associated with this access point.</p>
   83     76   
    /// <p>For same account access point when your bucket and access point belong to the same account owner, the <code>BucketAccountId</code> is not required. For cross-account access point when your bucket and access point are not in the same account, the <code>BucketAccountId</code> is required.</p>
   84     77   
    pub fn bucket_account_id(&self) -> ::std::option::Option<&str> {
   85     78   
        self.bucket_account_id.as_deref()
   86     79   
    }
   87     80   
    /// <p>For directory buckets, you can filter access control to specific prefixes, API operations, or a combination of both. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets.html">Managing access to shared datasets in directory buckets with access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
   88     81   
    /// <p>Scope is only supported for access points attached to directory buckets.</p>
   89     82   
    /// </note>
   90     83   
    pub fn scope(&self) -> ::std::option::Option<&crate::types::Scope> {
   91     84   
        self.scope.as_ref()
   92     85   
    }
   93         -
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p><note>
   94         -
    /// <ul>
   95         -
    /// <li>
   96         -
    /// <p>You must have the <code>s3:TagResource</code> permission to create an access point with tags for a general purpose bucket.</p></li>
   97         -
    /// <li>
   98         -
    /// <p>You must have the <code>s3express:TagResource</code> permission to create an access point with tags for a directory bucket.</p></li>
   99         -
    /// </ul>
  100         -
    /// </note>
          86  +
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p>
  101     87   
    ///
  102     88   
    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
  103     89   
    pub fn tags(&self) -> &[crate::types::Tag] {
  104     90   
        self.tags.as_deref().unwrap_or_default()
  105     91   
    }
  106     92   
}
  107     93   
impl CreateAccessPointInput {
  108     94   
    /// Creates a new builder-style object to manufacture [`CreateAccessPointInput`](crate::operation::create_access_point::CreateAccessPointInput).
  109     95   
    pub fn builder() -> crate::operation::create_access_point::builders::CreateAccessPointInputBuilder {
  110     96   
        crate::operation::create_access_point::builders::CreateAccessPointInputBuilder::default()
@@ -254,240 +336,301 @@
  274    260   
    /// <p>For directory buckets, you can filter access control to specific prefixes, API operations, or a combination of both. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-directory-buckets.html">Managing access to shared datasets in directory buckets with access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
  275    261   
    /// <p>Scope is only supported for access points attached to directory buckets.</p>
  276    262   
    /// </note>
  277    263   
    pub fn get_scope(&self) -> &::std::option::Option<crate::types::Scope> {
  278    264   
        &self.scope
  279    265   
    }
  280    266   
    /// Appends an item to `tags`.
  281    267   
    ///
  282    268   
    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
  283    269   
    ///
  284         -
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p><note>
  285         -
    /// <ul>
  286         -
    /// <li>
  287         -
    /// <p>You must have the <code>s3:TagResource</code> permission to create an access point with tags for a general purpose bucket.</p></li>
  288         -
    /// <li>
  289         -
    /// <p>You must have the <code>s3express:TagResource</code> permission to create an access point with tags for a directory bucket.</p></li>
  290         -
    /// </ul>
  291         -
    /// </note>
         270  +
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p>
  292    271   
    pub fn tags(mut self, input: crate::types::Tag) -> Self {
  293    272   
        let mut v = self.tags.unwrap_or_default();
  294    273   
        v.push(input);
  295    274   
        self.tags = ::std::option::Option::Some(v);
  296    275   
        self
  297    276   
    }
  298         -
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p><note>
  299         -
    /// <ul>
  300         -
    /// <li>
  301         -
    /// <p>You must have the <code>s3:TagResource</code> permission to create an access point with tags for a general purpose bucket.</p></li>
  302         -
    /// <li>
  303         -
    /// <p>You must have the <code>s3express:TagResource</code> permission to create an access point with tags for a directory bucket.</p></li>
  304         -
    /// </ul>
  305         -
    /// </note>
         277  +
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p>
  306    278   
    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
  307    279   
        self.tags = input;
  308    280   
        self
  309    281   
    }
  310         -
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p><note>
  311         -
    /// <ul>
  312         -
    /// <li>
  313         -
    /// <p>You must have the <code>s3:TagResource</code> permission to create an access point with tags for a general purpose bucket.</p></li>
  314         -
    /// <li>
  315         -
    /// <p>You must have the <code>s3express:TagResource</code> permission to create an access point with tags for a directory bucket.</p></li>
  316         -
    /// </ul>
  317         -
    /// </note>
         282  +
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p>
  318    283   
    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
  319    284   
        &self.tags
  320    285   
    }
  321    286   
    /// Consumes the builder and constructs a [`CreateAccessPointInput`](crate::operation::create_access_point::CreateAccessPointInput).
  322    287   
    pub fn build(
  323    288   
        self,
  324    289   
    ) -> ::std::result::Result<crate::operation::create_access_point::CreateAccessPointInput, ::aws_smithy_types::error::operation::BuildError> {
  325    290   
        ::std::result::Result::Ok(crate::operation::create_access_point::CreateAccessPointInput {
  326    291   
            account_id: self.account_id,
  327    292   
            name: self.name,

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/create_access_point/builders.rs

@@ -13,13 +75,73 @@
   33     33   
/// <p>The following actions are related to <code>CreateAccessPoint</code>:</p>
   34     34   
/// <ul>
   35     35   
/// <li>
   36     36   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPoint.html">GetAccessPoint</a></p></li>
   37     37   
/// <li>
   38     38   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPoint.html">DeleteAccessPoint</a></p></li>
   39     39   
/// <li>
   40     40   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPoints.html">ListAccessPoints</a></p></li>
   41     41   
/// <li>
   42     42   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPointsForDirectoryBuckets.html">ListAccessPointsForDirectoryBuckets</a></p></li>
   43         -
/// </ul><important>
   44         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   45         -
/// </important>
          43  +
/// </ul>
   46     44   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   47     45   
pub struct CreateAccessPointFluentBuilder {
   48     46   
    handle: ::std::sync::Arc<crate::client::Handle>,
   49     47   
    inner: crate::operation::create_access_point::builders::CreateAccessPointInputBuilder,
   50     48   
    config_override: ::std::option::Option<crate::config::Builder>,
   51     49   
}
   52     50   
impl
   53     51   
    crate::client::customize::internal::CustomizableSend<
   54     52   
        crate::operation::create_access_point::CreateAccessPointOutput,
   55     53   
        crate::operation::create_access_point::CreateAccessPointError,
@@ -255,253 +320,297 @@
  275    273   
    /// <p>Scope is only supported for access points attached to directory buckets.</p>
  276    274   
    /// </note>
  277    275   
    pub fn get_scope(&self) -> &::std::option::Option<crate::types::Scope> {
  278    276   
        self.inner.get_scope()
  279    277   
    }
  280    278   
    ///
  281    279   
    /// Appends an item to `Tags`.
  282    280   
    ///
  283    281   
    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
  284    282   
    ///
  285         -
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p><note>
  286         -
    /// <ul>
  287         -
    /// <li>
  288         -
    /// <p>You must have the <code>s3:TagResource</code> permission to create an access point with tags for a general purpose bucket.</p></li>
  289         -
    /// <li>
  290         -
    /// <p>You must have the <code>s3express:TagResource</code> permission to create an access point with tags for a directory bucket.</p></li>
  291         -
    /// </ul>
  292         -
    /// </note>
         283  +
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p>
  293    284   
    pub fn tags(mut self, input: crate::types::Tag) -> Self {
  294    285   
        self.inner = self.inner.tags(input);
  295    286   
        self
  296    287   
    }
  297         -
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p><note>
  298         -
    /// <ul>
  299         -
    /// <li>
  300         -
    /// <p>You must have the <code>s3:TagResource</code> permission to create an access point with tags for a general purpose bucket.</p></li>
  301         -
    /// <li>
  302         -
    /// <p>You must have the <code>s3express:TagResource</code> permission to create an access point with tags for a directory bucket.</p></li>
  303         -
    /// </ul>
  304         -
    /// </note>
         288  +
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p>
  305    289   
    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
  306    290   
        self.inner = self.inner.set_tags(input);
  307    291   
        self
  308    292   
    }
  309         -
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p><note>
  310         -
    /// <ul>
  311         -
    /// <li>
  312         -
    /// <p>You must have the <code>s3:TagResource</code> permission to create an access point with tags for a general purpose bucket.</p></li>
  313         -
    /// <li>
  314         -
    /// <p>You must have the <code>s3express:TagResource</code> permission to create an access point with tags for a directory bucket.</p></li>
  315         -
    /// </ul>
  316         -
    /// </note>
         293  +
    /// <p>An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html">Using tags with Amazon S3</a>. For information about tagging access points, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac">Using tags for attribute-based access control (ABAC)</a>.</p>
  317    294   
    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
  318    295   
        self.inner.get_tags()
  319    296   
    }
  320    297   
}

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/create_access_point_for_object_lambda/builders.rs

@@ -7,7 +69,67 @@
   27     27   
/// </note>
   28     28   
/// <p>Creates an Object Lambda Access Point. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/transforming-objects.html">Transforming objects with Object Lambda Access Points</a> in the <i>Amazon S3 User Guide</i>.</p>
   29     29   
/// <p>The following actions are related to <code>CreateAccessPointForObjectLambda</code>:</p>
   30     30   
/// <ul>
   31     31   
/// <li>
   32     32   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessPointForObjectLambda.html">DeleteAccessPointForObjectLambda</a></p></li>
   33     33   
/// <li>
   34     34   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessPointForObjectLambda.html">GetAccessPointForObjectLambda</a></p></li>
   35     35   
/// <li>
   36     36   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessPointsForObjectLambda.html">ListAccessPointsForObjectLambda</a></p></li>
   37         -
/// </ul><important>
   38         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   39         -
/// </important>
          37  +
/// </ul>
   40     38   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   41     39   
pub struct CreateAccessPointForObjectLambdaFluentBuilder {
   42     40   
    handle: ::std::sync::Arc<crate::client::Handle>,
   43     41   
    inner: crate::operation::create_access_point_for_object_lambda::builders::CreateAccessPointForObjectLambdaInputBuilder,
   44     42   
    config_override: ::std::option::Option<crate::config::Builder>,
   45     43   
}
   46     44   
impl
   47     45   
    crate::client::customize::internal::CustomizableSend<
   48     46   
        crate::operation::create_access_point_for_object_lambda::CreateAccessPointForObjectLambdaOutput,
   49     47   
        crate::operation::create_access_point_for_object_lambda::CreateAccessPointForObjectLambdaError,

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/create_job/builders.rs

@@ -18,18 +80,78 @@
   38     38   
/// <li>
   39     39   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html">DescribeJob</a></p></li>
   40     40   
/// <li>
   41     41   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListJobs.html">ListJobs</a></p></li>
   42     42   
/// <li>
   43     43   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateJobPriority.html">UpdateJobPriority</a></p></li>
   44     44   
/// <li>
   45     45   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateJobStatus.html">UpdateJobStatus</a></p></li>
   46     46   
/// <li>
   47     47   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobOperation.html">JobOperation</a></p></li>
   48         -
/// </ul><important>
   49         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   50         -
/// </important>
          48  +
/// </ul>
   51     49   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   52     50   
pub struct CreateJobFluentBuilder {
   53     51   
    handle: ::std::sync::Arc<crate::client::Handle>,
   54     52   
    inner: crate::operation::create_job::builders::CreateJobInputBuilder,
   55     53   
    config_override: ::std::option::Option<crate::config::Builder>,
   56     54   
}
   57     55   
impl crate::client::customize::internal::CustomizableSend<crate::operation::create_job::CreateJobOutput, crate::operation::create_job::CreateJobError>
   58     56   
    for CreateJobFluentBuilder
   59     57   
{
   60     58   
    fn send(

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/create_multi_region_access_point/builders.rs

@@ -11,11 +73,71 @@
   31     31   
/// <p>The following actions are related to <code>CreateMultiRegionAccessPoint</code>:</p>
   32     32   
/// <ul>
   33     33   
/// <li>
   34     34   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteMultiRegionAccessPoint.html">DeleteMultiRegionAccessPoint</a></p></li>
   35     35   
/// <li>
   36     36   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeMultiRegionAccessPointOperation.html">DescribeMultiRegionAccessPointOperation</a></p></li>
   37     37   
/// <li>
   38     38   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetMultiRegionAccessPoint.html">GetMultiRegionAccessPoint</a></p></li>
   39     39   
/// <li>
   40     40   
/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListMultiRegionAccessPoints.html">ListMultiRegionAccessPoints</a></p></li>
   41         -
/// </ul><important>
   42         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   43         -
/// </important>
          41  +
/// </ul>
   44     42   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   45     43   
pub struct CreateMultiRegionAccessPointFluentBuilder {
   46     44   
    handle: ::std::sync::Arc<crate::client::Handle>,
   47     45   
    inner: crate::operation::create_multi_region_access_point::builders::CreateMultiRegionAccessPointInputBuilder,
   48     46   
    config_override: ::std::option::Option<crate::config::Builder>,
   49     47   
}
   50     48   
impl
   51     49   
    crate::client::customize::internal::CustomizableSend<
   52     50   
        crate::operation::create_multi_region_access_point::CreateMultiRegionAccessPointOutput,
   53     51   
        crate::operation::create_multi_region_access_point::CreateMultiRegionAccessPointError,

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/create_storage_lens_group/builders.rs

@@ -1,1 +59,57 @@
   17     17   
    > {
   18     18   
        let mut fluent_builder = client.create_storage_lens_group();
   19     19   
        fluent_builder.inner = self;
   20     20   
        fluent_builder.send().await
   21     21   
    }
   22     22   
}
   23     23   
/// Fluent builder constructing a request to `CreateStorageLensGroup`.
   24     24   
///
   25     25   
/// <p>Creates a new S3 Storage Lens group and associates it with the specified Amazon Web Services account ID. An S3 Storage Lens group is a custom grouping of objects based on prefix, suffix, object tags, object size, object age, or a combination of these filters. For each Storage Lens group that you’ve created, you can also optionally add Amazon Web Services resource tags. For more information about S3 Storage Lens groups, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-groups-overview.html">Working with S3 Storage Lens groups</a>.</p>
   26     26   
/// <p>To use this operation, you must have the permission to perform the <code>s3:CreateStorageLensGroup</code> action. If you’re trying to create a Storage Lens group with Amazon Web Services resource tags, you must also have permission to perform the <code>s3:TagResource</code> action. For more information about the required Storage Lens Groups permissions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_iam_permissions.html#storage_lens_groups_permissions">Setting account permissions to use S3 Storage Lens groups</a>.</p>
   27         -
/// <p>For information about Storage Lens groups errors, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3LensErrorCodeList">List of Amazon S3 Storage Lens error codes</a>.</p><important>
   28         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   29         -
/// </important>
          27  +
/// <p>For information about Storage Lens groups errors, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3LensErrorCodeList">List of Amazon S3 Storage Lens error codes</a>.</p>
   30     28   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   31     29   
pub struct CreateStorageLensGroupFluentBuilder {
   32     30   
    handle: ::std::sync::Arc<crate::client::Handle>,
   33     31   
    inner: crate::operation::create_storage_lens_group::builders::CreateStorageLensGroupInputBuilder,
   34     32   
    config_override: ::std::option::Option<crate::config::Builder>,
   35     33   
}
   36     34   
impl
   37     35   
    crate::client::customize::internal::CustomizableSend<
   38     36   
        crate::operation::create_storage_lens_group::CreateStorageLensGroupOutput,
   39     37   
        crate::operation::create_storage_lens_group::CreateStorageLensGroupError,

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/delete_access_grant/builders.rs

@@ -3,3 +65,63 @@
   23     23   
/// Fluent builder constructing a request to `DeleteAccessGrant`.
   24     24   
///
   25     25   
/// <p>Deletes the access grant from the S3 Access Grants instance. You cannot undo an access grant deletion and the grantee will no longer have access to the S3 data.</p>
   26     26   
/// <dl>
   27     27   
/// <dt>
   28     28   
/// Permissions
   29     29   
/// </dt>
   30     30   
/// <dd>
   31     31   
/// <p>You must have the <code>s3:DeleteAccessGrant</code> permission to use this operation.</p>
   32     32   
/// </dd>
   33         -
/// </dl><important>
   34         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   35         -
/// </important>
          33  +
/// </dl>
   36     34   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   37     35   
pub struct DeleteAccessGrantFluentBuilder {
   38     36   
    handle: ::std::sync::Arc<crate::client::Handle>,
   39     37   
    inner: crate::operation::delete_access_grant::builders::DeleteAccessGrantInputBuilder,
   40     38   
    config_override: ::std::option::Option<crate::config::Builder>,
   41     39   
}
   42     40   
impl
   43     41   
    crate::client::customize::internal::CustomizableSend<
   44     42   
        crate::operation::delete_access_grant::DeleteAccessGrantOutput,
   45     43   
        crate::operation::delete_access_grant::DeleteAccessGrantError,

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/delete_access_grants_instance/builders.rs

@@ -3,3 +65,63 @@
   23     23   
/// Fluent builder constructing a request to `DeleteAccessGrantsInstance`.
   24     24   
///
   25     25   
/// <p>Deletes your S3 Access Grants instance. You must first delete the access grants and locations before S3 Access Grants can delete the instance. See <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrant.html">DeleteAccessGrant</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsLocation.html">DeleteAccessGrantsLocation</a>. If you have associated an IAM Identity Center instance with your S3 Access Grants instance, you must first dissassociate the Identity Center instance from the S3 Access Grants instance before you can delete the S3 Access Grants instance. See <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_AssociateAccessGrantsIdentityCenter.html">AssociateAccessGrantsIdentityCenter</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DissociateAccessGrantsIdentityCenter.html">DissociateAccessGrantsIdentityCenter</a>.</p>
   26     26   
/// <dl>
   27     27   
/// <dt>
   28     28   
/// Permissions
   29     29   
/// </dt>
   30     30   
/// <dd>
   31     31   
/// <p>You must have the <code>s3:DeleteAccessGrantsInstance</code> permission to use this operation.</p>
   32     32   
/// </dd>
   33         -
/// </dl><important>
   34         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   35         -
/// </important>
          33  +
/// </dl>
   36     34   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   37     35   
pub struct DeleteAccessGrantsInstanceFluentBuilder {
   38     36   
    handle: ::std::sync::Arc<crate::client::Handle>,
   39     37   
    inner: crate::operation::delete_access_grants_instance::builders::DeleteAccessGrantsInstanceInputBuilder,
   40     38   
    config_override: ::std::option::Option<crate::config::Builder>,
   41     39   
}
   42     40   
impl
   43     41   
    crate::client::customize::internal::CustomizableSend<
   44     42   
        crate::operation::delete_access_grants_instance::DeleteAccessGrantsInstanceOutput,
   45     43   
        crate::operation::delete_access_grants_instance::DeleteAccessGrantsInstanceError,

tmp-codegen-diff/aws-sdk/sdk/s3control/src/operation/delete_access_grants_instance_resource_policy/builders.rs

@@ -3,3 +65,63 @@
   23     23   
/// Fluent builder constructing a request to `DeleteAccessGrantsInstanceResourcePolicy`.
   24     24   
///
   25     25   
/// <p>Deletes the resource policy of the S3 Access Grants instance. The resource policy is used to manage cross-account access to your S3 Access Grants instance. By deleting the resource policy, you delete any cross-account permissions to your S3 Access Grants instance.</p>
   26     26   
/// <dl>
   27     27   
/// <dt>
   28     28   
/// Permissions
   29     29   
/// </dt>
   30     30   
/// <dd>
   31     31   
/// <p>You must have the <code>s3:DeleteAccessGrantsInstanceResourcePolicy</code> permission to use this operation.</p>
   32     32   
/// </dd>
   33         -
/// </dl><important>
   34         -
/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
   35         -
/// </important>
          33  +
/// </dl>
   36     34   
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
   37     35   
pub struct DeleteAccessGrantsInstanceResourcePolicyFluentBuilder {
   38     36   
    handle: ::std::sync::Arc<crate::client::Handle>,
   39     37   
    inner: crate::operation::delete_access_grants_instance_resource_policy::builders::DeleteAccessGrantsInstanceResourcePolicyInputBuilder,
   40     38   
    config_override: ::std::option::Option<crate::config::Builder>,
   41     39   
}
   42     40   
impl
   43     41   
    crate::client::customize::internal::CustomizableSend<
   44     42   
        crate::operation::delete_access_grants_instance_resource_policy::DeleteAccessGrantsInstanceResourcePolicyOutput,
   45     43   
        crate::operation::delete_access_grants_instance_resource_policy::DeleteAccessGrantsInstanceResourcePolicyError,