Alibaba Cloud OpenAPI エクスプローラーは、API ドキュメント、API デバッグ、SDK の例を提供し、API 開発を始めるのに役立ちます。このトピックでは、Go 用 Intelligent Media Management (IMM) SDK のインストールと使用方法について説明します。
前提条件
AccessKey ペアが作成され、取得されています。詳細については、AccessKey ペアの作成を参照してください。
OSS が有効化され、バケットが作成され、オブジェクトがバケットにアップロードされています。詳細については、オブジェクトのアップロードを参照してください。
IMM が有効化されています。詳細については、IMM の有効化を参照してください。
IMM コンソールでプロジェクトが作成されています。詳細については、プロジェクトの作成を参照してください。
説明CreateProject オペレーションを呼び出して、プロジェクトを作成できます。詳細については、CreateProjectを参照してください。
ListProjects オペレーションを呼び出して、特定のリージョンにある既存のプロジェクトをクエリできます。詳細については、ListProjectsを参照してください。
SDK のインストール
IMM API V2020-09-30 を使用するには、IMM SDK V2020-09-30 を使用する必要があります。
Go 用 IMM SDK のインストール方法の詳細については、クイックスタートを参照してください。
アクセス認証情報
以下の種類のアクセス認証情報がサポートされています。
一時的なアクセス認証情報: IMM へのアクセスの一時的な承認など、セキュリティが重要なシナリオでは、一時的なアクセス認証情報を使用することをお勧めします。一時的なアクセス認証情報は、指定された期間内に有効であるため、認証情報の漏洩を防ぐのに役立ちます。一時的なアクセス認証情報は、きめ細かいアクセス制御をサポートしており、過剰な権限によるセキュリティリスクを防ぎます。
長期アクセス認証情報: データセキュリティを確保するために、長期アクセス認証情報を使用しないことをお勧めします。利便性を必要とするシナリオでは、長期アクセス認証情報を使用することで、長期間にわたって何度も更新する必要がなくなります。アカウントのセキュリティを確保するために、3か月ごとに長期アクセス認証情報を変更することをお勧めします。長期アクセス認証情報が漏洩した場合、または使用されなくなった場合は、長期アクセス認証情報を削除または無効にして、セキュリティリスクを軽減できます。
一時的なアクセス認証情報を使用する
次のサンプルコードは、一時アクセス認証情報に基づいてGo用IMM 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 クライアントを作成し、AssumeRole オペレーションを呼び出して STS トークンを取得します。
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 トークンを取得します。
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 トークンを使用して IMM クライアントを作成します。
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
}
// レスポンスボディを表示します。
fmt.Println(detectImageFacesResp.Body.String())
}
長期アクセス認証情報を使用する
IMM SDK for Go を使用して長期アクセス認証情報に基づいて IMM にアクセスするには、まず長期アクセス認証情報を構成する必要があります。詳細については、環境変数を構成して AccessKey ペアを保存する を参照してください。
次の例では、Go 用 IMM 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 クライアントを初期化します。 // Alibaba Cloud アカウントの AccessKey ペアは、すべての API オペレーションに対する権限を持っています。RAM ユーザーを使用して API オペレーションを呼び出したり、日常的な O&M を実行することをお勧めします。 // セキュリティ上の理由から、AccessKey ペアをコードに埋め込まないことをお勧めします。 // この例では、AccessKey ペアは環境変数から取得されます。環境変数の構成方法の詳細については、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 } // レスポンスボディを出力します。 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" }