云服務集成允許開發者通過 go 語言訪問關鍵服務,例如對象存儲和機器學習。要集成 amazon s3,需要使用 github.com/aws/aws-sdk-go/s3;要集成 google cloud vision api,需要使用 cloud.google.com/go/vision。
Go 函數中的云服務集成
云服務提供諸如對象存儲、數據分析和機器學習等關鍵服務。通過將云服務集成到應用程序中,開發者可以訪問這些功能,而無需自己開發和維護基礎架構。
Go 是一種流行的編程語言,憑借其出色的并發性和性能,非常適合云開發。Go 提供了幾個庫和包,可簡化與云服務的集成。
使用 Go 集成 Amazon S3
Amazon S3 (Simple Storage Service) 是一款流行的對象存儲服務。要使用 Go 集成 Amazon S3,可以使用 github.com/aws/aws-sdk-go/s3 包。
import (
"context"
"fmt"
"io"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
// uploadFileToS3 上傳文件到 Amazon S3 存儲桶中。
func uploadFileToS3(w io.Writer, bucket, key, filePath string) error {
// 創建一個新的 S3 客戶端。
sess := session.Must(session.NewSession())
client := s3.New(sess)
// 使用文件路徑打開一個文件。
file, err := os.Open(filePath)
if err != nil {
return fmt.Errorf("os.Open: %v", err)
}
defer file.Close()
// 上傳文件到指定的存儲桶和鍵中。
_, err = client.PutObjectWithContext(context.Background(), &s3.PutObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
Body: file,
})
if err != nil {
return fmt.Errorf("PutObjectWithContext: %v", err)
}
fmt.Fprintf(w, "Uploaded file to %s/%s\n", bucket, key)
return nil
}
登錄后復制
使用 Go 集成 Google Cloud Vision API
Google Cloud Vision API 是一種圖像分析服務。要使用 Go 集成 Google Cloud Vision API,可以使用 cloud.google.com/go/vision 包。
import (
"context"
"fmt"
"log"
vision "cloud.google.com/go/vision/apiv1"
"cloud.google.com/go/vision/v2/apiv1/visionpb"
)
// detectLabelsFromGCS 分析存儲在 Google Cloud Storage 的圖像。
func detectLabelsFromGCS(w io.Writer, gcsURI string) error {
ctx := context.Background()
c, err := vision.NewImageAnnotatorClient(ctx)
if err != nil {
return fmt.Errorf("vision.NewImageAnnotatorClient: %v", err)
}
defer c.Close()
image := &visionpb.Image{
Source: &visionpb.ImageSource{
GcsImageUri: gcsURI,
},
}
annotations, err := c.DetectLabels(ctx, image, nil, 10)
if err != nil {
return fmt.Errorf("DetectLabels: %v", err)
}
if len(annotations) == 0 {
fmt.Fprintln(w, "No labels found.")
} else {
fmt.Fprintln(w, "Labels:")
for _, annotation := range annotations {
fmt.Fprintln(w, annotation.Description)
}
}
return nil
}
登錄后復制






