我陷入了一个独特的场景,非常感谢相关人员的一些帮助 .

我正在编写一个python脚本,它在rds中备份快照并将日志存储在ec2实例中 . 我遇到的问题是我没有测试ec2实例设置,它存储所有日志,如 生产环境 ec2实例 . 目前我无法测试ec2实例,这就是我使用解决方法的原因 . 请不要问我为什么不使用S3存储桶或cloudwatch存储日志,因为我不负责架构 .

我在测试复制时使用的方法是使用一个名为moto https://github.com/spulec/moto的库,它将aws调用模拟到boto3库http://boto3.readthedocs.io/

我希望能够模拟ec2实例,将我的脚本上传到实例,然后运行我的脚本以查看它是否将日志存储在实例中 .

import boto3
from moto import mock_ec2


def add_servers(ami_id, count):
  client = boto3.client('ec2', region_name='ap-southeast-2')
  client.run_instances(ImageId=ami_id, MinCount=count, MaxCount=count, UserData=cmd)

@mock_ec2
def test_add_servers():
  add_servers('<my-ami-id>', 1)

  client = boto3.client('ec2', region_name='ap-southeast-2')
  instances = client.describe_instances()['Reservations'][0] .['Instances']
  assert len(instances) == 1
  instance1 = instances[0]
  assert instance1['ImageId'] == '<my-ami-id>'

test_add_servers()

任何帮助,将不胜感激 . 到目前为止,我有这个代码来创建一个模拟ec2实例,我感兴趣的是将python脚本上传到这个本地实例并运行存储日志的脚本 .

如果我必须ssh到实例中我也很好,但我不认为这可能是必要的 .

无论如何,提前谢谢 .