IBM Cloud Docs
ランタイム

ランタイム

IBM Cloud® Functions が非推奨になりました。 アクション、トリガー、シーケンスなどの既存の Functions エンティティーは引き続き実行されますが、2023 年 12 月 28 日以降、新しい Functions エンティティーを作成することはできません。 既存の Functions エンティティーは、2024 年 10 月までサポートされます。 その日付にまだ存在する Functions エンティティーはすべて削除されます。 詳しくは、 非推奨の概要 を参照してください。

アプリは、JavaScript や Python などのプログラミング言語でコーディングして実行できます。 IBM Cloud® Functions では、デフォルトで多くのランタイムを使用できます。

使用できるイメージとランタイム

以下のランタイム (種類) が使用可能です。

表 1. サポートされるランタイム
言語 種類 ID
Node.js nodejs:20 (デフォルト)
Python python:3.11 (デフォルト)
PHP php:8.1 (デフォルト)
Go go:1.21 (デフォルト)
Java java (JDK 8) (デフォルト)

Docker アクションを使用すると、他の言語がサポートされます。

ランタイムは定期的に更新されます。 これらの更新には、ランタイム・パッケージに対するセキュリティー・フィックスやマイナー・バージョン・アップデート (バグ修正) が含まれます。 マイナー・バージョン・アップデートによって、旧バージョンとの互換性が損なわれる可能性があります。 ランタイムの更新によりアクションが影響を受けることがあります。

ランタイムはdeprecatedになる場合もあります。これは、特定のランタイム・コンポーネントがサポートされなくなったことを意味します。 deprecatedランタイムは非推奨後もしばらくの間使用可能であり、アクションは通常どおり実行され続けます。 ただし、非推奨ランタイムを使用するアクションをコンソールから作成したり更新したりすることはできません。 コンソールは、非推奨ランタイムを使用するアクションにマークを付けます。 非推奨ランタイムを使用するアクションを CLI から作成したり更新したりすることはできますが、非推奨ランタイムを使用しないことを強くお勧めします。

ランタイムは非推奨になった後、disabledになります。 deprecatedになってからdisabledになるまでの期間は固定されておらず、数カ月から数年までさまざまです。 ランタイムがdisabledになると、そのランタイムを使用するアクションは、エラー 400, bad request で失敗します。 disabledランタイムを使用するアクションの読み取りと削除は可能です。

deprecatedランタイムまたはdisabledランタイム上で実行されているアクションは、更新して別のランタイム・バージョンにマイグレーションしてください。 ランタイムを更新する方法については、アクション・ランタイムの変更を参照してください。

以下のランタイム (種類) は非推奨です。

  • go:1.19 (非推奨)
  • nodejs:12 (非推奨)
  • nodejs:16 (非推奨)
  • python:3.7 (非推奨)
  • python:3.9 (非推奨)

以下のランタイム (種類) は使用不可です。

  • ballerina:0.990 (無効)
  • dotnet:2.2 (無効)
  • go:1.11 (無効)
  • go:1.15 (無効)
  • go:1.17 (無効)
  • nodejs (無効)
  • nodejs:6 (無効)
  • nodejs:8 (無効)
  • nodejs:10 (無効)
  • php:7.1 (無効)
  • php:7.2 (無効)
  • php:7.3 (無効)
  • php:7.4 (無効)
  • python (無効)
  • python:2 (無効)
  • python:3.6 (無効)
  • ruby:2.5 (無効)
  • ruby:2.6 (無効)
  • swift (無効)
  • swift:3 (無効)
  • swift:3.1.1 (無効)
  • swift:4.1 (無効)
  • swift:4.2 (無効)

サポートされるランタイムと使用不可ランタイムについて詳しくは、リージョンごとの使用可能なイメージとランタイムを参照してください。

JavaScript ランタイム

デフォルトでは、すべての Node.js アクションはバージョン 20 環境で実行されます。

Node.js バージョン 16 は非推奨になり、まもなく削除される予定です。 アクションの実行を続行するには、Node.js バージョン 12 のアクションを上位のランタイム・バージョンに更新する必要があります。 詳しくは、 Node.js リリース・スケジュールを参照してください。

Node.js バージョン 12 は非推奨になり、まもなく削除される予定です。 アクションの実行を続行するには、Node.js バージョン 12 のアクションを上位のランタイム・バージョンに更新する必要があります。 詳しくは、 Node.js リリース・スケジュールを参照してください。

