🔥 주제

go sdk v2 필요한 항목 정리

😊 내용

깃헙에 계속 업로드 예쩡

GitHub - Eeap/go-sdk-v2-example: This is example repo with aws-sdk-go-v2

package vpc

import (
	"context"
	"encoding/json"
	"fmt"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/ec2"
	types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
	"log"
)

func GetVpc() error {
	cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
	if err != nil {
		log.Fatal(err)
	}
	svc := ec2.NewFromConfig(cfg)
	resp, err := svc.DescribeVpcs(context.TODO(), &ec2.DescribeVpcsInput{})

	for _, object := range resp.Vpcs {
		obj, _ := json.MarshalIndent(object, "", "\\t")
		fmt.Println(string(obj))
	}
	return nil
}

func GetVpcSubnets() error {
	cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
	if err != nil {
		log.Fatal(err)
	}
	svc := ec2.NewFromConfig(cfg)
	filterType := "availability-zone"
	zoneName := "us-west-2a"
	resp, err := svc.DescribeSubnets(context.TODO(), &ec2.DescribeSubnetsInput{
		Filters: []types.Filter{
			{
				Name:   &filterType,
				Values: []string{zoneName},
			},
		},
		MaxResults: nil,
		NextToken:  nil,
		SubnetIds:  nil,
	})

	for _, object := range resp.Subnets {
		obj, _ := json.MarshalIndent(object, "", "\\t")
		fmt.Println(string(obj))
	}
	return nil
}
package ec2

import (
	"context"
	"fmt"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/ec2"
	"log"
	"strings"
)

func GetEC2InstanceTypes() error {
	cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
	if err != nil {
		log.Fatal(err)
	}
	svc := ec2.NewFromConfig(cfg)
	resp, err := svc.DescribeInstanceTypes(context.TODO(), &ec2.DescribeInstanceTypesInput{})
	if err != nil {
		log.Fatal(err)
	}
	typeData := []string{}
	for _, object := range resp.InstanceTypes {
		typeData = append(typeData, string(object.InstanceType))
	}
	fmt.Printf("[%s]", strings.Join(typeData, ", "))
	return nil
}