aws_utils

package
v0.4.3 Latest Latest
Warning

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

Go to latest
Published: Apr 20, 2022 License: Apache-2.0 Imports: 11 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// .us-east-1.elb.amazonaws.com
	ALBDns = "elb.amazonaws.com"
	CLBDns = "elb.amazonaws.com"
	// .elb.us-east-1.amazonaws.com
	NLBDns = "elb."
	// .elasticloadbalancing.us-east-2.amazonaws.com
	ELBDns = "elasticloadbalancing."
	// s3-website.af-south-1.amazonaws.com
	S3Suffx = "s3-website."
	// .us-east-1.vpce.amazonaws.com
	VPCEndpointDns = "vpce.amazonaws.com"
	CloudFrontDns  = "cloudfront.net"
	// .us-west-2.elasticbeanstalk.com
	ElasticBeansTalkDns = "elasticbeanstalk.com"
	AcceleratorApiDns   = "awsglobalaccelerator.com"
)
View Source
const (
	WildCard string = "\\052"
)

Variables

Functions

func CheckRoutableAWSTarget

func CheckRoutableAWSTarget(r *route53.ResourceRecordSet) (string, bool)

checks if the value of a route53 record is an alias to a routable AWS resource, if true will return the resource type from the list

func GenerateRoute53HostedZoneWebURL

func GenerateRoute53HostedZoneWebURL(hzId string) string

id is typicall /hostedzone/1234LZW9ITZ26T and we need only 1234LZW9ITZ26T

func GenerateWebURL

func GenerateWebURL(r *route53.ResourceRecordSet) (string, error)

func GetCloudFrontWebURL

func GetCloudFrontWebURL(dnsIdentifier string, r *route53.ResourceRecordSet) string

https://console.aws.amazon.com/cloudfront/home?region=us-west-2# todo:: extract the record id and point to specific resource, cant search via url this is the general ui the region doesn't matter it's global

func GetEnvSession

func GetEnvSession(profile string) *session.Session

func StripRecord

func StripRecord(fullRecord string) ([]string, error)

stripRecord i.e https://example.com/p/a?ok=11&not=23 into example.com

Types

type Conf

type Conf map[string]interface{}

general configuration for handlers

type DNSRecordType

type DNSRecordType string

type GetRecordAliasesResult

type GetRecordAliasesResult struct {
	Records    []*route53.ResourceRecordSet
	HostedZone *route53.HostedZone
	Stream     RecordStream
	Region     string
}

func (*GetRecordAliasesResult) GetRecordsAccessors

func (r *GetRecordAliasesResult) GetRecordsAccessors() []RecordAccessor

func (*GetRecordAliasesResult) PrintTable

func (r *GetRecordAliasesResult) PrintTable(opts *PrintOptions)

type GroupManager

type GroupManager interface {
	Id() string
	GetHandler(string) Handler
	GetResource(string) Resource
}

Manages all Handlers for a specific group (i.e route53 is a group of many resources)

type Handler

type Handler interface {
	Id() string
	Get() Resource
	Fetch(Conf, *session.Session, ResCb)
}

Specific resource handler (for example: describe ec2 instances)

type PrintOptions

type PrintOptions struct {
	WebURL bool
}

type RecordAccessor

type RecordAccessor interface {
	GetHostedZoneID() string
	// "Record", "Type", "TTL", "Country", "Alias", "Resources"
	GetTTL() (int64, bool)
	// The record value in r53
	GetRecord() (string, bool)
	GetRegion() (string, bool)
	GetRecordType() (string, bool)
	// for GEO dns configurations
	GetCountryCode() (string, bool)
	// alias value is for A records, typical to ELB
	GetAliasValue() (string, bool)
	// resources are non alias values, typical for TXT, NS, MX, SOA records
	GetResources() ([]string, bool)
	// web URL to see the target Alias if exist
	GetWebURL() (string, bool)
	// DNS record feature types
	// Record has Routing policy and differentiator (i.e weighted-50 or geo-us, or failover-prinmary)
	// Failover, Simple, Geolocation, etc https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html
	GetRoutingPolicy() (RoutingPolicy, bool)
	GetRoutingPolicyDifferentiator() (string, bool)
	IsGeoDNS() bool
	IsWeightedDNS() bool
	IsFailoverRoutingPolicy() bool
	GetFailoverDifferentiator() (string, bool)
}

func FlatRecordResultToAccessors

func FlatRecordResultToAccessors(results []*GetRecordAliasesResult) []RecordAccessor

func NewRecordResultAccessor

func NewRecordResultAccessor(raw *route53.ResourceRecordSet, hostedZone *route53.HostedZone, region string) RecordAccessor

type RecordName

type RecordName struct {
	// contains filtered or unexported fields
}

func (*RecordName) GetAllOptionsForZoneName

func (r *RecordName) GetAllOptionsForZoneName() ([]string, error)

func (*RecordName) GetParsedURL

func (r *RecordName) GetParsedURL() string

func (*RecordName) GetWithWildCard

func (r *RecordName) GetWithWildCard() (string, error)

func (*RecordName) HasWildCard

func (r *RecordName) HasWildCard() bool

func (*RecordName) IsEqual

func (r *RecordName) IsEqual(other string) bool

type RecordResultAccessor

type RecordResultAccessor struct {
	// contains filtered or unexported fields
}

func (*RecordResultAccessor) GetAliasValue

