AWS 自定义控制台视图

AWS 自定义控制台视图

我们在 AWS 上运行公司内部基础设施。目前,我(作为基础设施管理员)是唯一有权访问 AWS 控制台的人(作为根控制台用户)。

现在有一项要求,允许某些用户(来自财务部门)能够自行启动一个特定的 EC2 实例。我已经设置了权限(自定义 IAM 角色,权限仅适用于该实例)。

问题是是否有办法在 AWS 控制台中创建自定义视图。类似于 Atlassian Jira,您可以使用自定义可配置小部件定义自定义仪表板。

理想情况下,这个自定义仪表板只包含一个“打开”按钮,该按钮将连接到可打开指定实例的 AWS Lambda 函数。

然后,财务部门的用户登录并查看简化版的 AWS 控制台,而无需他们通过标准控制台进行爬取(例如,EC2 -> 实例 -> 找到正确的实例 -> 找到启动命令)

答案1

我认为这不可能。不过你还有其他选择。

1)向他们提供实例配置的直接 URL

它看起来会像这样:

https://ap-southeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-southeast-2#Instances:instanceId=i-01234567890;sort=availabilityZone

这将使他们不必通过控制台来查找正确的屏幕和正确的实例。


2)自动启动/停止实例

如果他们需要实例按照可预测的、定期的时间表运行 - 例如在工作时间、每个星期一或每月 1 日 - 您可以自动为他们启动和停止它。

这是一个简单的 CloudFormation 模板,可以完成此任务: https://github.com/mludvig/ec2-start-stop

根据您的需要进行修改。您可能希望将其指向现有的实例而不是创建一个新的;但是调度程序和 Lambda 应该是可重复使用的。


3)创建一个简单的启动/停止应用程序

如果您想在屏幕上为他们提供一个开始/停止按钮,则必须为其编写一个应用程序。它可以是一个简单的 PHP 脚本,运行于t2.nano该实例将具有适当的IAM 角色具有启动/停止目标 EC2 实例的权限。

或者如果你想完全无服务器地编写你的应用程序jQuery反应角度或者类似的东西,将其存储在 S3 上,并使其与将启动和停止财务部门实例的 Lambda 后端进行通信。同样,Lambda 将具有适当的IAM 角色具有启动/停止目标 EC2 实例的权限。

在这两种情况下,您都需要以某种方式处理用户身份验证。它可能是一个简单、共享的密码,也可能是通过 AWS Cognito 或类似方式进行全面的 AD 身份验证。


4)在笔记本电脑上创建启动/停止脚本

正如 Tim 建议安装aws-cli在他们的一台笔记本电脑上创建一个简单的start-instance脚本stop-instance。但是,如果他们使用 Windows(他们可能确实使用 Windows),如果你要求他们使用命令行,他们可能会感到害怕 :)


5)创建自助菜单系统

t2.nanoEC2 实例上创建一个本地用户,其登录脚本将显示 2 个选项:

Finance department server is currently: running

[1] Reboot
[2] Stop
[Q] Quit

Your choice [1/2/Q]: _

他们可以通过 SSH 连接到它,例如从 PuTTY(它可以全部预先配置)并简单地选择他们想要的。我有一个类似的系统,供我们的用户偶尔需要重新启动某个应用程序,但我不想给他们 shell 访问权限。


希望对你有用:)

顺便说一句,每次他们选择停止您可能还想创建一个快照,以防万一......

答案2

如果您无法按照上述建议安排实例,最简单的方法可能是在他们的 PC 上设置 AWS CLI 并使用批处理文件来启动和停止实例。您可以在他们的桌面上创建批处理文件的快捷方式,以便他们可以双击来启动或停止他们的实例。

以下是实现此目标的大致步骤。

创建 IAM 用户

创建一个具有访问密钥和密钥的 IAM 用户。您可以根据需要授予他们控制台访问权限,但这不是必需的。

确保 IAM 用户仅具有启动/停止该实例所需的权限。

在他们的 PC 上安装 AWS CLI

步骤安装 CLI(使用链接,因为它比这个答案更为最新):

  1. 下载安装程序

  2. 安装Python

  3. 设置路径(更多详细信息请参见上面的链接)

  4. 配置访问凭据

运行“aws configure”命令,然后插入您的密钥和区域。

> aws configure

AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json

创建两个批处理文件

启动实例

aws ec2 start-instances --instance-ids i-1234567890abcdef0

停止实例

aws ec2 stop-instances --instance-ids i-1234567890abcdef0

相关内容