Moto 如何创建 EC2 实例 - InvalidAMIID.NotFound
Moto how to create EC2 instance - InvalidAMIID.NotFound
使用 moto 您如何创建 EC2 实例,因为没有可用于启动实例的 AMI。
这个 repo 似乎是“预加载”稍后在测试中使用的 AMI,但我不确定它们是如何创建的
https://github.com/spulec/moto/blob/master/tests/test_ec2/test_instances.py#L25
https://github.com/spulec/moto/blob/master/moto/ec2/resources/amis.json
我试过调用 .describe_images(Owners=["amazon"])
,但是,在 run_instances 调用中使用时返回的所有 AMI 都出现以下错误。
from moto import mock_ec2
@mock_ec2
def Test_create_ec2():
boto3.client('ec2').run_instances(ImageId="ami-1234abcd", MinCount=1, MaxCount=1)
botocore.exceptions.ClientError: An error occurred (InvalidAMIID.NotFound) when calling the RunInstances operation: The image id '[ami-1234abcd]' does not exist
此问题还涉及未解决的问题How to create ami with specific image-id using moto?
对 describe_images
的调用确实给出了所有可用 ImageId 的列表。
以下测试适用于 Moto 的当前开发分支:
@mock_ec2
def test_all_images():
client = boto3.client("ec2", region_name="us-east-1")
images = client.describe_images(Owners=["amazon"])["Images"]
for image in images:
client.run_instances(ImageId=image["ImageId"], MinCount=1, MaxCount=1)
预加载的图片来自这个文件:
https://github.com/spulec/moto/blob/master/moto/ec2/resources/amis.json
如果你想替换你自己的AMI,你可以使用以下环境变量:
MOTO_AMIS_PATH=/full/path/to/amis.json
此 JSON-file 必须与上面链接的格式相同。
请注意,必须在初始化 Moto 之前设置环境变量 - 这些 AMI 在您调用 from moto import mock_ec2
时加载,因此必须在导入之前设置环境变量。
使用 moto 您如何创建 EC2 实例,因为没有可用于启动实例的 AMI。 这个 repo 似乎是“预加载”稍后在测试中使用的 AMI,但我不确定它们是如何创建的 https://github.com/spulec/moto/blob/master/tests/test_ec2/test_instances.py#L25 https://github.com/spulec/moto/blob/master/moto/ec2/resources/amis.json
我试过调用 .describe_images(Owners=["amazon"])
,但是,在 run_instances 调用中使用时返回的所有 AMI 都出现以下错误。
from moto import mock_ec2
@mock_ec2
def Test_create_ec2():
boto3.client('ec2').run_instances(ImageId="ami-1234abcd", MinCount=1, MaxCount=1)
botocore.exceptions.ClientError: An error occurred (InvalidAMIID.NotFound) when calling the RunInstances operation: The image id '[ami-1234abcd]' does not exist
此问题还涉及未解决的问题How to create ami with specific image-id using moto?
对 describe_images
的调用确实给出了所有可用 ImageId 的列表。
以下测试适用于 Moto 的当前开发分支:
@mock_ec2
def test_all_images():
client = boto3.client("ec2", region_name="us-east-1")
images = client.describe_images(Owners=["amazon"])["Images"]
for image in images:
client.run_instances(ImageId=image["ImageId"], MinCount=1, MaxCount=1)
预加载的图片来自这个文件: https://github.com/spulec/moto/blob/master/moto/ec2/resources/amis.json
如果你想替换你自己的AMI,你可以使用以下环境变量:
MOTO_AMIS_PATH=/full/path/to/amis.json
此 JSON-file 必须与上面链接的格式相同。
请注意,必须在初始化 Moto 之前设置环境变量 - 这些 AMI 在您调用 from moto import mock_ec2
时加载,因此必须在导入之前设置环境变量。