edit-icon download-icon

実行環境

最終更新日: Jun 26, 2018

関数が呼び出されると、関数コードは制限された環境で実行されます。

環境設定 説明
実行ユーザー 一般ユーザー (root 許可なし)
コードディレクトリ env["FC_FUNC_CODE_PATH"]
書き込み可能なディレクトリ /tmp (他のディレクトリは読み取り専用)
オペレーティングシステム Linux 4.4.24-2.al7.x86_64
ネットワーク 同じリージョンのインターネットや Alibaba Cloud サービス (OSS や Table Store) のイントラネットへアクセス可能

この Web Shell ツール を使用して、関数実行環境を体験することができます。

異なるプログラミング言語の環境には、一般的に使用されるさまざまなライブラリが含まれています。詳細については、各言語のプログラミングのドキュメントをご参照ください。

コードディレクトリを使用する

いくつかの設定ファイルやデータファイルを、コードと共にパッケージ化して一緒にアップロードし、コードを使ってこれらのファイルにアクセスする必要がある場合は、絶対ファイルパスを取得するために FC_FUNC_CODE_PATH環境変数を使用する必要があります。以下は、 Python、Node.js、Java でパスを取得する方法を示しています。

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. }

Java:

  1. import com.aliyun.fc.runtime.Context;
  2. import com.aliyun.fc.runtime.StreamRequestHandler;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. public class HelloFC implements StreamRequestHandler {
  7. @Override
  8. public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
  9. String cfgFile = System.getenv("FC_FUNC_CODE_PATH") + "/config.json";
  10. outputStream.write(cfgFile.getBytes());
  11. }
  12. }

イントラネットドメイン名を使用する

関数が他のクラウドサービスにアクセスする必要がある場合は、イントラネットドメイン名を使用することを推奨します。イントラネットのドメイン名を使用すると、パフォーマンスがよくなります。また、この方法では、インターネットトラフィック料金も課金されません。以下は、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. };