EC2 Classic Resource Finder脚本是AWS推荐的脚本,用于检查您可能在EC2-Classic网络上的AWS中使用的任何资源。EC2-Classic正在"停产"。截至22年8月15日。
我从未使用过Python, pip或Boto3,我想记录一下我是如何在我的Macbook上设置和运行脚本的,以防它会在8/15截止日期之前帮助其他人。我想随着截止日期的临近,有些人可能会手忙脚的,希望这能帮你节省几个小时。
这假设您使用的是最新版本的MacOS(我使用的是Monterrey 12.4,但我怀疑早期版本的工作方式相同),并且可以访问您的AWS帐户,并能够创建新的IAM用户。
脚本要求Boto3Python的AWS SDK。当然,这也需要Python以及Pip (Python的包安装程序)。
安装Python
- 通过下载最新的macOS 64位universal2安装程序安装最新版本的Python 遵循安装步骤,并确保执行最后一步——双击"Install Certificates.command">
安装pip和Boto3
- 打开终端(CMD-SPACE>"Terminal"
- 键入以下命令并每次输入(感谢Youtube上的roktech):
- 下载pip:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
- 安装pip:
python3 get-pip.py
- Install Boto3:
pip install boto3
- 下载pip:
安装AWS CLI
这将加快设置您的AWS凭据与Boto3。安装文件在AWS CLI界面右侧。
在您的AWS帐户中创建适当的IAM用户
为了执行Python脚本,您需要在AWS帐户中创建一个具有必要权限的IAM用户。有很多方法可以设置IAM用户,但是,我的简单方法是:
创建一个特定于脚本需要的IAM策略。
Github自述文件列出了IAM用户需要的资源,但不只是给你直接的JSON策略。这里是:
登录AWS,输入"IAM"在顶部栏搜索,选择"iam";在"服务"项下,则为"政策"。在左侧栏菜单上。然后创建一个新策略. 点击"json";选项卡,并在文本区输入以下JSON。
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"autoscaling:DescribeAutoScalingGroups",
"datapipeline:GetPipelineDefinition",
"datapipeline:ListPipelines",
"ec2:DescribeAccountAttributes",
"ec2:DescribeAddresses",
"ec2:DescribeInstances",
"ec2:DescribeRegions",
"ec2:DescribeSecurityGroups",
"ec2:DescribeVpcClassicLink",
"elasticbeanstalk:DescribeConfigurationSettings",
"elasticbeanstalk:DescribeEnvironments",
"elasticache:DescribeCacheClusters",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticmapreduce:DescribeCluster",
"elasticmapreduce:ListBootstrapActions",
"elasticmapreduce:ListClusters",
"elasticmapreduce:ListInstanceGroups",
"rds:DescribeDBInstances",
"redshift:DescribeClusters",
"opsworks:DescribeStacks",
"sts:GetCallerIdentity"
],
"Resource": [
"*"
]
}
]
}
注意:如果您使用的是"Elastic beanstalk",您还需要以类似的方式在上面的Actions
数组中为自述文件添加其他项目符号资源。
EC2ClassicResourceFinderScriptPolicy
),然后保存:
接下来,使用策略
添加一个新用户- 进入"用户"目录;和"添加用户"。
- 输入用户名(例如
EC2ClassicResourceFinderScriptUser
),并将新创建的策略附加到该用户。 - 在"选择AWS访问类型"下,选择"访问键-编程访问">
- 执行其余步骤并保存,复制AWS访问密钥和AWS秘钥当提供。
在AWS CLI上设置IAM用户
- 再次打开终端,输入
aws configure
- 当提示时,输入AWS访问密钥和秘密密钥,以及默认区域(例如
us-east-1
)。对于输出格式,输入table
(这将导致运行脚本后输出CSV文件)。
下载并运行脚本(!)
- 将原始脚本下载到桌面
- 再次打开终端并切换到桌面目录(例如
cd desktop
) - 输入
ls
并确保py-Classic-Resource-Finder.py
脚本存在。 - 然后输入
python3 py-Classic-Resource-Finder.py
运行脚本。您应该看到一些日志输出,如下所示:
Checking for Classic OpsWorks stacks in ap-southeast-2
Checking for Classic EMR clusters in ap-southeast-1
Checking for Classic EMR clusters in eu-west-1
Checking for Classic EMR clusters in sa-east-1
Checking for Classic Data Pipelines in ap-southeast-2
Checking for Classic OpsWorks stacks in eu-west-1
Checking for Classic OpsWorks stacks in ap-southeast-1
Checking for Classic OpsWorks stacks in sa-east-1
Checking for Classic Data Pipelines in eu-west-1
完成后,您应该在桌面上看到一个带有随机数的新文件夹。打开此文件夹以查看CSV文件输出。这些CSV文件将列出仍在EC2-Classic上运行的所有AWS资源。如果一个特定的文件是空的,这意味着您没有在EC2-Classic上运行任何具有CSV文件名中指定的特定服务的东西。
另外,一定要在运行期间检查..._Errors.txt
文件是否有任何问题。