cfn

package
v1.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 24, 2024 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const WAIT_PERIOD_IN_SECONDS = 2

Variables

View Source
var AllTypes string
View Source
var Schemas map[string]string

Functions

func AddStackSetInstances added in v1.3.0

func AddStackSetInstances(conf StackSetConfig, instanceConf StackSetInstancesConfig, wait bool) error

AddStackSetInstances adds instances to a stack set

func ConvertPropType added in v1.8.2

func ConvertPropType(t any) any

func CreateChangeSet

func CreateChangeSet(template cft.Template, params []types.Parameter, tags map[string]string, stackName string, roleArn string) (string, error)

CreateChangeSet creates a changeset

func CreateStackSet added in v1.3.0

func CreateStackSet(conf StackSetConfig) (*string, error)

CreateStackSet creates stack set

func CreateStackSetInstances added in v1.3.0

func CreateStackSetInstances(conf StackSetInstancesConfig, wait bool) error

func DeleteAllStackSetInstances added in v1.3.0

func DeleteAllStackSetInstances(stackSetName string, wait bool, retainStacks bool) error

DeleteAllStackSetInstances deletes all instances for a given stack set

func DeleteChangeSet

func DeleteChangeSet(stackName, changeSetName string) error

DeleteChangeSet deletes the named changeset

func DeleteStack

func DeleteStack(stackName string, roleArn string) error

DeleteStack deletes a stack

func DeleteStackSet added in v1.3.0

func DeleteStackSet(stackSetName string) error

DeleteStackSet deletes a stack set

func DeleteStackSetInstances added in v1.3.0

func DeleteStackSetInstances(stackSetName string, accounts []string, regions []string, wait bool, retainStacks bool) error

DeleteStackSetInstances deletes instances for a given stack set in specified accounts and regions

func ExecuteChangeSet

func ExecuteChangeSet(stackName, changeSetName string, disableRollback bool) error

ExecuteChangeSet executes the named changeset

func GetChangeSet

func GetChangeSet(stackName, changeSetName string) (*cloudformation.DescribeChangeSetOutput, error)

GetChangeSet returns the named changeset

func GetPrimaryIdentifierValues added in v1.4.0

func GetPrimaryIdentifierValues(
	primaryIdentifier []string,
	resource *yaml.Node,
	template *yaml.Node,
	dc *dc.DeployConfig) []string

Get the values specified for primary identifiers in the template. The return value will only have values if they are set. TODO: Use ccapi to look at the deployed resource model for updates

func GetStack

func GetStack(stackName string) (types.Stack, error)

GetStack returns a cloudformation.Stack representing the named stack

func GetStackEvents

func GetStackEvents(stackName string) ([]types.StackEvent, error)

GetStackEvents returns all events associated with the named stack

func GetStackOutput added in v1.4.0

func GetStackOutput(stack types.Stack) (string, []string)

GetStackOutput returns a pretty representation of a CloudFormation stack's status

func GetStackResource added in v1.4.0

func GetStackResource(stackName string, logicalId string) (*types.StackResourceDetail, error)

Get a single deployed stack resource

func GetStackResources

func GetStackResources(stackName string) ([]types.StackResource, error)

GetStackResources returns a list of the resources in the named stack

func GetStackSet added in v1.3.0

func GetStackSet(stackSetName string) (*types.StackSet, error)

GetStackSet returns a cloudformation.StackSet

func GetStackSetOperationsResult added in v1.3.0

func GetStackSetOperationsResult(stackSetName *string, operationId *string) (*types.StackSetOperationResultSummary, error)

GetStackSetOperationsResult returns an operation result for a given stack sets operation id

func GetStackSetSummary added in v1.4.0

func GetStackSetSummary(stackSet *types.StackSet, long bool) string

func GetStackSummary added in v1.4.0

func GetStackSummary(stack types.Stack, long bool) string

GetStackSummary returns a string representation of an existing stack. If long is false, only the stack status and stack outputs will be included. If long is true, resources and parameters will be also included in the output.

func GetStackTemplate

func GetStackTemplate(stackName string, processed bool) (string, error)

GetStackTemplate returns the template used to launch the named stack

func GetTypeIdentifier added in v1.4.0

func GetTypeIdentifier(name string) ([]string, error)

