本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文主要介紹faasutil命令的用法和示例。
前提條件
已獲取faasutil命令行工具。具體操作,請參見獲取faasutil。
已準備原始文件,該文件為FPGA設備開發的加速程序,用于編譯生成FPGA鏡像。
已創建用于上傳原始文件的OSS Bucket。具體操作,請參見控制臺創建存儲空間。
已為RAM用戶創建AccessKey。具體操作,請參見創建AccessKey。
警告僅支持通過RAM用戶的AccessKey使用FaaS服務,可有效降低AccessKey泄露的風險。強烈建議您不要將AccessKey ID和AccessKey Secret明文保存至工程代碼里或者任何容易被他人明文獲取到的地方,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
基本概念
本文涉及的主要概念說明如下:
概念 | 說明 |
FPGA實例 | 您在阿里云控制臺或者通過OpenAPI創建的FPGA實例。 該實例包括計算資源、ECS鏡像、云盤等功能組件。 |
ECS鏡像 | FPGA實例使用的ECS鏡像。 FPGA實例在提供FPGA加速能力的同時,保留了與普通ECS實例相同的使用體驗。 |
原始文件 | 您為FPGA設備開發的加速程序,用于編譯生成FPGA鏡像。 例如,Intel FPGA的原始文件為.gbs格式,Xilinx FPGA的原始文件為腳本處理后得到的tar包。 |
FPGA鏡像 | FPGA設備使用的鏡像。 原始文件編譯后得到FPGA鏡像,將FPGA鏡像加載到FPGA設備后,FPGA設備即可按照您的設計提供加速服務。 說明 每個FPGA鏡像擁有唯一的識別碼UUID,不同FPGA鏡像的UUID不會重復。 |
注意事項
使用faasutil時請注意以下事項:
運行命令的方式:
./faasutil [command]
。faasutil命令及其參數嚴格區分大小寫。
例如,如果執行
./faasutil Create_Image --Object=faasutiltest-forcompiling.tar.gz --Shell=f30010 --FPGAType=xilinx --Name=faasutiltest-image
命令,會出現報錯信息,您必須將命令及其參數的大小寫與定義保持完全一致。faasutil命令中的
參數
、=
以及取值
間不能存在多余空格。例如,如果執行
./faasutil create_image --object=faasutiltest-forcompiling.tar.gz --shell = f30010 --fpgatype=xilinx --name=faasutiltest-image
命令時,會出現報錯信息,您必須去掉shell參數=
前后的空格。如果您為普通用戶,請聯系管理員給普通用戶添加
/dev/virtio-ports/FaaS.agent
的使用權限。
faasutil命令概覽
faasutil支持的命令主要用于獲取幫助信息、配置環境以及管理FPGA鏡像等,相關內容如下所示:
用途 | 相關文檔 |
獲取幫助信息 | |
配置環境 | |
管理FPGA鏡像 |
查看所有命令
查看faasutil版本以及所有命令的列表等信息。
命令格式:
faasutil --help
faasutil -h
示例代碼:
[user1@i**** ~]# ./faasutil -h
faasutil [command] [optons]...
DESCRIPTION
faasutil is a fpga image management tool.
version : 2.0.3a
date : 2020-07-08-11:04
command list(use "faasutil [command] --help" for more infomation):
config Config faasutil enviroment.
list_instances Print the instances base infomation.
fpga_status Check pointed fpga status.
auth Authorize FAAS to read the oss bucket your specified.
list_objects List objects of the bucket you specified.
put_object Put local file to the bucket object, FAAS need download it from oss.
get_object Get object from oss bucket.
list_policy List the detailed information about oss policy authorize to FAAS.
delete_policy Delete the oss policy authorize to FAAS.
list_images List the fpga images
create_image Create fpga image.
modify_image Modify fpga image.
delete_image Delete fpga image.
bind_image Bind the FPGA image to ECS image.
download_image Download FPGA image to faas instance.
download_status The status of download image operation.
copy_fpga_image Copying images across regions.
query_log Get compiler log.
查看指定命令
查看指定命令的描述、參數說明等信息。
命令格式:
faasutil [command name] --help
faasutil [command name] -h
示例代碼:
[user1@i**** ~]# ./faasutil config --help
COMMAND
config
SYNOPSIS
config --id=[accessid] --key=[accesskey] --token=[sts-token] --bucket=[bucket] --regionId=[regionId] --ossEndpoint=[ossEndpoint] --popEndpoint=[popEndpoint]
DESCRIPTION
Config faasutil enviroment.
/*Using config to save the value of these follow options.*/
/*You can also set these options' value follow any command which need to specify.*/
OPTIONS
required
--id
User access id , using config to save this information.
--key
User access key, using config to save this information.
optional
--token
User ststoken , using config to save this information.
--bucket
Bucket used for upload image.
--regionId
The region of pop endpoint and oss endpoint.
Default using ecs region of public network.
--ossEndpoint
Oss endpoint info.
Specify the oss endpoint if you want to get/put files in different region or vpc network.
--popEndpoint
Pop endpoint info.
--instanceId
ECS instance ID.
Default using the local ECS ID.
--ecsImageId
ECS image ID.
Default using the image ID of the local ECS ID.
--shell
Specify the shell version you used.
Default using the shell version of the ECS fpga card.
--fpgatype
Specify the FPGA device type.
Default using the FPGA device type of belong to the local ECS.
配置用戶信息
將用戶信息寫入默認的配置文件里。主要用戶信息如下:
用戶信息 | 說明 |
AccessKey ID | 必填,用于身份認證。 |
AccessKey Secret | |
OSS Bucket名稱 | 建議填寫,用于指定上傳原始文件的OSS Bucket,避免在運行某些命令時重復輸入OSS Bucket名稱。 |
命令格式:
您可以運行config命令查看支持配置的信息。
faasutil config --id=[accessid] --key=[accesskey] --token=[sts-token] --bucket=[bucket] --regionId=[regionId] --ossEndpoint=[ossEndpoint] --popEndpoint=[popEndpoint]
其中,上述命令中主要參數說明如下所示:
參數名稱 | 說明 |
| 該參數與之前faascmd工具特性保持兼容,不建議您配置該參數。 |
| 該參數會在ECS實例中自動獲取,您無需配置該參數。 |
| 該參數會在ECS實例中自動獲取,您無需配置該參數。 |
| 該參數會在ECS實例中自動獲取,您無需配置該參數。 |
示例代碼:
[user1@i**** ~]# ./faasutil config --id=L**** --key=v**** --bucket=yk****
Your configuration is saved into /home/user1/.faascredentials.
1.057(s) elapsed
添加OSS Bucket讀權限
添加OSS Bucket讀權限,用于FPGA實例讀取OSS Bucket中的文件。
命令格式:
faasutil auth
示例代碼:
[user1@i**** ~]# ./faasutil auth
{
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:GetObjectMeta",
"oss:ListObjects"
],
"Effect": "Allow",
"Principal": [
"26143530338319****"
],
"Resource": [
"acs:oss:*:*:yk****/*"
]
}
],
"Version": "1"
}
0.223(s) elapsed
查看OSS Bucket讀權限
查看已添加的OSS Bucket讀權限。
命令格式:
faasutil list_policy
示例代碼:
[user1@i**** ~]# ./faasutil list_policy
Get policy text:
{
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:GetObjectMeta",
"oss:ListObjects"
],
"Effect": "Allow",
"Principal": [
"26143530338319****"
],
"Resource": [
"acs:oss:*:*:yk****/*"
]
}
],
"Version": "1"
}
0.203(s) elapsed
刪除OSS Bucket讀權限
刪除OSS Bucket讀權限,禁止FPGA實例讀取OSS Bucket中的文件。
命令格式:
faasutil delete_policy
示例代碼:
[user1@i**** ~]# ./faasutil delete_policy
0.210(s) elapsed
獲取FPGA實例的信息
獲取FPGA實例的實例ID、ECS鏡像、掛載的FPGA設備等信息。
命令格式:
faasutil list_instances
示例代碼:
該示例以顯示FPGA實例掛載了2個FPGA設備,對應的bdf分別為00:09.0
、00:08.0
為例。
[user1@i**** ~]# ./faasutil list_instances
instance_id : i-uf616ov8zzwmiijb****
image_id : centos_7_8_x64_20G_alibase_20200914.vhd
regionId : cn-shanghai
fpga bdf : ['00:09.0', '00:08.0']
shell version : f30010
requestId : x-7762368991973****
fpga type : xilinx
1.054(s) elapsed
獲取FPGA設備的狀態信息
根據FPGA設備的bdf獲取狀態信息。您可以運行list_instances命令查看FPGA設備的bdf,具體操作,請參見獲取FPGA實例的信息。
命令格式:
faasutil fpga_status --bdf=[bdf]
命令中的[bdf]
替換成FPGA設備的bdf,例如[bdf]
為00:09.0
。
示例代碼:
該示例以查看bdf為00:09.0的FPGA設備的狀態信息為例。
其中imageuuid對應指定FPGA鏡像的UUID,初次購買的FPGA實例imageuuid取值顯示為NULL。
[user1@i**** ~]# ./faasutil fpga_status --bdf=00:09.0
clock0 : 240
clock1 : 189
fpgaStatus : valid
requestId : x-1093970844245****
shellUUID : f30010
imageuuid : NULL
firewall : ['mgmt : GOOD', 'user : GOOD', 'xdma : GOOD', 'dma : GOOD']
ddr : ['ddr0 : online', 'ddr1 : online', 'ddr2 : online', 'ddr3 : online']
message : FPGA is working.
1.025(s) elapsed
上傳文件至OSS Bucket
將FPGA實例上的文件上傳至OSS Bucket,例如上傳原始文件。
命令格式:
faasutil put_object --bucket=[bucket_name] --object=[object_name] --file=[file_name]
其中,上述命令中主要參數說明如下所示:
[bucket_name]:OSS Bucket的名稱。
說明如果已經運行config命令在默認配置文件中指定了OSS Bucket,則可以不指定bucket參數。
[file_name]:待上傳文件的名稱。
[object_name]:上傳文件后在OSS Bucket中的顯示名稱。
示例代碼:
[user1@i**** ~]# ./faasutil put_object --object=faasutiltest-forcompiling.tar.gz --file=faasutiltest.tar.gz
100%
539.171(s) elapsed
查看OSS Bucket中的文件
查看OSS Bucket中的文件。
命令格式:
faasutil list_objects
示例代碼:
[user1@i**** ~]# ./faasutil list_objects
faasutiltest-forcompiling.tar.gz
0.288(s) elapsed
下載文件到FPGA實例
從OSS Bucket下載文件到FPGA實例。
命令格式:
faasutil get_object --bucket=[bucket_name] --object=[object_name] --file=[file_name]
其中,上述命令中主要參數說明如下所示:
[bucket_name]:OSS Bucket的名稱。
說明如果已經運行config命令在默認配置文件中指定了OSS Bucket,則可以不指定bucket參數。
[file_name]:待下載文件的名稱。
[object_name]:下載文件后在FPGA實例中的顯示名稱。
示例代碼:
[user1@i**** ~]# ./faasutil get_object --object=faasutiltest-forcompiling.tar.gz --file=faasutiltest-fordeveloping.tar.gz
100%
179.909(s) elapsed
創建FPGA鏡像編譯任務
使用原始文件編譯生成FPGA鏡像。
編譯需要一定時間,請耐心等待。如果已經創建了編譯任務,無論是否編譯成功,至少30分鐘后才可以創建下個編譯任務。
命令格式:
faasutil create_image --object=[object_name] --shell=[shell_ver] --fpgatype=[fpga_type]
其中,上述命令中主要參數說明如下所示:
[object_name]:用于編譯的原始文件的名稱,請確保已將原始文件上傳至OSS Bucket。
[shell_ver]:FPGA設備的Shell版本信息。您可以運行fpga_status命令查看FPGA設備的Shell版本信息,具體操作,請參見獲取FPGA設備的狀態信息。
[fpga_type]:FPGA設備的類型,目前支持Xilinx FPGA(xilinx)、Intel FPGA(intel),請根據FPGA設備的實際類型來設置。
示例代碼:
[user1@i**** ~]# ./faasutil create_image --object=faasutiltest-forcompiling.tar.gz --shell=f30010 --fpgatype=xilinx --name=faasutiltest-image
{
"CreateTime": "2020-12-04 14:48:13",
"Description": "",
"FpgaImageUniqueId": "xilinxb80832c9-1cd1-49a2-a7b4-7d3a5a4b****",
"Name": "faasutiltest-image",
"RequestId": "2E996CE5-F550-43E7-8016-DAF0D32A96BF",
"ShellUniqueId": "f30010",
"State": "queueing"
}
0.555(s) elapsed
如示例所示,創建FPGA鏡像編譯任務后會返回FPGA鏡像的FpgaImageUniqueId和State參數值。
如果State顯示為queueing狀態,表示任務處于等待編譯中。您可以運行list_images命令并查看FpgaImageUniqueId對應任務的狀態。具體操作,請參見查看FPGA鏡像。
如果待State顯示為success狀態,表示任務編譯成功。
查詢編譯Log
查詢指定FPGA鏡像編譯任務過程中記錄的Log。其中,[fpgaImageUniqueId]為創建FPGA鏡像編譯任務后返回的FPGA鏡像UUID。
命令格式:
faasutil query_log --fpgaImageUniqueId=[fpgaImageUniqueId]
示例代碼:
[user1@i**** ~]# ./faasutil query_log --fpgaImageUniqueId=xilinxb80832c9-1cd1-49a2-a7b4-7d3a5a4b****
{
"Log": "http://aliyun-faas-images-cn-shanghai.oss-cn-shanghai-internal.aliyuncs.com/27095692903785****%2Fxilinxb80832c9-1cd1-49a2-a7b4-7d3a5a4b****_log?Expires=160706****&OSSAccessKeyId=L****&Signature=1****",
"RequestId": "07A744F5-422D-49AA-B69B-1AD898BBD1D8"
}
0.194(s) elapsed
如示例所示,訪問返回結果中的鏈接(例如http://aliyun-faas-images****-internal.aliyuncs****&Signature=1****
)即可獲取到Log。
如果您不需要在FPGA實例中查看Log,請去掉鏈接中的-internal
。
查看FPGA鏡像
查看已有的FPGA鏡像,支持按鏡像所有者過濾結果。其中,[owner]為鏡像所有者,目前支持市場鏡像(market)、本地自制鏡像(self)。
命令格式:
faasutil list_images --owneralias=[owner]
示例代碼:
[user1@i**** ~]# ./faasutil list_images
{
"FpgaImages": [
{
"CreateTime": "2020-12-04 14:48:14",
"Description": "faasutil test round 1",
"Encryption": false,
"FpgaImageUniqueId": "xilinxb80832c9-1cd1-49a2-a7b4-7d3a5a4b****",
"Name": "faasutiltest-image",
"OwnerId": "27095692903785****",
"ShellUniqueId": "f30010",
"State": "success",
"Tags": "",
"UpdateTime": "2020-12-04 15:02:05"
}
],
"RequestId": "C85DD548-9B3D-463E-BE25-316FF7288CEB"
}
0.087(s) elapsed
修改FPGA鏡像的信息
修改已有FPGA鏡像的名稱、描述等信息。
命令格式:
faasutil modify_image --fpgaImageUniqueId=[fpgaImageUniqueId] --name=[name] --description=[description] --tags=[tags]
示例代碼:
[user1@i**** ~]# ./faasutil modify_image --fpgaImageUniqueId=xilinxb80832c9-1cd1-49a2-a7b4-7d3a5a4b*** --name="faasutiltest-image" --description="faasutil test round 2"
{
"Description": "faasutil test round 2",
"FpgaImageUniqueId": "xilinxb80832c9-1cd1-49a2-a7b4-7d3a5a4b****",
"Name": "faasutiltest-image",
"RequestId": "AED50829-B84A-42F9-9891-E1EE9821DA33",
"Tags": ""
}
查看修改后的信息:
[user1@i**** ~]# ./faasutil list_images
{
"FpgaImages": [
{
"CreateTime": "2020-12-04 14:48:14",
"Description": "faasutil test round 2",
"Encryption": false,
"FpgaImageUniqueId": "xilinxb80832c9-1cd1-49a2-a7b4-7d3a5a4b****",
"Name": "faasutiltest-image",
"OwnerId": "27095692903785****",
"ShellUniqueId": "f30010",
"State": "success",
"Tags": "",
"UpdateTime": "2020-12-04 15:02:05"
}
],
"RequestId": "C85DD548-9B3D-463E-BE25-316FF7288CEB"
}
0.087(s) elapsed
綁定FPGA鏡像和ECS鏡像
綁定FPGA鏡像和ECS鏡像后,您可以將ECS鏡像發布至鏡像市場,第三方在使用您發布的ECS鏡像時即可使用與之綁定的FPGA鏡像。
命令格式:
faasutil bind_image --fpgaImageUniqueId=[fpgaImageUniqueId] --ecsImageId=[ecsImageId]
[fpgaImageUniqueId]:FPGA鏡像的UUID。
[ecsImageId]:ECS鏡像的ID,默認使用當前FPGA實例所用ECS鏡像的ID。
示例代碼:
[user1@i**** ~]# ./faasutil bind_image --fpgaImageUniqueId=xilinx5395ad11-edb9-4d93-964d-12c59a07****
{
"FpgaImageUniqueId": "xilinx5395ad11-edb9-4d93-964d-12c59a07****",
"ImageId": "",
"Message": "publish succeed!",
"RequestId": "966883DD-6A6F-456A-8894-8FB7FA8A321C"
}
0.119(s) elapsed
跨地域拷貝FPGA鏡像
如果您需要在新的地域使用一個其他地域已有的FPGA鏡像,無需在目標地域重新創建鏡像編譯任務,將已有的FPGA鏡像拷貝至目標地域即可。
命令格式:
faasutil copy_fpga_image --fpgaImageUniqueId=[fpgaImageUniqueId] --targetRegion=[target region id]
示例代碼:
[user1@i**** ~]# ./faasutil copy_fpga_image --fpgaImageUniqueId=xilinx5395ad11-edb9-4d93-964d-12c59a07**** --targetRegion=cn-hangzhou
{
"CreateTime": "2020-12-04 17:46:04",
"Description": "",
"FpgaImageUniqueId": "xilinx5395ad11-edb9-4d93-964d-12c59a07****",
"Name": "faasutiltest-image",
"RequestId": "3AAEC35C-2FB2-4DBA-A982-7A8219055D60",
"ShellUniqueId": "f30010",
"State": "committed"
}
0.309(s) elapsed
加載FPGA鏡像
將FPGA鏡像加載至FPGA設備。您可以運行list_instances命令查看FPGA實例的ID、FPGA設備的bdf;運行list_images命令查看FPGA鏡像的UUID。
命令格式:
faasutil download_image --bdf=[bdf] --fpgaImageUniqueId=[fpgaImageUniqueId] --instanceId=[instanceId] --owneralias=[owner]
示例代碼:
[user1@i**** ~]# ./faasutil download_image --bdf=00:09.0 --fpgaImageUniqueId=xilinx5395ad11-edb9-4d93-964d-12c59a07****
{"TaskId":45331,"RequestId":"073431C2-857A-470D-9543-D1D89FC10D54","FpgaImageUniqueId":"xilinx5395ad11-edb9-4d93-964d-12c59a07****","InstanceId":"i-uf616ov8zzwmiijb****","BDFInECS":"","TaskStatus":"committed"}
status : operating
info : download task is operating
requestId : x-84128618168241720
1.165(s) elapsed
查詢FPGA鏡像加載狀態
查詢FPGA鏡像在FPGA設備上的加載狀態。您可以運行list_instances命令查看FPGA設備的bdf,運行list_images命令查看FPGA鏡像的UUID。
命令格式:
faasutil download_status --bdf=[bdf] --fpgaImageUniqueId=[fpgaImageUniqueId] --owneralias=[owner]
示例代碼:
[user1@iZ**** ~]# ./faasutil download_status --bdf=00:09.0 --fpgaImageUniqueId=xilinx5395ad11-edb9-4d93-964d-12c59a07****
status : done
info : download task finish
requestId : x-42850294908763910
time : 2020-12-04 17:50:48
1.026(s) elapsed
刪除FPGA鏡像
刪除不再需要的FPGA鏡像。
如果FPGA鏡像已發布至鏡像市場,必須指定--owneralias=market
。
命令格式:
faasutil delete_image --fpgaImageUniqueId=[fpgaImageUniqueId] --owneralias=[owner]
示例代碼:
[user1@i**** ~]# ./faasutil delete_image --fpgaImageUniqueId=xilinxe27832a0-7c1c-4d6d-80b8-435253e9****
{
"FpgaImageUniqueId": "xilinxe27832a0-7c1c-4d6d-80b8-435253e9****",
"RequestId": "F2F481F5-B0E3-4009-9AF4-CF4BFC00458A"
}
0.157(s) elapsed
查看刪除結果:
[user1@i**** ~]# ./faasutil list_images
{
"FpgaImages": [],
"RequestId": "30B73A5B-99FC-4920-8B90-4BA08A075040"
}
0.049(s) elapsed