阿里云API調試工具OpenAPI Explore提供OpenAPI文檔、API調試和SDK示例,幫助您快速入門API開發。本文介紹如何安裝和快速使用智能媒體管理Go SDK。
前提條件
已創建并獲取AccessKey。具體操作,請參見創建AccessKey。
已開通OSS服務、創建存儲空間并上傳文件到存儲空間。具體操作,請參見控制臺上傳文件。
已開通智能媒體管理服務。具體操作,請參見開通產品。
已通過智能媒體管理控制臺創建項目。具體操作,請參見創建項目。
說明您也可以調用API接口創建項目。具體操作,請參見CreateProject - 創建項目。
您可以調用ListProjects - 列出所有項目信息的列表接口列出指定地域下已創建的所有項目信息。
安裝SDK
調用2020-09-30版本的API,需要使用2020-09-30版本的SDK。
安裝智能媒體管理Go 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(杭州)地域中檢測圖片中的人臉及人臉信息為例介紹如何使用智能媒體管理Go 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訪問的身份驗證。如何配置環境變量,請參見http://m.bestwisewords.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" }