Get the primaryIdentifier of a resource type from the schema

func GetTypePermissions added in v1.4.0

func GetTypePermissions(name string, handlerVerb string) ([]string, error)

Get the list of actions required to invoke a CloudFormation handler

func GetTypeSchema added in v1.4.0

func GetTypeSchema(name string, noCache bool) (string, error)

Get the schema for a CloudFormation resource type

func IsCCAPI added in v1.8.0

func IsCCAPI(name string) (bool, error)

IsCCAPI returns true if the type is fully supported by CCAPI

func ListChangeSets added in v1.8.0

func ListChangeSets(stackName string) ([]types.ChangeSetSummary, error)

List the active change sets associated with a stack

func ListLast10StackSetOperations added in v1.3.0

func ListLast10StackSetOperations(stackSetName string) ([]types.StackSetOperationSummary, error)

ListLast10StackSetOperations returns a list of last 10 operations for a given stack sets

func ListResourceTypes added in v1.8.0

func ListResourceTypes(noCache bool) ([]string, error)

ListResourceTypes lists all live registry resource types

func ListStackSetInstances added in v1.3.0

func ListStackSetInstances(stackSetName string) ([]types.StackInstanceSummary, error)

ListStackSetInstances returns a list of all stack set instances for a given stack set

func ListStackSets added in v1.3.0

func ListStackSets() ([]types.StackSetSummary, error)

ListStackSets returns a list of all existing stack sets

func ListStacks

func ListStacks() ([]types.StackSummary, error)

ListStacks returns a list of all existing stacks

func ResourceAlreadyExists added in v1.4.0

func ResourceAlreadyExists(
	typeName string,
	resource *yaml.Node,
	stackExists bool,
	template *yaml.Node,
	dc *dc.DeployConfig) bool

ResourceAlreadyExists returns true if the resource has all of its primary identifiers hard coded into the template, and this is not a stack update, and a resource with those identifiers already exists.

func SetTerminationProtection

func SetTerminationProtection(stackName string, protectionEnabled bool) error

SetTerminationProtection enables or disables termination protection for a stack

func StackExists

func StackExists(stackName string) (bool, error)

StackExists checks whether the named stack currently exists

func StackHasSettled added in v1.4.0

func StackHasSettled(stack types.Stack) bool

StackHasSettled returns whether a given status represents a stack that has settled, i.e. is not updating

func StatusIsSettled added in v1.4.0

func StatusIsSettled(status string) bool

func UniqueStrings added in v1.3.0

func UniqueStrings(input []string) []string

uniqueStrings returns a unique subset of the string slice provided.

func UpdateStackSet added in v1.3.0

func UpdateStackSet(conf StackSetConfig, instanceConf StackSetInstancesConfig, wait bool) error

UpdateStackSet updates stack set and its instances

func WaitForStackToSettle added in v1.4.0

func WaitForStackToSettle(stackName string) (string, []string)

WaitForStackToSettle blocks excute until a stack has finished updating and then returns its status

func WaitUntilStackCreateComplete

func WaitUntilStackCreateComplete(stackName string) error

WaitUntilStackCreateComplete pauses execution until the stack is completed (or fails)

func WaitUntilStackExists

func WaitUntilStackExists(stackName string) error

WaitUntilStackExists pauses execution until the named stack exists

func WaitUntilStackSetOperationCompleted added in v1.3.0

func WaitUntilStackSetOperationCompleted(operationId string, stacksetName string) error

Types

type Prop added in v1.8.0

type Prop struct {
	Description          string           `json:"description"`
	Items                *Prop            `json:"items"`
	Type                 any              `json:"type"`
	UniqueItems          bool             `json:"uniqueItems"`
	InsertionOrder       bool             `json:"insertionOrder"`
	Ref                  string           `json:"$ref"`
	MaxLength            int              `json:"maxLength"`
	MinLength            int              `json:"minLength"`
	Pattern              string           `json:"pattern"`
	Examples             []any            `json:"examples"`
	AdditionalProperties bool             `json:"additionalProperties"`
	Properties           map[string]*Prop `json:"properties"`
	Enum                 []any            `json:"enum"`
	Required             []string         `json:"required"`
	OneOf                []*Prop          `json:"oneOf"`
	AnyOf                []*Prop          `json:"anyOf"`
	AllOf                []*Prop          `json:"allOf"`
	PatternProperties    any              `json:"patternProperties"`
	Title                string           `json:"title"`
}