表 1. Node.js のバージョン
種別 Node.js バージョン 説明 変更ログ
nodejs:20 20.x デフォルトでは、すべての Node.js アクションはバージョン 20 環境で実行されます。 CHANGELOG.md.
nodejs:16 16.x 非推奨 CHANGELOG.md.
nodejs:12 12.x 非推奨 CHANGELOG.md.
nodejs:10 10.x 無効 CHANGELOG.md.
nodejs:8 8.x 無効 CHANGELOG.md.

Node.js 16 から Node.js 20 へのマイグレーション

表 2. Node.js 16 から Node.js 20 への詳細のマイグレーション
パッケージ 詳細
cloudant nodejs:20 ランタイムの @ibm-cloud/cloudant SDK パッケージが 0.5.5 にアップグレードされました。これには、インターフェースの変更が含まれます。 @ibm-cloud/cloudant SDK について詳しくは、 IBM Cloudant 資料 を参照してください。
request-promise request-promise パッケージは非推奨になったため、削除されました。 それでもこのモジュールが必要な場合は、 NPM ファイルとしての JavaScript コードのパッケージ化 の説明に従って、アクションとともに request-promise をパッケージ化することを検討してください。
mongodb nodejs:20 ランタイムの mongodb パッケージは、バージョン v5.xです。
メジャー・バージョンの変更によって非互換性が生じることがあり、それによってアクションが失敗する可能性があります。 アクションでこのパッケージの旧バージョンが使用されている場合は、現行バージョンへのマイグレーションを検討してください。 現行バージョンの mongodb へのマイグレーションについて詳しくは、「 Upgrade Driver Versions for MongoDB」を参照してください。
移行できない場合は、 JavaScript コードを NPM ファイルとしてパッケージ化する の説明に従って、古いバージョンの mongodb パッケージをアクションと一緒にパッケージ化することを検討してください。
elasticsearch nodejs:16ランタイムのelasticsearch SDK パッケージは非推奨になり、nodejs:20@elastic/elasticsearchに置き換えられました。 これは大きな変更であり、非互換性の原因となります。これにより、アクションが失敗する可能性があります。 アクションでelasticsearchを使用する場合は、@elastic/elasticsearchへのマイグレーションを検討してください。 @elastic/elasticsearch へのマイグレーションについて詳しくは、 @elastic/elasticsearch へのマイグレーションを参照してください。
マイグレーションできない場合は、 JavaScript コードを NPM ファイルとしてパッケージ化する の説明に従って、 @elastic/elasticsearch をアクションと一緒にパッケージ化することを検討してください。 @elastic/elasticsearch SDK について詳しくは、 公式ホーム・ページ を参照してください。

Node.js:20 へのマイグレーションについて詳しくは、 (GitHubの詳細情報)を参照してください。

Node.js 12 から Node.js 16 へのマイグレーション

表 2. Node.js 12 から Node.js 16 への詳細のマイグレーション
パッケージ 詳細
cloudant nodejs:12ランタイムの@cloudant/cloudant SDK パッケージは非推奨になり、nodejs:16@ibm-cloud/cloudantに置き換えられました。 これは大きな変更であり、非互換性の原因となります。これにより、アクションが失敗する可能性があります。 アクションで@cloudant/cloudantを使用する場合は、@ibm-cloud/cloudantへのマイグレーションを検討してください。 ibm-watson v6.x へのマイグレーションについて詳しくは、 cloudant-node-sdk へのマイグレーションを参照してください。
マイグレーションできない場合は、 JavaScript コードを NPM ファイルとしてパッケージ化する の説明に従って、 @cloudant/cloudant をアクションと一緒にパッケージ化することを検討してください。 @ibm-cloud/cloudant SDK について詳しくは、 IBM Cloudant 資料 を参照してください。
redis nodejs:16 ランタイムの redis パッケージは、バージョン v4.xです。
メジャー・バージョンの変更によって非互換性が生じることがあり、それによってアクションが失敗する可能性があります。 アクションでこのパッケージの旧バージョンが使用されている場合は、現行バージョンへのマイグレーションを検討してください。 redis v4 へのマイグレーションについて詳しくは、「 v3 to v4 Migration Guide」を参照してください。
移行できない場合は、 JavaScript コードを NPM ファイルとしてパッケージ化する の説明に従って、古いバージョンの redis パッケージをアクションと一緒にパッケージ化することを検討してください。
uuid nodejs:16 ランタイムの uuid パッケージは、バージョン v8.xです。
メジャー・バージョンの変更によって非互換性が生じることがあり、それによってアクションが失敗する可能性があります。 アクションでこのパッケージの旧バージョンが使用されている場合は、現行バージョンへのマイグレーションを検討してください。 現行バージョン pf uuid へのマイグレーションについて詳しくは、 uuid@3.xからのアップグレードを参照してください。
移行できない場合は、 JavaScript コードを NPM ファイルとしてパッケージ化する の説明に従って、古いバージョンの redis パッケージをアクションと一緒にパッケージ化することを検討してください。

Node.js:12 へのマイグレーションについて詳しくは、 (GitHubの詳細情報)を参照してください。

Node.js 10 から Node.js 12 へのマイグレーション

表 2. Node.js 10 から Node.js 12 への詳細のマイグレーション
パッケージ 詳細
ibm-watson nodejs:12 ランタイムの現在の ibm-watson SDK パッケージは、バージョン v6.xです。
メジャー・バージョンの変更によって非互換性が生じることがあり、それによってアクションが失敗する可能性があります。 アクションでこのパッケージの旧バージョンが使用されている場合は、現行バージョンへのマイグレーションを検討してください。
移行できない場合は、 JavaScript コードを NPM ファイルとしてパッケージ化する の説明に従って、古いバージョンの ibm-watson パッケージをアクションと一緒にパッケージ化することを検討してください。
ibmiotf ibmiotf パッケージの名前が @wiotp/sdk に変更されました。 詳しくは、 IBM Watson IoT Platform JavaScript SDKを参照してください。
request request パッケージは非推奨になったため、このランタイムでは使用できません。 代替として axiosbentgot、または needle を検討してください。

Node.js:12 へのマイグレーションについて詳しくは、 (GitHubの詳細情報)を参照してください。

Node.js 8 から Node.js 10 へのマイグレーション

表 3. Node.js 8 から Node.js 10 へのマイグレーションの詳細
パッケージ 詳細
cloudant cloudant NPM パッケージは、nodejs:10 では使用できません。 このパッケージは推奨されません。 公式の NPM パッケージ @cloudant/cloudant v3.0.0 を使用する必要があるのは、 Node.js モジュール (つまり require('@cloudant/cloudant')) をインポートするときに、 v3.x が Promiseのみを返す場合です。
cradle cradle NPM パッケージは、nodejs:10 では使用できません。
watson-developer-cloud watson-developer-cloud で使用できる nodejs:10 NPM パッケージは、バージョン 4.x です。 このバージョンには、Promises のサポートが含まれています。 加えられた変更のリストが記載されています。 このパッケージは非推奨となっており、現在サポートされていないことに注意してください。 このパッケージは更新を受信せず、将来削除される予定です。 アクションを ibm-watson パッケージに移行してください。
ibm-watson ibm-watson で使用できる nodejs:10 パッケージは、バージョン 4.x です。 このパッケージは、watson-developer-cloud パッケージの後継です。 この新規パッケージは更新を受信しないため、この新規パッケージを使用するようにアクション・コードをアップグレードしてください。 このパッケージには、promise のサポートが含まれています。
ibmiotf パッケージ ibmiotf の名前が、保守担当者によって @wiotp/sdk に変更されました。 必ず、アクション・コードを新規パッケージに更新してください。 すべての変更については、 @wiotp/sdk を参照してください。 パッケージ ibmiotf は、これ以上の更新を受け取らないため、今後このランタイムから削除される予定です。

Node.js:10 へのマイグレーションについて詳しくは、 (GitHubの詳細情報)を参照してください。

Node.js パッケージ

Node.js 20 パッケージについて詳しくは、 (GitHubの詳細情報)を参照してください。

Node.js 16 パッケージについては、 (GitHubの詳細情報)を参照してください。

