すべてのプロダクト
Search
ドキュメントセンター

Resource Orchestration Service:ALIYUN::FC::Function

最終更新日:Apr 23, 2025

ALIYUN::FC::Function は、関数を 作成 するために使用されます。関数は サービス に属している必要があります。 サービス のすべての関数は、 サービス 権限やログ構成など、 サービス と同じ属性を共有します。

構文

{
  "Type": "ALIYUN::FC::Function",
  "Properties": {
    "Code": Map,
    "FunctionName": String,
    "ServiceName": String,
    "InstanceType": String,
    "MemorySize": Integer,
    "InstanceConcurrency": Integer,
    "EnvironmentVariables": Map,
    "Initializer": String,
    "Handler": String,
    "Timeout": Integer,
    "InitializationTimeout": Integer,
    "CustomContainerConfig": Map,
    "AsyncConfiguration": Map,
    "CAPort": Integer,
    "Runtime": String,
    "Description": String,
    "Cpu": Number,
    "CustomRuntimeConfig": Map,
    "GpuMemorySize": Integer,
    "InstanceSoftConcurrency": Integer,
    "DiskSize": Integer,
    "InstanceLifecycleConfig": Map,
    "CustomDNS": Map,
    "CustomHealthCheckConfig": Map
  }
}

プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Initializer

String

いいえ

はい

初期化関数のハンドラ。

値の形式はプログラミング言語によって異なります。

InitializationTimeout

Integer

いいえ

はい

初期化関数の実行のタイムアウト期間。

有効値:1~300。

単位:秒。

デフォルト値:3。

タイムアウト期間が終了すると、Function Compute は初期化関数の実行を終了します。

Code

Map

いいえ

はい

関数コードのZIPパッケージ。

詳細については、「Code プロパティ」をご参照ください。

InstanceType

String

いいえ

はい

関数インスタンスのタイプ。

有効値:

  • e1:エラスティックインスタンス

  • c1:パフォーマンスインスタンス

  • fc.gpu.tesla.1:Tesla シリーズ GPU を搭載した GPU インスタンス

  • fc.gpu.ampere.1:Ampere シリーズ GPU を搭載した GPU インスタンス

  • fc.gpu.ada.1:Ada シリーズ GPU を搭載した GPU インスタンス

  • g1:Tesla シリーズ GPU を搭載した GPU インスタンス

デフォルト値:e1。

Description

String

いいえ

はい

関数の説明。

なし。

ServiceName

String

はい

いいえ

Function Compute の サービス 名。

名前は1~128 文字である必要があります。

MemorySize

Integer

いいえ

はい

関数のメモリサイズ。

有効値:

  • InstanceType が e1 に設定されている場合の有効値:128~3072 の 64 の倍数。

  • InstanceType が c1 に設定されている場合の有効値:4096、8192、16384、および 32768。

  • InstanceType が fc.gpu.tesla.1 に設定されている場合の有効値:128~X の 64 の倍数。X は、次の式を使用して計算されます。X = GPU メモリ(GB)× 2048。

  • InstanceType が fc.gpu.ada.1 に設定されている場合の有効値:65536。65536 MB は 64 GB に相当します。

単位:MB。

詳細については、「インスタンスタイプと使用モード」をご参照ください。

InstanceConcurrency

Integer

いいえ

はい

インスタンス同時実行値。

有効値:1~100。

EnvironmentVariables

Map

いいえ

はい

関数に構成する 環境変数 。

なし。

Handler

String

はい

はい

関数のハンドラ。

たとえば、Python 関数を 作成 するときに Handler を index.handler に設定した場合、ファイル名は index.py で、関数名は handler です。値の形式はプログラミング言語によって異なります。

Timeout

Integer

いいえ

はい

関数の実行のタイムアウト期間。

有効値:1~600。

デフォルト値:3。

単位:秒。

タイムアウト期間が終了すると、Function Compute は関数の実行を終了します。

Runtime

String

はい

はい

関数の実行環境。

有効値:nodejs6、nodejs8、nodejs10、nodejs12、python3、java8、custom、および custom-container。詳細については、「Function Compute で サポート されている実行環境」をご参照ください。

