首页 > 其他分享 >脚本管理AWS-EC2

脚本管理AWS-EC2

时间:2024-07-15 17:29:43浏览次数:13  
标签:脚本 instance AWS boto3 instances client EC2 response ec2

这里使用python SDK boto3,文档:

https://aws.amazon.com/sdk-for-python/

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html

安装

pip3 install boto3

配置

cd
mkdir .aws
vim ~/.aws/credentials
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
region=ap-northeast-1

然后进入AWS EC2 console,点击右上角的下拉框,点击里面的security credentials,在里面创建access key和对应的secret key,其中secret key只在创建的时候显示,一定要妥善保存,丢失后只能再创建一个新的。

EC2 client

官方示例:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/ec2-example-managing-instances.html

import boto3
client = boto3.client('ec2')

下面介绍一些常用的。

describe_instances

import json5

response = client.describe_instances(
    InstanceIds=[
        sys.argv[1],
    ],  
)
print(json5.dumps(
    response,
    indent=4,
    # https://stackoverflow.com/a/36142844/13688160
    default=str
))

打印private IP

response = client.describe_instances(
    InstanceIds=[
        sys.argv[1],
    ],  
)
response = response['Reservations']
assert len(response) == 1
response = response[0]
instances = response['Instances']
assert len(instances) == 1
instance = instances[0]
print(instance['PrivateIpAddress'])

打印instance个数

response = client.describe_instances(
    Filters=[
        {
            'Name': 'instance-state-name',
            'Values': [
                'pending',
                'running',
                'shutting-down',
                'stopping',
                'stopped',
            ]
        },
    ],  
)
reservations = response['Reservations']
print(len(reservations))
for reservation in reservations:
    assert len(reservation['Instances']) == 1

run_instances

创建实例。

response = client.run_instances(
    BlockDeviceMappings=[
        {
            'DeviceName': '/dev/nvme0n1',
            'Ebs': {
                'DeleteOnTermination': True,
                'Iops': 16000,
                'VolumeSize': 512, # GiBs
                'VolumeType': 'gp3',
                'Throughput': 600, # MiB/s
                'Encrypted': False
            },
        },
    ],
    ImageId='ami-08c2888d01ed84209', # Debian 12
    InstanceType='i4i.2xlarge',
    KeyName='string',
    MinCount=1,
    MaxCount=1,
    SecurityGroupIds=[
        'string',
    ],
    TagSpecifications=[
        {
            'ResourceType': 'instance',
            'Tags': [
                {
                    'Key': 'Name',
                    'Value': '实例名',
                },
            ],
        },
    ],
    EbsOptimized=True,
)
assert len(response['Instances']) == 1
instance = response['Instances'][0]
print(instance['InstanceId'])

但是似乎不能设置hostname。

在使用前先用下面介绍的wait_until_exists等待instance成功创建,不然会报instance不存在的错误。

Instance

import boto3
ec2 = boto3.resource('ec2')
instance = ec2.Instance('id')

wait_until_exists

instance.wait_until_exists()

wait_until_running

来源:https://stackoverflow.com/questions/19054081/ec2-waiting-until-a-new-instance-is-in-running-state

terminate_instances

client.terminate_instances(
    InstanceIds=[
        'string',
    ],
)

标签:脚本,instance,AWS,boto3,instances,client,EC2,response,ec2
From: https://www.cnblogs.com/searchstar/p/18303606

相关文章

  • 运维脚本备忘录
    shell巡检#!/bin/bash#Debian12.5exportPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/binsource/etc/profileif[$(id-u)-gt0];thenecho"Executethescriptatroot"exit1fi#获取IP地址IPADDR=$(hostname-I......
  • SFTP一键添加脚本 (Duplicated 2024-07-15 12:39:10)
    創建腳本vimonekey_for_sftpuser.sh腳本內容#!/bin/bash#获取当前日期和时间CURRENT_DATE=$(date'+%Y年%m月%d日%H:%M:%S')echoecho"——————————————————————————————————————————————————————"echo"••......
  • SFTP一键添加脚本 (Duplicated 2024-07-15 12:39:10)
    創建腳本vimonekey_for_sftpuser.sh腳本內容#!/bin/bash#获取当前日期和时间CURRENT_DATE=$(date'+%Y年%m月%d日%H:%M:%S')echoecho"——————————————————————————————————————————————————————"echo"••......
  • 按键精灵,魔兽世界自动寻路实现脚本及思路
    软件umi截图插件,excel,按键精灵,神梦dll思路先移动一段距离通过计算斜率,换算成角度,判断最终转向脚本Function对接umiocr(图片路径)DimURL,JsonData,json,username,password,base64URL="http://192.168.1.40:1224/api/ocr"Import"SmHTTP.dll"SetSm......
  • 如何理解electron 的预加载脚本
    在Electron应用中,预加载脚本(PreloadScript)是一个非常重要的概念,它允许你在渲染进程(web页面)和主进程之间创建一个安全的桥梁。预加载脚本运行在Node.js环境中,但位于渲染进程的一个单独的上下文中,这意味着它可以访问Node.js的API,但无法直接访问DOM。这种设计使得预......
  • aws cdn cloudfront+ssl证书 配置
    1、打开cloudfront控制台,点击“创建分配”https://us-east-1.console.aws.amazon.com/cloudfront/v4/home?region=us-east-1#/distributions在创建界面选择创建好的负载均衡然后协议选择仅https或匹配查看器到证书的地方点击"请求证书" 然后直接点下一步就好填入,*.域......
  • 【Playwright+Python】手把手带你写一个自动化测试脚本
     如何使用代理方式打开网页 在playwright.chromium.launch()中传入proxy参数即可,示例代码如下:1、同步写法:fromplaywright.sync_apiimportsync_playwrightproxy={'server':'http:/127.0.0.1:8080'}defrun():withsync_playwright()asp:......
  • 【JavaScript脚本宇宙】解密六大Node.js消息队列库:选对工具,事半功倍
    从Bull到NSQ:探索Node.js消息队列库的全貌前言在现代软件开发中,消息队列是一种常见的通信模式,用于实现异步任务处理、解耦系统组件、以及实现可靠的事件驱动架构。Node.js作为一个流行的后端开发平台,有许多优秀的消息队列库可以供开发者选择和使用。本文将介绍六个流行的No......
  • 【Python】自动化抢票脚本【某麦网】
    1.脚本介绍1.1背景介绍在这个数字化时代,演唱会、体育赛事和各种活动的门票销售往往在线上进行。由于热门活动的高需求和门票的有限供应,抢票成为了一场激烈的竞争。许多粉丝和爱好者经常因为手速不够快或网络延迟而错失购票机会。为了提高抢票的成功率,自动化抢票脚本应运......
  • VPS测试脚本,网络线路,路由测试,流媒体服务器测试脚本
    ​收集了一些服务器测试脚本,测试性能,网络以及解锁Netflix等服务。记录收集一下,特此记录。 yabs测试脚本wget-qO-yabs.sh|bash老外比较爱用的服务器性能测试脚本。一键查看独服硬盘时间wget-qhttps://github.com/Aniverse/A/raw/i/a&&basha一键查看独立服务器通电......