簡體   English   中英

如何在運行時更改 AWS Batch 的根卷大小

[英]How do I change root volume size of AWS Batch at runtime

我有一個向 AWS 發出請求以啟動批處理作業的應用程序。 工作各不相同,因此每個工作的資源需求都會發生變化。

很清楚如何更改 CPU 和 memory,但是我無法弄清楚如何指定根卷大小,或者甚至可能

這是我正在運行的代碼示例:

import boto3

client = boto3.client('batch')

JOB_QUEUE = "job-queue"
JOB_DEFINITION="job-definition"



container_overrides = {
    'vcpus': 1,
    'memory': 1024,
    'command': ['echo', 'Hello World'],
    # 'volume_size': 50 # this is not valid
    'environment': [ # this just creates env variables
        {
            'name': 'volume_size',
            'value': '50'
        }
    ]
}


response = client.submit_job(
    jobName="volume-size-test",
    jobQueue=JOB_QUEUE,
    jobDefinition=JOB_DEFINITION,
    containerOverrides=container_overrides)

我的問題與類似但是我特別詢問這在運行時是否可行。 我可以更改啟動模板,但這並不能解決發出請求時能夠指定所需資源的問題。 除非解決方案是創建多個啟動模板,然后在運行時創建 select,盡管這看起來不必要地復雜

為此,您可以使用AWS Elastic File System EFS 卷可以安裝到為您的作業定義創建的容器中。 EFS 不需要您提供特定的卷大小,因為它會根據使用情況自動增長和收縮。

您需要通過efsVolumeConfiguration 屬性在作業定義中指定 Amazon EFS 文件系統

{
  "containerProperties": [
    {
      "image": "amazonlinux:2",
      "command": [
        "ls",
        "-la",
        "/mount/efs"
      ],
      "mountPoints": [
        {
          "sourceVolume": "myEfsVolume",
          "containerPath": "/mount/efs",
          "readOnly": true
        }
      ],
      "volumes": [
        {
          "name": "myEfsVolume",
          "efsVolumeConfiguration": {
            "fileSystemId": "fs-12345678",
            "rootDirectory": "/path/to/my/data",
            "transitEncryption": "ENABLED",
            "transitEncryptionPort": integer,
            "authorizationConfig": {
              "accessPointId": "fsap-1234567890abcdef1",
              "iam": "ENABLED"
            }
          }
        }
      ]
    }
  ]
}

參考: https://docs.aws.amazon.com/batch/latest/userguide/efs-volumes.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM