|
1 | 1 | const fs = require('fs'); |
| 2 | +const FC20230330 = require('@alicloud/fc20230330'); |
2 | 3 |
|
3 | 4 | exports.initializer = (context, callback) => { |
4 | 5 | console.log('initializing'); |
5 | 6 | callback(null, ''); |
6 | 7 | }; |
7 | 8 |
|
8 | | -module.exports.handler = function (event, context, callback) { |
| 9 | +module.exports.handler = async function (event, context, callback) { |
9 | 10 | console.log(event.toString()); |
10 | 11 | console.log(JSON.stringify(context)); |
11 | 12 | const functionName = context.function.name; |
12 | 13 | console.log(`functionName: ${functionName}`); |
| 14 | + const { ossConfig } = await getOssConfig(context, functionName); |
13 | 15 | const nasDir = `/mnt/${functionName}`; |
14 | | - const ossDir = `/mnt/${functionName}`; |
| 16 | + const ossDir = ossConfig && ossConfig?.mountPoints[0]?.mountDir; |
15 | 17 | const nasFile = `${nasDir}/test.txt`; |
16 | 18 | const ossFile = `${ossDir}/test.txt`; |
17 | | - if (fs.existsSync(nasFile)) { |
18 | | - const content = fs.readFileSync(nasFile, 'utf8'); |
19 | | - console.log(`nasFile content: ${content}`); |
20 | | - } else { |
21 | | - fs.writeFileSync(nasFile, 'hello world'); |
22 | | - console.log(`nasFile created: ${nasFile}`); |
| 19 | + if (fs.existsSync(nasDir)) { |
| 20 | + if (fs.existsSync(nasFile)) { |
| 21 | + const content = fs.readFileSync(nasFile, 'utf8'); |
| 22 | + console.log(`nasFile content: ${content}`); |
| 23 | + } else { |
| 24 | + fs.writeFileSync(nasFile, 'hello world'); |
| 25 | + console.log(`nasFile created: ${nasFile}`); |
| 26 | + } |
23 | 27 | } |
24 | | - if (fs.existsSync(ossFile)) { |
25 | | - const content = fs.readFileSync(ossFile, 'utf8'); |
26 | | - console.log(`ossFile content: ${content}`); |
27 | | - } else { |
28 | | - fs.writeFileSync(ossFile, 'hello world'); |
29 | | - console.log(`ossFile created: ${ossFile}`); |
| 28 | + if (ossDir && fs.existsSync(ossDir)) { |
| 29 | + if (fs.existsSync(ossFile)) { |
| 30 | + const content = fs.readFileSync(ossFile, 'utf8'); |
| 31 | + console.log(`ossFile content: ${content}`); |
| 32 | + } else { |
| 33 | + fs.writeFileSync(ossFile, 'hello world'); |
| 34 | + console.log(`ossFile created: ${ossFile}`); |
| 35 | + } |
30 | 36 | } |
31 | 37 | callback(null, 'hello world'); |
32 | 38 | }; |
| 39 | + |
| 40 | +async function getOssConfig(context, functionName) { |
| 41 | + const { |
| 42 | + region, |
| 43 | + credentials: { accessKeyId, accessKeySecret, securityToken }, |
| 44 | + accountId, |
| 45 | + } = context; |
| 46 | + const config = { |
| 47 | + accessKeyId, |
| 48 | + accessKeySecret, |
| 49 | + securityToken, |
| 50 | + endpoint: `${accountId}.${region}.fc.aliyuncs.com`, |
| 51 | + }; |
| 52 | + const fcClient = new FC20230330.default(config); |
| 53 | + let getFunctionRequest = new FC20230330.GetFunctionRequest({}); |
| 54 | + |
| 55 | + try { |
| 56 | + const result = await fcClient.getFunction(functionName, getFunctionRequest); |
| 57 | + console.log(JSON.stringify(result, null, 2)); |
| 58 | + |
| 59 | + return { |
| 60 | + ossConfig: result?.body?.ossMountConfig, |
| 61 | + }; |
| 62 | + } catch (e) { |
| 63 | + return { |
| 64 | + ossConfig: null, |
| 65 | + }; |
| 66 | + } |
| 67 | +} |
0 commit comments