Node.js 12 パッケージ 説明
@cloudant/cloudant このライブラリーは、Node.js 用の公式 Cloudant ライブラリーです。
@ibm-functions/iam-token-manager このパッケージは、Node.js 用の IAM アクセス・トークン・マネージャー・ライブラリーです。
@sendgrid/mail SendGrid API を介して E メールをサポートします。
@wiotp/sdk IBM Watson IoT Platform JavaScript SDK.
amqplib Node.js 用の AMQP 0-9-1 クライアントを作成するためのライブラリー。
apn Apple Push Notification サービスとのインターフェースのための Node.js モジュール。
async 非同期関数での作業のための機能を提供します。
axios ブラウザーおよび Node.js 用の promise ベースの HTTP クライアント。
bent async/awaitを使用した Node.js 用の機能 HTTP クライアント。
bodyparser req.body プロパティーで入手可能な着信要求本体をハンドラーの前にミドルウェアで構文解析します。
btoa ブラウザーの btoa 関数のポート。
bufferutil bufferutilは、wsを高速化するものです。
canvas Cairo が支援する Node.js 用キャンバス実装。
cassandra-driver Apache Cassandra 用の DataStax Node.js ドライバー。
commander Node.js コマンド・ライン・インターフェースの完全なソリューション。
composeaddresstranslator Scylla データベース用の Compose UI または API からのアドレス変換機構。
consul サービス・ディスカバリーおよび構成を含む Consul 用のクライアント。
cookie-parser Cookie ヘッダーを構文解析し、Cookie 名がキーになったオブジェクトを req.cookies に取り込みます。
core-js JavaScript 用のモジュラー標準ライブラリー。
elasticsearch Node.js 用の公式の低レベル Elasticsearch クライアント。
errorhandler 開発専用エラー・ハンドラー・ミドルウェア。
etcd3 Protocol Buffer ベースの etcdv3 API 用の高品質で実動向けのクライアント。
express ノード用の高速で最小限の Web フレームワーク。
express-session サーバー・サイド・セッション・データ保管モジュール。
formidable フォーム・データ、特にファイル・アップロードの構文解析のための Node.js モジュール。
glob シェルが使用するパターン (星印など) を使用してファイルのマッチングを行います。
gm Node 用の GraphicsMagick および ImageMagick。
got ユーザー・フレンドリーかつ強力な Node.js 用 HTTP 要求ライブラリー。
ibm-cos-sdk IBM Cloud® Object Storage SDK for Node.js.
ibm_db IBM DB2 および IBM Informix への Node.js 用の非同期/同期インターフェース。
ibm-watson Watson API を使用するための Node.js クライアント・ライブラリー。
iconv-lite Pure JS 文字エンコード変換。
jest 快適な JavaScript テスト。
jsdom jsdom は、多くの Web 標準 (特に、WHATWG DOM および HTML 標準) の pure-JavaScript 実装です。
jsforce JavaScript アプリケーションの Salesforce API ライブラリー。
jsonwebtoken JSON Web トークンの実装。
lodash Node.js モジュールとしてエクスポートされる Lodash ライブラリー。
log4js このパッケージは、ノードと連動させるための log4js フレームワークの変換です。
marked JavaScript で記述されたフル機能のマークダウン・パーサーおよびコンパイラー。 スピードのために作成。
merge 複数のオブジェクトを 1 つにマージし、オプションで新しい複製オブジェクトを作成します。
moment 日付を構文解析、検証、操作、およびフォーマット設定するための軽量 JavaScript 日付ライブラリー。
mongodb Node.js 用の公式 MongoDB ドライバー。
mustache mustache.js は、JavaScript での mustache テンプレート・システムの実装です。
mysql このパッケージは mysql 用の Node.js ドライバーです。
nano Node.js 用の最小主義の couchdb ドライバー。
needle Nodelands の中で最もスリムでハンサムな HTTP クライアント。
nodemailer Node.js からの E メールの送信 - とても簡単です。
oauth2-server Node.js で Express を使用して OAuth2 サーバー/プロバイダーを実装するための、完全な、準拠する、十分にテスト済みのモジュール。
openwhisk OpenWhisk プラットフォーム用の JavaScript クライアント・ライブラリー。 OpenWhisk API のラッパーを提供します。
path-to-regex パス・ストリング (例えば /user/:name) を、URL パスとの突き合わせに使用できる正規表現に変換します。
pg Node.js 用の非ブロッキング PostgreSQL クライアント。Pure JavaScript およびオプションのネイティブlibpqバインディング。
process require('process'); 他のモジュールと同様。
pug Pug テンプレート言語を実装します。
redis このパッケージは、完全で機能が豊富な Node.js 用 Redis クライアントです。
request-promise Promise サポートのある単純化された HTTP 要求クライアント 'request'。 Bluebird で稼働。
rimraf ノードの UNIXコマンドrm -rf
semver Node.js 用のセマンティック・バージョン管理。
serialize-error エラーをプレーン・オブジェクトとしてシリアライズします。
serve-favicon faviconにサービスを提供するための Node.js ミドルウェア。
socket.io Socket.io は、リアルタイムで双方向のイベント・ベースの通信を可能にします。
socket.io-client socket.io のリアルタイム・アプリケーション・フレームワーク。
superagent SuperAgent は小さな漸進的クライアント・サイド HTTP 要求ライブラリーであり、同じ API を持つ Node.js モジュールであり、多くの高水準な HTTP クライアント機能をサポートします。
swagger-tools Swagger と統合および対話するための各種ツールを提供するパッケージ。
tmp Node.js 用の単純な一時ファイルおよびディレクトリーの作成機能。
ts-jest Jest 用のソース・マップ・サポートを備えた TypeScript プリプロセッサー。これにより、TypeScript で書かれたプロジェクトを、Jest を使用してテストできます。
twilio 音声、ビデオ、およびメッセージングに関連した、Twilio API 用のラッパー。
underscore Underscore.js は、コア JavaScript オブジェクトを拡張することなく、通常の機能上の名寄せ候補 (それぞれ、マップ、削減、フィルターなど) をサポートする JavaScript 用のユーティリティー・ベルト・ライブラリーです。
url-pattern regex ストリング・マッチャーを使用するよりも簡単に、パス・パラメーターの URL を構文解析します。
utf-8-validate 有効な UTF-8 エンコード・テキストがバッファーに含まれているかどうかを検査します。
uuid RFC4122 UUIDS の単純で高速な生成。
validator ストリングのバリデーターおよびサニタイザーのライブラリー。
vcap_services IBM Cloud が提供する VCAP_SERVICES 環境変数のサービス資格情報を解析して返します。
when when.js は、完全な ES6 Promise shim を含む、厳しい試験を経た強固な Promises/A+ および when() 実装です。
winston Node.js 用のマルチトランスポートasyncロギング・ライブラリー。「CHILL WINSTON! ... I put it in the logs.
ws ws は、使用が簡単で高速な、完全にテスト済みの、WebSocket クライアントおよびサーバーの実装です。
xlsx 各種スプレッドシート形式のパーサーおよびライター。
xml2js XML から JavaScript オブジェクトへの単純なコンバーター。 双方向変換をサポートします。
xmlhttprequest node-XMLHttpRequest は、ブラウザー XMLHttpRequest オブジェクトをエミュレートするための、組み込み HTTP クライアント用のラッパーです。
yauzl ノード用のさらに別の解凍ライブラリー。 zip 用。
yazl ノード用のさらに別の解凍ライブラリー。 zip 用。

