在EC2内为自己的EBS磁盘扩容

在EC2内可为自己的EBS磁盘扩容,而不需要通过AWS Console网页界面控制台。前提是:

  • 本机是Cloud9云端IDC开发环境,内置有关权限和role
  • 本EC2已经安装AWSCLI并且配置了AKSK,且AKSK对应的IAM User是具有本Region EC2服务修改配置的权限
  • 本EC2挂载了EC2 Profile对应了一个IAM Role,这个IAM Role具有操作EC2服务修改配置的权限

在满足这些前提的情况下,在EC2上执行如下命令:

pip3 install --user --upgrade boto3
export instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
python3 -c "import boto3
import os
from botocore.exceptions import ClientError 
ec2 = boto3.client('ec2')
volume_info = ec2.describe_volumes(
    Filters=[
        {
            'Name': 'attachment.instance-id',
            'Values': [
                os.getenv('instance_id')
            ]
        }
    ]
)
volume_id = volume_info['Volumes'][0]['VolumeId']
try:
    resize = ec2.modify_volume(    
            VolumeId=volume_id,    
            Size=80
    )
    print(resize)
except ClientError as e:
    if e.response['Error']['Code'] == 'InvalidParameterValue':
        print('ERROR MESSAGE: {}'.format(e))"
if [ $? -eq 0 ]; then
    sudo reboot
fi

按回车键确认并重启。重启后可使用 df -h 命令即可看到硬盘完成扩容。