FunctionName

String

はい

いいえ

関数の名前。

名前は1~128 文字である必要があり、文字、数字、 アンダー スコア(_)、および ハイフン (-)を含めることができます。文字または アンダー スコア(_)で始める必要があります。

CustomContainerConfig

Map

いいえ

はい

Runtime を custom-container に設定した場合のカスタムコンテナランタイムの構成。構成を指定した後、カスタム コンテナイメージ を使用して関数を 呼び出す ことができます。

詳細については、「CustomContainerConfig プロパティ」をご参照ください。

CAPort

Integer

いいえ

はい

カスタム HTTP サーバー が listen する ポート 。

デフォルト値:9000。

説明

このプロパティは、Runtime が custom または custom-container に設定されている場合に有効になります。

AsyncConfiguration

Map

いいえ

はい

非同期呼び出し構成。

詳細については、「AsyncConfiguration プロパティ」をご参照ください。

Cpu

Number

いいえ

はい

関数の vCPU 数。

なし。

CustomRuntimeConfig

Map

いいえ

はい

関数のカスタムランタイムの構成。

なし。

GpuMemorySize

Integer

いいえ

はい

関数の GPU メモリサイズ。

有効値:1024 の倍数。単位:MB。

InstanceSoftConcurrency

Integer

いいえ

はい

インスタンスのソフト同時実行値。このプロパティを使用して、インスタンスのグレースフル スケールアップを実装できます。

インスタンス同時実行値がインスタンスソフト同時実行値よりも大きい場合、インスタンスのスケールアップがトリガーされます。たとえば、インスタンスの起動に長時間を要する場合、適切なソフト同時実行値を指定して、インスタンスを事前に起動することができます。

InstanceSoftConcurrency の値は、InstanceConcurrency の値以下である必要があります。

DiskSize

Integer

いいえ

はい

関数のディスクサイズ。

単位:MB。

有効値:512 および 10240。

InstanceLifecycleConfig

Map

いいえ

はい

関数のインスタンスライフサイクル構成。

詳細については、「InstanceLifecycleConfig プロパティ」をご参照ください。

CustomDNS

Map

いいえ

はい

関数のカスタム DNS(Domain Name System)構成。

詳細については、「CustomDNS プロパティ」をご参照ください。

CustomHealthCheckConfig

Map

いいえ

はい

custom および Custom Container ランタイムの ヘルスチェック 構成。

詳細については、「CustomHealthCheckConfig プロパティ」をご参照ください。

Code 構文

"Code": {
  "OssBucketName": String,
  "OssObjectName": String,
  "ZipFile": String,
  "SourceCode": String
}

Code プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

OssBucketName

String

いいえ

はい

ZIP パッケージ が格納されている Object Storage Service (OSS) バケット の名前。

なし。

OssObjectName

String

いいえ

はい

OSS オブジェクト として使用される ZIP パッケージ の名前。

なし。

ZipFile

String

いいえ

はい

Base64 エンコード された ZIP パッケージ のコンテンツ。

なし。

SourceCode

String

いいえ

はい

関数の ソースコード 。

ソースコード は最大 4,096 文字までです。Node.js、PHP、および Python が サポート されています。

Resource Orchestration Service (ROS) は、このプロパティの値を index という名前の UTF-8 エンコード ファイルに書き込みます。

ZipFile、SourceCode、OssBucketName、および OssObjectName プロパティを指定する場合、プロパティは優先順位の高い順に適用されます。

CustomContainerConfig 構文

"CustomContainerConfig": {
  "Command": String,
  "Args": String,
  "Image": String,
  "AccelerationType": String,
  "InstanceId": String,
  "WebServerMode": Boolean
}

CustomContainerConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Command

String

いいえ

はい

コンテナー の起動 コマンド 。

例:["/code/myserver"]

Args

String

いいえ

はい

コンテナー の起動 パラメーター 。

例:["-arg1", "value1"]

Image

String

はい

はい

コンテナイメージ のアドレス。

例:registry-vpc.cn-hangzhou.aliyuncs.com/fc-demo/helloworld:v1beta1

