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

Resource Orchestration Service:ALIYUN::FC3::Function

最終更新日:Mar 17, 2025

ALIYUN::FC3::Function は、Function Compute 3.0 関数を作成するために使用されます。

構文

{
  "Type": "ALIYUN::FC3::Function",
  "Properties": {
    "FunctionName": String,
    "Handler": String,
    "Runtime": String,
    "Cpu": Number,
    "CustomContainerConfig": Map,
    "Code": Map,
    "CustomRuntimeConfig": Map,
    "CustomDns": Map,
    "Description": String,
    "DiskSize": Integer,
    "EnvironmentVariables": Map,
    "GpuConfig": Map,
    "InstanceLifecycleConfig": Map,
    "InternetAccess": Boolean,
    "InstanceConcurrency": Integer,
    "Layers": List,
    "LogConfig": Map,
    "MemorySize": Integer,
    "NasConfig": Map,
    "OssMountConfig": Map,
    "Role": String,
    "TracingConfig": Map,
    "Timeout": Integer,
    "VpcConfig": Map
  }
}

プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

FunctionName

String

はい

はい

関数の名前。

名前は 1 ~ 64 文字の長さで、文字、数字、アンダースコア (_)、およびハイフン (-) のみを含めることができます。数字またはハイフン (-) で始めることはできません。

Handler

String

はい

はい

関数のハンドラ。

なし。

Runtime

String

はい

はい

関数のランタイム。

有効な値: nodejs8、nodejs10、nodejs12、nodejs14、nodejs16、nodejs18、nodejs20、go1、python3、python3.9、python3.10、java8、java11、php7.2、dotnetcore3.1、custom、custom.debian10、および custom-container。

Cpu

Number

いいえ

はい

関数の vCPU 数。

値は 0.05 の倍数である必要があります。

最小値: 0.05。

最大値: 16。

Cpu 値と MemorySize 値 (GB) の比率は 1:1 ~ 1:4 の範囲内である必要があります。

CustomContainerConfig

Map

いいえ

はい

カスタムコンテナランタイムの構成。

構成を指定した後、カスタムコンテナイメージを使用して関数を呼び出すことができます。Code または CustomContainerConfig を指定する必要があります。詳細については、「CustomContainerConfig プロパティ」をご参照ください。

Code

Map

いいえ

はい

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

Code または CustomContainerConfig を指定する必要があります。詳細については、「Code プロパティ」をご参照ください。

CustomRuntimeConfig

Map

いいえ

はい

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

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

CustomDns

Map

いいえ

はい

ドメインネームシステム ( DNS ) のカスタム構成。

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

Description

String

いいえ

はい

関数の説明。

なし。

DiskSize

Integer

いいえ

はい

関数のディスクサイズ。

有効な値: 512 および 10240。単位: MB。

EnvironmentVariables

Map

いいえ

はい

関数の環境変数。

ランタイムで指定された環境変数にアクセスできます。例:

{'testKey': 'testValue'}

GpuConfig

Map

いいえ

はい

関数の GPU 構成。

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

InstanceLifecycleConfig

Map

いいえ

はい

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

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

InternetAccess

Boolean

いいえ

はい

関数がインターネットにアクセスできるかどうかを指定します。

デフォルト値: true。

InstanceConcurrency

Integer

いいえ

はい

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

なし。

Layers

List

いいえ

はい

レイヤー。

複数のレイヤーは、配列の添え字の降順でマージされます。添え字が小さいレイヤーのファイルは、添え字が大きいレイヤーで同じ名前のファイルを上書きします。例:

["acs:fc:cn-beijing:186824xxxxxx:layers/fc_layer/versions/1"]

LogConfig

Map

いいえ

はい

ログ構成。

関数ログは、指定された Logstore に書き込まれます。詳細については、「LogConfig プロパティ」をご参照ください。

MemorySize

Integer

いいえ

はい

関数のメモリサイズ。

メモリサイズは 64 の倍数である必要があります。単位: MB。最小サイズは 128 MB、最大サイズは 32 GB です。Cpu 値と MemorySize 値 (GB) の比率は 1:1 ~ 1:4 の範囲内である必要があります。

NasConfig

Map

いいえ

はい

NAS ファイルシステム ( NAS ) の構成。

この構成により、関数は指定された NAS リソースにアクセスできます。詳細については、「NasConfig プロパティ」をご参照ください。

OssMountConfig

Map

いいえ

はい

Object Storage Service ( OSS ) のマウント構成。

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

Role

String

いいえ

はい

