使用Python启动 AWS EC2 实例
在本文中,我们将了解如何使用Python来创建和管理 Amazon Web Services (AWS),例如 Elastic Compute Cloud (EC2)、Simple Storage Service (S3)、Relational Database Service (RDS)。为此,我们将使用Python的 boto3 库,Boto 是一个Python包,它为 Amazon Web Services (AWS) 提供接口。
先决条件:
- 具有权限的 AWS 账户
- EC2 基础知识
在Python中安装 boto3 :
default version : pip install boto3
specific version : python3 -m pip install boto3 (as python3 in this case)
设置 AWS EC2 控制台:
为了从Python代码访问 AWS 服务,我们首先需要创建一个用户并使用 Amazon 控制台为他提供编程访问权限。
- 启动 IAM 控制台
- 添加用户
- 然后提供用户名并以编程方式访问它,然后单击下一步。
- 现在提供与用户相关的必要权限,这个用户可能属于一个组,他们的策略可以直接附加到用户,或者我们可以复制现有用户的策略,或者我们可以直接附加现有策略打算在这里提供。
- 标签是可选的,我们可以跳过它,查看权限,最后创建用户。下载 CSV,因为这是最后一次可供下载,该文件包含访问密钥 ID 和密钥,接下来将在代码中使用。
现在我们都准备好使用Python代码启动我们的 EC2 实例了。为了与 EC2 实例建立连接,我们使用 boto3 的客户端 API。客户端 API 接受以下参数以与 AWS 服务建立连接。
- 服务名称:必须建立连接的服务。
- 区域: Amazon EC2 托管在全球多个位置。根据我们的需要,我们可以选择我们的地区,我们以亚太地区为我们的地区('ap-south-1')。
- aws_access_key_id: AWS 安全凭证。将下载的 ID 粘贴到空白处。
- aws_secret_access_key: AWS 安全凭证。将下载的密钥粘贴到空白处。
执行:
Python3
#Python Program for creating a connection
import boto3
ec2 = boto3.client('ec2',
'ap-south-1',
aws_access_key_id='',
aws_secret_access_key='')
#This function will describe all the instances
#with their current state
response = ec2.describe_instances()
print(response)
Python3
#Python Program for creating a connection
import boto3
#Function for connecting to EC2
ec2 = boto3.client('ec2',
'ap-south-1',
aws_access_key_id='',
aws_secret_access_key='')
#Function for running instances
conn = ec2.run_instances(InstanceType="t2.micro",
MaxCount=1,
MinCount=1,
ImageId="ami-02d55cb47e83a99a0")
print(conn)
输出
创建实例:
ec2.run_instances使用您有权访问的 AMI 启动指定数量的实例。它提供了多种启动配置,但我们可以使用以下几个参数启动实例。
- InstanceType:您指定的实例类型决定了用于您的实例的主机的硬件。每种实例类型提供不同的计算、内存和存储能力,并根据这些能力分组为实例系列。但是,AWS 在免费套餐限制中免费提供“t2.micro”。
- MaxCount:要启动的最大实例数。如果 MaxCount > 目标可用区中的可用实例,则它会启动大于 MinCount 的最大实例数。
- MinCount:要启动的最小实例数。如果目标可用区中的可用实例 < MinCount,则不会启动任何实例。
- ImageId:用于启动实例的 AMI 的 ID。对于我们的案例,我们选择了 Ubuntu Server 18.04 LTS (HVM),SSD 卷类型 (ami-02d55cb47e83a99a0)。
执行:
Python3
#Python Program for creating a connection
import boto3
#Function for connecting to EC2
ec2 = boto3.client('ec2',
'ap-south-1',
aws_access_key_id='',
aws_secret_access_key='')
#Function for running instances
conn = ec2.run_instances(InstanceType="t2.micro",
MaxCount=1,
MinCount=1,
ImageId="ami-02d55cb47e83a99a0")
print(conn)
输出