如何查找AMI ID以用于L1实例构造



我想查找一个AMI ID,以便创建一个实例。

我被迫使用L1结构,所以我不能使用LookupMachineImage:

name = f'{name_prefix}-Workstation'
ec2_instance = ec2.CfnInstance(
self,
name,
instance_type=ec2.InstanceType('t2.micro'),
image_id=ec2.LookupMachineImage(name='AmazonLinux2-x86-Development-Workstation-Recipe*'),
subnet_id=public_subnet_e.ref,
security_groups=[webserver_sec_group],
availability_zone='us-east-1e',
tags=[core.CfnTag(key="Name", value=name)]
)

这引发了一个错误:

jsii.errors.JavaScriptError: 
Error: Expected a string, got {"$jsii.byref":"@aws-cdk/aws-ec2.LookupMachineImage@10061"}

我只能通过手动查找AMI ID并将其粘贴到代码中来实现它。这有点傻。我很想开始写我自己的查找代码,因为这很简单。。。但是,如果我必须这样做,为什么我要使用CDK?我觉得我错过了一些简单的东西?

我更喜欢在CDK中使用L2构造,但我不能,因为它们基于对我不起作用的意见。特别是,L2VPC构造没有办法将其限制在特定的可用性区域。并非所有实例类型在所有可用性区域中都可用,因此我被迫使用CfnVPC,以便控制它为哪些可用性区域创建子网。

我已经阅读了几个小时的文档,似乎至少有两种方法可以进行查找。但两者似乎都不起作用。我怀疑我有概念问题而不是语法问题?我是CDK的新手,来自SAM/CloudFormation。

尝试一下:image_id=ec2.LookupMachineImage(name='AmazonLinux2-x86-Development-Workstation-Recipe*').get_image(self).image_id

最新更新