Files
certd/packages/ui/certd-server/src/plugins/plugin-volcengine/access.ts
T

83 lines
1.8 KiB
TypeScript
Raw Normal View History

2026-02-15 22:45:22 +08:00
import { AccessInput, BaseAccess, IsAccess } from '@certd/pipeline';
import { VolcengineClient } from './ve-client.js';
2025-03-28 23:27:24 +08:00
/**
* 这个注解将注册一个授权配置
* 在certd的后台管理系统中,用户可以选择添加此类型的授权
*/
@IsAccess({
name: 'volcengine',
title: '火山引擎',
desc: '',
icon: 'svg:icon-volcengine',
2025-08-25 16:19:37 +08:00
order: 1,
2025-03-28 23:27:24 +08:00
})
export class VolcengineAccess extends BaseAccess {
@AccessInput({
title: 'AccessKeyID',
component: {
placeholder: 'AccessKeyID',
},
2026-02-15 22:45:22 +08:00
helper: "[获取密钥](https://console.volcengine.com/iam/keymanage/)",
2025-03-28 23:27:24 +08:00
required: true,
})
accessKeyId = '';
@AccessInput({
title: 'SecretAccessKey',
component: {
placeholder: 'SecretAccessKey',
},
required: true,
encrypt: true,
})
secretAccessKey = '';
2026-02-15 22:45:22 +08:00
@AccessInput({
title: "测试",
component: {
name: "api-test",
action: "onTestRequest",
},
helper: "点击测试接口看是否正常",
})
testRequest = true;
async onTestRequest() {
await this.getCallerIdentity();
return "ok";
}
async getCallerIdentity() {
const veClient = new VolcengineClient({
access: this,
logger: this.ctx.logger,
http: this.ctx.http,
});
const service = await veClient.getStsService();
const res = await service.request({
action: "GetCallerIdentity",
});
const result = res.Result || {};
this.ctx.logger.info("✅ 密钥有效!");
this.ctx.logger.info(` 账户ID: ${result.AccountId}`);
this.ctx.logger.info(` ARN: ${result.Trn}`);
this.ctx.logger.info(` 用户ID: ${result.IdentityId}`);
return {
valid: true,
accountId: result.AccountId,
arn: result.Trn,
userId: result.IdentityId
};
}
2025-03-28 23:27:24 +08:00
}
new VolcengineAccess();