Function Compute に権限を付与するために使用される Resource Access Management ( RAM ) ロール。

RAM ロールが指定されると、Function Compute は RAM ロールを引き受けて一時的なアクセス認証情報を生成します。関数でロールの一時的なアクセス認証情報を使用して、OSS や Tablestore など、指定された Alibaba Cloud サービスにアクセスできます。

TracingConfig

Map

いいえ

はい

Managed Service for OpenTelemetry の構成。

Function Compute が Managed Service for OpenTelemetry と統合されると、Function Compute でリクエストの期間を記録し、関数のコールドスタート期間を表示し、関数の実行期間を記録できます。詳細については、「TracingConfig プロパティ」をご参照ください。

Timeout

Integer

いいえ

はい

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

最小値: 1。

最大値: 86400。

デフォルト値: 3。

単位: 秒。

タイムアウト期間が終了すると、関数の処理は終了します。

VpcConfig

Map

いいえ

はい

仮想プライベートクラウド ( VPC ) の構成。

この構成により、関数は指定された VPC リソースにアクセスできます。詳細については、「VpcConfig プロパティ」をご参照ください。

TracingConfig 構文

"TracingConfig": {
  "Type": String,
  "Params": Map
}

TracingConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Type

String

いいえ

はい

トレースシステムのタイプ。

値を Jaeger に設定します。

Params

Map

いいえ

はい

Managed Service for OpenTelemetry のパラメータ。

map[string]string 形式で値を指定します。この形式では、キーは "endpoint" で、値は Managed Service for OpenTelemetry の内部エンドポイントです。例: endpoint: http://tracing-analysis-dc-hz.aliyuncs.com/adapt_xxx/api/otlp/traces.

VpcConfig 構文

"VpcConfig": {
  "VpcId": String,
  "VSwitchIds": List,
  "SecurityGroupId": String
}

VpcConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

VpcId

String

いいえ

はい

VPC の ID。

なし。

VSwitchIds

List

いいえ

はい

vSwitch の ID。

なし。

SecurityGroupId

String

いいえ

はい

セキュリティグループの ID。

なし。

InstanceLifecycleConfig 構文

"InstanceLifecycleConfig": {
  "PreStop": Map,
  "Initializer": Map
}

InstanceLifecycleConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

PreStop

Map

いいえ

はい

PreStop フックの構成。

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

Initializer

Map

いいえ

はい

Initializer フックの構成。

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

PreStop 構文

"PreStop": {
  "Timeout": Integer,
  "Handler": String
}

PreStop プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Timeout

Integer

いいえ

はい

フックのタイムアウト期間。

単位: 秒。

Handler

String

いいえ

はい

フックのハンドラ。

ハンドラの定義は、リクエストハンドラの定義に似ています。

Initializer 構文

"Initializer": {
  "Timeout": Integer,
  "Handler": String
}

Initializer プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Timeout

Integer

いいえ

はい

フックのタイムアウト期間。

単位: 秒。

Handler

String

いいえ

はい

フックのハンドラ。

ハンドラの定義は、リクエストハンドラの定義に似ています。

CustomContainerConfig 構文

"CustomContainerConfig": {
  "ResolvedImageUri": String,
  "AccelerationInfo": Map,
  "AcrInstanceId": String,
  "Entrypoint": List,
  "Command": List,
  "AccelerationType": String,
  "Port": Integer,
  "HealthCheckConfig": Map,
  "Image": String
}

CustomContainerConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

ResolvedImageUri

String

いいえ

はい

デプロイするイメージのダイジェスト。

関数が起動されると、ダイジェストで指定された実際イメージバージョンが使用されます。このプロパティは GetFunction によって返されます。このプロパティを指定する必要はありません。

AccelerationInfo

Map

いいえ

はい

イメージアクセラレーションに関する情報。

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

AcrInstanceId

String

いいえ

はい

Container Registry Enterprise Edition イメージリポジトリの ID。

Container Registry Enterprise Edition イメージを使用する場合は、このプロパティを指定する必要があります。

Entrypoint

List

いいえ

はい

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

なし。

Command

List

いいえ

はい

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

なし。

AccelerationType

String

いいえ

はい

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

有効な値:

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

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

Port

Integer

いいえ

はい

HTTP サーバーがカスタムコンテナランタイムをリッスンするポート。

なし。

HealthCheckConfig

Map

いいえ

はい

関数のカスタムヘルスチェック構成。

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

Image

String

いいえ

はい

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

なし。

AccelerationInfo 構文

"AccelerationInfo": {
  "Status": String
}

AccelerationInfo プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Status

