又是標題。問題是我從 API 獲取日期,一旦容器在該日期運行,我就會獲取我想要運行容器的下一個日期。任何提供此服務的云平臺上是否有任何云服務?
uj5u.com熱心網友回復:
如果您想在特定時間運行特定邏輯(一段代碼)然后使用無服務器應用程式,幾乎所有云提供商都提供不同名稱的無服務器實作。
像 AWS 一樣,他們使用 lambda 來提供無服務器功能。節省成本的好方法,您無需維護資源。
現在來回答您的問題,如果您選擇 aws 平臺,然后在 lambda 函式中撰寫您的代碼段,然后使用 cloudWatch 事件觸發/運行該函式。(在特定時間觸發)。
祝你好運。
uj5u.com熱心網友回復:
您正在尋找容器編排。一種選擇是在 AWS 上使用 ECS,但更簡單的選擇是 Lambda(使用 Docker) Eventbrdige。您也可以選擇使用 Cloudwatch 而不是事件橋接器,但是 afaik EventBrdige 是一種改進的方式,可以完成您可以使用 Cloudwatch 完成的作業,但是,存在一些差異 - https://aws.amazon.com/blogs/compute/升級到 amazon-eventbridge-from-amazon-cloudwatch-events/
您可以通過 ECS 路線,但它會更復雜和耗時,如果 Lambda 符合您的目的,那么對您來說會方便得多。
Lambda 還支持 Docker 鏡像,或者您可以使用您選擇的語言進行編碼。
此外,這些服務特定于 AWS,但幾乎所有云托管提供商和許多第三方 SaaS 應用程式都會提供類似的功能,如果您感興趣的話。
uj5u.com熱心網友回復:
也許您想嘗試一下“Kubernetes CronJobs”。
容器的日常作業可能如下所示:
apiVersion: batch/v1beta1 ## The version of the Kubernetes API
kind: CronJob ## The type of object for Cron jobs
metadata:
name: cron-test
spec:
schedule: "0 12 */1 * *" ## Defined schedule using the *nix style cron syntax
jobTemplate:
spec:
template:
spec:
containers:
- name: cron-test
image: YOUR_IMAGE ## Image used
args:
- /bin/sh
- -c
- date; echo Hello this is Cron test
restartPolicy: Never
完整的細節可以在Kubernetes CronJob 網頁上找到
uj5u.com熱心網友回復:
解決這個問題的一種方法是:
- 在 ECS 中有一個容器。
- 創建 EventBridge 規則。
- 當您從 API 獲取日期時,更新 EventBridge 規則計劃。
- EventBridge 規則在預定時間觸發。容器運行。
以編程方式重復 3-4。
例如,通過更新 EventBridge 規則
- AWS CLI:
aws events put-rule --name <RULE_NAME> --schedule-expression <CRON_VALUE> --role-arn <IAM_ROLE_ARN>
您可以通過這種方式輕松獲得 cron 值:
#!/bin/bash
_DATESTR='2018-05-15 17:30:00'
echo "date format: ${_DATESTR}"
echo "cron format: ${_DATESTR:14:2} ${_DATESTR:11:2} ${_DATESTR:8:2} ${_DATESTR:5:2} *"
# output:
# $ date format: 2018-05-15 17:30:00
# $ cron format: 30 17 15 05 *
### Code credit to Leslie: https://stackoverflow.com/questions/50349770/date-format-to-cron-dormat-conversion
注意:這不是一個好的做法,因為 EventBridge 將是一個嚴重的限制因素 - 僅在所需的時間呼叫容器的執行,一次一個。這將運行限制為單個容器呼叫。
如果您需要更好的并發調度方法,您可以在 EC2 中設定 Docker 并使用at命令進行調度。參見示例:https : //www.redhat.com/sysadmin/single-use-cron
uj5u.com熱心網友回復:
您可以使用 aws ECS(彈性容器服務)來運行預定的容器化作業負載,這些作業負載托管在 ec2 實體、外部設備或 AWS Fargate 上的無服務器上。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduling_tasks.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/380782.html
