[TOC] # EC2 ## 任务 1:启动 Amazon EC2 实例 :::success - **step 1 : 進入頁面,點選EC2** ![](https://hackmd.io/_uploads/r1kTAPF-p.png) <font color=#f00>(note : region must in N. Virginia)</font> - **step 2 : 創建實例** 下拉到Lanch Instance點擊 ![](https://hackmd.io/_uploads/r18Dy_FW6.png) - **step 3 : configuration** 名稱和標籤 : ![](https://hackmd.io/_uploads/r13DluFWa.png) 選擇想要的作業系統 ![](https://hackmd.io/_uploads/BJZE-dY-T.png) 選擇自己需要的規格 ![](https://hackmd.io/_uploads/HkqY-OKWT.png) 選擇密鑰 ![](https://hackmd.io/_uploads/BJ1mMutWT.png) 網路設置 點擊`Edit` 選擇不同的VPC會有不同數量的IP分配 ![](https://hackmd.io/_uploads/ByugQOF-T.png) 配置虛擬的防火牆 ![](https://hackmd.io/_uploads/SJ6D7uY-T.png) 把默認的規則remove掉,點擊`remove` ![](https://hackmd.io/_uploads/SJQCX_YWa.png) 配置存儲 ![](https://hackmd.io/_uploads/HkYH4_Kba.png) 點擊`Advanced details`对于 Termination protection(终止保护),请选择 Enable(启用)。啟用狀態下,沒辦法刪除該實例,讓其不會意外刪除找不回裡面的東西。 ![](https://hackmd.io/_uploads/ryyMHdtZT.png) 滾到底部輸入 ``` #!/bin/bash dnf install -y httpd systemctl enable httpd systemctl start httpd echo '<html><h1>Hello From Your Web Server!</h1></html>' > /var/www/html/index.html ``` ![](https://hackmd.io/_uploads/SJk9ButZT.png) 點擊`Lanuch instance`,see success after. ![](https://hackmd.io/_uploads/SJQiLuY-p.png) - **step 4 : 啟動實例** 下拉到底部點擊`View all instances` ![](https://hackmd.io/_uploads/HJl_Xv_Ybp.png) 选择 View all instances(查看所有实例) 在 Instances(实例)列表中,选择 Web Server。 ![](https://hackmd.io/_uploads/BJEaPdt-6.png) 查看 Details(详细信息)标签页中显示的信息。其中包括有关实例类型、安全设置和网络设置的信息。 ![](https://hackmd.io/_uploads/ryZyOdKZ6.png) ::: ## 任务 2:监控实例 :::success - **status check** - 监控是保持 Amazon Elastic Compute Cloud (Amazon EC2) 实例和 AWS 解决方案的可靠性、可用性和性能的重要一环。 - 通过实例状态监控,您可以快速确定 Amazon EC2 是否检测到任何可能阻止实例运行应用程序的问题。Amazon EC2 对每个正在运行的 EC2 实例执行自动检查,从而识别硬件和软件问题。 ![](https://hackmd.io/_uploads/SkjjuuFWp.png) <font color=#f00>note : 此实例已通过 System reachability(系统可到达性)和 Instance reachability(实例可到达性)检查。</font> - **Monitoring** ![](https://hackmd.io/_uploads/Hye7tOK-a.png) - **系统日志** ![](https://hackmd.io/_uploads/ryq1c_KWp.png) 系统日志对于解决内核问题和服务配置问题特别有用,这些问题可能会导致实例在其 SSH daemon 启动之前终止或无法访问。 ![](https://hackmd.io/_uploads/rkamcutZa.png) ::: ## 任务 3:更新安全组并访问 Web 服务器 :::success 點擊`Network`觀察public IP. ![](https://hackmd.io/_uploads/SkcIo_KZT.png) 不能訪問<font color="#f00">public IP</font>,因為沒有設置規則。 ![](https://hackmd.io/_uploads/By_ghdKZT.png) 選擇web server group,輸入規則。 ![](https://hackmd.io/_uploads/HkvU2uFZT.png) 點擊 `Inbound rules` -> `Edit inbound rules` -> `Add rule` ![](https://hackmd.io/_uploads/S1Klautb6.png) | Type(类型) | HTTP | | -------- | --------| | Source(源) | Anywhere-IPv4 | finish `Save rules` ::: ## 任务 4:调整实例大小:实例类型和 EBS 卷 :::success - 更改实例类型 點擊` Actions` -> `Instance settings` -> `Change instance type` ![](https://hackmd.io/_uploads/B1FJ-FKZ6.png) - 调整 EBS 卷的大小 ![](https://hackmd.io/_uploads/S1_d-YYZp.png) 選擇`storage` -> 點擊後 -> `Action` -> `Modify volume` ![](https://hackmd.io/_uploads/HkSIzKYZT.png) ![](https://hackmd.io/_uploads/ryJ_zYKWT.png) ::: # Lambda ![](https://hackmd.io/_uploads/HkbmB5Yba.png) - 创建一个 AWS Lambda 函数。您还会创建一个 Amazon EventBridge 事件,每分钟触发一次此函数。此函数使用 AWS Identity and Access Management (IAM) 角色。此 IAM 角色允许该函数停止在 Amazon Web Services (AWS) 账户中运行的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。 ## 任务 1:创建 Lambda 函数 :::success click` Create function` ![](https://hackmd.io/_uploads/rk_mJitZT.png) ![](https://hackmd.io/_uploads/HyAA69Y-p.png) ![](https://hackmd.io/_uploads/SyOT0ctZp.png) ![](https://hackmd.io/_uploads/BJKbJsKWT.png) ::: ## 任务 2:配置触发器 - 将配置一个计划事件来触发 Lambda 函数,事件源(或触发器)是一个 Amazon EventBridge 事件。可以将 Lambda 函数配置为像 Linux 服务器上的 cron 任务或 Microsoft Windows 服务器上的计划任务一样运行。 :::success choice `Add trigger` Select a `trigger` -> `EventBridge (CloudWatch Events)` ![](https://hackmd.io/_uploads/BykRxotWa.png) ![](https://hackmd.io/_uploads/SkkQbjYZp.png) ::: ## 任务 3:配置 Lambda 函数 :::success select `code` ![](https://hackmd.io/_uploads/B1POZsKba.png) ![](https://hackmd.io/_uploads/SkW9-sKWT.png) ```= import boto3 region = '<REPLACE_WITH_REGION>' //us-east-1 instances = ['<REPLACE_WITH_INSTANCE_ID>'] //find your ec2 id ec2 = boto3.client('ec2', region_name=region) def lambda_handler(event, context): ec2.stop_instances(InstanceIds=instances) print('stopped your instances: ' + str(instances)) ``` success picture : instance1 is stopped ![](https://hackmd.io/_uploads/B1Wx4iF-a.png) :::