tl;dr
docs.aws.amazon.com
動くコード
package main
import (
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ec2"
)
func main() {
sess := session.Must(session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
Config: aws.Config{Region: aws.String("us-west-1")},
}))
client := ec2.New(sess)
_, err := client.DeleteSecurityGroup(&ec2.DeleteSecurityGroupInput{
GroupName: aws.String("test-sdk-go"),
})
fmt.Println("DELETE:", err)
group, err := client.CreateSecurityGroup(&ec2.CreateSecurityGroupInput{
GroupName: aws.String("test-sdk-go"),
Description: aws.String("Foo Bar Baz"),
})
if err != nil {
panic(err)
}
fmt.Printf("GROUP: %v\n", group)
_, err = client.AuthorizeSecurityGroupIngress(&ec2.AuthorizeSecurityGroupIngressInput{
GroupId: group.GroupId,
IpPermissions: []*ec2.IpPermission{
&ec2.IpPermission{
IpRanges: []*ec2.IpRange{&ec2.IpRange{CidrIp: aws.String("0.0.0.0/0")}},
IpProtocol: aws.String("tcp"),
FromPort: aws.Int64(22),
ToPort: aws.Int64(22),
},
},
})
fmt.Println(err)
}
確認
このSGを持ったEC2インスタンスを立ち上げ、sshの疎通が確認できた。