internal/cloud: use logrus for logging
and log upload & sharing failures
This commit is contained in:
parent
8f80dd06d6
commit
487e2d0669
1 changed files with 17 additions and 15 deletions
|
|
@ -2,7 +2,6 @@ package awscloud
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
|
@ -13,6 +12,7 @@ import (
|
||||||
"github.com/aws/aws-sdk-go/service/ec2"
|
"github.com/aws/aws-sdk-go/service/ec2"
|
||||||
"github.com/aws/aws-sdk-go/service/s3"
|
"github.com/aws/aws-sdk-go/service/s3"
|
||||||
"github.com/aws/aws-sdk-go/service/s3/s3manager"
|
"github.com/aws/aws-sdk-go/service/s3/s3manager"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AWS struct {
|
type AWS struct {
|
||||||
|
|
@ -63,7 +63,7 @@ func (a *AWS) Upload(filename, bucket, key string) (*s3manager.UploadOutput, err
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[AWS] 🚀 Uploading image to S3: %s/%s", bucket, key)
|
logrus.Infof("[AWS] 🚀 Uploading image to S3: %s/%s", bucket, key)
|
||||||
return a.uploader.Upload(
|
return a.uploader.Upload(
|
||||||
&s3manager.UploadInput{
|
&s3manager.UploadInput{
|
||||||
Bucket: aws.String(bucket),
|
Bucket: aws.String(bucket),
|
||||||
|
|
@ -144,7 +144,7 @@ func (a *AWS) Register(name, bucket, key string, shareWith []string, rpmArch str
|
||||||
return nil, fmt.Errorf("ec2 doesn't support the following arch: %s", rpmArch)
|
return nil, fmt.Errorf("ec2 doesn't support the following arch: %s", rpmArch)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[AWS] 📥 Importing snapshot from image: %s/%s", bucket, key)
|
logrus.Infof("[AWS] 📥 Importing snapshot from image: %s/%s", bucket, key)
|
||||||
snapshotDescription := fmt.Sprintf("Image Builder AWS Import of %s", name)
|
snapshotDescription := fmt.Sprintf("Image Builder AWS Import of %s", name)
|
||||||
importTaskOutput, err := a.ec2.ImportSnapshot(
|
importTaskOutput, err := a.ec2.ImportSnapshot(
|
||||||
&ec2.ImportSnapshotInput{
|
&ec2.ImportSnapshotInput{
|
||||||
|
|
@ -158,11 +158,11 @@ func (a *AWS) Register(name, bucket, key string, shareWith []string, rpmArch str
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[AWS] error importing snapshot: %s", err)
|
logrus.Warnf("[AWS] error importing snapshot: %s", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[AWS] 🚚 Waiting for snapshot to finish importing: %s", *importTaskOutput.ImportTaskId)
|
logrus.Infof("[AWS] 🚚 Waiting for snapshot to finish importing: %s", *importTaskOutput.ImportTaskId)
|
||||||
err = WaitUntilImportSnapshotTaskCompleted(
|
err = WaitUntilImportSnapshotTaskCompleted(
|
||||||
a.ec2,
|
a.ec2,
|
||||||
&ec2.DescribeImportSnapshotTasksInput{
|
&ec2.DescribeImportSnapshotTasksInput{
|
||||||
|
|
@ -176,7 +176,7 @@ func (a *AWS) Register(name, bucket, key string, shareWith []string, rpmArch str
|
||||||
}
|
}
|
||||||
|
|
||||||
// we no longer need the object in s3, let's just delete it
|
// we no longer need the object in s3, let's just delete it
|
||||||
log.Printf("[AWS] 🧹 Deleting image from S3: %s/%s", bucket, key)
|
logrus.Infof("[AWS] 🧹 Deleting image from S3: %s/%s", bucket, key)
|
||||||
_, err = a.s3.DeleteObject(&s3.DeleteObjectInput{
|
_, err = a.s3.DeleteObject(&s3.DeleteObjectInput{
|
||||||
Bucket: aws.String(bucket),
|
Bucket: aws.String(bucket),
|
||||||
Key: aws.String(key),
|
Key: aws.String(key),
|
||||||
|
|
@ -199,7 +199,7 @@ func (a *AWS) Register(name, bucket, key string, shareWith []string, rpmArch str
|
||||||
snapshotID := importOutput.ImportSnapshotTasks[0].SnapshotTaskDetail.SnapshotId
|
snapshotID := importOutput.ImportSnapshotTasks[0].SnapshotTaskDetail.SnapshotId
|
||||||
|
|
||||||
if len(shareWith) > 0 {
|
if len(shareWith) > 0 {
|
||||||
log.Printf("[AWS] 🎥 Sharing ec2 snapshot")
|
logrus.Info("[AWS] 🎥 Sharing ec2 snapshot")
|
||||||
var userIds []*string
|
var userIds []*string
|
||||||
for _, v := range shareWith {
|
for _, v := range shareWith {
|
||||||
// Implicit memory alasing doesn't couse any bug in this case
|
// Implicit memory alasing doesn't couse any bug in this case
|
||||||
|
|
@ -215,9 +215,10 @@ func (a *AWS) Register(name, bucket, key string, shareWith []string, rpmArch str
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logrus.Warnf("[AWS] 📨 Error sharing ec2 snapshot: %v", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
log.Println("[AWS] 📨 Shared ec2 snapshot")
|
logrus.Info("[AWS] 📨 Shared ec2 snapshot")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tag the snapshot with the image name.
|
// Tag the snapshot with the image name.
|
||||||
|
|
@ -237,7 +238,7 @@ func (a *AWS) Register(name, bucket, key string, shareWith []string, rpmArch str
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[AWS] 📋 Registering AMI from imported snapshot: %s", *snapshotID)
|
logrus.Infof("[AWS] 📋 Registering AMI from imported snapshot: %s", *snapshotID)
|
||||||
registerOutput, err := a.ec2.RegisterImage(
|
registerOutput, err := a.ec2.RegisterImage(
|
||||||
&ec2.RegisterImageInput{
|
&ec2.RegisterImageInput{
|
||||||
Architecture: aws.String(ec2Arch),
|
Architecture: aws.String(ec2Arch),
|
||||||
|
|
@ -259,7 +260,7 @@ func (a *AWS) Register(name, bucket, key string, shareWith []string, rpmArch str
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("[AWS] 🎉 AMI registered: %s", *registerOutput.ImageId)
|
logrus.Infof("[AWS] 🎉 AMI registered: %s", *registerOutput.ImageId)
|
||||||
|
|
||||||
// Tag the image with the image name.
|
// Tag the image with the image name.
|
||||||
req, _ = a.ec2.CreateTagsRequest(
|
req, _ = a.ec2.CreateTagsRequest(
|
||||||
|
|
@ -279,7 +280,7 @@ func (a *AWS) Register(name, bucket, key string, shareWith []string, rpmArch str
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(shareWith) > 0 {
|
if len(shareWith) > 0 {
|
||||||
log.Println("[AWS] 💿 Sharing ec2 AMI")
|
logrus.Info("[AWS] 💿 Sharing ec2 AMI")
|
||||||
var launchPerms []*ec2.LaunchPermission
|
var launchPerms []*ec2.LaunchPermission
|
||||||
for _, id := range shareWith {
|
for _, id := range shareWith {
|
||||||
launchPerms = append(launchPerms, &ec2.LaunchPermission{
|
launchPerms = append(launchPerms, &ec2.LaunchPermission{
|
||||||
|
|
@ -297,9 +298,10 @@ func (a *AWS) Register(name, bucket, key string, shareWith []string, rpmArch str
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logrus.Warnf("[AWS] 📨 Error sharing AMI: %v", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
log.Println("[AWS] 💿 Shared AMI")
|
logrus.Info("[AWS] 💿 Shared AMI")
|
||||||
}
|
}
|
||||||
|
|
||||||
return registerOutput.ImageId, nil
|
return registerOutput.ImageId, nil
|
||||||
|
|
@ -332,7 +334,7 @@ func (a *AWS) RemoveSnapshotAndDeregisterImage(image *ec2.Image) error {
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// TODO return err?
|
// TODO return err?
|
||||||
log.Println("Unable to remove snapshot", s)
|
logrus.Warn("Unable to remove snapshot", s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
|
@ -356,7 +358,7 @@ func (a *AWS) DescribeImagesByTag(tagKey, tagValue string) ([]*ec2.Image, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AWS) S3ObjectPresignedURL(bucket, objectKey string) (string, error) {
|
func (a *AWS) S3ObjectPresignedURL(bucket, objectKey string) (string, error) {
|
||||||
log.Printf("[AWS] 📋 Generating Presigned URL for S3 object %s/%s", bucket, objectKey)
|
logrus.Infof("[AWS] 📋 Generating Presigned URL for S3 object %s/%s", bucket, objectKey)
|
||||||
req, _ := a.s3.GetObjectRequest(&s3.GetObjectInput{
|
req, _ := a.s3.GetObjectRequest(&s3.GetObjectInput{
|
||||||
Bucket: aws.String(bucket),
|
Bucket: aws.String(bucket),
|
||||||
Key: aws.String(objectKey),
|
Key: aws.String(objectKey),
|
||||||
|
|
@ -365,6 +367,6 @@ func (a *AWS) S3ObjectPresignedURL(bucket, objectKey string) (string, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
log.Print("[AWS] 🎉 S3 Presigned URL ready")
|
logrus.Info("[AWS] 🎉 S3 Presigned URL ready")
|
||||||
return url, nil
|
return url, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue