1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
// Code generated by smithy-go-codegen DO NOT EDIT.
package organizations
import (
"context"
"fmt"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Removes a member account from its parent organization. This version of the
// operation is performed by the account that wants to leave. To remove a member
// account as a user in the management account, use RemoveAccountFromOrganizationinstead.
//
// This operation can be called only from a member account in the organization.
//
// - The management account in an organization with all features enabled can set
// service control policies (SCPs) that can restrict what administrators of member
// accounts can do. This includes preventing them from successfully calling
// LeaveOrganization and leaving the organization.
//
// - You can leave an organization as a member account only if the account is
// configured with the information required to operate as a standalone account.
// When you create an account in an organization using the Organizations console,
// API, or CLI commands, the information required of standalone accounts is not
// automatically collected. For each account that you want to make standalone, you
// must perform the following steps. If any of the steps are already completed for
// this account, that step doesn't appear.
//
// - Choose a support plan
//
// - Provide and verify the required contact information
//
// - Provide a current payment method
//
// Amazon Web Services uses the payment method to charge for any billable (not
//
// free tier) Amazon Web Services activity that occurs while the account isn't
// attached to an organization. For more information, see [Considerations before removing an account from an organization]in the Organizations
// User Guide.
//
// - The account that you want to leave must not be a delegated administrator
// account for any Amazon Web Services service enabled for your organization. If
// the account is a delegated administrator, you must first change the delegated
// administrator account to another account that is remaining in the organization.
//
// - You can leave an organization only after you enable IAM user access to
// billing in your account. For more information, see [About IAM access to the Billing and Cost Management console]in the Amazon Web Services
// Billing and Cost Management User Guide.
//
// - After the account leaves the organization, all tags that were attached to
// the account object in the organization are deleted. Amazon Web Services accounts
// outside of an organization do not support tags.
//
// - A newly created account has a waiting period before it can be removed from
// its organization. If you get an error that indicates that a wait period is
// required, then try again in a few days.
//
// - If you are using an organization principal to call LeaveOrganization across
// multiple accounts, you can only do this up to 5 accounts per second in a single
// organization.
//
// [About IAM access to the Billing and Cost Management console]: https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/grantaccess.html#ControllingAccessWebsite-Activate
// [Considerations before removing an account from an organization]: https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_account-before-remove.html
func (c *Client) LeaveOrganization(ctx context.Context, params *LeaveOrganizationInput, optFns ...func(*Options)) (*LeaveOrganizationOutput, error) {
if params == nil {
params = &LeaveOrganizationInput{}
}
result, metadata, err := c.invokeOperation(ctx, "LeaveOrganization", params, optFns, c.addOperationLeaveOrganizationMiddlewares)
if err != nil {
return nil, err
}
out := result.(*LeaveOrganizationOutput)
out.ResultMetadata = metadata
return out, nil
}
type LeaveOrganizationInput struct {
noSmithyDocumentSerde
}
type LeaveOrganizationOutput struct {
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationLeaveOrganizationMiddlewares(stack *middleware.Stack, options Options) (err error) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
err = stack.Serialize.Add(&awsAwsjson11_serializeOpLeaveOrganization{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpLeaveOrganization{}, middleware.After)
if err != nil {
return err
}
if err := addProtocolFinalizerMiddlewares(stack, options, "LeaveOrganization"); err != nil {
return fmt.Errorf("add protocol finalizers: %v", err)
}
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = addClientRequestID(stack); err != nil {
return err
}
if err = addComputeContentLength(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = addComputePayloadSHA256(stack); err != nil {
return err
}
if err = addRetry(stack, options); err != nil {
return err
}
if err = addRawResponseToMetadata(stack); err != nil {
return err
}
if err = addRecordResponseTiming(stack); err != nil {
return err
}
if err = addClientUserAgent(stack, options); err != nil {
return err
}
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
return err
}
if err = addTimeOffsetBuild(stack, c); err != nil {
return err
}
if err = addUserAgentRetryMode(stack, options); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opLeaveOrganization(options.Region), middleware.Before); err != nil {
return err
}
if err = addRecursionDetection(stack); err != nil {
return err
}
if err = addRequestIDRetrieverMiddleware(stack); err != nil {
return err
}
if err = addResponseErrorMiddleware(stack); err != nil {
return err
}
if err = addRequestResponseLogging(stack, options); err != nil {
return err
}
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opLeaveOrganization(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "LeaveOrganization",
}
}
|