iam

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 8, 2026 License: Apache-2.0 Imports: 21 Imported by: 0

README

iam-api-go

Go Reference Tests Go Report Card

さくらのクラウド「IAM」APIのGoクライアントライブラリ

概要

このライブラリは、さくらのクラウド「IAM」APIをGo言語から利用するためのクライアントです。 OpenAPI仕様から自動生成された型安全なAPIクライアントと、それをラップして使い勝手を向上させたクライアントを提供します。

[!WARNING] v1.0に達するまでは互換性のない形で変更される可能性がありますのでご注意ください。

インストール

go get github.com/sacloud/iam-api-go

使い方

package main

import (
    "context"
    "os"

    "github.com/sacloud/iam-api-go"
    "github.com/sacloud/iam-api-go/apis/user"
    "github.com/sacloud/saclient-go"
)

var theClient saclient.Client

func main() {
	err := theClient.FlagSet(flag.PanicOnError).Parse(os.Args[1:])
    if err != nil {
        // エラーハンドリング
	}

    err = theClient.SetEnviron(os.Environ())
    if err != nil {
        // エラーハンドリング
	}

    client, err := iam.NewClient(&theClient)
    if err != nil {
        // エラーハンドリング
    }

    // 例: ユーザー一覧取得
    ctx := context.Background()
    users, err := iam.NewUserOp(client).List(ctx, user.ListParams{})
    if err != nil {
        // エラーハンドリング
    }
}

APIの詳細はGoDocapis/v1/配下の型定義を参照してください。

認証情報

APIを実行するには認証が必要です。インタラクティブな環境の場合おすすめは usacloud を使って設定ファイルを作成することです。たとえば

usacloud config create --name production

にて作成したプロファイル production があるとすると、上記のmain関数をもつバイナリは

./a.out --profile=production

のようにして設定を読み込むことができます。

一方でCI環境のようにファイルに書き出すのが適切ではない場合、環境変数経由で

export SAKURA_SERVICE_PRINCIPAL_ID=sub
export SAKURA_SERVICE_PRINCIPAL_KEY_ID=kid
export SAKURA_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----...

./a.out --profile=production

のように指定できます。

なおIAMの各機能を利用するには各機能を利用できる権限を付与したサービスプリンシパルが必要です。 さくらのクラウド マニュアルの サービスプリンシパル 内「ロールの付与」、および IAMポリシー 内「設定方法」をご参照ください。

単体テストを流すのに必要な権限に関しては ./doc/testing.md もご参照ください。

開発

ビルドやテストはMakefile経由で実行できます。

make
make test

ライセンス

Copyright (C) 2025- The sacloud/iam-api-go Authors. このプロジェクトはApache 2.0 Licenseの下で公開されています。

Documentation

Index

Constants

View Source
const DefaultAPIRootURL = "https://secure.sakura.ad.jp/cloud/api/iam/1.0/"

DefaultAPIRootURL デフォルトのAPIルートURL

View Source
const Version = "0.1.0"

Variables

View Source
var NewAPIError = common.NewAPIError
View Source
var NewAuthOp = auth.NewAuthOp
View Source
var NewError = common.NewError
View Source
var NewFolderOp = folder.NewFolderOp
View Source
var NewGroupOp = group.NewGroupOp
View Source
var NewIAMPolicyOp = iampolicy.NewIAMPolicyOp
View Source
var NewIAMRoleOp = iamrole.NewIAMRoleOp
View Source
var NewIDPolicyOp = idpolicy.NewIDPolicyOp
View Source
var NewIDRoleOp = idrole.NewIdRoleOp
View Source
var NewOrganizationOp = organization.NewOrganizationOp
View Source
var NewProjectAPIKeyOp = projectapikey.NewProjectAPIKeyOp
View Source
var NewProjectOp = project.NewProjectOp
View Source
var NewSSOOp = sso.NewSSOOp
View Source
var NewServicePolicyOp = servicepolicy.NewServicePolicyOp
View Source
var NewServicePrincipalOp = serviceprincipal.NewServicePrincipalOp
View Source
var NewUser2FAOp = user2fa.NewUser2FAOp
View Source
var NewUserOp = user.NewUserOp
View Source
var UserAgent = fmt.Sprintf(
	"iam-api-go/%s (%s/%s; +https://github.com/sacloud/iam-api-go)",
	Version,
	runtime.GOOS,
	runtime.GOARCH,
)

UserAgent APIリクエスト時のユーザーエージェント

Functions

func NewClient

func NewClient(client saclient.ClientAPI) (*v1.Client, error)

func NewClientWithAPIRootURL

func NewClientWithAPIRootURL(client saclient.ClientAPI, apiRootURL string) (*v1.Client, error)

Types

type AuthAPI

type AuthAPI = auth.AuthAPI

type Error

type Error = common.Error

type FolderAPI

type FolderAPI = folder.FolderAPI

type GroupAPI

type GroupAPI = group.GroupAPI

type IAMPolicyAPI

type IAMPolicyAPI = iampolicy.IAMPolicyAPI

type IAMRoleAPI

type IAMRoleAPI = iamrole.IAMRoleAPI

type IDPolicyAPI

type IDPolicyAPI = idpolicy.IDPolicyAPI

type IDRoleAPI

type IDRoleAPI = idrole.IDRoleAPI

type OrganizationAPI

type OrganizationAPI = organization.OrganizationAPI

type ProjectAPI

type ProjectAPI = project.ProjectAPI

type ProjectApiKeyAPI

type ProjectApiKeyAPI = projectapikey.ProjectAPIKeyAPI

type SSOAPI

type SSOAPI = sso.SSOAPI

type ServicePolicyAPI

type ServicePolicyAPI = servicepolicy.ServicePolicyAPI

type User2FAAPI

type User2FAAPI = user2fa.User2FAAPI

type UserAPI

type UserAPI = user.UserAPI

Directories

Path Synopsis
apis
group
Package group provides the GroupAPI that wraps the generated v1 client.
Package group provides the GroupAPI that wraps the generated v1 client.
idpolicy
Package idpolicy provides the IdPolicyAPI that wraps the generated v1 client.
Package idpolicy provides the IdPolicyAPI that wraps the generated v1 client.
sso
user
Package user provides the UserAPI that wraps the generated v1 client.
Package user provides the UserAPI that wraps the generated v1 client.
v1
Code generated by ogen, DO NOT EDIT.
Code generated by ogen, DO NOT EDIT.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL