aws instance(s) sdk, config loading, list instance, gitignore
This commit is contained in:
@ -1,12 +1,70 @@
|
||||
package mtd_aws
|
||||
|
||||
import (
|
||||
//"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"context"
|
||||
"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 {
|
||||
session := session.Must(session.NewSessionWithOptions(session.Options{
|
||||
SharedConfigState: session.SharedConfigEnable,
|
||||
}))
|
||||
return session
|
||||
func New_config(region string) aws.Config {
|
||||
// Create a new AWS config
|
||||
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion(region))
|
||||
if err != nil {
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user