aws.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package tools
  2. import (
  3. "context"
  4. "fmt"
  5. "os"
  6. "github.com/aws/aws-sdk-go-v2/aws"
  7. "github.com/aws/aws-sdk-go-v2/config"
  8. "github.com/aws/aws-sdk-go-v2/credentials"
  9. "github.com/aws/aws-sdk-go-v2/service/ec2/types"
  10. )
  11. func AWS() *awstool {
  12. ctx := context.TODO()
  13. accessKeyID := os.Getenv("AWS_ACCESS_KEY_ID")
  14. secretAccessKey := os.Getenv("AWS_SECRET_ACCESS_KEY")
  15. sessionToken := os.Getenv("AWS_SESSION_TOKEN")
  16. staticProvider := credentials.NewStaticCredentialsProvider(accessKeyID, secretAccessKey, sessionToken)
  17. cfg, err := config.LoadDefaultConfig(ctx,
  18. config.WithCredentialsProvider(staticProvider),
  19. config.WithRegion(os.Getenv("AWS_REGION")),
  20. )
  21. if err != nil {
  22. log.Write([]byte(fmt.Sprintf("unable to load SDK config, %v", err)))
  23. }
  24. return &awstool{
  25. cfg: cfg,
  26. }
  27. }
  28. type (
  29. awstool struct {
  30. cfg aws.Config
  31. }
  32. s3 struct {
  33. aws *awstool
  34. }
  35. ec2 struct {
  36. aws *awstool
  37. }
  38. cloudformation struct {
  39. aws *awstool
  40. }
  41. imagebuilder struct {
  42. aws *awstool
  43. }
  44. ecs struct {
  45. aws *awstool
  46. }
  47. eks struct {
  48. aws *awstool
  49. }
  50. )
  51. func (t *awstool) S3() *s3 { return &s3{aws: t} }
  52. func (t *awstool) EC2() *ec2 { return &ec2{aws: t} }
  53. func (t *awstool) CloudFormation() *cloudformation { return &cloudformation{aws: t} }
  54. func (t *awstool) ImageBuilder() *imagebuilder { return &imagebuilder{aws: t} }
  55. func (t *awstool) ECS() *ecs { return &ecs{aws: t} }
  56. func (t *awstool) EKS() *eks { return &eks{aws: t} }
  57. func (t *awstool) Filter(filters map[string][]string) []types.Filter {
  58. filter := []types.Filter{}
  59. for k, v := range filters {
  60. filter = append(filter, types.Filter{
  61. Name: aws.String(k),
  62. Values: v,
  63. })
  64. }
  65. return filter
  66. }
  67. func (t *s3) Put(src, dst string) error { return nil }
  68. func (t *s3) Get(src, dst string) error { return nil }
  69. func (t *s3) ListObjects(bucket, path string) error { return nil }
  70. func (t *s3) ListBuckets() error { return nil }
  71. func (t *ec2) FindLatestAMI() error { return nil }
  72. func (t *ec2) Create() error { return nil }
  73. func (t *ec2) Stop() error { return nil }
  74. func (t *ec2) Start() error { return nil }
  75. func (t *ec2) Terminate() error { return nil }
  76. func (t *cloudformation) CreateStack() {}
  77. func (t *cloudformation) UpdateStack() {}
  78. func (t *cloudformation) DeleteStack() {}