AccelerationType

String

いいえ

はい

イメージアクセラレーションを有効にするかどうかを指定します。

有効値:

  • Default:イメージアクセラレーションを有効にします。

  • None(デフォルト):イメージアクセラレーションを無効にします。

InstanceId

String

いいえ

はい

Container Registry Enterprise Edition インスタンス の ID。

Container Registry Enterprise Edition インスタンス を使用する場合、このプロパティを指定する必要があります。インスタンスのデフォルトの解決済み IP アドレス は、Container Registry が存在する VPC(Virtual Private Cloud)の IP アドレス である必要があります。

説明

Alibaba Cloud DNS PrivateZone を使用して ドメイン名解決 を定義することはできません。

WebServerMode

Boolean

いいえ

はい

Web サーバー モードを使用してイメージを実行するかどうかを指定します。

有効値:

  • true(デフォルト):Web サーバー モードを使用してイメージを実行します。この場合、Web サーバー は コンテナイメージ に実装され、 ポート を listen し、 リクエスト を処理します。

  • false:Web サーバー モードを使用してイメージを実行しません。この場合、コンテナー の実行後、コンテナー は プロセス からアクティブに 終了 する必要があります。 終了コード は 0 である必要があります。

AsyncConfiguration 構文

"AsyncConfiguration": {
  "Destination": Map,
  "MaxAsyncRetryAttempts": Integer,
  "MaxAsyncEventAgeInSeconds": Integer,
  "StatefulInvocation": Boolean
}

AsyncConfiguration プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Destination

Map

いいえ

いいえ

非同期呼び出しの宛先。

詳細については、「Destination プロパティ」をご参照ください。

MaxAsyncRetryAttempts

Integer

いいえ

はい

最大再試行回数。

なし。

MaxAsyncEventAgeInSeconds

Integer

いいえ

はい

メッセージ の最大 有効期間 。

なし。

StatefulInvocation

Boolean

いいえ

はい

ステートフルな非同期呼び出しを有効にするかどうかを指定します。

有効値:

  • true

  • false (デフォルト)

詳細については、「概要」をご参照ください。

宛先構文

"Destination": {
  "OnSuccess": String, // 成功時の宛先
  "OnFailure": String // 失敗時の宛先
}

宛先プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

OnSuccess

String

いいえ

はい

関数の実行が成功した場合に Function Compute が呼び出す宛先です。

なし。

OnFailure

String

いいえ

はい

システムエラーまたはビルトイン関数エラーが原因で関数の実行が失敗した場合に Function Compute が呼び出す宛先です。

なし。

InstanceLifecycleConfig 構文

"InstanceLifecycleConfig":{
  // 凍結前フック
  "PreFreeze": Map,
  // 停止前フック
  "PreStop": Map
}

InstanceLifecycleConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

PreFreeze

Map

いいえ

はい

PreFreeze フックの構成。

詳細については、「PreFreeze プロパティ」をご参照ください。

PreStop

Map

いいえ

はい

PreStop フックの構成。

詳細については、「PreStop プロパティ」をご参照ください。

PreStop 構文

"PreStop":{
  "Handler": String, // ハンドラー
  "Timeout": Integer // タイムアウト
}

PreStop プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

ハンドラ

文字列

いいえ

はい

関数のハンドラ。

詳細については、「基本」をご参照ください。

タイムアウト

整数

いいえ

はい

実行のタイムアウト期間。

単位:秒。

PreFreeze 構文

"PreFreeze":{
  "Handler": String, // ハンドラー
  "Timeout": Integer // タイムアウト
}

PreFreeze プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Handler

String

いいえ

はい

関数のハンドラ。

詳細については、「基本」をご参照ください。

Timeout

Integer

いいえ

はい

実行のタイムアウト期間。

単位:秒。

CustomHealthCheckConfig 構文

"CustomHealthCheckConfig":{
  // 成功のしきい値
  "SuccessThreshold": Integer,
  // 初期遅延時間(秒)
  "InitialDelaySeconds": Integer,
  // チェック間隔(秒)
  "PeriodSeconds": Integer,
  // HTTP GET リクエストの URL
  "HttpGetUrl": String,
  // タイムアウト時間(秒)
  "TimeoutSeconds": Integer,
  // 失敗のしきい値
  "FailureThreshold": Integer
}

CustomHealthCheckConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

SuccessThreshold

Integer

いいえ

はい

コンテナーが正常と宣言されるまでに、ヘルスチェックに連続して合格する必要がある回数です。

有効な値:1 ~ 120 です。

デフォルト値:1 です。

InitialDelaySeconds

Integer

いいえ

はい

コンテナーの起動後、ヘルスチェックが開始されるまでの期間です。

有効な値:0 ~ 120 です。

デフォルト値:0 です。

PeriodSeconds

Integer

いいえ

はい

ヘルスチェックの間隔です。

有効な値:1 ~ 120 です。

デフォルト値:3 です。

HttpGetUrl

String

いいえ

はい

コンテナーのカスタム ヘルスチェック URL です。

URL の長さは最大 2,048 文字です。

TimeoutSeconds

Integer

いいえ

はい

ヘルスチェックのタイムアウト期間です。

有効な値:1 ~ 3 です。

デフォルト値:1 です。

FailureThreshold

Integer

いいえ

はい

コンテナーが異常と宣言されるまでに、ヘルスチェックに連続して失敗する必要がある回数です。

有効な値:1 ~ 120 です。

デフォルト値:3 です。

CustomRuntimeConfig 構文

"CustomRuntimeConfig":{
  // 引数リスト
  "Args": List,
  // コマンドリスト
  "Command": List,
}

CustomRuntimeConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Args

リスト

いいえ

はい

起動コマンドによって受信されるパラメーター。

例:

["-arg1", "value1"]

Command

リスト

いいえ

はい

起動コマンド。

例:

["/code/myserver"]

Destination 構文

"CustomDNS":{
  // ネームサーバーのリスト
  "NameServers": List,
  // DNS オプションのリスト
  "DnsOptions": List,
  // 検索ドメインのリスト
  "Searches": List
}

Destination プロパティ

プロパティ

種類

必須

編集可能

説明

制約

ネームサーバ

リスト

いいえ

はい

DNS サーバの IP アドレス。

なし。

DNS オプション

リスト

いいえ

はい

resolv.conf ファイル内の設定項目です。

なし。

検索

リスト

いいえ

はい

DNS 検索ドメイン。

なし。

InstanceLifecycleConfig 構文

"DnsOptions":{
  // 値
  "Value": String,
  // 名前
  "Name": String,
}

DnsOptions プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Value

String

いいえ

はい

設定項目の値。

例:2。

Name

String

はい

はい

設定項目の名前。

例:ndots。

戻り値

Fn::GetAtt

  • FunctionId: システムによって関数に生成される一意の ID です。

  • ServiceName: Function Compute のサービス名です。

  • ARN: 関数の Alibaba Cloud リソースネーム (ARN) です。

  • FunctionName: 関数の名前です。

  • ServiceId: Function Compute のサービスの ID です。

InstanceLifecycleConfig プロパティ

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ServiceName:
    Type: String
    Default: test-service
  FunctionName:
    Type: String
    Default: test-function
  Timeout:
    Type: Number
    Default: 60
  X:
    Type: Number
  Y:
    Type: Number
