全部产品

执行环境

更新时间:2017-09-12 10:00:32   分享:   

当函数被调用时,函数的代码会在一个受限的环境中执行:

环境配置 备注
执行用户 普通用户(无root权限)
代码目录 env["FC_FUNC_CODE_PATH"]
可写目录 /tmp(其他目录是只读的)
操作系统 Linux 4.4.24-2.al7.x86_64
网络 允许访问公网及同区域的阿里云服务(例如OSS/TableStore等)内网

用户可以通过这个Web Shell工具来体验函数的执行环境。

不同编程语言的环境中,还会包含一些常用的库,具体参见每个语言的编程文档:

使用代码目录

如果用户将一些配置文件或者数据文件与代码一起打包上传,并且需要在代码中访问这些文件的话,就需要使用FC_FUNC_CODE_PATH这个环境变量来获取文件的绝对路径,下面分别给出使用Python和Node.js的示例:

Python:

  1. import os
  2. def handler(event, context):
  3. cfg_file = os.environ['FC_FUNC_CODE_PATH'] + '/config.json'
  4. print cfg_file

Node.js:

  1. exports.handler = function(event, context, callback) {
  2. cfgFile = process.env['FC_FUNC_CODE_PATH'] + '/config.json';
  3. console.log(cfgFile);
  4. callback(null, 'done');
  5. }

使用内网域名

在函数中访问其他云服务,建议使用内网域名,一方面使用内网域名能够有更好的性能;另一方面可以避免公网流量收费。下面分别给出使用Python和Node.js使用内网域名访问OSS的示例:

Python:

  1. import oss2
  2. def my_handler(event, context):
  3. creds = context.credentials
  4. auth = oss2.StsAuth(creds.accessKeyId, creds.accessKeySecret, creds.securityToken)
  5. bucket = oss2.Bucket(auth, 'oss-cn-shanghai-internal.aliyuncs.com', 'my-bucket')
  6. bucket.put_object('my-object', 'hello world')

Node.js:

  1. var OSSClient = require('ali-oss').Wrapper;
  2. exports.handler = function(event, context, callback) {
  3. console.log(event.toString());
  4. var ossClient = new OSSClient({
  5. accessKeyId: context.credentials.accessKeyId,
  6. accessKeySecret: context.credentials.accessKeySecret,
  7. stsToken: context.credentials.securityToken,
  8. region: 'oss-cn-shanghai',
  9. internal: true,
  10. bucket: 'my-bucket',
  11. });
  12. ossClient.put('my-object', new Buffer('hello world'))
  13. .then(function(res) {
  14. callback(null, res);
  15. }).catch(function(err) {
  16. callback(err);
  17. });
  18. };
本文导读目录
本文导读目录
以上内容是否对您有帮助?