String

いいえ

はい

イメージアクセラレーションのステータス。

なし。

HealthCheckConfig 構文

"HealthCheckConfig": {
  "TimeoutSeconds": Integer,
  "InitialDelaySeconds": Integer,
  "HttpGetUrl": String,
  "PeriodSeconds": Integer,
  "FailureThreshold": Integer,
  "SuccessThreshold": Integer
}

HealthCheckConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

TimeoutSeconds

Integer

いいえ

はい

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

有効な値: 1 ~ 3。デフォルト値: 1。

InitialDelaySeconds

Integer

いいえ

はい

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

有効な値: 0 ~ 120。デフォルト値: 0。

HttpGetUrl

String

いいえ

はい

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

URL は最大 2,048 文字までです。

PeriodSeconds

Integer

いいえ

はい

ヘルスチェックの間隔。

有効な値: 1 ~ 120。デフォルト値: 3。

FailureThreshold

Integer

いいえ

はい

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

有効な値: 1 ~ 120。デフォルト値: 3。

SuccessThreshold

Integer

いいえ

はい

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

有効な値: 1 ~ 120。デフォルト値: 1。

Code 構文

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

Code プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

SourceCode

String

いいえ

はい

関数コード。

なし。

ZipFile

String

いいえ

はい

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

なし。

Checksum

String

いいえ

はい

関数コードパッケージの巡回冗長検査 ( CRC ) -64 値。

チェックサムが提供されている場合、Function Compute はコードパッケージのチェックサムが提供されたチェックサムと同じかどうかを確認します。

OssObjectName

String

いいえ

はい

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

なし。

OssBucketName

String

いいえ

はい

ZIP パッケージが保存されている OSS バケットの名前。

なし。

CustomRuntimeConfig 構文

"CustomRuntimeConfig": {
  "Args": List,
  "Command": List,
  "Port": Integer,
  "HealthCheckConfig": Map
}

CustomRuntimeConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Args

List

いいえ

はい

起動パラメータ。

なし。

Command

List

いいえ

はい

起動コマンド。

なし。

Port

Integer

いいえ

はい

HTTP サーバーがリッスンするポート。

なし。

HealthCheckConfig

Map

いいえ

はい

関数のカスタムヘルスチェック構成。

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

GpuConfig 構文

"GpuConfig": {
  "GpuMemorySize": Integer,
  "GpuType": String
}

GpuConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

GpuMemorySize

Integer

いいえ

はい

GPU メモリサイズ。

値は 1,024 の倍数である必要があります。単位: MB。

GpuType

String

いいえ

はい

GPU インスタンスのカテゴリ。

有効な値:

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

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

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

OssMountConfig 構文

"OssMountConfig": {
  "MountPoints": List
}

OssMountConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

MountPoints

List

いいえ

はい

OSS のマウントポイント。

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

MountPoints 構文

"MountPoints": [
  {
    "EnableTls": Boolean,
    "ServerAddr": String,
    "MountDir": String
  }
]

MountPoints プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

EnableTls

Boolean

いいえ

はい

Transport Layer Security ( TLS ) を使用してマウントターゲットを構成するかどうかを指定します。

なし。

ServerAddr

String

いいえ

はい

サービスアドレス。

なし。

MountDir

String

いいえ

はい

ローカルマウントディレクトリ。

なし。

CustomDns 構文

"CustomDns": {
  "Searches": List,
  "DnsOptions": List,
  "NameServers": List
}

CustomDns プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Searches

List

いいえ

はい

DNS 検索ドメイン。

なし。

DnsOptions

List

いいえ

はい

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

各設定項目は key:value 形式のキーと値のペアで、キーは必須です。詳細については、「DnsOptions プロパティ」をご参照ください。

NameServers

List

いいえ

はい

DNS サーバーの IP アドレス。

なし。

DnsOptions 構文

"DnsOptions": [
  {
    "Value": String,
    "Name": String
  }
]

DnsOptions プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Name

String

いいえ

はい

設定項目の名前。

なし。

Value

String

いいえ

はい

設定項目の値。

なし。

NasConfig 構文

"NasConfig": {
  "MountPoints": List,
  "UserId": Integer,
  "GroupId": Integer
}

NasConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

MountPoints

List

いいえ

はい

マウントポイント。

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

UserId

Integer

いいえ

はい

アカウントの ID。

なし。

GroupId

Integer

いいえ

はい

グループの ID。

なし。

LogConfig 構文

"LogConfig": {
  "Project": String,
  "LogBeginRule": String,
  "Logstore": String,
  "EnableInstanceMetrics": Boolean,
  "EnableRequestMetrics": Boolean}

LogConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Project

String

いいえ

はい

Log Service プロジェクトの名前。

なし。

LogBeginRule

String

いいえ

はい

ログ分割ルール。

なし。

Logstore

String

いいえ

はい

Log Service Logstore の名前。

なし。

EnableInstanceMetrics

Boolean

いいえ

はい

インスタンスレベルのメトリックを有効にするかどうかを指定します。

この機能を有効にすると、インスタンスの CPU 使用率、メモリ使用量、インスタンスネットワークの状態、インスタンスへのリクエストなど、インスタンスレベルのコアメトリックを表示できます。有効な値:

  • false (デフォルト)

  • true

EnableRequestMetrics

Boolean

いいえ

はい

リクエストレベルのメトリックを有効にするかどうかを指定します。

この機能を有効にすると、サービス内の各関数呼び出しに消費された時間とメモリの量を表示できます。有効な値:

  • false

  • true (デフォルト)

戻り値

Fn::GetAtt

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

  • FunctionName: 関数の名前。

  • ARN: 関数の Alibaba Cloud Resource Name ( ARN )。

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  Function:
    Type: ALIYUN::FC3::Function
    Properties:
      Code:
        SourceCode: |
          import time
          import json
          import urllib.request
          import 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())
              }
              data=json.dumps (result).encode('utf-8) ') # Use an encoded byte string.
              req = urllib.request.Request(event['ResponseURL'], data=data, headers=headers, method='PUT')
              with urllib.request.urlopen(req) as resp:
                  resp_content = resp.read().decode('utf-8')  # Read and decode the response content.
              logger.info('response: %s', resp_content)
      Handler: index.handler
      FunctionName:
        Ref: FunctionName
      Runtime:
        Ref: Runtime
Parameters:
  Runtime:
    Default: python3.9
    Required: true
    Type: String
    Description:
      ja: 関数のプログラミング言語。
  FunctionName:
    Default: hello-world
    Required: true
    Type: String
    Description:
      ja: 関数の名前。
Outputs:
  FunctionId:
    Description: 関数 ID
    Value:
      Fn::GetAtt:
        - Function
        - FunctionId
  ARN:
    Description: ALIYUN::ROS::CustomResource の ARN
    Value:
      Fn::GetAtt:
        - Function
        - ARN
  FunctionName:
    Description: 関数名
    Value:
      Fn::GetAtt:
        - Function
        - FunctionName
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Resources": {
    "Function": {
      "Type": "ALIYUN::FC3::Function",
      "Properties": {
        "Code": {
          "SourceCode": "import time\nimport json\nimport urllib.request\nimport logging\n\n\ndef handler(event, context):\n    logger = logging.getLogger()\n\n    event = json.loads(event)\n    logger.info('receive request: %s', event)\n\n    res_props = event['ResourceProperties']\n\n    result = dict(\n        RequestId=event['RequestId'],\n        LogicalResourceId=event['LogicalResourceId'],
        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\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    data = json.dumps(result).encode('utf-8')  # Use an encoded byte string.\n    req = urllib.request.Request(event['ResponseURL'], data=data, headers=headers, method='PUT')\n    with urllib.request.urlopen(req) as resp:\n        resp_content = resp.read().decode('utf-8')  # Read and decode the response content.\n    logger.info('response: %s', resp_content)\n"
        },
        "Handler": "index.handler",
        "FunctionName": {
          "Ref": "FunctionName"
        },
        "Runtime": {
          "Ref": "Runtime"
        }
      }
    }
  },
  "Parameters": {
    "Runtime": {
      "Default": "python3.9",
      "Required": true,
      "Type": "String",
      "Description": {
        "ja": "関数のプログラミング言語。"
      }
    },
    "FunctionName": {
      "Default": "hello-world",
      "Required": true,
      "Type": "String",
      "Description": {
        "ja": "関数の名前。"
      }
    }
  },
  "Outputs": {
    "FunctionId": {
      "Description": "関数 ID",
      "Value": {
        "Fn::GetAtt": [
          "Function",
          "FunctionId"
        ]
      }
    },
    "ARN": {
      "Description": "ALIYUN::ROS::CustomResource の ARN",
      "Value": {
        "Fn::GetAtt": [
          "Function",
          "ARN"
        ]
      }
    },
    "FunctionName": {
      "Description": "関数名",
      "Value": {
        "Fn::GetAtt": [
          "Function",
          "FunctionName"
        ]
      }
    }
  }
}