如何为MacOS运行EC2经典资源查找器脚本并为脚本创建适当的IAM用户?



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

  1. 通过下载最新的macOS 64位universal2安装程序安装最新版本的Python
  2. 遵循安装步骤,并确保执行最后一步——双击"Install Certificates.command">

安装pip和Boto3

  1. 打开终端(CMD-SPACE>"Terminal"
  2. 键入以下命令并每次输入(感谢Youtube上的roktech):
    1. 下载pip:curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    2. 安装pip:python3 get-pip.py
    3. Install Boto3:pip install boto3

安装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),然后保存:

接下来,使用策略

添加一个新用户
  1. 进入"用户"目录;和"添加用户"。
  2. 输入用户名(例如EC2ClassicResourceFinderScriptUser),并将新创建的策略附加到该用户。
  3. 在"选择AWS访问类型"下,选择"访问键-编程访问">
  4. 执行其余步骤并保存,复制AWS访问密钥AWS秘钥当提供。

在AWS CLI上设置IAM用户

  1. 再次打开终端,输入aws configure
  2. 当提示时,输入AWS访问密钥和秘密密钥,以及默认区域(例如us-east-1)。对于输出格式,输入table(这将导致运行脚本后输出CSV文件)。

下载并运行脚本(!)

  1. 将原始脚本下载到桌面
  2. 再次打开终端并切换到桌面目录(例如cd desktop)
  3. 输入ls并确保py-Classic-Resource-Finder.py脚本存在。
  4. 然后输入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文件是否有任何问题。

最新更新