// Code generated by smithy-go-codegen DO NOT EDIT. package cloudformation import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) // For a specified stack that's in the UPDATE_ROLLBACK_FAILED state, continues // rolling it back to the UPDATE_ROLLBACK_COMPLETE state. Depending on the cause // of the failure, you can manually fix the error (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-update-rollback-failed) // and continue the rollback. By continuing the rollback, you can return your stack // to a working state (the UPDATE_ROLLBACK_COMPLETE state), and then try to update // the stack again. A stack goes into the UPDATE_ROLLBACK_FAILED state when // CloudFormation can't roll back all changes after a failed stack update. For // example, you might have a stack that's rolling back to an old database instance // that was deleted outside of CloudFormation. Because CloudFormation doesn't know // the database was deleted, it assumes that the database instance still exists and // attempts to roll back to it, causing the update rollback to fail. func (c *Client) ContinueUpdateRollback(ctx context.Context, params *ContinueUpdateRollbackInput, optFns ...func(*Options)) (*ContinueUpdateRollbackOutput, error) { if params == nil { params = &ContinueUpdateRollbackInput{} } result, metadata, err := c.invokeOperation(ctx, "ContinueUpdateRollback", params, optFns, c.addOperationContinueUpdateRollbackMiddlewares) if err != nil { return nil, err } out := result.(*ContinueUpdateRollbackOutput) out.ResultMetadata = metadata return out, nil } // The input for the ContinueUpdateRollback action. type ContinueUpdateRollbackInput struct { // The name or the unique ID of the stack that you want to continue rolling back. // Don't specify the name of a nested stack (a stack that was created by using the // AWS::CloudFormation::Stack resource). Instead, use this operation on the parent // stack (the stack that contains the AWS::CloudFormation::Stack resource). // // This member is required. StackName *string // A unique identifier for this ContinueUpdateRollback request. Specify this token // if you plan to retry requests so that CloudFormation knows that you're not // attempting to continue the rollback to a stack with the same name. You might // retry ContinueUpdateRollback requests to ensure that CloudFormation // successfully received them. ClientRequestToken *string // A list of the logical IDs of the resources that CloudFormation skips during the // continue update rollback operation. You can specify only resources that are in // the UPDATE_FAILED state because a rollback failed. You can't specify resources // that are in the UPDATE_FAILED state for other reasons, for example, because an // update was canceled. To check why a resource update failed, use the // DescribeStackResources action, and view the resource status reason. Specify this // property to skip rolling back resources that CloudFormation can't successfully // roll back. We recommend that you troubleshoot (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-update-rollback-failed) // resources before skipping them. CloudFormation sets the status of the specified // resources to UPDATE_COMPLETE and continues to roll back the stack. After the // rollback is complete, the state of the skipped resources will be inconsistent // with the state of the resources in the stack template. Before performing another // stack update, you must update the stack or resources to be consistent with each // other. If you don't, subsequent stack updates might fail, and the stack will // become unrecoverable. Specify the minimum number of resources required to // successfully roll back your stack. For example, a failed resource update might // cause dependent resources to fail. In this case, it might not be necessary to // skip the dependent resources. To skip resources that are part of nested stacks, // use the following format: NestedStackName.ResourceLogicalID . If you want to // specify the logical ID of a stack resource ( Type: AWS::CloudFormation::Stack ) // in the ResourcesToSkip list, then its corresponding embedded stack must be in // one of the following states: DELETE_IN_PROGRESS , DELETE_COMPLETE , or // DELETE_FAILED . Don't confuse a child stack's name with its corresponding // logical ID defined in the parent stack. For an example of a continue update // rollback operation with nested stacks, see Using ResourcesToSkip to recover a // nested stacks hierarchy (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-continueupdaterollback.html#nested-stacks) // . ResourcesToSkip []string // The Amazon Resource Name (ARN) of an Identity and Access Management (IAM) role // that CloudFormation assumes to roll back the stack. CloudFormation uses the // role's credentials to make calls on your behalf. CloudFormation always uses this // role for all future operations on the stack. Provided that users have permission // to operate on the stack, CloudFormation uses this role even if the users don't // have permission to pass it. Ensure that the role grants least permission. If you // don't specify a value, CloudFormation uses the role that was previously // associated with the stack. If no role is available, CloudFormation uses a // temporary session that's generated from your user credentials. RoleARN *string noSmithyDocumentSerde } // The output for a ContinueUpdateRollback operation. type ContinueUpdateRollbackOutput struct { // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata noSmithyDocumentSerde } func (c *Client) addOperationContinueUpdateRollbackMiddlewares(stack *middleware.Stack, options Options) (err error) { err = stack.Serialize.Add(&awsAwsquery_serializeOpContinueUpdateRollback{}, middleware.After) if err != nil { return err } err = stack.Deserialize.Add(&awsAwsquery_deserializeOpContinueUpdateRollback{}, middleware.After) if err != nil { return err } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { return err } if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { return err } if err = addRetryMiddlewares(stack, options); err != nil { return err } if err = addHTTPSignerV4Middleware(stack, options); err != nil { return err } if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { return err } if err = awsmiddleware.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 = addOpContinueUpdateRollbackValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opContinueUpdateRollback(options.Region), middleware.Before); err != nil { return err } if err = awsmiddleware.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 } return nil } func newServiceMetadataMiddleware_opContinueUpdateRollback(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, SigningName: "cloudformation", OperationName: "ContinueUpdateRollback", } }