阿里雲API調試工具OpenAPI Explore提供OpenAPI文檔、API調試和SDK樣本,協助您快速入門API開發。本文介紹如何安裝和快速使用Intelligent Media ManagementGo SDK。
前提條件
已建立並擷取AccessKey。具體操作,請參見建立AccessKey。
已開通OSS服務、建立儲存空間並上傳檔案到儲存空間。具體操作,請參見控制台上傳檔案。
已開通Intelligent Media Management服務。具體操作,請參見開通產品。
已通過Intelligent Media Management控制台建立專案。具體操作,請參見建立專案。
您也可以調用API介面建立專案。具體操作,請參見CreateProject - 建立專案。
您可以調用ListProjects - 列出所有專案資訊的列表介面列出指定地區下已建立的所有專案資訊。
安裝SDK
調用2020-09-30版本的API,需要使用2020-09-30版本的SDK。
安裝Intelligent Media ManagementGo SDK的操作步驟請參見快速入門。
訪問憑證
您可以選擇以下類型的訪問憑證。
臨時訪問憑證:對於需要高安全性的情境,例如臨時授權應用訪問IMM,建議使用臨時訪問憑證。臨時訪問憑證可以限制訪問的有效期間,從而減少訪問憑證泄露的風險。此外,臨時訪問憑證支援許可權控制,可以有效地避免許可權過大的問題。
長期訪問憑證:出於安全性考慮,不建議您使用長期訪問憑證,建議您使用臨時訪問憑證。對於需要便利性的情境,長期訪問憑證可以在較長時間內免除多次重新整理的麻煩。建議每三個月更換一次長期訪問憑證,以提高帳號的安全性。當長期訪問憑證泄露或者不再使用時,應該及時刪除或者禁用相關的訪問憑證,以免造成安全風險。
使用臨時訪問憑證
當您準備臨時使用Go SDK訪問IMM服務時,可以參考配置臨時訪問憑證
package main
import (
"fmt"
"github.com/alibabacloud-go/tea/tea"
"os"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
imm "github.com/alibabacloud-go/imm-20200930/v4/client"
sts20150401 "github.com/alibabacloud-go/sts-20150401/v2/client"
)
func main() {
// 建立STS client,調用AssumeRole擷取STS TOKEN
stsConfig := &openapi.Config{}
stsConfig.SetAccessKeyId(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
stsConfig.SetAccessKeySecret(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
stsConfig.SetEndpoint("sts.cn-beijing.aliyuncs.com")
stsClient, _err := sts20150401.NewClient(stsConfig)
if _err != nil {
panic(_err)
}
// 調用AssumeRole擷取STS TOKEN
assumeRoleRequest := &sts20150401.AssumeRoleRequest{
RoleArn: tea.String("acs:ram::125499367423****:role/STStokenTestRole"),
RoleSessionName: tea.String("STSsessionName"),
DurationSeconds: tea.Int64(3600),
}
assumeRoleResp, err := stsClient.AssumeRole(assumeRoleRequest)
if err != nil {
panic(err)
}
// 使用sts token建立 imm client
immConfig := &openapi.Config{
AccessKeyId: assumeRoleResp.Body.Credentials.AccessKeyId,
AccessKeySecret: assumeRoleResp.Body.Credentials.AccessKeySecret,
SecurityToken: assumeRoleResp.Body.Credentials.SecurityToken,
Endpoint: tea.String("imm.cn-beijing.aliyuncs.com"),
}
immClient, err := imm.NewClient(immConfig)
if err != nil {
panic(err)
}
// 構造檢測圖片中的人臉及人臉資訊請求
projectName := "imm-go-sdk-doc-demo"
sourceUri := "oss://your-bucket-name/your-path/your-image.jpg"
detectImageFacesRequest := &imm.DetectImageFacesRequest{
ProjectName: tea.String(projectName),
SourceURI: tea.String(sourceUri),
}
// 發起請求
detectImageFacesResp, err := immClient.DetectImageFaces(detectImageFacesRequest)
if err != nil {
fmt.Println(err)
return
}
// 列印響應結果Body資訊
fmt.Println(detectImageFacesResp.Body.String())
}
使用長期訪問憑證
當您準備在應用或服務中長期使用Go SDK訪問IMM服務時,可以參考配置長期訪問憑證。
如下以在華東1(杭州)地區中檢測圖片中的人臉及人臉資訊為例介紹如何使用Intelligent Media ManagementGo SDK。
建立main.go檔案並寫入如下內容。
package main import ( "fmt" "os" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" imm "github.com/alibabacloud-go/imm-20200930/v4/client" "github.com/alibabacloud-go/tea/tea" ) func main() { // 初始化IMM用戶端。 // 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。 // 強烈建議不要把ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。 // 本樣本通過從環境變數中讀取AccessKey,來實現API訪問的身分識別驗證。如何配置環境變數,請參見https://help.aliyun.com/document_detail/2361894.html。 immClient, err := imm.NewClient(&openapi.Config{ RegionId: tea.String("cn-beijing"), // 填寫專案所在地區ID。 AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")), AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")), }) if err != nil { // 錯誤處理。 panic(err) } // 填寫專案名稱。 projectName := "imm-go-sdk-doc-demo" // 填寫圖片的OSS URI。 sourceUri := "oss://your-bucket-name/your-path/your-image.jpg" // 構造檢測圖片中的人臉及人臉資訊請求。 detectImageFacesRequest := &imm.DetectImageFacesRequest{ ProjectName: tea.String(projectName), SourceURI: tea.String(sourceUri), } // 發起請求。 detectImageFacesResp, err := immClient.DetectImageFaces(detectImageFacesRequest) if err != nil { // 錯誤處理。 fmt.Println(err) return } // 列印響應結果Body資訊。 fmt.Println(detectImageFacesResp.Body.String()) }
執行
go run main.go
命令,控制台輸出結果如下。{ "Faces": [ { "Age": 25, "AgeSD": 7, "Attractive": 0.998, "Beard": "none", "BeardConfidence": 1, "Boundary": { "Height": 127, "Left": 81, "Top": 62, "Width": 96 }, "Emotion": "happiness", "EmotionConfidence": 0.999, "FaceQuality": 0.998, "FigureClusterId": "figure-cluster-id-unavailable", "FigureConfidence": 0.999, "FigureId": "30f18b25-db81-4dc6-8461-fd63ab0ef16d", "FigureType": "face", "Gender": "female", "GenderConfidence": 1, "Glasses": "none", "GlassesConfidence": 1, "Hat": "none", "HatConfidence": 1, "HeadPose": { "Pitch": -16.989, "Roll": 6.006, "Yaw": 7.47 }, "Mask": "none", "MaskConfidence": 0.83, "Mouth": "open", "MouthConfidence": 0.998, "Sharpness": 1 } ], "RequestId": "28084591-0A06-0981-9AD5-B0FBD0967FD7" }