func (p *AWSProvider) ReleaseSave(r *structs.Release, bucket, key string) error { if r.Id == "" { return fmt.Errorf("Id can not be blank") } if r.Created.IsZero() { r.Created = time.Now() } req := &dynamodb.PutItemInput{ Item: map[string]*dynamodb.AttributeValue{ "id": &dynamodb.AttributeValue{S: aws.String(r.Id)}, "app": &dynamodb.AttributeValue{S: aws.String(r.App)}, "created": &dynamodb.AttributeValue{S: aws.String(r.Created.Format(SortableTime))}, }, TableName: aws.String(releasesTable(r.App)), } if r.Build != "" { req.Item["build"] = &dynamodb.AttributeValue{S: aws.String(r.Build)} } if r.Env != "" { req.Item["env"] = &dynamodb.AttributeValue{S: aws.String(r.Env)} } if r.Manifest != "" { req.Item["manifest"] = &dynamodb.AttributeValue{S: aws.String(r.Manifest)} } var err error env := []byte(r.Env) if key != "" { cr := crypt.New(os.Getenv("AWS_REGION"), os.Getenv("AWS_ACCESS"), os.Getenv("AWS_SECRET")) env, err = cr.Encrypt(key, []byte(env)) if err != nil { return err } } _, err = p.s3().PutObject(&s3.PutObjectInput{ ACL: aws.String("public-read"), Body: bytes.NewReader(env), Bucket: aws.String(bucket), ContentLength: aws.Int64(int64(len(env))), Key: aws.String(fmt.Sprintf("releases/%s/env", r.Id)), }) if err != nil { return err } _, err = p.dynamodb().PutItem(req) return err }
// ReleaseSave saves a Release func (p *AWSProvider) ReleaseSave(r *structs.Release) error { a, err := p.AppGet(r.App) if err != nil { return err } bucket := a.Outputs["Settings"] key := a.Parameters["Key"] if r.Id == "" { return fmt.Errorf("Id can not be blank") } if r.Created.IsZero() { r.Created = time.Now() } if p.IsTest() { r.Created = time.Unix(1473028693, 0).UTC() } req := &dynamodb.PutItemInput{ Item: map[string]*dynamodb.AttributeValue{ "id": {S: aws.String(r.Id)}, "app": {S: aws.String(r.App)}, "created": {S: aws.String(r.Created.Format(sortableTime))}, }, TableName: aws.String(p.DynamoReleases), } if r.Build != "" { req.Item["build"] = &dynamodb.AttributeValue{S: aws.String(r.Build)} } if r.Env != "" { req.Item["env"] = &dynamodb.AttributeValue{S: aws.String(r.Env)} } if r.Manifest != "" { req.Item["manifest"] = &dynamodb.AttributeValue{S: aws.String(r.Manifest)} } env := []byte(r.Env) if key != "" { cr := crypt.New(p.Region, p.Access, p.Secret) env, err = cr.Encrypt(key, []byte(env)) if err != nil { return err } } _, err = p.s3().PutObject(&s3.PutObjectInput{ ACL: aws.String("public-read"), Body: bytes.NewReader(env), Bucket: aws.String(bucket), ContentLength: aws.Int64(int64(len(env))), Key: aws.String(fmt.Sprintf("releases/%s/env", r.Id)), }) if err != nil { return err } _, err = p.dynamodb().PutItem(req) return err }