本文介紹如何用OOS自定義模板編排函數計算, 通過執行Python腳本來下載文件并將其存儲到OSS
功能背景
阿里云函數計算(Function Compute,FC)是一項核心服務。它是基于事件驅動的平臺,允許用戶在沒有服務器的情況下運行代碼。利用FC的高效編程能力,開發者只需部署代碼,FC就能夠響應事件觸發立即執行。此外,FC與阿里云的對象存儲服務(Object Storage Service,OSS)緊密集成,使得數據的存儲和批量處理變得更簡單,開發者無需管理服務器或存儲,即可輕松處理數據,并且可以將處理結果安全地存儲在OSS中。同時,OOS能夠自動執行多種復雜的運維任務,讓開發者通過自定義模板來集成和調用阿里云提供的各類資源和服務。在本文中,我們將介紹如何用OOS編排函數計算,通過執行Python腳本來下載文件并將其存儲到OSS。
使用說明
使用此功能必須開通函數計算服務。
創建執行前需要為FC創建RAM角色并授予訪問OSS的權限。
操作步驟
登錄 OOS 控制臺并使用以下示例模板創建自定義模板。您可以參考FC提供的Python開發指南自定義腳本和模板。
FormatVersion: OOS-2019-06-01 Description: en: FC runs script, To use this template, you must first <a href='http://bestwisewords.com/zh/functioncompute/getting-started/quickly-create-a-function#p-t79-y7o-68z' target="_blank">activate the function computing service< /a> zh-cn: FC運行腳本,使用此功能必須<a href='http://bestwisewords.com/zh/functioncompute/getting-started/quickly-create-a-function#p-t79-y7o-68z' target="_blank">開通函數計算服務</a> name-en: FC-RunScript name-zh-cn: FC運行腳本 Parameters: FileUrl: Label: en: FileUrl zh-cn: 文件存儲URL Type: String OSSRegionId: Label: en: OSSRegionId zh-cn: OSS bucket所在地域ID Type: String AssociationProperty: RegionId OSSBucketName: Label: en: OSSBucketName zh-cn: OSS Bucket 名稱 Type: String AssociationProperty: ALIYUN::OSS::Bucket::BucketName AssociationPropertyMetadata: RegionId: ${OSSRegionId} Default: '' OSSDirectory: Type: String Label: en: OSSDirectory zh-cn: OSS目錄 Description: en: The directory where files are stored in the OSS Bucket. / is used to split the path and quickly create subdirectories. However, do not start with / and do not appear consecutive / s. zh-cn: 文件存儲在 OSS Bucket 中的目錄,/ 用于分割路徑,可快速創建子目錄,但不要以 / 開頭,不要出現連續的 / 。 Default: Download/Demo/ FCAssumeRole: Label: en: FCAssumeRole zh-cn: FC扮演的RAM角色 Description: en: The Function Compute platform will use this RAM role to generate a temporary key for accessing your Alibaba Cloud resources and pass it to your code. For details, please see <a href="http://bestwisewords.com/zh/functioncompute/user-guide/grant-function-compute-permissions-to-access-other-alibaba-cloud-services" target="_blank ">Grant Function Compute permissions to access other cloud services</a> zh-cn: 函數計算平臺會使用這個 RAM 角色(Role)來生成訪問您的阿里云資源的臨時密鑰,并傳遞給您的代碼。詳情請查看<a href="http://bestwisewords.com/zh/functioncompute/user-guide/grant-function-compute-permissions-to-access-other-alibaba-cloud-services" target="_blank">授予函數計算訪問其他云服務的權限</a> Type: String AssociationProperty: ALIYUN::RAM::Service::Role AssociationPropertyMetadata: Service: fc.aliyuncs.com Default: '' OOSAssumeRole: Label: en: OOSAssumeRole zh-cn: OOS扮演的RAM角色 Type: String Default: '' RamRole: '{{ OOSAssumeRole }}' Tasks: - Name: ExecuteScript Action: ACS::FC::ExecuteScript Description: en: Run the python script zh-cn: 運行Python腳本 Properties: runtime: 'python3.10' role: '{{ FCAssumeRole }}' script: |- import oss2 import requests def handler(event, context): # 獲取FC角色credential auth = oss2.StsAuth(context.credentials.access_key_id, context.credentials.access_key_secret, context.credentials.security_token) endpoint = 'https://oss-{{OSSRegionId}}.aliyuncs.com' bucket = oss2.Bucket(auth, endpoint, '{{OSSBucketName}}') file_url = '{{FileUrl}}' # 下載文件 file_content = requests.get(file_url) file_name = file_url.split('/')[-1] # 將文件上傳到指定OSS bucket.put_object(f'{{OSSDirectory}}{file_name}', content)
示例腳本說明:
運行環境默認 python3.10
函數名稱默認 index.handler
使用模塊oss2和requests,詳情請查看環境說明。
模板創建完成后,配置參數并創建執行。執行成功后,在目標OSS Bucket中可以看到已下載的文件。
附錄
進階操作請查看定時備份redis實例并轉儲到OSS。
文檔內容是否對您有幫助?