Resources:
  Service:
    Type: ALIYUN::FC::Service
    Properties:
      ServiceName:
        Ref: ServiceName
  Function:
    Type: ALIYUN::FC::Function
    Properties:
      ServiceName:
        Fn::GetAtt: [Service, ServiceName]
      FunctionName: 
        Ref: FunctionName
      Handler: index.handler
      Runtime: python3.10
      Code:
        SourceCode: |
          import time # 時間をインポート
          import json # jsonをインポート
          import requests # requestsをインポート
          import logging # loggingをインポート
          def handler(event, context): # ハンドラ関数を定義
              logger = logging.getLogger()
              event = json.loads(event)
              logger.info('receive request: %s', event) # リクエストを受信
              res_props = event['ResourceProperties']
              result = dict(
                  RequestId=event['RequestId'],
                  LogicalResourceId=event['LogicalResourceId'],
                  StackId=event['StackId'],
                  Status='SUCCESS',
                  PhysicalResourceId='dummy'
              )
              if event['RequestType'] != 'Delete':
                  result['Data'] = dict(Z=res_props['X'] + res_props['Y'])
              headers = {
                  'Content-type': 'application/json',
                  'Accept': 'application/json',
                  'Date': time.strftime('%a, %d %b %Y %X GMT', time.gmtime())
              }
            
              resp = requests.post(event['ResponseURL'], json=result, headers=headers) # リクエストをポスト
              resp_content = resp.json()
              logger.info('response: %s', resp_content) # レスポンス

  SimpleTest:
    Type: Custom::Add
    Properties:
      ServiceToken:
        Fn::GetAtt: [Function, ARN]
      Parameters:
        X:
          Ref: X
        Y:
          Ref: Y
      Timeout:
        Ref: Timeout
Outputs:
  Result:
    Value:
      Fn::GetAtt: [SimpleTest, Z]
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "ServiceName": {
      "Type": "String",
      "Default": "test-service"
    },
    "FunctionName": {
      "Type": "String",
      "Default": "test-function"
    },
    "Timeout": {
      "Type": "Number",
      "Default": 60
    },
    "X": {
      "Type": "Number"
    },
    "Y": {
      "Type": "Number"
    }
  },
  "Resources": {
    "Service": {
      "Type": "ALIYUN::FC::Service",
      "Properties": {
        "ServiceName": {
          "Ref": "ServiceName"
        }
      }
    },
    "Function": {
      "Type": "ALIYUN::FC::Function",
      "Properties": {
        "ServiceName": {
          "Fn::GetAtt": [
            "Service",
            "ServiceName"
          ]
        },
        "FunctionName": {
          "Ref": "FunctionName"
        },
        "Handler": "index.handler",
        "Runtime": "python3.10",
        "Code": {
          "SourceCode": "import time\nimport json\nimport requests\nimport logging\ndef handler(event, context):\n    logger = logging.getLogger()\n    event = json.loads(event)\n    logger.info('receive request: %s', event)\n    res_props = event['ResourceProperties']\n    result = dict(\n        RequestId=event['RequestId'],\n        LogicalResourceId=event['LogicalResourceId'],\n        StackId=event['StackId'],\n        Status='SUCCESS',\n        PhysicalResourceId='dummy'\n    )\n    if event['RequestType'] != 'Delete':\n        result['Data'] = dict(Z=res_props['X'] + res_props['Y'])\n    headers = {\n        'Content-type': 'application/json',\n        'Accept': 'application/json',\n        'Date': time.strftime('%a, %d %b %Y %X GMT', time.gmtime())\n    }\n  \n    resp = requests.post(event['ResponseURL'], json=result, headers=headers)\n    resp_content = resp.json()\n    logger.info('response: %s', resp_content)\n"
        }
      }
    },
    "SimpleTest": {
      "Type": "Custom::Add",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "Function",
            "ARN"
          ]
        },
        "Parameters": {
          "X": {
            "Ref": "X"
          },
          "Y": {
            "Ref": "Y"
          }
        },
        "Timeout": {
          "Ref": "Timeout"
        }
      }
    }
  },
  "Outputs": {
    "Result": {
      "Value": {
        "Fn::GetAtt": [
          "SimpleTest",
          "Z"
        ]
      }
    }
  }
}

詳細については、「function-invoker.yml」をご参照ください。例では、次のリソースタイプが使用されています。

  • ALIYUN::FC::Service: Function Compute でサービスを作成します。

  • ALIYUN::FC::Function: 関数を作成します。

  • ALIYUN::FC::FunctionInvoker: 関数を呼び出します。

  • ALIYUN::FC::Trigger: 関数をトリガーします。

  • ALIYUN::FC::Version: サービスバージョンをリリースします。

  • ALIYUN::FC::Alias: エイリアスを作成します。

  • ALIYUN::FC::ProvisionConfig: プロビジョニングされたインスタンスを作成します。