func (a *RecordResultAccessor) GetAliasValue() (string, bool)

func (*RecordResultAccessor) GetCountryCode

func (a *RecordResultAccessor) GetCountryCode() (string, bool)

func (*RecordResultAccessor) GetFailoverDifferentiator

func (a *RecordResultAccessor) GetFailoverDifferentiator() (string, bool)

RoutingPolicy Failover records: return PRIMARY / SECONDARY

func (*RecordResultAccessor) GetHostedZoneID

func (a *RecordResultAccessor) GetHostedZoneID() string

func (*RecordResultAccessor) GetRecord

func (a *RecordResultAccessor) GetRecord() (string, bool)

func (*RecordResultAccessor) GetRecordType

func (a *RecordResultAccessor) GetRecordType() (string, bool)

func (*RecordResultAccessor) GetRegion

func (a *RecordResultAccessor) GetRegion() (string, bool)

func (*RecordResultAccessor) GetResources

func (a *RecordResultAccessor) GetResources() ([]string, bool)

func (*RecordResultAccessor) GetRoutingPolicy

func (a *RecordResultAccessor) GetRoutingPolicy() (RoutingPolicy, bool)

func (*RecordResultAccessor) GetRoutingPolicyDifferentiator

func (a *RecordResultAccessor) GetRoutingPolicyDifferentiator() (string, bool)

func (*RecordResultAccessor) GetTTL

func (a *RecordResultAccessor) GetTTL() (int64, bool)

func (*RecordResultAccessor) GetWebURL

func (a *RecordResultAccessor) GetWebURL() (string, bool)

func (*RecordResultAccessor) IsFailoverRoutingPolicy

func (a *RecordResultAccessor) IsFailoverRoutingPolicy() bool

RoutingPolicy Failover records

func (*RecordResultAccessor) IsGeoDNS

func (a *RecordResultAccessor) IsGeoDNS() bool

func (*RecordResultAccessor) IsWeightedDNS

func (a *RecordResultAccessor) IsWeightedDNS() bool

type RecordStream

type RecordStream interface {
	GetAllOptionsForZoneName() ([]string, error)
	IsEqual(other string) bool
	HasWildCard() bool
	GetWithWildCard() (string, error)
	GetParsedURL() string
}

func NewRecordName

func NewRecordName(rawQuery string) (RecordStream, error)

type ResCb

type ResCb func(error, Resource)

result of a handler is ready

type Resource

type Resource interface {
	Id() string
}

Resource is a result of each handler

type Route53Api

type Route53Api interface {
	TestDNSAnswer(hostedZoneId, recordName, recordType string) (*route53.TestDNSAnswerOutput, error)
	GetHostedZonesFromDns(recordName string) ([]*route53.HostedZone, error)
	GetRecordSetAliases(recordName string, skipNSVerification bool) (*GetRecordAliasesResult, error)
	GetRecordSetAliasesRecursive(maxDepth int, recordName string, skipNSVerification bool, checkedRecord map[string]bool) ([]*GetRecordAliasesResult, error)
	GetRegion() string
	GetNameservers(recordName string) ([]string, error)
	GetHZNameservers(hzId string) ([]string, error)
	IsNSMatch(ns1, ns2 []string) bool
}

func NewRoute53Api

func NewRoute53Api(profile string) Route53Api

type Route53Manager

type Route53Manager struct {
	// contains filtered or unexported fields
}

func (*Route53Manager) GetHZNameservers

func (r53m *Route53Manager) GetHZNameservers(hzId string) ([]string, error)

given hosted zone id find the nameservers

func (*Route53Manager) GetHostedZonesFromDns

func (r53m *Route53Manager) GetHostedZonesFromDns(recordName string) ([]*route53.HostedZone, error)

func (*Route53Manager) GetNameservers

func (r53m *Route53Manager) GetNameservers(recordName string) ([]string, error)

given a domain address do nslookup

func (*Route53Manager) GetRecordSetAliases

func (r53m *Route53Manager) GetRecordSetAliases(recordName string, skipNSVerification bool) (*GetRecordAliasesResult, error)

func (*Route53Manager) GetRecordSetAliasesRecursive

func (r53m *Route53Manager) GetRecordSetAliasesRecursive(maxDepth int, recordName string, skipNSVerification bool, checkedRecord map[string]bool) ([]*GetRecordAliasesResult, error)

func (*Route53Manager) GetRegion

func (r53m *Route53Manager) GetRegion() string

func (*Route53Manager) IsNSMatch

func (r53m *Route53Manager) IsNSMatch(ns1, ns2 []string) bool

func (*Route53Manager) LookupRecord

func (r53m *Route53Manager) LookupRecord(hzName, record string, recordName RecordStream) (*route53.HostedZone, []*route53.ResourceRecordSet, error)

LookupRecord query for potential hosted zones

func (*Route53Manager) TestDNSAnswer

func (r53 *Route53Manager) TestDNSAnswer(hostedZoneId, recordName, recordType string) (*route53.TestDNSAnswerOutput, error)

works only for public zones

type RoutingPolicy

type RoutingPolicy string
const (
	GeoLocationRP RoutingPolicy = "Geolocation"
	WeightedRP    RoutingPolicy = "Weighted"
	FailoverRP    RoutingPolicy = "Failover"
	OtherRP       RoutingPolicy = "-"
)

Jump to

Keyboard shortcuts

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