3

I'am using moto to mock aws for my application. I wondering if it is possible to create ami in moto with specific image-id (for example: ami-1a2b3c4d). Thank you!

emedentsii
  • 653
  • 1
  • 5
  • 9

2 Answers2

0

You want to use preloaded resources like this file: https://github.com/spulec/moto/blob/master/moto/ec2/resources/amis.json

You can use the following environment variable: MOTO_AMIS_PATH=/full/path/to/amis.json

This JSON-file has to be in the same format as the one linked above. Note that the environment variable has to be set before Moto is initialised - these AMI's are loaded the moment you call from moto import mock_ec2, so the environment variable has to be set before that import takes place.

(Copied from https://stackoverflow.com/a/72270977/7224682)

mRyan
  • 332
  • 4
  • 18
-1

Here is an example coming straight from the docs:

from . import add_servers
from moto import mock_ec2

@mock_ec2
def test_add_servers():
    add_servers('ami-XXXXXXX', 2)

    client = boto3.client('ec2', region_name='us-west-1')
    instances = client.describe_instances()['Reservations'][0]['Instances']
    assert len(instances) == 2
    instance1 = instances[0]
    assert instance1['ImageId'] == 'ami-XXXXXXXX'

You can choose the AMI ID to be whatever you want, there are no restrictions. I'm not sure I understand what the problem is as these are "mock" resources so they can be in any format/contain any name that you want.

caterpree
  • 591
  • 2
  • 7
  • 1
    python3.7/site-packages/moto/ec2/models.py:495: PendingDeprecationWarning: Could not find AMI with image-id:ami-fake, in the near future this will cause an error. – kivagant Nov 15 '19 at 11:34