Documentation
¶
Overview ¶
Package aws provides some higher level Amazon Web Services abstractions for access to common resources.
The exported Adapter can be used to orchestrate and obtain information about Elastic Compute Cloud (EC2), EC2 Metadata, Elastic Load Balancing (ELB v2, also known as Application Load Balancer - ALB), Auto Scaling (ASG) and CloudFormation.
Index ¶
- Constants
- Variables
- func ParseCertificate(pemCertificate string) (*x509.Certificate, error)
- func ParseCertificates(pemCertificates string) ([]*x509.Certificate, error)
- type Adapter
- func (a Adapter) CachedInstances() int
- func (a *Adapter) ClusterID() string
- func (a *Adapter) CreateStack(certificateARNs []string, ...) (string, error)
- func (a *Adapter) DeleteStack(stack *Stack) error
- func (a Adapter) FiltersString() string
- func (a *Adapter) FindLBSubnets(scheme string) []string
- func (a *Adapter) FindManagedStacks() ([]*Stack, error)
- func (a *Adapter) GetStack(stackID string) (*Stack, error)
- func (a *Adapter) InstanceID() string
- func (a *Adapter) NewACMCertificateProvider(certFilterTag string) certs.CertificatesProvider
- func (a *Adapter) NewIAMCertificateProvider(certFilterTag string) certs.CertificatesProvider
- func (a Adapter) ObsoleteSingleInstances() []string
- func (a Adapter) RunningSingleInstances() []string
- func (a *Adapter) S3Bucket() string
- func (a *Adapter) S3Prefix() string
- func (a *Adapter) SecurityGroupID() string
- func (a *Adapter) SetTargetsOnCNITargetGroups(endpoints, cniTargetGroupARNs []string) error
- func (a *Adapter) SingleInstances() []string
- func (a *Adapter) UpdateAutoScalingGroupsAndInstances() error
- func (a *Adapter) UpdateManifest(clusterID, vpcID string) (*Adapter, error)
- func (a *Adapter) UpdateStack(stackName string, certificateARNs map[string]time.Time, ...) (string, error)
- func (a *Adapter) UpdateTargetGroupsAndAutoScalingGroups(stacks []*Stack, problems *problem.List)
- func (a *Adapter) VpcID() string
- func (a *Adapter) WithALBHTTPTargetPort(port uint) *Adapter
- func (a *Adapter) WithAlbHealthyThresholdCount(count uint) *Adapter
- func (a *Adapter) WithAlbLogsS3Bucket(bucket string) *Adapter
- func (a *Adapter) WithAlbLogsS3Prefix(prefix string) *Adapter
- func (a *Adapter) WithAlbUnhealthyThresholdCount(count uint) *Adapter
- func (a *Adapter) WithControllerID(id string) *Adapter
- func (a *Adapter) WithCreationTimeout(interval time.Duration) *Adapter
- func (a *Adapter) WithCustomAutoScalingClient(c autoscalingiface.AutoScalingAPI) *Adapter
- func (a *Adapter) WithCustomCloudFormationClient(c cloudformationiface.CloudFormationAPI) *Adapter
- func (a *Adapter) WithCustomEc2Client(c ec2iface.EC2API) *Adapter
- func (a *Adapter) WithCustomElbv2Client(c elbv2iface.ELBV2API) *Adapter
- func (a *Adapter) WithCustomFilter(customFilter string) *Adapter
- func (a *Adapter) WithDenyInternalDomains(deny bool) *Adapter
- func (a *Adapter) WithDeregistrationDelayTimeout(interval time.Duration) *Adapter
- func (a *Adapter) WithHTTPRedirectToHTTPS(httpRedirectToHTTPS bool) *Adapter
- func (a *Adapter) WithHealthCheckInterval(interval time.Duration) *Adapter
- func (a *Adapter) WithHealthCheckPath(path string) *Adapter
- func (a *Adapter) WithHealthCheckPort(port uint) *Adapter
- func (a *Adapter) WithHealthCheckTimeout(timeout time.Duration) *Adapter
- func (a *Adapter) WithIdleConnectionTimeout(interval time.Duration) *Adapter
- func (a *Adapter) WithInternalDomains(domains []string) *Adapter
- func (a *Adapter) WithInternalDomainsDenyResponse(body string) *Adapter
- func (a *Adapter) WithInternalDomainsDenyResponseContenType(contentType string) *Adapter
- func (a *Adapter) WithInternalDomainsDenyResponseStatusCode(code int) *Adapter
- func (a *Adapter) WithIpAddressType(ipAddressType string) *Adapter
- func (a *Adapter) WithNLBCrossZone(nlbCrossZone bool) *Adapter
- func (a *Adapter) WithNLBHTTPEnabled(nlbHTTPEnabled bool) *Adapter
- func (a *Adapter) WithNLBHTTPTargetPort(port uint) *Adapter
- func (a *Adapter) WithNlbHealthyThresholdCount(count uint) *Adapter
- func (a *Adapter) WithSslPolicy(policy string) *Adapter
- func (a *Adapter) WithStackTags(tags map[string]string) *Adapter
- func (a *Adapter) WithStackTerminationProtection(terminationProtection bool) *Adapter
- func (a *Adapter) WithTargetAccessMode(mode string) *Adapter
- func (a *Adapter) WithTargetHTTPS(https bool) *Adapter
- func (a *Adapter) WithTargetPort(port uint) *Adapter
- type CloudWatchAlarmList
- type Stack
- type TargetCNIconfig
Constants ¶
const ( DefaultHealthCheckPath = "/kube-system/healthz" DefaultHealthCheckPort = 9999 DefaultTargetPort = 9999 DefaultHealthCheckInterval = 10 * time.Second DefaultHealthCheckTimeout = 5 * time.Second DefaultAlbHealthyThresholdCount = 5 DefaultAlbUnhealthyThresholdCount = 2 DefaultNlbHealthyThresholdCount = 3 DefaultCertificateUpdateInterval = 30 * time.Minute DefaultCreationTimeout = 5 * time.Minute DefaultIdleConnectionTimeout = 1 * time.Minute DefaultDeregistrationTimeout = 5 * time.Minute DefaultControllerID = "kube-ingress-aws-controller" // DefaultMaxCertsPerALB defines the maximum number of certificates per // ALB. AWS limit is 25 but one space is needed to work around // CloudFormation bug: // https://github.com/zalando-incubator/kube-ingress-aws-controller/pull/162 DefaultMaxCertsPerALB = 24 // DefaultSslPolicy defines the set of protocols and ciphers that will be // accepted by an SSL endpoint. // See; https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies DefaultSslPolicy = "ELBSecurityPolicy-2016-08" // DefaultIpAddressType sets IpAddressType to "ipv4", it is either ipv4 or dualstack DefaultIpAddressType = "ipv4" // DefaultAlbS3LogsBucket is a blank string, and must be set if enabled DefaultAlbS3LogsBucket = "" // DefaultAlbS3LogsPrefix is a blank string, and optionally set if desired DefaultAlbS3LogsPrefix = "" DefaultCustomFilter = "" // DefaultNLBCrossZone specifies the default configuration for cross // zone load balancing: https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#load-balancer-attributes DefaultNLBCrossZone = false DefaultNLBHTTPEnabled = false LoadBalancerTypeApplication = "application" LoadBalancerTypeNetwork = "network" IPAddressTypeIPV4 = "ipv4" IPAddressTypeDualstack = "dualstack" TargetAccessModeAWSCNI = "AWSCNI" TargetAccessModeHostPort = "HostPort" TargetAccessModeLegacy = "Legacy" )
Variables ¶
var ( // ErrLoadBalancerStackNotFound is used to signal that a given load balancer CF stack was not found. ErrLoadBalancerStackNotFound = errors.New("load balancer stack not found") // ErrLoadBalancerStackNotReady is used to signal that a given load balancer CF stack is not ready to be used. ErrLoadBalancerStackNotReady = errors.New("existing load balancer stack not ready") // ErrMissingNameTag is used to signal that the Name tag on a given resource is missing. ErrMissingNameTag = errors.New("Name tag not found") // ErrMissingTag is used to signal that a tag on a given resource is missing. ErrMissingTag = errors.New("missing tag") // ErrNoSubnets is used to signal that no subnets were found in the current VPC ErrNoSubnets = errors.New("unable to find VPC subnets") // ErrMissingAutoScalingGroupTag is used to signal that the auto scaling group tag is not present in the list of tags. ErrMissingAutoScalingGroupTag = errors.New(`instance is missing the "` + autoScalingGroupNameTag + `" tag`) // ErrNoRunningInstances is used to signal that no instances were found in the running state ErrNoRunningInstances = errors.New("no reservations or instances in the running state") // SSLPolicies is a map of valid ALB SSL Policies // https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies SSLPolicies = map[string]bool{ "ELBSecurityPolicy-2016-08": true, "ELBSecurityPolicy-FS-2018-06": true, "ELBSecurityPolicy-TLS-1-2-2017-01": true, "ELBSecurityPolicy-TLS-1-2-Ext-2018-06": true, "ELBSecurityPolicy-TLS-1-1-2017-01": true, "ELBSecurityPolicy-2015-05": true, "ELBSecurityPolicy-TLS-1-0-2015-04": true, "ELBSecurityPolicy-FS-1-1-2019-08": true, "ELBSecurityPolicy-FS-1-2-2019-08": true, "ELBSecurityPolicy-FS-1-2-Res-2019-08": true, "ELBSecurityPolicy-FS-1-2-Res-2020-10": true, "ELBSecurityPolicy-TLS13-1-2-2021-06": true, "ELBSecurityPolicy-TLS13-1-2-Res-2021-06": true, "ELBSecurityPolicy-TLS13-1-2-Ext1-2021-06": true, "ELBSecurityPolicy-TLS13-1-2-Ext2-2021-06": true, "ELBSecurityPolicy-TLS13-1-1-2021-06": true, "ELBSecurityPolicy-TLS13-1-0-2021-06": true, "ELBSecurityPolicy-TLS13-1-3-2021-06": true, } SSLPoliciesList = []string{ "ELBSecurityPolicy-2016-08", "ELBSecurityPolicy-FS-2018-06", "ELBSecurityPolicy-TLS-1-2-2017-01", "ELBSecurityPolicy-TLS-1-2-Ext-2018-06", "ELBSecurityPolicy-TLS-1-1-2017-01", "ELBSecurityPolicy-2015-05", "ELBSecurityPolicy-TLS-1-0-2015-04", "ELBSecurityPolicy-FS-1-1-2019-08", "ELBSecurityPolicy-FS-1-2-2019-08", "ELBSecurityPolicy-FS-1-2-Res-2019-08", "ELBSecurityPolicy-FS-1-2-Res-2020-10", "ELBSecurityPolicy-TLS13-1-2-2021-06", "ELBSecurityPolicy-TLS13-1-2-Res-2021-06", "ELBSecurityPolicy-TLS13-1-2-Ext1-2021-06", "ELBSecurityPolicy-TLS13-1-2-Ext2-2021-06", "ELBSecurityPolicy-TLS13-1-1-2021-06", "ELBSecurityPolicy-TLS13-1-0-2021-06", "ELBSecurityPolicy-TLS13-1-3-2021-06", } )
var ( // ErrNoCertificates is used to signal that no certificates were found in the PEM data ErrNoCertificates = errors.New("no certificates found in PEM data") // ErrTooManyCertificates is used to signal that multiple certificates were found in the PEM data where we expect only one ErrTooManyCertificates = errors.New("too many certificates found in PEM data") )
Functions ¶
func ParseCertificate ¶ added in v0.8.0
func ParseCertificate(pemCertificate string) (*x509.Certificate, error)
ParseCertificate parses exactly one X509 PEM-encoded certificate from a string
func ParseCertificates ¶ added in v0.8.0
func ParseCertificates(pemCertificates string) ([]*x509.Certificate, error)
ParseCertificates parses X509 PEM-encoded certificates from a string
Types ¶
type Adapter ¶
type Adapter struct { TargetedAutoScalingGroups map[string]*autoScalingGroupDetails OwnedAutoScalingGroups map[string]*autoScalingGroupDetails TargetCNI *TargetCNIconfig // contains filtered or unexported fields }
An Adapter can be used to orchestrate and obtain information from Amazon Web Services.
func NewAdapter ¶
func NewAdapter(clusterID, newControllerID, vpcID string, debug, disableInstrumentedHttpClient bool) (adapter *Adapter, err error)
NewAdapter returns a new Adapter that can be used to orchestrate and obtain information from Amazon Web Services. Before returning there is a discovery process for VPC and EC2 details. It tries to find the Auto Scaling Group and Security Group that should be used for newly created Load Balancers. If any of those critical steps fail an appropriate error is returned.
func (Adapter) CachedInstances ¶ added in v0.6.0
Get number of instances in cache.
func (*Adapter) ClusterID ¶
ClusterID returns the ClusterID tag that all resources from the same Kubernetes cluster share. It's taken from the current ec2 instance.
func (*Adapter) CreateStack ¶ added in v0.3.0
func (a *Adapter) CreateStack(certificateARNs []string, scheme, securityGroup, owner, sslPolicy, ipAddressType, wafWebACLID string, cwAlarms CloudWatchAlarmList, loadBalancerType string, http2 bool) (string, error)
CreateStack creates a new Application Load Balancer using CloudFormation. The stack name is derived from the Cluster ID and a has of the certificate ARNs (when available). All the required resources (listeners and target group) are created in a transactional fashion. Failure to create the stack causes it to be deleted automatically.
func (*Adapter) DeleteStack ¶ added in v0.3.0
DeleteStack deletes the CloudFormation stack with the given name
func (Adapter) FiltersString ¶ added in v0.6.0
Get EC2 filters that are used to filter instances that are loaded using DescribeInstances.
func (*Adapter) FindLBSubnets ¶ added in v0.5.0
FindLBSubnets finds subnets for an ALB based on the scheme.
It follows the same logic for finding subnets as the kube-controller-manager when finding subnets for ELBs used for services of type LoadBalancer. https://github.com/kubernetes/kubernetes/blob/65efeee64f772e0f38037e91a677138a335a7570/pkg/cloudprovider/providers/aws/aws.go#L2949-L3027
func (*Adapter) FindManagedStacks ¶ added in v0.3.0
FindManagedStacks returns all CloudFormation stacks containing the controller management tags that match the current cluster and are ready to be used. The stack status is used to filter.
func (*Adapter) GetStack ¶ added in v0.3.0
GetStack returns the CloudFormation stack details with the name or ID from the argument
func (*Adapter) InstanceID ¶
InstanceID returns the instance ID the current node is running on.
func (*Adapter) NewACMCertificateProvider ¶ added in v0.3.0
func (a *Adapter) NewACMCertificateProvider(certFilterTag string) certs.CertificatesProvider
func (*Adapter) NewIAMCertificateProvider ¶ added in v0.3.0
func (a *Adapter) NewIAMCertificateProvider(certFilterTag string) certs.CertificatesProvider
func (Adapter) ObsoleteSingleInstances ¶ added in v0.6.0
ObsoleteSingleInstances returns list of IDs of instances that should be deregistered from all Target Groups.
func (Adapter) RunningSingleInstances ¶ added in v0.6.0
RunningSingleInstances returns list of IDs of running instances that do not belong to any Auto Scaling Group and should be managed manually.
func (*Adapter) SecurityGroupID ¶
SecurityGroupID returns the security group ID that should be used to create Load Balancers.
func (*Adapter) SetTargetsOnCNITargetGroups ¶ added in v0.12.17
SetTargetsOnCNITargetGroups implements desired state for CNI target groups by polling the current list of targets thus creating a diff of what needs to be added and removed.
func (*Adapter) SingleInstances ¶ added in v0.6.0
SingleInstances returns list of IDs of instances that do not belong to any Auto Scaling Group and should be managed manually.
func (*Adapter) UpdateAutoScalingGroupsAndInstances ¶ added in v0.6.0
UpdateAutoScalingGroupsAndInstances updates list of known ASGs and EC2 instances.
func (*Adapter) UpdateManifest ¶ added in v0.14.15
UpdateManifest generates a manifest again based on cluster and VPC information. This method is useful when using custom AWS clients.
func (*Adapter) UpdateStack ¶ added in v0.3.8
func (*Adapter) UpdateTargetGroupsAndAutoScalingGroups ¶ added in v0.6.0
UpdateTargetGroupsAndAutoScalingGroups updates Auto Scaling Groups config to have relevant Target Groups and registers/deregisters single instances (that do not belong to ASG) in relevant Target Groups.
func (*Adapter) WithALBHTTPTargetPort ¶ added in v0.12.2
WithALBHTTPTargetPort configures the ALB HTTP target port
func (*Adapter) WithAlbHealthyThresholdCount ¶ added in v0.12.12
WithAlbHealthyThresholdCount returns the receiver adapter after changing the healthy threshold count that will be used by the resources created by the adapter
func (*Adapter) WithAlbLogsS3Bucket ¶ added in v0.8.1
WithAlbLogsS3Bucket returns the receiver adapter after changing the S3 bucket for logging
func (*Adapter) WithAlbLogsS3Prefix ¶ added in v0.8.1
WithAlbLogsS3Bucket returns the receiver adapter after changing the S3 prefix within the bucket for logging
func (*Adapter) WithAlbUnhealthyThresholdCount ¶ added in v0.12.12
WithAlbUnhealthyThresholdCount returns the receiver adapter after changing the unhealthy threshold count that will be used by the resources created by the adapter
func (*Adapter) WithControllerID ¶ added in v0.6.11
WithControllerID returns the receiver adapter after changing the CloudFormation template that should be used to create Load Balancer stacks
func (*Adapter) WithCreationTimeout ¶ added in v0.3.0
WithCreationTimeout returns the receiver adapter after changing the creation timeout that is used as the max wait time for the creation of all the required AWS resources for a given Ingress
func (*Adapter) WithCustomAutoScalingClient ¶ added in v0.14.15
func (a *Adapter) WithCustomAutoScalingClient(c autoscalingiface.AutoScalingAPI) *Adapter
WithCustomAutoScalingClient returns an Adapter that will use the provided Auto scaling client, instead of the Auto scaling client provided by AWS.
func (*Adapter) WithCustomCloudFormationClient ¶ added in v0.14.15
func (a *Adapter) WithCustomCloudFormationClient(c cloudformationiface.CloudFormationAPI) *Adapter
WithCustomCloudFormationClient returns an Adapter that will use the provided CloudFormation client, instead of the CloudFormation client provided by AWS.
func (*Adapter) WithCustomEc2Client ¶ added in v0.14.15
WithCustomEc2Client returns an Adapter that will use the provided EC2 client, instead of the EC2 client provided by AWS.
func (*Adapter) WithCustomElbv2Client ¶ added in v0.14.15
func (a *Adapter) WithCustomElbv2Client(c elbv2iface.ELBV2API) *Adapter
WithCustomElbv2Client returns an Adapter that will use the provided ELBv2 client, instead of the ELBv2 client provided by AWS.
func (*Adapter) WithCustomFilter ¶ added in v0.9.0
WithCustomFilter returns the receiver adapter after setting a custom filter expression
func (*Adapter) WithDenyInternalDomains ¶ added in v0.11.18
WithDenyInternalDomains returns the receiver adapter after setting the denyInternalDomains config.
func (*Adapter) WithDeregistrationDelayTimeout ¶ added in v0.11.7
WithDeregistrationDelayTimeout returns the receiver adapter after changing the deregistration delay timeout for the managed target groups. https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#deregistration-delay
func (*Adapter) WithHTTPRedirectToHTTPS ¶ added in v0.9.0
WithHTTPRedirectToHTTPS returns the receiver adapter after changing the flag to effect HTTP->HTTPS redirection
func (*Adapter) WithHealthCheckInterval ¶ added in v0.3.0
WithHealthCheckInterval returns the receiver adapter after changing the health check interval that will be used by the resources created by the adapter
func (*Adapter) WithHealthCheckPath ¶ added in v0.3.0
WithHealthCheckPath returns the receiver adapter after changing the health check path that will be used by the resources created by the adapter.
func (*Adapter) WithHealthCheckPort ¶ added in v0.3.0
WithHealthCheckPort returns the receiver adapter after changing the health check port that will be used by the resources created by the adapter
func (*Adapter) WithHealthCheckTimeout ¶ added in v0.11.15
WithHealthCheckTimeout returns the receiver adapter after changing the health check timeout that will be used by the resources created by the adapter
func (*Adapter) WithIdleConnectionTimeout ¶ added in v0.6.9
WithIdleConnectionTimeout returns the receiver adapter after changing the idle connection timeout that is used to change the corresponding LoadBalancerAttributes in the CloudFormation stack that creates the LoadBalancers. https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#connection-idle-timeout
func (*Adapter) WithInternalDomains ¶ added in v0.11.18
WithInternalDomains returns the receiver adapter after changing the internal domains that will be used by the resources created by the adapter.
func (*Adapter) WithInternalDomainsDenyResponse ¶ added in v0.11.18
WithInternalDomainsDenyResponse returns the receiver adapter after changing the Body of the response that will be returned by the resources created by the adapter when denyInternalDomains is set to true.
func (*Adapter) WithInternalDomainsDenyResponseContenType ¶ added in v0.11.18
WithInternalDomainsDenyResponseContenType returns the receiver adapter after changing the content-type of the response that will be returned by the resources created by the adapter when denyInternalDomains is set to true.
func (*Adapter) WithInternalDomainsDenyResponseStatusCode ¶ added in v0.11.18
WithInternalDomainsDenyResponseStatusCode returns the receiver adapter after changing the status code of the response that will be returned by the resources created by the adapter when denyInternalDomains is set to true.
func (*Adapter) WithIpAddressType ¶ added in v0.7.4
WithIpAddressType returns the receiver with ipv4 or dualstack configuration, defaults to ipv4.
func (*Adapter) WithNLBCrossZone ¶ added in v0.9.0
WithNLBCrossZone returns the receiver adapter after setting the nlbCrossZone config.
func (*Adapter) WithNLBHTTPEnabled ¶ added in v0.9.3
WithNLBHTTPEnabled returns the receiver adapter after setting the nlbHTTPEnabled config.
func (*Adapter) WithNLBHTTPTargetPort ¶ added in v0.12.2
WithNLBHTTPTargetPort configures the NLB HTTP target port
func (*Adapter) WithNlbHealthyThresholdCount ¶ added in v0.12.12
WithNlbHealthyThresholdCount returns the receiver adapter after changing the healthy threshold count that will be used by the resources created by the adapter
func (*Adapter) WithSslPolicy ¶ added in v0.7.4
WithSslPolicy returns the receiver adapter after changing the CloudFormation template that should be used to create Load Balancer stacks
func (*Adapter) WithStackTags ¶ added in v0.11.5
WithStackTags returns the receiver adapter after setting the stackTags value.
func (*Adapter) WithStackTerminationProtection ¶ added in v0.6.4
WithStackTerminationProtection returns the receiver adapter after changing the stack termination protection value.
func (*Adapter) WithTargetAccessMode ¶ added in v0.12.17
WithTargetAccessMode returns the receiver adapter after defining the target access mode
func (*Adapter) WithTargetHTTPS ¶ added in v0.11.23
WithTargetHTTPS returns the receiver adapter after specifying the target port will use HTTPS
func (*Adapter) WithTargetPort ¶ added in v0.7.1
WithTargetPort returns the receiver adapter after changing the target port that will be used by the resources created by the adapter
type CloudWatchAlarmList ¶ added in v0.8.13
type CloudWatchAlarmList []cloudformation.CloudWatchAlarm
CloudWatchAlarmList represents a list of CloudWatch Alarms directly usable in Cloudformation Stacks.
func NewCloudWatchAlarmListFromYAML ¶ added in v0.8.13
func NewCloudWatchAlarmListFromYAML(b []byte) (CloudWatchAlarmList, error)
NewCloudWatchAlarmListFromYAML parses a raw slice of yaml bytes into a new CloudWatchAlarmList.
func (CloudWatchAlarmList) Hash ¶ added in v0.8.13
func (c CloudWatchAlarmList) Hash() string
Hash computes a hash of the CloudWatchAlarmList which can be used to detect changes between two versions. The hash string will be empty if c is empty or there was an error while encoding.
type Stack ¶ added in v0.3.0
type Stack struct { Name string DNSName string Scheme string SecurityGroup string SSLPolicy string IpAddressType string LoadBalancerType string HTTP2 bool OwnerIngress string CWAlarmConfigHash string TargetGroupARNs []string WAFWebACLID string CertificateARNs map[string]time.Time // contains filtered or unexported fields }
Stack is a simple wrapper around a CloudFormation Stack.
func (*Stack) IsComplete ¶ added in v0.6.0
IsComplete returns true if the stack status is a complete state.
func (*Stack) ShouldDelete ¶ added in v0.3.6
ShouldDelete returns true if stack is to be deleted because there are no valid certificates attached anymore.