ALIYUN::FC::Function digunakan untuk membuat fungsi. Fungsi harus berada dalam layanan. Semua fungsi dalam suatu layanan berbagi atribut yang sama dengan layanan tersebut, seperti otorisasi dan konfigurasi log.
Sintaksis
{
"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
}
}Properti
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Initializer | String | Tidak | Ya | Penanganan fungsi inisialisasi. | Format nilai bervariasi berdasarkan bahasa pemrograman. |
InitializationTimeout | Integer | Tidak | Ya | Jangka waktu timeout untuk eksekusi fungsi inisialisasi. | Nilai valid: 1 hingga 300. Satuan: detik. Nilai default: 3. Ketika jangka waktu timeout berakhir, Function Compute menghentikan eksekusi fungsi inisialisasi. |
Code | Map | Tidak | Ya | Paket ZIP kode fungsi. | Untuk informasi lebih lanjut, lihat Properti Code. |
InstanceType | String | Tidak | Ya | Tipe instans fungsi. | Nilai valid:
Nilai default: e1. |
Description | String | Tidak | Ya | Deskripsi fungsi. | Tidak ada. |
ServiceName | String | Ya | Tidak | Nama layanan di Function Compute. | Nama harus memiliki panjang 1 hingga 128 karakter. |
MemorySize | Integer | Tidak | Ya | Ukuran memori fungsi. | Nilai valid:
Satuan: MB. Untuk informasi lebih lanjut, lihat Tipe instans dan mode penggunaan. |
InstanceConcurrency | Integer | Tidak | Ya | Nilai konkurensi instans. | Nilai valid: 1 hingga 100. |
EnvironmentVariables | Map | Tidak | Ya | Variabel lingkungan yang ingin Anda konfigurasikan untuk fungsi. | Tidak ada. |
Handler | String | Ya | Ya | Penanganan fungsi. | Misalnya, jika Anda menyetel Handler ke index.handler saat membuat fungsi Python, nama file adalah index.py dan nama fungsinya adalah handler. Format nilai bervariasi berdasarkan bahasa pemrograman. |
Timeout | Integer | Tidak | Ya | Jangka waktu timeout untuk eksekusi fungsi. | Nilai valid: 1 hingga 600. Nilai default: 3. Satuan: detik. Ketika jangka waktu timeout berakhir, Function Compute menghentikan eksekusi fungsi. |
Runtime | String | Ya | Ya | Waktu proses fungsi. | Nilai yang valid: nodejs6, nodejs8, nodejs10, nodejs12, python3, java8, custom, dan custom-container. Untuk informasi lebih lanjut, lihat Runtimes yang didukung oleh Function Compute. |
FunctionName | String | Ya | Tidak | Nama fungsi. | Nama harus memiliki panjang 1 hingga 128 karakter, dan dapat berisi huruf, angka, garis bawah (_), dan tanda hubung (-). Harus dimulai dengan huruf atau garis bawah (_). |
CustomContainerConfig | Map | Tidak | Ya | Konfigurasi runtime Custom Container jika Anda menyetel Runtime ke custom-container. Setelah Anda menentukan konfigurasi, Anda dapat menggunakan gambar kontainer kustom untuk memanggil fungsi. | Untuk informasi lebih lanjut, lihat Properti CustomContainerConfig. |
CAPort | Integer | Tidak | Ya | Port tempat server HTTP kustom mendengarkan. | Nilai default: 9000. Catatan Properti ini berlaku ketika Runtime disetel ke custom atau custom-container. |
AsyncConfiguration | Map | Tidak | Ya | Konfigurasi pemanggilan asinkron. | Untuk informasi lebih lanjut, lihat Properti AsyncConfiguration. |
Cpu | Number | Tidak | Ya | Jumlah vCPU fungsi. | Tidak ada. |
CustomRuntimeConfig | Map | Tidak | Ya | Konfigurasi runtime kustom fungsi. | Tidak ada. |
GpuMemorySize | Integer | Tidak | Ya | Ukuran memori GPU fungsi. | Nilai valid: kelipatan 1024. Satuan: MB. |
InstanceSoftConcurrency | Integer | Tidak | Ya | Nilai konkurensi lunak instans. Anda dapat menggunakan properti ini untuk menerapkan peningkatan skala yang mulus untuk instans. | Ketika nilai konkurensi instans lebih besar dari nilai konkurensi lunak instans, peningkatan skala instans dipicu. Misalnya, jika instans Anda memerlukan waktu lama untuk memulai, Anda dapat menentukan nilai konkurensi lunak yang sesuai untuk memulai instans sebelumnya. Nilai InstanceSoftConcurrency harus kurang dari atau sama dengan nilai InstanceConcurrency. |
DiskSize | Integer | Tidak | Ya | Ukuran disk fungsi. | Satuan: MB. Nilai valid: 512 dan 10240. |
InstanceLifecycleConfig | Map | Tidak | Ya | Konfigurasi siklus hidup instans fungsi. | Untuk informasi lebih lanjut, lihat Properti InstanceLifecycleConfig. |
CustomDNS | Map | Tidak | Ya | Konfigurasi Domain Name System (DNS) kustom fungsi. | Untuk informasi lebih lanjut, lihat Properti CustomDNS. |
CustomHealthCheckConfig | Map | Tidak | Ya | Konfigurasi pemeriksaan kesehatan runtime custom dan Custom Container. | Untuk informasi lebih lanjut, lihat Properti CustomHealthCheckConfig. |
Sintaksis Kode
"Code": {
"OssBucketName": String,
"OssObjectName": String,
"ZipFile": String,
"SourceCode": String
}Properti Kode
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
OssBucketName | String | Tidak | Ya | Nama bucket Object Storage Service (OSS) tempat paket ZIP disimpan. | Tidak ada. |
OssObjectName | String | Tidak | Ya | Nama paket ZIP yang digunakan sebagai objek OSS. | Tidak ada. |
ZipFile | String | Tidak | Ya | Isi paket ZIP yang dikodekan Base64. | Tidak ada. |
SourceCode | String | Tidak | Ya | Kode sumber fungsi. | Kode sumber dapat memiliki panjang hingga 4.096 karakter. Node.js, PHP, dan Python didukung. Layanan Orkestrasi Sumber Daya (ROS) menulis nilai properti ini ke file berkode UTF-8 bernama index. Ketika Anda menentukan properti ZipFile, SourceCode, OssBucketName, dan OssObjectName, prioritas properti tersebut adalah dalam urutan menurun. |
Sintaksis CustomContainerConfig
"CustomContainerConfig": {
"Command": String,
"Args": String,
"Image": String,
"AccelerationType": String,
"InstanceId": String,
"WebServerMode": Boolean
}Properti CustomContainerConfig
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Command | String | Tidak | Ya | Perintah startup kontainer. | Contoh: |
Args | String | Tidak | Ya | Parameter startup kontainer. | Contoh: |
Image | String | Ya | Ya | Alamat gambar kontainer. | Contoh: |
AccelerationType | String | Tidak | Ya | Menentukan apakah akan mengaktifkan percepatan gambar. | Nilai valid:
|
InstanceId | String | Tidak | Ya | ID instance Container Registry Enterprise Edition. | Anda harus menentukan properti ini ketika menggunakan instance Container Registry Enterprise Edition. Alamat IP default yang diselesaikan dari instance harus merupakan alamat IP dari virtual private cloud (VPC) tempat Container Registry berada. Catatan Anda tidak dapat menggunakan Alibaba Cloud DNS PrivateZone untuk mendefinisikan resolusi nama domain. |
WebServerMode | Boolean | Tidak | Ya | Menentukan apakah akan menggunakan mode server web untuk menjalankan gambar. | Nilai valid:
|
Sintaksis AsyncConfiguration
"AsyncConfiguration": {
"Destination": Map
"MaxAsyncRetryAttempts": Integer,
"MaxAsyncEventAgeInSeconds": Integer,
"StatefulInvocation": Boolean
}Properti AsyncConfiguration
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Destination | Map | Tidak | Tidak | Tujuan pemanggilan asinkron. | Untuk informasi lebih lanjut, lihat Properti Destination. |
MaxAsyncRetryAttempts | Integer | Tidak | Ya | Jumlah maksimum percobaan ulang. | Tidak ada. |
MaxAsyncEventAgeInSeconds | Integer | Tidak | Ya | Masa berlaku maksimum pesan. | Tidak ada. |
StatefulInvocation | Boolean | Tidak | Ya | Menentukan apakah akan mengaktifkan pemanggilan asinkron stateful. | Nilai valid:
Untuk informasi lebih lanjut, lihat Ikhtisar. |
Sintaksis Destination
"Destination": {
"OnSuccess": String,
"OnFailure": String
}Properti Destination
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
OnSuccess | String | Tidak | Ya | Tujuan yang dipanggil oleh Function Compute jika eksekusi fungsi berhasil. | Tidak ada. |
OnFailure | String | Tidak | Ya | Tujuan yang dipanggil oleh Function Compute jika eksekusi fungsi gagal karena kesalahan sistem atau kesalahan fungsi bawaan. | Tidak ada. |
Sintaksis InstanceLifecycleConfig
"InstanceLifecycleConfig":{
"PreFreeze": Map,
"PreStop": Map
}Properti InstanceLifecycleConfig
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
PreFreeze | Map | Tidak | Ya | Konfigurasi hook PreFreeze. | Untuk informasi lebih lanjut, lihat Properti PreFreeze. |
PreStop | Map | Tidak | Ya | Konfigurasi hook PreStop. | Untuk informasi lebih lanjut, lihat Properti PreStop. |
Sintaksis PreStop
"PreStop":{
"Handler": String,
"Timeout": Integer
}Properti PreStop
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Handler | String | Tidak | Ya | Penanganan fungsi. | Untuk informasi lebih lanjut, lihat Dasar-dasar. |
Timeout | Integer | Tidak | Ya | Jangka waktu timeout untuk eksekusi. | Satuan: detik. |
Sintaksis PreFreeze
"PreFreeze":{
"Handler": String,
"Timeout": Integer
}Properti PreFreeze
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Handler | String | Tidak | Ya | Penanganan fungsi. | Untuk informasi lebih lanjut, lihat Dasar-dasar. |
Timeout | Integer | Tidak | Ya | Jangka waktu timeout untuk eksekusi. | Satuan: detik. |
Sintaksis CustomHealthCheckConfig
"CustomHealthCheckConfig":{
"SuccessThreshold": Integer,
"InitialDelaySeconds": Integer,
"PeriodSeconds": Integer,
"HttpGetUrl": String,
"TimeoutSeconds": Integer,
"FailureThreshold": Integer
}Properti CustomHealthCheckConfig
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
SuccessThreshold | Integer | Tidak | Ya | Jumlah kali berturut-turut suatu kontainer harus lulus pemeriksaan kesehatan sebelum dinyatakan sehat. |
Nilai valid: 1 hingga 120. Nilai default: 1. |
InitialDelaySeconds | Integer | Tidak | Ya | Durasi setelah kontainer dimulai sebelum pemeriksaan kesehatan dimulai. | Nilai valid: 0 hingga 120. Nilai default: 0. |
PeriodSeconds | Integer | Tidak | Ya | Interval pemeriksaan kesehatan. | Nilai valid: 1 hingga 120. Nilai default: 3. |
HttpGetUrl | String | Tidak | Ya | URL pemeriksaan kesehatan kustom untuk kontainer. | URL dapat memiliki panjang hingga 2.048 karakter. |
TimeoutSeconds | Integer | Tidak | Ya | Jangka waktu timeout untuk pemeriksaan kesehatan. | Nilai valid: 1 hingga 3. Nilai default: 1. |
FailureThreshold | Integer | Tidak | Ya | Jumlah kali berturut-turut suatu kontainer harus gagal dalam pemeriksaan kesehatan sebelum dinyatakan tidak sehat. |
Nilai valid: 1 hingga 120. Nilai default: 3. |
Sintaksis CustomRuntimeConfig
"CustomRuntimeConfig":{
"Args": List,
"Command": List,
}Properti CustomRuntimeConfig
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Args | List | Tidak | Ya | Parameter yang diterima oleh perintah startup. | Contoh: |
Command | List | Tidak | Ya | Perintah startup. | Contoh: |
Sintaksis CustomDNS
"CustomDNS":{
"NameServers": List,
"DnsOptions": List,
"Searches": List
}Properti CustomDNS
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
NameServers | List | Tidak | Ya | Alamat IP server DNS. | Tidak ada. |
DnsOptions | List | Tidak | Ya | Item konfigurasi dalam file | Tidak ada. |
Searches | List | Tidak | Ya | Domain pencarian DNS. | Tidak ada. |
Sintaksis DnsOptions
"DnsOptions":{
"Value": String,
"Name": String,
}Properti DnsOptions
Properti | Tipe | Diperlukan | Dapat Diedit | Deskripsi | Kendala |
Value | String | Tidak | Ya | Nilai item konfigurasi. | Contoh: 2.
|
Name | String | Ya | Ya | Nama item konfigurasi. | Contoh: ndots.
|
Nilai Kembali
Fn::GetAtt
FunctionId: ID unik yang dihasilkan sistem untuk fungsi.
ServiceName: nama layanan di Function Compute.
ARN: Alibaba Cloud Resource Name (ARN) dari fungsi.
FunctionName: nama fungsi.
ServiceId: ID layanan di Function Compute.
Contoh
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
import requests
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())
}
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"
]
}
}
}
}Untuk lebih banyak contoh, kunjungi function-invoker.yml. Dalam contoh-contoh tersebut, tipe sumber daya berikut digunakan:
ALIYUN::FC::Service: membuat layanan di Function Compute.
ALIYUN::FC::Function: membuat fungsi.
ALIYUN::FC::FunctionInvoker: memanggil fungsi.
ALIYUN::FC::Trigger: memicu fungsi.
ALIYUN::FC::Version: merilis versi layanan.
ALIYUN::FC::Alias: membuat alias.
ALIYUN::FC::ProvisionConfig: membuat instans yang disediakan.