aws instance(s) sdk, config loading, list instance, gitignore
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -13,3 +13,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Dependency directories (remove the comment below to include it)
 | 
					# Dependency directories (remove the comment below to include it)
 | 
				
			||||||
# vendor/
 | 
					# vendor/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#protect secrets
 | 
				
			||||||
 | 
					*.env
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								config.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					aws:
 | 
				
			||||||
 | 
					  regions: 
 | 
				
			||||||
 | 
					    - us-east-1
 | 
				
			||||||
 | 
					    - us-east-2
 | 
				
			||||||
 | 
					    - us-west-1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										22
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								go.mod
									
									
									
									
									
								
							@@ -2,6 +2,24 @@ module github.com/thefeli73/polemos
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
go 1.20
 | 
					go 1.20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require github.com/aws/aws-sdk-go v1.44.220
 | 
					require (
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2 v1.17.6
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/config v1.18.17
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/ec2 v1.90.0
 | 
				
			||||||
 | 
						github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d
 | 
				
			||||||
 | 
						gopkg.in/yaml.v3 v3.0.1
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require github.com/jmespath/go-jmespath v0.4.0 // indirect
 | 
					require (
 | 
				
			||||||
 | 
						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.30 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.24 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/internal/ini v1.3.31 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.24 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/sso v1.12.5 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.5 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/sts v1.18.6 // indirect
 | 
				
			||||||
 | 
						github.com/aws/smithy-go v1.13.5 // indirect
 | 
				
			||||||
 | 
						github.com/jmespath/go-jmespath v0.4.0 // indirect
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										63
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								go.sum
									
									
									
									
									
								
							@@ -1,42 +1,45 @@
 | 
				
			|||||||
github.com/aws/aws-sdk-go v1.44.220 h1:yAj99qAt0Htjle9Up3DglgHfOP77lmFPrElA4jKnrBo=
 | 
					github.com/aws/aws-sdk-go-v2 v1.17.6 h1:Y773UK7OBqhzi5VDXMi1zVGsoj+CVHs2eaC2bDsLwi0=
 | 
				
			||||||
github.com/aws/aws-sdk-go v1.44.220/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
 | 
					github.com/aws/aws-sdk-go-v2 v1.17.6/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/config v1.18.17 h1:jwTkhULSrbr/SQA8tfdYqZxpG8YsRycmIXxJcbrqY5E=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/config v1.18.17/go.mod h1:Lj3E7XcxJnxMa+AYo89YiL68s1cFJRGduChynYU67VA=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/credentials v1.13.17 h1:IubQO/RNeIVKF5Jy77w/LfUvmmCxTnk2TP1UZZIMiF4=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/credentials v1.13.17/go.mod h1:K9xeFo1g/YPMguMUD69YpwB4Nyi6W/5wn706xIInJFg=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.0 h1:/2Cb3SK3xVOQA7Xfr5nCWCo5H3UiNINtsVvVdk8sQqA=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.0/go.mod h1:neYVaeKr5eT7BzwULuG2YbLhzWZ22lpjKdCybR7AXrQ=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.30 h1:y+8n9AGDjikyXoMBTRaHHHSaFEB8267ykmvyPodJfys=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.30/go.mod h1:LUBAO3zNXQjoONBKn/kR1y0Q4cj/D02Ts0uHYjcCQLM=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.24 h1:r+Kv+SEJquhAZXaJ7G4u44cIwXV3f8K+N482NNAzJZA=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.24/go.mod h1:gAuCezX/gob6BSMbItsSlMb6WZGV7K2+fWOvk8xBSto=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/ini v1.3.31 h1:hf+Vhp5WtTdcSdE+yEcUz8L73sAzN0R+0jQv+Z51/mI=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/ini v1.3.31/go.mod h1:5zUjguZfG5qjhG9/wqmuyHRyUftl2B5Cp6NNxNC6kRA=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/ec2 v1.90.0 h1:oRl2nzkuU/qMPvudU3qQ+GUAMV5POP3V/aJTJ7Q0lT0=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/ec2 v1.90.0/go.mod h1:zDr1uSSLVYc6KqXvrmqYkeqnfbmOOrbVloz4Eqsc83k=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.24 h1:c5qGfdbCHav6viBwiyDns3OXqhqAbGjfIB4uVu2ayhk=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.24/go.mod h1:HMA4FZG6fyib+NDo5bpIxX1EhYjrAOveZJY2YR0xrNE=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/sso v1.12.5 h1:bdKIX6SVF3nc3xJFw6Nf0igzS6Ff/louGq8Z6VP/3Hs=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/sso v1.12.5/go.mod h1:vuWiaDB30M/QTC+lI3Wj6S/zb7tpUK2MSYgy3Guh2L0=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.5 h1:xLPZMyuZ4GuqRCIec/zWuIhRFPXh2UOJdLXBSi64ZWQ=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.5/go.mod h1:QjxpHmCwAg0ESGtPQnLIVp7SedTOBMYy+Slr3IfMKeI=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/sts v1.18.6 h1:rIFn5J3yDoeuKCE9sESXqM5POTAhOP1du3bv/qTL+tE=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/sts v1.18.6/go.mod h1:48WJ9l3dwP0GSHWGc5sFGGlCkuA82Mc2xnw+T6Q8aDw=
 | 
				
			||||||
 | 
					github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8=
 | 
				
			||||||
 | 
					github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
 | 
				
			||||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
 | 
					github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
 | 
				
			||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
					github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
				
			||||||
 | 
					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/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
 | 
					github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
 | 
				
			||||||
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
 | 
					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 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
 | 
				
			||||||
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
 | 
					github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
 | 
				
			||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ=
 | 
				
			||||||
 | 
					github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
					github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 | 
					github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 | 
				
			||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 | 
					gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					 | 
				
			||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 | 
					 | 
				
			||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 | 
					 | 
				
			||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
					 | 
				
			||||||
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-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-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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
					 | 
				
			||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
					 | 
				
			||||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 | 
					 | 
				
			||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 | 
					 | 
				
			||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 | 
					 | 
				
			||||||
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 | 
					 | 
				
			||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
					 | 
				
			||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 | 
					 | 
				
			||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 | 
					 | 
				
			||||||
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.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 | 
					 | 
				
			||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
					 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					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 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
 | 
				
			||||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
					gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			||||||
 | 
					gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 | 
				
			||||||
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										36
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								main.go
									
									
									
									
									
								
							@@ -1,8 +1,42 @@
 | 
				
			|||||||
package main
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						uuid "github.com/nu7hatch/gouuid"
 | 
				
			||||||
	"github.com/thefeli73/polemos/mtd_aws"
 | 
						"github.com/thefeli73/polemos/mtd_aws"
 | 
				
			||||||
 | 
						"github.com/thefeli73/polemos/state"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
    var _ = mtd_aws.Session()
 | 
						fmt.Println("Starting Polemos")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						config, err := state.Load_conf("config.yaml")
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							fmt.Println("Error loading config:", err)
 | 
				
			||||||
 | 
							os.Exit(1)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//aws_config := mtd_aws.New_config(config.AWS.Region)
 | 
				
			||||||
 | 
					    //mtd_aws.Instance_info(aws_config, config.AWS.InstanceID)
 | 
				
			||||||
 | 
						//mtd_aws.Instances(config.AWS.Region)
 | 
				
			||||||
 | 
						u, _ := uuid.NewV4() //blank is to send errors to the void
 | 
				
			||||||
 | 
						_=u
 | 
				
			||||||
 | 
						//fmt.Println(u)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, region := range config.AWS.Regions {
 | 
				
			||||||
 | 
					        fmt.Println("Listing instances in region:", region)
 | 
				
			||||||
 | 
							aws_config := mtd_aws.New_config(region)
 | 
				
			||||||
 | 
					        instances, err := mtd_aws.Instances(aws_config)
 | 
				
			||||||
 | 
					        if err != nil {
 | 
				
			||||||
 | 
					            fmt.Println("Error listing instances:", err)
 | 
				
			||||||
 | 
					            continue
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for _, instance := range instances {
 | 
				
			||||||
 | 
					            mtd_aws.Instance_info(aws_config, *instance.InstanceId)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,12 +1,70 @@
 | 
				
			|||||||
package mtd_aws
 | 
					package mtd_aws
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	//"github.com/aws/aws-sdk-go/aws"
 | 
						"context"
 | 
				
			||||||
	"github.com/aws/aws-sdk-go/aws/session"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/aws/aws-sdk-go-v2/aws"
 | 
				
			||||||
 | 
						"github.com/aws/aws-sdk-go-v2/config"
 | 
				
			||||||
 | 
						"github.com/aws/aws-sdk-go-v2/service/ec2"
 | 
				
			||||||
 | 
						"github.com/aws/aws-sdk-go-v2/service/ec2/types"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
func Session() *session.Session {
 | 
					func New_config(region string) aws.Config {
 | 
				
			||||||
	session := session.Must(session.NewSessionWithOptions(session.Options{
 | 
						// Create a new AWS config
 | 
				
			||||||
		SharedConfigState: session.SharedConfigEnable,
 | 
						cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion(region))
 | 
				
			||||||
	}))
 | 
						if err != nil {
 | 
				
			||||||
	return session
 | 
							fmt.Println("Error creating config:", err)
 | 
				
			||||||
 | 
							fmt.Println("Configure Credentials in line with the documentation found here: https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/#specifying-credentials")
 | 
				
			||||||
 | 
							os.Exit(1)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return cfg
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func Instance_info(config aws.Config, instanceID string) {
 | 
				
			||||||
 | 
						// Create a new EC2 service client
 | 
				
			||||||
 | 
						svc := ec2.NewFromConfig(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						input := &ec2.DescribeInstancesInput{
 | 
				
			||||||
 | 
							InstanceIds: []string{instanceID},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						result, err := svc.DescribeInstances(context.TODO(), input)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							fmt.Println("Error describing instance:", err)
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						// Print instance information
 | 
				
			||||||
 | 
						instance := result.Reservations[0].Instances[0]	
 | 
				
			||||||
 | 
						fmt.Println("Instance ID:", aws.ToString(instance.InstanceId))
 | 
				
			||||||
 | 
						fmt.Println("Instance Type:", string(instance.InstanceType))
 | 
				
			||||||
 | 
						fmt.Println("AMI ID:", aws.ToString(instance.ImageId))
 | 
				
			||||||
 | 
						fmt.Println("State:", string(instance.State.Name))
 | 
				
			||||||
 | 
						fmt.Println("Availability Zone:", aws.ToString(instance.Placement.AvailabilityZone))
 | 
				
			||||||
 | 
						if instance.PublicIpAddress != nil {
 | 
				
			||||||
 | 
							fmt.Println("Public IP Address:", aws.ToString(instance.PublicIpAddress))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						fmt.Println("Private IP Address:", aws.ToString(instance.PrivateIpAddress))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func Instances(config aws.Config) ([]*types.Instance, error) {
 | 
				
			||||||
 | 
						svc := ec2.NewFromConfig(config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						input := &ec2.DescribeInstancesInput{}
 | 
				
			||||||
 | 
						var instances []*types.Instance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						paginator := ec2.NewDescribeInstancesPaginator(svc, input)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for paginator.HasMorePages() {
 | 
				
			||||||
 | 
							page, err := paginator.NextPage(context.TODO())
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for _, reservation := range page.Reservations {
 | 
				
			||||||
 | 
								for _, instance := range reservation.Instances {
 | 
				
			||||||
 | 
									instances = append(instances, &instance)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return instances, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										30
									
								
								state/config.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								state/config.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package state
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"io/ioutil"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"gopkg.in/yaml.v3"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Config struct {
 | 
				
			||||||
 | 
					    AWS struct {
 | 
				
			||||||
 | 
					        Regions     []string `yaml:"regions"`
 | 
				
			||||||
 | 
					    } `yaml:"aws"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func Load_conf(filename string) (Config, error) {
 | 
				
			||||||
 | 
					    var config Config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    data, err := ioutil.ReadFile(filename)
 | 
				
			||||||
 | 
					    if err != nil {
 | 
				
			||||||
 | 
					        return config, err
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    err = yaml.Unmarshal(data, &config)
 | 
				
			||||||
 | 
					    if err != nil {
 | 
				
			||||||
 | 
					        return config, err
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return config, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user