diff --git a/cmd/osbuild-worker/jobimpl-osbuild.go b/cmd/osbuild-worker/jobimpl-osbuild.go index c3fcddaeb..d87b0f33a 100644 --- a/cmd/osbuild-worker/jobimpl-osbuild.go +++ b/cmd/osbuild-worker/jobimpl-osbuild.go @@ -185,7 +185,7 @@ func validateResult(result *worker.OSBuildJobResult, jobID string) { result.Success = true } -func uploadToS3(a *awscloud.AWS, outputDirectory, exportPath, bucket, key, filename string) (string, *clienterrors.Error) { +func uploadToS3(a *awscloud.AWS, outputDirectory, exportPath, bucket, key, filename string, public bool) (string, *clienterrors.Error) { imagePath := path.Join(outputDirectory, exportPath, filename) if key == "" { @@ -193,12 +193,21 @@ func uploadToS3(a *awscloud.AWS, outputDirectory, exportPath, bucket, key, filen } key += "-" + filename - _, err := a.Upload(imagePath, bucket, key) + result, err := a.Upload(imagePath, bucket, key) if err != nil { return "", clienterrors.WorkerClientError(clienterrors.ErrorUploadingImage, err.Error(), nil) } + if public { + err := a.MarkS3ObjectAsPublic(bucket, key) + if err != nil { + return "", clienterrors.WorkerClientError(clienterrors.ErrorUploadingImage, err.Error(), nil) + } + + return result.Location, nil + } + url, err := a.S3ObjectPresignedURL(bucket, key) if err != nil { return "", clienterrors.WorkerClientError(clienterrors.ErrorUploadingImage, err.Error(), nil) @@ -506,7 +515,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error { break } - url, targetError := uploadToS3(a, outputDirectory, jobTarget.OsbuildArtifact.ExportName, bucket, targetOptions.Key, jobTarget.OsbuildArtifact.ExportFilename) + url, targetError := uploadToS3(a, outputDirectory, jobTarget.OsbuildArtifact.ExportName, bucket, targetOptions.Key, jobTarget.OsbuildArtifact.ExportFilename, targetOptions.Public) if targetError != nil { targetResult.TargetError = targetError break diff --git a/internal/target/aws_target.go b/internal/target/aws_target.go index 4ae93c0fc..75a73ba5f 100644 --- a/internal/target/aws_target.go +++ b/internal/target/aws_target.go @@ -42,6 +42,7 @@ type AWSS3TargetOptions struct { Endpoint string `json:"endpoint"` CABundle string `json:"ca_bundle"` SkipSSLVerification bool `json:"skip_ssl_verification"` + Public bool `json:"public,omitempty"` } func (AWSS3TargetOptions) isTargetOptions() {}