Node.js 12 パッケージについて詳しくは、 (GitHubの詳細情報)を参照してください。

Python ランタイム

デフォルトでは、すべての Python アクションは Python バージョン 3.11 環境で実行されます。

表 4。 Python バージョン
種別 Python のバージョン 説明 変更ログ
python:3.11 3.11.x デフォルトでは、アクションの作成時または更新時に --kind フラグを指定しない限り、すべての Python アクションは Python バージョン 3.11.x 環境 (Debian Buster ベース) で実行されます。 このランタイムを明示的に使用するには、アクションを作成または更新するときに CLI パラメーター--kind python:3.11を指定します。 ランタイムには、 Python 3.11 標準ライブラリーに加えて、 Python アクションで使用可能な IBM Cloud サービス用の SDK パッケージが含まれています。 CHANGELOG.md.
python:3.9 3.9.x Python アクションは、アクションの作成時または更新時に --kind フラグを指定しない限り、 Python バージョン 3.11.x 環境 (Debian Buster ベース) で実行されます。 このランタイムを明示的に使用するには、アクションを作成または更新するときに CLI パラメーター--kind python:3.9を指定します。 ランタイムには、Python 3.9 標準ライブラリーに加えて、Python アクションで使用可能な IBM Cloud サービス用の SDK パッケージが含まれています。 CHANGELOG.md.
python:3.7 3.7.x Python アクションは、アクションの作成または更新時に --kind フラグを指定しない限り、 Python バージョン 3.11.x 環境 (Debian Stretch ベース) で実行されます。 このランタイムを明示的に使用するには、アクションを作成または更新するときに CLI パラメーター--kind python:3.7を指定します。 このランタイムには、Python 3.7 標準ライブラリーに加えて Python アクションで使用できる IBM Cloud サービス用 SDK パッケージが含まれています。 CHANGELOG.md.
3.6 Python 3.6 は 2021/12/23 に end of support に到達しました。
End of life Python Releasesを参照してください。
2.7 Python 2.7 は 2020/01/01 に end of support に到達しました。
Active Python Releasesを参照してください。

