diff --git a/src/modules/apigw/index.ts b/src/modules/apigw/index.ts index cff92c1f..48852235 100644 --- a/src/modules/apigw/index.ts +++ b/src/modules/apigw/index.ts @@ -151,6 +151,23 @@ export default class Apigw { outputs.usagePlan = usagePlan; } + try { + const { tags } = inputs; + if (tags) { + await this.tagClient.deployResourceTags({ + tags: tags.map(({ key, value }) => ({ TagKey: key, TagValue: value })), + resourceId: serviceId, + serviceType: ApiServiceType.apigw, + resourcePrefix: 'service', + }); + if (tags.length > 0) { + outputs.tags = tags; + } + } + } catch (e) { + console.log(`[TAG] ${e.message}`); + } + // return this.formatApigwOutputs(outputs); return outputs; } diff --git a/src/modules/scf/constants.ts b/src/modules/scf/constants.ts index af300716..fa5721d9 100644 --- a/src/modules/scf/constants.ts +++ b/src/modules/scf/constants.ts @@ -1,3 +1,2 @@ export const WebServerImageDefaultPort = 9000; - export const YunTiTagDocHref = 'https://doc.weixin.qq.com/doc/w3_AQ8AWgYkAOEEeD1cr34R7S66r8ONY?scode=AJEAIQdfAAoiSWrYcZAOMAswb5AFM'; \ No newline at end of file diff --git a/src/modules/scf/interface.ts b/src/modules/scf/interface.ts index d7f3d6ba..c4f83b4e 100644 --- a/src/modules/scf/interface.ts +++ b/src/modules/scf/interface.ts @@ -12,6 +12,8 @@ export interface FunctionCode { RegistryId?: string; Command?: string; Args?: string; + ContainerImageAccelerate?: boolean; + ImagePort?: number; }; } @@ -203,6 +205,7 @@ export interface ScfCreateFunctionInputs { cfs?: { cfsId: string; + mountInsId?: string; MountInsId?: string; localMountDir: string; remoteMountDir: string; @@ -228,6 +231,10 @@ export interface ScfCreateFunctionInputs { command?: string; // 启动命令参数 args?: string; + // 是否开启镜像加速 + containerImageAccelerate?: boolean; + // 监听端口: -1 表示job镜像,0~65535 表示Web Server镜像 + imagePort?: number; }; // 异步调用重试配置 diff --git a/src/modules/scf/utils.ts b/src/modules/scf/utils.ts index 0c905d1e..684f95d8 100644 --- a/src/modules/scf/utils.ts +++ b/src/modules/scf/utils.ts @@ -1,3 +1,4 @@ +import { WebServerImageDefaultPort } from './constants'; import { ScfCreateFunctionInputs, BaseFunctionConfig, ProtocolParams } from './interface'; const CONFIGS = require('./config').default; @@ -52,6 +53,20 @@ export const formatInputs = (inputs: ScfCreateFunctionInputs) => { if (imageConfig.args) { functionInputs.Code!.ImageConfig!.Args = imageConfig.args; } + // 镜像加速 + if (imageConfig.containerImageAccelerate !== undefined) { + functionInputs.Code!.ImageConfig!.ContainerImageAccelerate = + imageConfig.containerImageAccelerate; + } + // 监听端口: -1 表示 job镜像,0 ~ 65526 表示webServer镜像 + if (imageConfig.imagePort) { + functionInputs.Code!.ImageConfig!.ImagePort = + Number.isInteger(imageConfig?.imagePort) && + imageConfig?.imagePort >= -1 && + imageConfig?.imagePort <= 65535 + ? imageConfig.imagePort + : WebServerImageDefaultPort; + } } else { // 基于 COS 代码部署 functionInputs.Code = { @@ -149,7 +164,7 @@ export const formatInputs = (inputs: ScfCreateFunctionInputs) => { inputs.cfs.forEach((item) => { functionInputs.CfsConfig?.CfsInsList.push({ CfsId: item.cfsId, - MountInsId: item.MountInsId || item.cfsId, + MountInsId: item.mountInsId || item.MountInsId || item.cfsId, LocalMountDir: item.localMountDir, RemoteMountDir: item.remoteMountDir, UserGroupId: String(item.userGroupId || 10000),