覆盖 AWS Batch 计算环境的 EC2 映像 ID - 在 AWS CDK 堆栈上

问题描述 投票:0回答:1

我正在使用 AWS CDK(适用于 Python)创建 CloudFormation 堆栈,其主要组件之一是批处理计算环境,它应该运行 GPU 密集型作业。

批处理作业根本无法使用 GPU,除非我在手动创建批处理计算环境时手动设置

EC2 configuration
下的
Additional configuration
选项(参见下图)。

现在,我不想手动执行此操作,我希望能够在我的 CDK 堆栈中定义它。现在,我有这样的事情:

ecs_machine_image = batch.EcsMachineImage(
    # image="ami-0d625ab7e92ab3a43",
    image_type=batch.EcsMachineImageType.ECS_AL2_NVIDIA
)

compute_env_1 = batch.ManagedEc2EcsComputeEnvironment(
    scope=self,
    id=f"{stack_id}-compute-env",
    vpc=vpc,
    instance_types=[
        ec2.InstanceType("g4dn.2xlarge"),
    ],
    images=[ecs_machine_image],
    maxv_cpus=32,
    minv_cpus=0,
    security_groups=[security_group],
    service_role=batch_service_role,
    instance_role=ecs_instance_role,
)

评论

# image="ami-0d625ab7e92ab3a43"
是为了说明我认为可以将AMI图像ID直接传递给
batch.EcsMachineImage
,但事实并非如此。

总而言之,我的问题是:使用 AWS CDK 配置,如何定义供批处理计算环境中运行的所有作业使用的特定 AMI 映像?

amazon-ec2 gpu aws-cdk amazon-ami aws-batch
1个回答
1
投票

image
属性接受IMachineImage接口类型。 EC2 MachineImage 类有一个静态方法 generic_linux,它接受按区域划分的 AMI 映射并返回预期的
IMachineImage
:

image=ec2.MachineImage.generic_linux({'us-east-1': 'ami-12345678'})
© www.soinside.com 2019 - 2024. All rights reserved.