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 | いいえ | はい | 関数の環境変数。 | ランタイムで指定された環境変数にアクセスできます。例: |
GpuConfig | Map | いいえ | はい | 関数の GPU 構成。 | 詳細については、「GpuConfig プロパティ」をご参照ください。 |
InstanceLifecycleConfig | Map | いいえ | はい | インスタンスライフサイクルフックの構成。 | 詳細については、「InstanceLifecycleConfig プロパティ」をご参照ください。 |
InternetAccess | Boolean | いいえ | はい | 関数がインターネットにアクセスできるかどうかを指定します。 | デフォルト値: true。 |
InstanceConcurrency | Integer | いいえ | はい | 最大インスタンス同時実行値。 | なし。 |
Layers | List | いいえ | はい | レイヤー。 | 複数のレイヤーは、配列の添え字の降順でマージされます。添え字が小さいレイヤーのファイルは、添え字が大きいレイヤーで同じ名前のファイルを上書きします。例: |
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 | いいえ | はい | イメージアクセラレーションを有効にするかどうかを指定します。 | 有効な値:
|
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 インスタンスのカテゴリ。 | 有効な値:
|
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 ファイルの設定項目。 | 各設定項目は |
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 使用率、メモリ使用量、インスタンスネットワークの状態、インスタンスへのリクエストなど、インスタンスレベルのコアメトリックを表示できます。有効な値:
|
EnableRequestMetrics | Boolean | いいえ | はい | リクエストレベルのメトリックを有効にするかどうかを指定します。 | この機能を有効にすると、サービス内の各関数呼び出しに消費された時間とメモリの量を表示できます。有効な値:
|
戻り値
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"
]
}
}
}
}