# 绑定工作区

AI Studio SDK 以工作区划定资源范围。本页说明如何用已知工作区 ID 绑定工作区，并从该范围继续访问数据、工作流、连接器等资源。

(sdk-ai-studio-resource-model-relationship)=
## 对象关系

客户端负责认证和发起请求。工作区引用保存工作区 ID；从它取得的资源引用会继续带有相同的工作区范围。资源引用保存的是标识，不会因为创建引用而读取、验证或刷新远端资源。

```text
客户端
└── 工作区
    ├── 数据资源
    ├── 工作流和运行
    ├── 连接器和任务
    └── 其他工作区资源
```

(sdk-ai-studio-resource-model-bind-workspace)=
## 绑定已有工作区

准备一个由创建、列表或操作者选择得到的工作区 ID。以下示例只绑定工作区，不会创建工作区或查询该 ID 是否存在。后续示例应继续使用同一工作区引用，避免把显示名称当作资源 ID。

:::::{tab-set}
:sync-group: sdk-language

::::{tab-item} Python
:sync: python

```python
import os

import moi_product_sdk as sdk

client = sdk.new_with_personal_access_token(
    os.environ["PRODUCT_API_BASE_URL"],
    os.environ["PRODUCT_API_KEY"],
)
workspace = client.workspace("<workspace-id>")
```

::::

::::{tab-item} Go
:sync: go

```go
package main

import (
	"fmt"
	"os"

	sdk "github.com/matrixorigin/matrixflow/sdk/go-sdk"
)

func main() {
	client, err := sdk.NewWithPersonalAccessToken(
		os.Getenv("PRODUCT_API_BASE_URL"),
		os.Getenv("PRODUCT_API_KEY"),
	)
	if err != nil {
		panic(err)
	}
	workspace, err := client.Workspace("<workspace-id>")
	if err != nil {
		panic(err)
	}
	fmt.Println(workspace.ID())
}
```

::::

:::::

如果需要按名称查找或在缺失时创建工作区，请使用快速开始中的相应流程。该流程会先查找同名的可见工作区，并可能写入新工作区，因此不适合只读操作。

(sdk-ai-studio-resource-model-read-workspace)=
## 读取工作区范围的信息

绑定工作区后，可以读取数据库连接信息或最近的失败审计记录。连接信息可能包含敏感配置；只在建立连接所需的位置使用，不要写入日志。

:::::{tab-set}
:sync-group: sdk-language

::::{tab-item} Python
:sync: python

```python
connection = workspace.db_connection()
failed_logs = workspace.recent_failed_audit_logs(20)

print(connection)
print(failed_logs)
```

::::

::::{tab-item} Go
:sync: go

```go
ctx := context.Background()
connection, err := workspace.DBConnection(ctx)
if err != nil {
	panic(err)
}
failedLogs, err := workspace.RecentFailedAuditLogs(ctx, 20)
if err != nil {
	panic(err)
}

_ = connection
_ = failedLogs
```

::::

:::::

失败审计读取需要正数数量上限，并且只返回失败记录。读取结果反映这次请求的返回内容；如果下一步依赖资源的当前状态，请在该资源的任务页重新读取。

(sdk-ai-studio-resource-model-next)=
## 下一步

- [管理工作区成员](管理工作区成员.md)
- [运行并跟踪工作流](../数据处理/运行并跟踪工作流.md)
