如何使用boto3创建ec2实例

Mik*_*ikA 20 python amazon-ec2 boto amazon-web-services boto3

是否可以在python中使用boto3创建ec2实例?Boto3文档在这里没有帮助,我在网上找不到任何帮助文档.请提供一些示例代码/链接.

gbs*_*gbs 31

API已更改,但它正好在文档中

# Boto 3
ec2.create_instances(ImageId='<ami-image-id>', MinCount=1, MaxCount=5)
Run Code Online (Sandbox Code Playgroud)

链接到文档:http: //boto3.readthedocs.org/en/latest/guide/migrationec2.html#launching-new-instances

  • 它应该接受`SecurityGroups = ['secgroup',..]`关键字参数.这个[问题](https://github.com/boto/boto3/issues/136)似乎暗示`create_instances`在幕后运行经典的boto2`run_instances`,因此`run_instances`的原始参数应该是有效的.参见[文档](http://botocore.readthedocs.org/en/latest/reference/services/ec2.html#EC2.Client.run_instances) (2认同)

cha*_*id1 7

您在文档中真正寻找的链接是create_instances()ServiceResource对象方法.如果您创建这样的EC2资源,这是您正在调用的对象类型:

s = boto3.Session(region_name="us-west-1")
ec2 = s.resource('ec2')
...
instance = ec2.create_instances(**y_kwargs)
Run Code Online (Sandbox Code Playgroud)

这包含更详细的示例和更长的可用参数列表.

您还可以使用AWS命令行界面获取已在运行的AWS实例的参数值:

$ aws ec2 describe-instances
Run Code Online (Sandbox Code Playgroud)

这将打印出一个JSON文件,从中可以提取相关参数并将其传递给create_instances()方法.(或者,您可以使用boto客户端并调用该describe_instances()方法.)

(注意:如果您想知道客户端和资源之间的区别是什么,它们为同一端服务的目的不同 - 客户端是较低级别的接口,而资源是较高级别的接口.)

  • 感谢您解释客户端和资源之间的差异! (2认同)

cap*_*ack 5

您可以运行boto3 docs中使用的代码。您可以根据需要添加或删除参数,但这通常是您需要的:

import boto3

client = boto3.client('ec2', region_name='us-west-2')

response = client.run_instances(
    BlockDeviceMappings=[
        {
            'DeviceName': '/dev/xvda',
            'Ebs': {

                'DeleteOnTermination': True,
                'VolumeSize': 8,
                'VolumeType': 'gp2'
            },
        },
    ],
    ImageId='ami-6cd6f714',
    InstanceType='t3.micro',
    MaxCount=1,
    MinCount=1,
    Monitoring={
        'Enabled': False
    },
    SecurityGroupIds=[
        'sg-1f39854x',
    ],
)
Run Code Online (Sandbox Code Playgroud)