Represents a registry schema property or definition

func (*Prop) GetProperties added in v1.8.0

func (p *Prop) GetProperties() map[string]*Prop

func (*Prop) GetRequired added in v1.8.0

func (p *Prop) GetRequired() []string

type Schema added in v1.8.0

type Schema struct {
	TypeName             string           `json:"typeName"`
	Description          string           `json:"description"`
	SourceUrl            string           `json:"sourceUrl"`
	Definitions          map[string]*Prop `json:"definitions"`
	Handlers             map[string]any   `json:"handlers"`
	PrimaryIdentifier    []string         `json:"primaryIdentifier"`
	Properties           map[string]*Prop `json:"properties"`
	AdditionalProperties bool             `json:"additionalProperties"`
	Tagging              map[string]any   `json:"tagging"`
	Required             []string         `json:"required"`
	ReadOnlyProperties   []string         `json:"readOnlyProperties"`
	WriteOnlyProperties  []string         `json:"writeOnlyProperties"`
	CreateOnlyProperties []string         `json:"createOnlyProperties"`
}

Represents a registry schema for a resource type like AWS::S3::Bucket

func ParseSchema added in v1.8.0

func ParseSchema(source string) (*Schema, error)

ParseSchema unmarshals the text of a registry schema into a struct

func (*Schema) GetProperties added in v1.8.0

func (s *Schema) GetProperties() map[string]*Prop

func (*Schema) GetRequired added in v1.8.0

func (s *Schema) GetRequired() []string

func (*Schema) Patch added in v1.8.0

func (schema *Schema) Patch() error

Patch applies patches to the schema to add things like undocumented enums

type SchemaLike added in v1.8.0

type SchemaLike interface {
	GetRequired() []string
	GetProperties() map[string]*Prop
}

type StackSetConfig added in v1.3.0

