Compare commits

..

6 Commits

Author SHA1 Message Date
wss-git fb64cc31c9 build: 0.0.23 2022-01-04 13:52:48 +08:00
heimanba 16fef7da63
Merge pull request #21 from devsapp/fix#480
fix: fc 480
2022-01-04 11:29:07 +08:00
wss-git 53524ca5a0 build: 0.0.22 2021-12-31 09:59:32 +08:00
千风 545b575b2e fix: fix async invoke withour stateul invoke id error 2021-12-31 09:57:48 +08:00
wss-git 853611b69f fix: invoke function add timeout 2021-12-27 18:09:00 +08:00
heimanba 25e6625cb2
Merge pull request #20 from devsapp/wss/dev
Wss/dev
2021-12-23 14:28:12 +08:00
6 changed files with 42 additions and 26 deletions

44
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{
"name": "fc-remote-invoke",
"version": "0.0.20",
"version": "0.0.23",
"description": "This is a component demo for Serverless Devs Tool ",
"keywords": [
"Serverless",

View File

@ -2,7 +2,7 @@ Type: Component
Name: fc-remote-invoke
Provider:
- 其它
Version: 0.0.21
Version: 0.0.23
Description: 初始化component模板
HomePage: https://www.serverless-devs.com
Tags: #标签详情

View File

@ -15,6 +15,7 @@ export default class FcRemoteInvoke {
async invoke(inputs: InputProps): Promise<any> {
const {
props,
timeout,
eventPayload,
credentials,
isHelp,
@ -31,7 +32,7 @@ export default class FcRemoteInvoke {
let fcClient;
if (!props.domainName) {
const fcCommon = await core.loadComponent('devsapp/fc-common');
fcClient = await fcCommon.makeFcClient({ ...inputs, props: { region: props.region }});
fcClient = await fcCommon.makeFcClient({ ...inputs, props: { region: props.region, timeout }});
}
const remoteInvoke = new RemoteInvoke(fcClient, credentials.AccountID);
await remoteInvoke.invoke(props, eventPayload, { invocationType, statefulAsyncInvocationId });
@ -51,6 +52,7 @@ export default class FcRemoteInvoke {
const parsedArgs: {[key: string]: any} = core.commandParse({ ...inputs, args }, {
boolean: ['help', 'event-stdin'],
number: ['timeout'],
string: ['invocation-type', 'event', 'event-file', 'region', 'domain-name','service-name', 'function-name', 'qualifier', 'stateful-async-invocation-id'],
alias: {
'help': 'h',
@ -108,8 +110,20 @@ export default class FcRemoteInvoke {
throw new Error('region/serviceName(service-name)/functionName(function-name) can not be empty.');
}
// 超时时间获取的原理https://github.com/devsapp/fc/issues/480
const propsTimeout = argsData.timeout || inputs.props?.timeout;
let timeout = 600;
if (_.isNumber(propsTimeout)) {
if (_.isEmpty(inputs.props?.runtime) || inputs.props?.runtime === 'custom-container') {
timeout = propsTimeout + 7 * 60;
} else {
timeout = propsTimeout + 2 * 60;
}
}
return {
props,
timeout,
credentials: inputs.credentials,
eventPayload,
isHelp: false,

View File

@ -25,8 +25,10 @@ export interface IProperties {
region: string;
serviceName: string;
functionName: string;
runtime?: string;
qualifier?: string;
domainName?: string;
timeout?: string;
}
export function isProperties(args: any): args is IProperties {
if (!args) {

View File

@ -95,7 +95,7 @@ export default class RemoteInvoke {
const { headers } = await this.fcClient.invokeFunction(serviceName, functionName, event, {
'X-Fc-Invocation-Code-Version': 'Latest',
'X-Fc-Invocation-Type': invocationType,
'X-Fc-Stateful-Async-Invocation-Id': statefulAsyncInvocationId,
'X-Fc-Stateful-Async-Invocation-Id': statefulAsyncInvocationId || "",
}, qualifier);
const rId = headers['x-fc-request-id'];