Python 3.7 から Python 3.9、 Python 3.11 へのマイグレーション

表 2. Python 3.7 から Python 3.9 への詳細のマイグレーション
パッケージ 詳細
ibmcloudant cloudant sdk が新しいibmcloudant sdk に移動しました。 互換性を損なういくつかの変更が含まれています。 詳しくは、マイグレーション・ガイドを参照してください。
ibm-watson watson-developer-cloud sdk は新しい ibm-watson sdk に名前変更され、互換性のない変更が含まれています。 詳しくは、pypi ibm-watson および github ibm-watson を参照してください。

python:3.9 へのマイグレーションについて詳しくは、 (GitHubの詳細情報)を参照してください。

Python パッケージ

以下の表に記載されているパッケージのみをアクションで使用するようにしてください。 \n 他の Python パッケージがランタイムの一部となっている可能性もありますが、そのようなパッケージは、リストされている他のパッケージの間接的な依存パッケージとして組み込まれているにすぎません。 リストされていないそれらのパッケージは、参照元パッケージで不要になり次第、削除の候補となります。

表 1. Python 3.11 パッケージ
Python 3.11 パッケージ
beautifulsoup4
botocore
cassandra-driver
ibmcloudant
elasticsearch
etcd3
flask
gevent
httplib2
ibm-cos-sdk
ibm_db
ibmcloudsql
kafka_python
lxml
numpy
pandas
pika
Pillow
psycopg2
PyJWT
pymongo
python-dateutil
redis
requests
scikit-learn
scipy
scrapy
simplejson
tornado
twisted
virtualenv
ibm-watson
表 2. Python 3.9 パッケージ
Python 3.9 パッケージ
beautifulsoup4
botocore
cassandra-driver
ibmcloudant
elasticsearch
etcd3
flask
gevent
httplib2
ibm-cos-sdk
ibm_db
ibmcloudsql
kafka_python
lxml
numpy
pandas
pika
Pillow
psycopg2
PyJWT
pymongo
python-dateutil
redis
requests
scikit-learn
scipy
scrapy
simplejson
tornado
twisted
virtualenv
ibm-watson
Python 3.7 パッケージ
beautifulsoup4
botocore
cassandra-driver
cloudant
elasticsearch
etcd3
flask
gevent
httplib2
ibm-cos-sdk
ibm_db
ibmcloudsql
kafka_python
lxml
numpy
pandas
pika
Pillow
psycopg2
PyJWT
pymongo
python-dateutil
redis
requests
scikit-learn
scipy
scrapy
simplejson
tornado
twisted
virtualenv
watson-developer-cloud
Python 3.6 パッケージ
cassandra-driver
cloudant
elasticsearch
beautifulsoup4
flask
gevent
httplib2
ibm-cos-sdk
ibm_db
ibmcloudsql
kafka_python
lxml
numpy
pandas
pika
Pillow
psycopg2
pymongo
python-dateutil
redis
requests
scikit-learn
scipy
scrapy
simplejson
twisted
virtualenv
watson-developer-cloud

Python 3.11 パッケージについて詳しくは、 (GitHubの詳細情報)を参照してください。

Python 3.9 パッケージについて詳しくは、 (GitHubの詳細情報)を参照してください。

Python 3.7 パッケージについて詳しくは、 (GitHubの詳細情報)を参照してください。

Python 3.6 パッケージについて詳しくは、 (Details on GitHub)を参照してください。

PHP ランタイム

デフォルトでは、すべての PHP アクションはバージョン 8.1 環境で実行されます。

php:8.1 ランタイムについて詳しくは、 (GitHubの詳細情報)を参照してください。

標準の PHP 拡張機能に加えて、以下の PHP 拡張機能を使用できます。

  • bcmath
  • curl
  • gd
  • intl
  • mbstring
  • mongodb
  • mysqli
  • pdo_mysql
  • pdo_pgsql
  • pdo_sqlite
  • soap
  • zip

