فهرست منبع

Update cloudformation tools.

Ben 1 روز پیش
والد
کامیت
133f73b753
1فایلهای تغییر یافته به همراه59 افزوده شده و 5 حذف شده
  1. 59 5
      tools/aws.go

+ 59 - 5
tools/aws.go

@@ -1,11 +1,14 @@
 package tools
 
 import (
+	"bytes"
 	"context"
+	"errors"
 	"fmt"
 	"io"
 	"os"
 	"path/filepath"
+	"strings"
 
 	"github.com/aws/aws-sdk-go-v2/aws"
 	"github.com/aws/aws-sdk-go-v2/config"
@@ -101,6 +104,37 @@ func (t *awss3) Put(src, bucket, key string) error {
 	return nil
 }
 
+func (t *awss3) Write(content []byte, bucket, key string) error {
+	api := s3.NewFromConfig(t.aws.cfg)
+	f := bytes.NewReader(content)
+
+	_, err := api.PutObject(context.TODO(), &s3.PutObjectInput{
+		Bucket: aws.String(bucket),
+		Key:    aws.String(key),
+		Body:   f,
+	})
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+func (t *awss3) WriteString(content, bucket, key string) error {
+	api := s3.NewFromConfig(t.aws.cfg)
+	f := strings.NewReader(content)
+
+	_, err := api.PutObject(context.TODO(), &s3.PutObjectInput{
+		Bucket: aws.String(bucket),
+		Key:    aws.String(key),
+		Body:   f,
+	})
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
 func (t *awss3) PutDir(path, bucket, s3Prefix string) error {
 	api := s3.NewFromConfig(t.aws.cfg)
 
@@ -192,7 +226,6 @@ func (t *awsec2) Stop() error                                    { return nil }
 func (t *awsec2) Start() error                                   { return nil }
 func (t *awsec2) Terminate() error                               { return nil }
 
-func (t *awscloudformation) ListStacks(filter []types.Filter) {}
 func (t *awscloudformation) CreateStack(stackName, templatePath string, params, tags map[string]string) error {
 	ctx := context.TODO()
 	client := cloudformation.NewFromConfig(t.aws.cfg)
@@ -297,10 +330,31 @@ func (t *awscloudformation) DeleteStack(stackName string) error {
 	return nil
 }
 
-func (t *awsimagebuilder) Component() error { return nil }
-func (t *awsimagebuilder) Recipe() error    { return nil }
-func (t *awsimagebuilder) Pipeline() error  { return nil }
-func (t *awsimagebuilder) RunPipeline() error  { return nil }
+func (t *awscloudformation) GetStack(stackName string) (*cftypes.Stack, error) {
+	ctx := context.TODO()
+	client := cloudformation.NewFromConfig(t.aws.cfg)
+
+	input := &cloudformation.DescribeStacksInput{
+		StackName: aws.String(stackName),
+	}
+
+	res, err := client.DescribeStacks(ctx, input)
+	if err != nil {
+		return nil, fmt.Errorf("failed to describe stack %s, %v", stackName, err)
+	}
+
+	for _, s := range res.Stacks {
+		if s.StackName == &stackName {
+			return &s, nil
+		}
+	}
+	return nil, errors.New("stack not found")
+}
+
+func (t *awsimagebuilder) Component() error   { return nil }
+func (t *awsimagebuilder) Recipe() error      { return nil }
+func (t *awsimagebuilder) Pipeline() error    { return nil }
+func (t *awsimagebuilder) RunPipeline() error { return nil }
 
 func (t *awsecs) Cluster() error        { return nil }
 func (t *awsecs) Task() error           { return nil }