Deskripsi
Aksi ACS::ExecuteAPI digunakan untuk memanggil operasi API dari layanan cloud seperti Elastic Compute Service (ECS). Jika pemanggilan API bersifat asinkron, Anda dapat menggunakan aksi ACS::WaitFor untuk menunggu hingga sumber daya mencapai status yang diinginkan.
Sintaksis
Atribut Tasks.Properties.API menentukan operasi API yang dipanggil, sehingga tidak perlu menentukannya kembali di atribut Tasks.Properties.Parameters.
Operasi API RPC
Tasks:
- Name: executeAPITaskExample
Action: ACS::ExecuteAPI
Properties:
Service: ECS # Diperlukan. Nama Sumber Daya Alibaba Cloud (ARN) dari layanan cloud dalam Resource Access Management (RAM). Nama ini tidak peka huruf besar/kecil, seperti ECS, RDS, atau FC.
API: DescribeInstances # Diperlukan. Nama operasi API dari layanan cloud. Nama ini tidak peka huruf besar/kecil, seperti DescribeInstances.
AutoPaging: false # Opsional. Menentukan apakah akan otomatis melalui halaman-halaman untuk mendapatkan semua hasil untuk operasi API yang mengembalikan hasil pada halaman berbeda. Nilai default: true.
Parameters: # Parameter-parameter yang diperlukan untuk memanggil operasi API. Untuk informasi lebih lanjut, lihat dokumentasi terkait.
Parameter1: Value1
Parameter2: Value2
Outputs:
OutputParameter1:
ValueSelector: 'jq selector' # Pemilih jQuery untuk memilih data yang dikembalikan. Pemilih jQuery mengekstrak informasi dari data JSON yang dikembalikan oleh operasi API. Untuk informasi lebih lanjut tentang sintaksis jQuery, kunjungi https://stedolan.github.io/jq/.
Type: String/Boolean/List(Array)/Number/Object{
"Tasks": [
{
"Name": "executeAPITaskExample",
"Action": "ACS::ExecuteAPI",
"Properties": {
"Service": "ECS",
"API": "DescribeInstances",
"AutoPaging": false,
"Parameters": {
"Parameter1": "Value1",
"Parameter2": "Value2"
}
},
"Outputs": {
"OutputParameter1": {
"ValueSelector": "jq selector",
"Type": "String/Boolean/List(Array)/Number/Object"
}
}
}
]
}Operasi API ROA
Tasks:
- Name: executeAPITaskExample2
Action: ACS::ExecuteAPI
Properties:
Service: OSS # Diperlukan. ARN dari layanan cloud dalam RAM. Nama ini tidak peka huruf besar/kecil, seperti OSS, ECS, RDS, atau FC.
API: PutBucket # Diperlukan. Nama operasi API dari layanan cloud. Nama ini tidak peka huruf besar/kecil, seperti PutBucket.
Method: PUT # Diperlukan. Metode permintaan HTTP dari operasi API.
URI: '' # Uniform Resource Identifier (URI) yang digunakan oleh operasi API.
Headers: # Opsional. Header permintaan dari operasi API. Tentukan atribut ini dalam format berikut:
requestHeader1: 'requestHeader1Value'
Parameters: # Opsional. Parameter umum dari operasi API.
commonParameter1: 'commonParameter1Value'
commonParameter2: 'commonParameter2Value'
# Opsional. Badan permintaan dari operasi API. Tentukan atribut ini dalam format XML.
Body: |
<?xml version="1.0" encoding="UTF-8"?> <supKey1> <parameter1> Value1
</parameter1> <parameter2> Value2 </parameter2> </supKey1>{
"Tasks": [
{
"Name": "executeAPITaskExample2",
"Action": "ACS::ExecuteAPI",
"Properties": {
"Service": "OSS",
"API": "PutBucket",
"Method": "PUT",
"URI": "",
"Headers": {
"requestHeader1": "requestHeader1Value"
},
"Parameters": {
"commonParameter1": "commonParameter1Value",
"commonParameter2": "commonParameter2Value"
},
"Body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <supKey1> <parameter1> Value1\n</parameter1> <parameter2> Value2 </parameter2> </supKey1>\n"
}
}
]
}Contoh
Memanggil operasi DescribeInstances dari Elastic Compute Service (ECS) dalam gaya RPC
FormatVersion: OOS-2019-06-01
Description: Melihat instance ECS dengan menentukan status instance.
Parameters:
status:
Description: Status instance ECS untuk query instance.
Type: String
Tasks:
- Name: describeInstances
Action: ACS::ExecuteAPI
Description: Melihat instance ECS dengan menentukan status instance.
Properties:
Service: ECS
API: DescribeInstances
Parameters:
Status: '{{ status }}'
Outputs:
instanceIds:
Type: List
ValueSelector: Instances.Instance[].InstanceId
Outputs:
instanceIds:
Type: List
Value: '{{ describeInstances.instanceIds }}'{
"FormatVersion": "OOS-2019-06-01",
"Description": "Melihat instance ECS dengan menentukan status instance.",
"Parameters": {
"status": {
"Description": "Status instance ECS untuk query instance.",
"Type": "String"
}
},
"Tasks": [
{
"Name": "describeInstances",
"Action": "ACS::ExecuteAPI",
"Description": "Melihat instance ECS dengan menentukan status instance.",
"Properties": {
"Service": "ECS",
"API": "DescribeInstances",
"Parameters": {
"Status": "{{ status }}"
}
},
"Outputs": {
"instanceIds": {
"Type": "List",
"ValueSelector": "Instances.Instance[].InstanceId"
}
}
}
],
"Outputs": {
"instanceIds": {
"Type": "List",
"Value": "{{ describeInstances.instanceIds }}"
}
}
}Memanggil operasi PutBucket dari Object Storage Service (OSS) dalam gaya ROA
FormatVersion: OOS-2019-06-01
Description:
en: Membuat beberapa bucket di wilayah berbeda pada saat bersamaan.
Parameters:
Regions:
Description:
en: ID wilayah..
Type: List
BucketName:
Description:
en: Nama bucket.
Type: String
DataRedundancyType:
Description:
en: Menentukan tipe toleransi bencana data dari bucket.
Type: String
AllowedValues:
- LRS
- ZRS
StorageClass:
Description:
en: Tentukan tipe penyimpanan bucket.
Type: String
AllowedValues:
- Standard
- IA
- Archive
XOssAcl:
Description:
en: Tentukan hak akses bucket.
Type: String
AllowedValues:
- public-read-write
- public-read
- private
RateControl:
Description:
en: Rasio konkurensi eksekusi tugas.
Type: Json
AssociationProperty: RateControl
OOSAssumeRole:
Description: Peran RAM yang akan diasumsikan oleh OOS.
Type: String
Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: PutBucket
Action: 'ACS::ExecuteAPI'
Description:
en: Membuat bucket di wilayah berbeda.
Properties:
Service: OSS
API: PutBucket
Method: PUT
URI: ''
Headers:
x-oss-acl: '{{ XOssAcl }}'
Parameters:
BucketName: '{{ BucketName }}-{{ACS::TaskLoopItem}}'
RegionId: '{{ACS::TaskLoopItem}}'
Body: |
<?xml version="1.0" encoding="UTF-8"?>
<CreateBucketConfiguration>
<StorageClass>{{ StorageClass }}</StorageClass>
<DataRedundancyType>{{ DataRedundancyType }}</DataRedundancyType>
</CreateBucketConfiguration>
Loop:
Items: '{{ Regions }}'
RateControl: '{{ RateControl }}'
Outputs:
imageIds:
AggregateType: 'Fn::ListJoin'
AggregateField: imageIds
Outputs:
imageIds:
Type: String
ValueSelector: .{
"FormatVersion": "OOS-2019-06-01",
"Description": {
"en": "Membuat beberapa bucket di wilayah berbeda pada saat bersamaan.",
},
"Parameters": {
"Regions": {
"Description": {
"en": "ID wilayah..",
},
"Type": "List"
},
"BucketName": {
"Description": {
"en": "Nama bucket.",
},
"Type": "String"
},
"DataRedundancyType": {
"Description": {
"en": "Menentukan tipe toleransi bencana data dari bucket.",
},
"Type": "String",
"AllowedValues": [
"LRS",
"ZRS"
]
},
"StorageClass": {
"Description": {
"en": "Tentukan tipe penyimpanan bucket.",
},
"Type": "String",
"AllowedValues": [
"Standard",
"IA",
"Archive"
]
},
"XOssAcl": {
"Description": {
"en": "Tentukan hak akses bucket.",
},
"Type": "String",
"AllowedValues": [
"public-read-write",
"public-read",
"private"
]
},
"RateControl": {
"Description": {
"en": "Rasio konkurensi eksekusi tugas.",
},
"Type": "Json",
"AssociationProperty": "RateControl"
},
"OOSAssumeRole": {
"Description": "Peran RAM yang akan diasumsikan oleh OOS.",
"Type": "String",
"Default": "OOSServiceRole"
}
},
"RamRole": "{{ OOSAssumeRole }}",
"Tasks": [
{
"Name": "PutBucket",
"Action": "ACS::ExecuteAPI",
"Description": {
"en": "Membuat bucket di wilayah berbeda.",
},
"Properties": {
"Service": "OSS",
"API": "PutBucket",
"Method": "PUT",
"URI": "",
"Headers": {
"x-oss-acl": "{{ XOssAcl }}"
},
"Parameters": {
"BucketName": "{{ BucketName }}-{{ACS::TaskLoopItem}}",
"RegionId": "{{ACS::TaskLoopItem}}"
},
"Body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CreateBucketConfiguration>\n <StorageClass>{{ StorageClass }}</StorageClass>\n <DataRedundancyType>{{ DataRedundancyType }}</DataRedundancyType>\n</CreateBucketConfiguration>\n"
},
"Loop": {
"Items": "{{ Regions }}",
"RateControl": "{{ RateControl }}",
"Outputs": {
"imageIds": {
"AggregateType": "Fn::ListJoin",
"AggregateField": "imageIds"
}
}
},
"Outputs": {
"imageIds": {
"Type": "String",
"ValueSelector": "."
}
}
}
]
}Memanggil operasi PutLogs dari Simple Log Service dalam gaya ROA
FormatVersion: OOS-2019-06-01
Description:
en: Melakukan satu operasi ExecuteApi.
name-en: ACS-OOS-ExampleExecuteECSDescribeRegions
categories:
- ops
Parameters:
regionId:
Type: String
AssociationProperty: RegionId
Description: ID wilayah.
projectName:
Type: String
Description: Nama proyek.
logstoreName:
Type: String
Description: Nama Logstore.
Contents:
Type: String
Description: Konten log.
AssociationProperty: Json
Default:
- log1: value1
- log2: value2
Tags:
Type: String
Description: Tag yang ditambahkan ke log.
AssociationProperty: Json
Default: []
Tasks:
- Name: SlsPutLogs
Action: ACS::ExecuteApi
Description: Mengirim log ke Simple Log Service.
Properties:
Service: log
API: PutLogs
URI: /logstores/{{ logstoreName }}/shards/lb
Method: POST
Parameters:
RegionId: '{{ regionId }}'
projectName: '{{ projectName }}'
Logs:
Contents: '{{ Contents }}'
Tags: '{{ Tags }}'{
"FormatVersion": "OOS-2019-06-01",
"Description": {
"en": "Melakukan satu operasi ExecuteApi.",
"name-en": "ACS-OOS-ExampleExecuteECSDescribeRegions",
"categories": [
"ops"
]
},
"Parameters": {
"regionId": {
"Type": "String",
"AssociationProperty": "RegionId",
"Description": "ID wilayah"
},
"projectName": {
"Type": "String",
"Description": "Nama proyek"
},
"logstoreName": {
"Type": "String",
"Description": "Nama Logstore"
},
"Contents": {
"Type": "String",
"Description": "Konten log",
"AssociationProperty": "Json",
"Default": [
{
"log1": "value1"
},
{
"log2": "value2"
}
]
},
"Tags": {
"Type": "String",
"Description": "Tag yang ditambahkan ke log",
"AssociationProperty": "Json",
"Default": []
}
},
"Tasks": [
{
"Name": "SlsPutLogs",
"Action": "ACS::ExecuteApi",
"Description": "Mengirim log ke Simple Log Service",
"Properties": {
"Service": "log",
"API": "PutLogs",
"URI": "/logstores/{{ logstoreName }}/shards/lb",
"Method": "POST",
"Parameters": {
"RegionId": "{{ regionId }}",
"projectName": "{{ projectName }}",
"Logs": {
"Contents": "{{ Contents }}"
},
"Tags": "{{ Tags }}"
}
}
}
]
}Lampiran: Pengaturan paging otomatis
Untuk OpenAPI yang mendukung paging, OOS menyediakan dukungan untuk paging otomatis. Anda dapat mengonfigurasi paging otomatis dengan menentukan
AutoPaging. Secara default, paging otomatis diaktifkan.Anda dapat menentukan jumlah entri per halaman.
Jika operasi mendukung parameter (NextToken, MaxResults) dan (PageNumber, PageSize), disarankan untuk menggunakan (NextToken, MaxResults).
Template Contoh: Pengaturan Paging untuk ECS DescribeInstances
FormatVersion: OOS-2019-06-01
Description: Menjalankan satu operasi
Tasks:
- Name: ExecuteApi
Action: ACS::ExecuteApi
Description:
en: Melakukan satu operasi ExecuteApi.
zh-cn: deskripsi dalam bahasa Cina
Properties:
Service: ecs
API: DescribeInstances
Parameters:
RegionId: cn-hangzhou
MaxResults: 50 # Jumlah maksimum entri per halaman{
"FormatVersion": "OOS-2019-06-01",
"Description": "Menjalankan satu operasi",
"Tasks": [
{
"Name": "ExecuteApi",
"Action": "ACS::ExecuteApi",
"Description": {
"en": "Melakukan satu operasi ExecuteApi.",
"zh-cn": "deskripsi dalam bahasa Cina"
},
"Properties": {
"Service": "ecs",
"API": "DescribeInstances",
"Parameters": {
"RegionId": "cn-hangzhou",
"MaxResults": 50
}
}
}
]
}