Skip to content

Commit

Permalink
Add conditional logic for instances & clusters
Browse files Browse the repository at this point in the history
  • Loading branch information
harrywm committed Mar 23, 2023
1 parent c28274d commit 05400af
Show file tree
Hide file tree
Showing 8 changed files with 548 additions and 23 deletions.
260 changes: 260 additions & 0 deletions cid.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,260 @@
{
"DBInstances": [
{
"DBInstanceIdentifier": "workflows-1",
"DBInstanceClass": "db.t3.medium",
"Engine": "aurora-postgresql",
"DBInstanceStatus": "available",
"MasterUsername": "root",
"Endpoint": {
"Address": "workflows-1.cpqbmoxjvrwl.eu-west-2.rds.amazonaws.com",
"Port": 5432,
"HostedZoneId": "Z1TTGA775OQIYO"
},
"AllocatedStorage": 1,
"InstanceCreateTime": "2023-02-07T09:27:19.953000+00:00",
"PreferredBackupWindow": "22:45-23:15",
"BackupRetentionPeriod": 7,
"DBSecurityGroups": [],
"VpcSecurityGroups": [
{
"VpcSecurityGroupId": "sg-0cd4feba612cdec6c",
"Status": "active"
},
{
"VpcSecurityGroupId": "sg-02e24fd8cee6cff6f",
"Status": "active"
}
],
"DBParameterGroups": [
{
"DBParameterGroupName": "default.aurora-postgresql13",
"ParameterApplyStatus": "in-sync"
}
],
"AvailabilityZone": "eu-west-2a",
"DBSubnetGroup": {
"DBSubnetGroupName": "main",
"DBSubnetGroupDescription": "main",
"VpcId": "vpc-021aa0ba490c6473f",
"SubnetGroupStatus": "Complete",
"Subnets": [
{
"SubnetIdentifier": "subnet-065541a23e15c695b",
"SubnetAvailabilityZone": {
"Name": "eu-west-2a"
},
"SubnetOutpost": {},
"SubnetStatus": "Active"
},
{
"SubnetIdentifier": "subnet-0536889152695e141",
"SubnetAvailabilityZone": {
"Name": "eu-west-2b"
},
"SubnetOutpost": {},
"SubnetStatus": "Active"
},
{
"SubnetIdentifier": "subnet-0103139883ddc9ae9",
"SubnetAvailabilityZone": {
"Name": "eu-west-2c"
},
"SubnetOutpost": {},
"SubnetStatus": "Active"
}
]
},
"PreferredMaintenanceWindow": "thu:23:42-fri:00:12",
"PendingModifiedValues": {},
"MultiAZ": false,
"EngineVersion": "13.9",
"AutoMinorVersionUpgrade": false,
"ReadReplicaDBInstanceIdentifiers": [],
"LicenseModel": "postgresql-license",
"OptionGroupMemberships": [
{
"OptionGroupName": "default:aurora-postgresql-13",
"Status": "in-sync"
}
],
"PubliclyAccessible": false,
"StorageType": "aurora",
"DbInstancePort": 0,
"DBClusterIdentifier": "workflows",
"StorageEncrypted": true,
"KmsKeyId": "arn:aws:kms:eu-west-2:267725517792:key/7085b38b-1cc1-427e-b089-5f94da276b79",
"DbiResourceId": "db-GHZLLZA4YKIOD3BH2QYK6CBVKY",
"CACertificateIdentifier": "rds-ca-2019",
"DomainMemberships": [],
"CopyTagsToSnapshot": false,
"MonitoringInterval": 15,
"EnhancedMonitoringResourceArn": "arn:aws:logs:eu-west-2:267725517792:log-group:RDSOSMetrics:log-stream:db-GHZLLZA4YKIOD3BH2QYK6CBVKY",
"MonitoringRoleArn": "arn:aws:iam::267725517792:role/rds-monitoring-role",
"PromotionTier": 0,
"DBInstanceArn": "arn:aws:rds:eu-west-2:267725517792:db:workflows-1",
"IAMDatabaseAuthenticationEnabled": false,
"PerformanceInsightsEnabled": true,
"PerformanceInsightsKMSKeyId": "arn:aws:kms:eu-west-2:267725517792:key/7085b38b-1cc1-427e-b089-5f94da276b79",
"PerformanceInsightsRetentionPeriod": 7,
"DeletionProtection": false,
"AssociatedRoles": [],
"TagList": [
{
"Key": "VantaDescription",
"Value": "Workflows RDS Aurora cluster"
},
{
"Key": "VantaContainsUserData",
"Value": "true"
},
{
"Key": "VantaOwner",
"Value": "ostriches"
},
{
"Key": "service",
"Value": "workflows"
}
],
"CustomerOwnedIpEnabled": false,
"BackupTarget": "region",
"NetworkType": "IPV4",
"StorageThroughput": 0,
"CertificateDetails": {
"CAIdentifier": "rds-ca-2019",
"ValidTill": "2024-08-22T17:08:50+00:00"
}
}
]
}
{
"DBInstances": [
{
"DBInstanceIdentifier": "workflows-1",
"DBInstanceClass": "db.t3.medium",
"Engine": "aurora-postgresql",
"DBInstanceStatus": "available",
"MasterUsername": "root",
"Endpoint": {
"Address": "workflows-1.cpqbmoxjvrwl.eu-west-2.rds.amazonaws.com",
"Port": 5432,
"HostedZoneId": "Z1TTGA775OQIYO"
},
"AllocatedStorage": 1,
"InstanceCreateTime": "2023-02-07T09:27:19.953000+00:00",
"PreferredBackupWindow": "22:45-23:15",
"BackupRetentionPeriod": 7,
"DBSecurityGroups": [],
"VpcSecurityGroups": [
{
"VpcSecurityGroupId": "sg-0cd4feba612cdec6c",
"Status": "active"
},
{
"VpcSecurityGroupId": "sg-02e24fd8cee6cff6f",
"Status": "active"
}
],
"DBParameterGroups": [
{
"DBParameterGroupName": "default.aurora-postgresql13",
"ParameterApplyStatus": "in-sync"
}
],
"AvailabilityZone": "eu-west-2a",
"DBSubnetGroup": {
"DBSubnetGroupName": "main",
"DBSubnetGroupDescription": "main",
"VpcId": "vpc-021aa0ba490c6473f",
"SubnetGroupStatus": "Complete",
"Subnets": [
{
"SubnetIdentifier": "subnet-065541a23e15c695b",
"SubnetAvailabilityZone": {
"Name": "eu-west-2a"
},
"SubnetOutpost": {},
"SubnetStatus": "Active"
},
{
"SubnetIdentifier": "subnet-0536889152695e141",
"SubnetAvailabilityZone": {
"Name": "eu-west-2b"
},
"SubnetOutpost": {},
"SubnetStatus": "Active"
},
{
"SubnetIdentifier": "subnet-0103139883ddc9ae9",
"SubnetAvailabilityZone": {
"Name": "eu-west-2c"
},
"SubnetOutpost": {},
"SubnetStatus": "Active"
}
]
},
"PreferredMaintenanceWindow": "thu:23:42-fri:00:12",
"PendingModifiedValues": {},
"MultiAZ": false,
"EngineVersion": "13.9",
"AutoMinorVersionUpgrade": false,
"ReadReplicaDBInstanceIdentifiers": [],
"LicenseModel": "postgresql-license",
"OptionGroupMemberships": [
{
"OptionGroupName": "default:aurora-postgresql-13",
"Status": "in-sync"
}
],
"PubliclyAccessible": false,
"StorageType": "aurora",
"DbInstancePort": 0,
"DBClusterIdentifier": "workflows",
"StorageEncrypted": true,
"KmsKeyId": "arn:aws:kms:eu-west-2:267725517792:key/7085b38b-1cc1-427e-b089-5f94da276b79",
"DbiResourceId": "db-GHZLLZA4YKIOD3BH2QYK6CBVKY",
"CACertificateIdentifier": "rds-ca-2019",
"DomainMemberships": [],
"CopyTagsToSnapshot": false,
"MonitoringInterval": 15,
"EnhancedMonitoringResourceArn": "arn:aws:logs:eu-west-2:267725517792:log-group:RDSOSMetrics:log-stream:db-GHZLLZA4YKIOD3BH2QYK6CBVKY",
"MonitoringRoleArn": "arn:aws:iam::267725517792:role/rds-monitoring-role",
"PromotionTier": 0,
"DBInstanceArn": "arn:aws:rds:eu-west-2:267725517792:db:workflows-1",
"IAMDatabaseAuthenticationEnabled": false,
"PerformanceInsightsEnabled": true,
"PerformanceInsightsKMSKeyId": "arn:aws:kms:eu-west-2:267725517792:key/7085b38b-1cc1-427e-b089-5f94da276b79",
"PerformanceInsightsRetentionPeriod": 7,
"DeletionProtection": false,
"AssociatedRoles": [],
"TagList": [
{
"Key": "VantaDescription",
"Value": "Workflows RDS Aurora cluster"
},
{
"Key": "VantaContainsUserData",
"Value": "true"
},
{
"Key": "VantaOwner",
"Value": "ostriches"
},
{
"Key": "service",
"Value": "workflows"
}
],
"CustomerOwnedIpEnabled": false,
"BackupTarget": "region",
"NetworkType": "IPV4",
"StorageThroughput": 0,
"CertificateDetails": {
"CAIdentifier": "rds-ca-2019",
"ValidTill": "2024-08-22T17:08:50+00:00"
}
}
]
}
6 changes: 3 additions & 3 deletions cmd/connect.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,17 +55,15 @@ Then paste the token`,
flag.Parse()

if iam {

log.Println("DBConnect IAM")

token := handler.GenerateToken(host, port, region, user)
log.Println(fmt.Sprintf("Token: %s", token))
} else {
log.Println("DBConnect")
}

if host == "" {
host = handler.FuzzEndpoints()
host = handler.FuzzEndpoints(iam)
}
// Start Port-Forwarding Session
handler.Handler(region, host, port, localport)
Expand All @@ -75,6 +73,8 @@ Then paste the token`,
func init() {
rootCmd.AddCommand(connectCmd)

handler.AssertCredentials()

//Flags
connectCmd.Flags().StringVarP(&host, "host", "H", "", "Hostname of the Database to open a connection to. If a hostname is not provided, a fuzzyfind list with be presented to select a database, and subsequently, a user to connect to`")
connectCmd.Flags().StringVarP(&port, "port", "p", "5432", "Port of the Datbase to open a connection to (default 5432)")
Expand Down
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ require (
github.com/spf13/cobra v1.6.1
)

require github.com/gogo/protobuf v1.3.2 // indirect

require (
github.com/aws/aws-sdk-go v1.44.227
github.com/aws/aws-sdk-go-v2/credentials v1.13.17 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.0 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.31 // indirect
Expand Down
25 changes: 25 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
github.com/aws/aws-sdk-go v1.44.227 h1:HWNpINBu20yyfEXGHHSIsB955KUjWmZJETqnLIXizN4=
github.com/aws/aws-sdk-go v1.44.227/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aws/aws-sdk-go-v2 v1.17.1/go.mod h1:JLnGeGONAyi2lWXI1p0PCIOIy333JMVK1U7Hf0aRFLw=
github.com/aws/aws-sdk-go-v2 v1.17.6 h1:Y773UK7OBqhzi5VDXMi1zVGsoj+CVHs2eaC2bDsLwi0=
github.com/aws/aws-sdk-go-v2 v1.17.6/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
Expand Down Expand Up @@ -51,6 +53,8 @@ github.com/gdamore/tcell/v2 v2.5.3 h1:b9XQrT6QGbgI7JvZOJXFNczOQeIYbo8BfeSMzt2sAV
github.com/gdamore/tcell/v2 v2.5.3/go.mod h1:wSkrPaXoiIWZqW/g7Px4xc79di6FTcpB8tvaKJ6uGBo=
github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc=
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
Expand All @@ -61,6 +65,8 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/ktr0731/go-ansisgr v0.1.0 h1:fbuupput8739hQbEmZn1cEKjqQFwtCCZNznnF6ANo5w=
github.com/ktr0731/go-ansisgr v0.1.0/go.mod h1:G9lxwgBwH0iey0Dw5YQd7n6PmQTwTuTM/X5Sgm/UrzE=
github.com/ktr0731/go-fuzzyfinder v0.7.0 h1:EqkCoqQh9Xpqet0PMAGSwgEnqLPXOSiRwIUMzhWQw2I=
Expand All @@ -86,16 +92,30 @@ github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUq
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
Expand All @@ -115,8 +135,13 @@ golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
Expand Down
24 changes: 24 additions & 0 deletions handler/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package handler

import (
"context"
"log"

"github.com/aws/aws-sdk-go-v2/config"
)

// Assert AWS Credentials are configured
func AssertCredentials() {

cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
log.Panic("configuration error: " + err.Error())
}

if cfg.Credentials != nil {
log.Println("Credentials found @ " + cfg.Region)
} else {
log.Fatal("Configuration Error. No AWS credentials configured: " + err.Error())
}

}
Loading

0 comments on commit 05400af

Please sign in to comment.