以下の表に記載されているモジュールのみをアクションで使用するようにしてください。 \n 他の PHP モジュールはランタイムの一部である可能性がありますが、リストされている他のモジュールの間接的な依存関係としてのみ組み込まれます。 これらのリストされていないモジュールは、参照元のモジュールによって要求されないとすぐに除去される候補になります。

Docker ランタイム

Docker アクションは、Docker コンテナー内のユーザー提供の実行可能ファイルを実行します。 Dockerfile を変更して、コンパイル・ステップや依存関係を組み込むことができます。 action createコマンドの実行時に--dockerフラグを指定することにより、アクション・コードで使用する Docker イメージを指定できます。 Docker イメージを使用してアクションを作成する場合、アプリは、アクション作成時に指定するパブリック Docker イメージで実行されます。

Cloud Functions では、Docker ハブ上に基本イメージが提供されます。 それらのイメージは、アクション作成時にそのまま使用することも、Dockerfile の作成時に基本イメージとして使用することもできます。 使用できるランタイム・イメージのリストは、使用できるイメージとランタイムのセクションで確認できます。

Cloud Functions アクションは、Docker ハブにあるパブリック・イメージを使用して作成できます。

Docker スケルトン

openwhisk/dockerskeleton イメージを使用してアクションをデプロイできます。 --native の省略表現として、--docker openwhisk/dockerskeleton 引数が使用できます。 この引数を使用すると、標準的な Docker アクション SDK 内で実行される実行可能ファイルを作成してデプロイできます。

詳しくは、バイナリーからのアクションの作成を参照してください。

その他のランタイム・サポート

Go

デフォルトでは、すべての Go アクションはバージョン 1.19 環境で実行されます。 Go バージョン 1.11、 1.15 、および 1.17 は非推奨になりました。 Go:1.11 から Go:1.17 以上にマイグレーションする場合:

  • Go:1.17 は、 Go Modulesを使用します。
  • 項目の関数が含まれるファイル (main.go Main など) はルートに配置する必要があります。"main" ディレクトリーはサポートされていません。

go ランタイムについて詳しくは、 (Details on GitHub)を参照してください。

go アクションの作成方法について詳しくは、Go アプリを準備するを参照してください。

Java

デフォルトでは、すべての Java アクションはバージョン 8 環境で実行されます。

java:8 ランタイムについて詳しくは、 (Details on GitHub)を参照してください。

.NET Core (非推奨)

.NET コア・ランタイムは推奨されません。 これに代わるものはありません。 代わりに、別のランタイムにマイグレーションする必要があります。

リージョンごとの使用可能なイメージとランタイム

IBM Cloud Functions で使用可能なランタイムをリージョンごとに確認できます。 次のリンクは JSON 応答を返します。 応答の runtimes セクションには、使用可能なランタイムのセットが含まれています。 image セクションには、 Docker Hub 上のランタイム・イメージの名前と、使用されるタグが含まれています。

以下の例は、 hub.docker.com上のイメージ ibmfunctions/action-nodejs-v12 および openwhisk/java8action を指しています。 タグは、1.1.1 のようなバージョン番号、または a231007 のような Git コミット・ハッシュの簡易書式とすることができます。

イメージ・フィールドの例。

image:   "ibmfunctions/action-nodejs-v12:1.1.1"
image:   "openwhisk/java8action:a231007"

この JSON 応答は、サポートされるランタイムと使用不可のランタイムを示します。 使用不可のランタイムには deprecated=true のマークが付けられます。 この応答では非推奨ランタイムは示されません。 応答で返される非推奨のフラグは、使用できるイメージとランタイムに記載されている非推奨ランタイムとは対応していません。

この応答では、非推奨ランタイムは最終的に使用不可になるまで非推奨のマークが付けられません。 コンソールと本資料 (使用できるイメージとランタイム) でのみ、非推奨ランタイムに非推奨のマークが付けられています。

失敗したアクション (400、間違った要求) をトラブルシューティングするとき、使用不可ランタイムが使用されているかどうかを見分けるには、照会応答に deprecated=true があるかどうかを調べます。 使用不可のランタイムを使用するアクションに対して行える操作は、読み取りと削除のみです。 このようなアクションを実行することはできません。

そうしたアクションのランタイムを、サポートされるランタイムに更新するには、アクション・ランタイムの変更を参照してください。