|
|
@@ -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 }
|