type StackSetConfig struct {

	// The Amazon Resource Number (ARN) of the IAM role to use to create this stack
	// set. Specify an IAM role only if you are using customized administrator roles to
	// control which users or groups can manage specific stack sets within the same
	// administrator account. For more information, see Prerequisites: Granting
	// Permissions for Stack Set Operations
	// (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html)
	// in the CloudFormation User Guide.
	AdministrationRoleARN *string

	// Describes whether StackSets automatically deploys to Organizations accounts that
	// are added to the target organization or organizational unit (OU). Specify only
	// if PermissionModel is SERVICE_MANAGED.
	AutoDeployment *types.AutoDeployment

	// [Service-managed permissions] Specifies whether you are acting as an account
	// administrator in the organization's management account or as a delegated
	// administrator in a member account. By default, SELF is specified. Use SELF for
	// stack sets with self-managed permissions.
	//
	// * To create a stack set with
	// service-managed permissions while signed in to the management account, specify
	// SELF.
	//
	// * To create a stack set with service-managed permissions while signed in
	// to a delegated administrator account, specify DELEGATED_ADMIN. Your Amazon Web
	// Services account must be registered as a delegated admin in the management
	// account. For more information, see Register a delegated administrator
	// (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html)
	// in the CloudFormation User Guide.
	//
	// Stack sets with service-managed permissions
	// are created in the management account, including stack sets that are created by
	// delegated administrators.
	CallAs types.CallAs

	// In some cases, you must explicitly acknowledge that your stack set template
	// contains certain capabilities in order for CloudFormation to create the stack
	// set and related stack instances.
	//
	// * CAPABILITY_IAM and CAPABILITY_NAMED_IAM Some
	// stack templates might include resources that can affect permissions in your
	// Amazon Web Services account; for example, by creating new Identity and Access
	// Management (IAM) users. For those stack sets, you must explicitly acknowledge
	// this by specifying one of these capabilities. The following IAM resources
	// require you to specify either the CAPABILITY_IAM or CAPABILITY_NAMED_IAM
	// capability.
	//
	// * If you have IAM resources, you can specify either capability.
	//
	// *
	// If you have IAM resources with custom names, you must specify
	// CAPABILITY_NAMED_IAM.
	//
	// * If you don't specify either of these capabilities,
	// CloudFormation returns an InsufficientCapabilities error.
	//
	// If your stack
	// template contains these resources, we recommend that you review all permissions
	// associated with them and edit their permissions if necessary.
	//
	// *
	// AWS::IAM::AccessKey
	// (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html)
	//
	// *
	// AWS::IAM::Group
	// (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html)
	//
	// *
	// AWS::IAM::InstanceProfile
	// (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html)
	//
	// *
	// AWS::IAM::Policy
	// (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html)
	//
	// *
	// AWS::IAM::Role
	// (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)
	//
	// *
	// AWS::IAM::User
	// (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html)
	//
	// *
	// AWS::IAM::UserToGroupAddition
	// (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html)
	//
	// For
	// more information, see Acknowledging IAM Resources in CloudFormation Templates
	// (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities).
	//
	// *
	// CAPABILITY_AUTO_EXPAND Some templates reference macros. If your stack set
	// template references one or more macros, you must create the stack set directly
	// from the processed template, without first reviewing the resulting changes in a
	// change set. To create the stack set directly, you must acknowledge this
	// capability. For more information, see Using CloudFormation Macros to Perform
	// Custom Processing on Templates
	// (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html).
	// Stack sets with service-managed permissions don't currently support the use of
	// macros in templates. (This includes the AWS::Include
	// (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/create-reusable-transform-function-snippets-and-add-to-your-template-with-aws-include-transform.html)
	// and AWS::Serverless
	// (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html)
	// transforms, which are macros hosted by CloudFormation.) Even if you specify this
	// capability for a stack set with service-managed permissions, if you reference a
	// macro in your template the stack set operation will fail.
	Capabilities []types.Capability

	// A description of the stack set. You can use the description to identify the
	// stack set's purpose or other important information.
	Description *string

	// The name of the IAM execution role to use to create the stack set. If you do not
	// specify an execution role, CloudFormation uses the
	// AWSCloudFormationStackSetExecutionRole role for the stack set operation. Specify
	// an IAM role only if you are using customized execution roles to control which
	// stack resources users and groups can include in their stack sets.
	ExecutionRoleName *string

	// Describes whether StackSets performs non-conflicting operations concurrently and
	// queues conflicting operations.
	ManagedExecution *types.ManagedExecution

	// Describes how the IAM roles required for stack set operations are created. By
	// default, SELF-MANAGED is specified.
	//
	// * With self-managed permissions, you must
	// create the administrator and execution roles required to deploy to target
	// accounts. For more information, see Grant Self-Managed Stack Set Permissions
	// (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html).
	//
	// *
	// With service-managed permissions, StackSets automatically creates the IAM roles
	// required to deploy to accounts managed by Organizations. For more information,
	// see Grant Service-Managed Stack Set Permissions
	// (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-service-managed.html).
	PermissionModel types.PermissionModels

	// service fields, not to be used in configuration file
	StackSetName string            `yaml:"-"`
	Template     cft.Template      `yaml:"-"`
	Parameters   []types.Parameter `yaml:"-"`
	Tags         []types.Tag       `yaml:"-"`
}

type StackSetInstancesConfig added in v1.3.0

type StackSetInstancesConfig struct {

	// The names of one or more Amazon Web Services Regions where you want to create
	// stack instances using the specified Amazon Web Services accounts.
	//
	// This member is required.
	Regions []string

	// [Service-managed permissions] The Organizations accounts for which to create
	// stack instances in the specified Amazon Web Services Regions. You can specify
	// Accounts or DeploymentTargets, but not both.
	Accounts []string

	// [Service-managed permissions] The Organizations accounts for which to create
	// stack instances in the specified Amazon Web Services Regions. You can specify
	// Accounts or DeploymentTargets, but not both.
	DeploymentTargets *types.DeploymentTargets

	// Preferences for how CloudFormation performs this stack set operation.
	OperationPreferences *types.StackSetOperationPreferences

	// service fields, not to be used in configuration file
	StackSetName string       `yaml:"-"`
	CallAs       types.CallAs `yaml:"-"`
}

we treat list of provided accounts and regions as requirement to have instances in all the provided accounts whether updated or created(added).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL