Lambda函數使用 示例 詳細說明


Lambda函數使用 示例 詳細說明
示例解析
Lambda函數使用
2019/07/11 Chenxin
參考
https://aws.amazon.com/cn/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/ 用Lambda定時關機,開機(AWS)

使用 Lambda 按固定間隔停止和啟動 Amazon EC2 實例
目的
節省費用

簡要說明
注意:此示例設置是簡單的解決方案。有關更可靠的解決方案,請使用 AWS 實例計划程序(https://aws.amazon.com/premiumsupport/knowledge-center/stop-start-instance-scheduler/)。

本示例的主要步驟:

  1. 為 Lambda 函數創建自定義 (IAM) 策略和執行角色。
  2. 創建 停止/啟動 EC2 實例的 Lambda 函數。
  3. 創建 按計划觸發您的函數的 CloudWatch Events 規則。
    注意:您也可以創建當您 AWS 賬戶中發生某事件時觸發的規則。

IAM 策略 和 角色
創建 IAM 策略
將此 JSON 策略文檔粘貼到策略編輯器中,比如命名為 iam-policy-for-lambda-of-ec2startstop :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:::"
},
{
"Effect": "Allow",
"Action": [
"ec2:Start
",
"ec2:Stop"
],
"Resource": "
"
}
]
}

創建IAM角色
為 Lambda 創建一個 IAM 角色,比如命名為 role-for-lambda-of-ec2-manage。附加權限策略時,搜索並選擇剛創建的 IAM 策略。

創建 停止/啟動 EC2 實例的 Lambda 函數 以及 測試函數執行結果
創建stop實例的Lambda函數

  1. 在 Lambda 控制台中,選擇創建函數。

  2. 選擇 Author from scratch (從頭開始創作)。

  3. 在基本信息中下,添加以下內容:
    函數名,例如“StopEC2Instances”。
    運行時,請選擇 Python 2.7。
    在權限下,展開"選擇或創建執行角色"。在執行角色下,選擇使用現有角色。在現有角色下,選擇您創建的 IAM 角色。

  4. 選擇創建函數。

  5. 復制以下代碼,將其粘貼到代碼編輯器的編輯器窗格 (lambda_function) 中。此代碼作用為停止指定的 EC2 實例。
    import boto3
    region = 'us-west-1' # 需要更換
    instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26'] #需要更換為實際的.可以是1個或更多個
    def lambda_handler(event, context):
    ec2 = boto3.client('ec2', region_name=region)
    ec2.stop_instances(InstanceIds=instances)
    print 'stopped your instances: ' + str(instances)

  6. 在基本設置下,將超時設置為 10 秒。例如,如果您想停止/啟動多個實例,那可能需要更大的超時值,及不同的內存。

  7. 選擇保存。

創建start實例的Lambda函數
8. 重復第 1-7 步來創建另一個函數。
在第 3 步中,為“StartEC2Instances”。
在第 5 步中,為以下:
import boto3
region = 'us-west-1' # 需更換
instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26'] # 需更換
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name=region)
ec2.start_instances(InstanceIds=instances)
print 'started your instances: ' + str(instances)

測試 Lambda 函數
在 Lambda 控制台中,選中對應函數-> 選擇操作,然后選擇測試->在配置測試事件對話框中,選擇創建新測試事件-> 輸入事件名稱,然后選擇創建。注意:您不需要更改測試事件的 JSON 代碼 — 該函數不使用此信息。->選擇測試以執行此函數。
確認執行效果(比如是否完成關機).
為其他函數重復以上步驟。

創建觸發 Lambda 函數的規則 (這里用cloudwatch的事件驅動)

  1. 打開 CloudWatch。

  2. 在左側,選擇規則。

  3. 創建規則。

  4. 在事件源下,選擇計划(可以是計划,也可以是按照固定頻率2種方式)。

  5. 執行以下任意一項操作:
    對於固定頻率為,輸入間隔時間(分鍾數、小時數或天數)。
    對於 Cron 表達式,輸入指示 Lambda 何時停止實例的表達式(格式正確的話,會自動跳出未來執行的列表)。有關規則語法的詳細信息,請參閱規則的計划表達式(cloudwatch的事件里 https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/events/ScheduledEvents.html )。
    注意:Cron 表達式使用 UTC 進行計算.

  6. 在目標下,選擇 Add target(添加目標)。

  7. 選擇 Lambda 函數。

  8. 對於函數,選擇將停止 EC2 實例的函數。

  9. 選擇配置詳細信息。

  10. 在規則定義下,執行以下操作:
    對於名稱,輸入識別規則的名稱,例如“StopEC2Instances”。
    (可選)對於描述,輸入對規則的描述。例如“每天晚上 10 點停止 EC2 實例”。
    對於狀態,選中已啟用復選框。

  11. 選擇創建規則。

  12. 重復第 1-11 步來創建規則以啟動您的 EC2 實例。以不同的方式執行以下操作:
    在第 5 步中,對於 Cron 表達式,輸入指示 Lambda 何時啟動實例的表達式。
    在第 8 步中,對於函數,選擇將啟動您的 EC2 實例的函數。
    在第 10 步中,在規則定義下,輸入一個名稱(如“StartEC2Instances”).

原理與使用詳解
問題

問題:
通過lambda 和OSS 構造一個響應式的網頁。 做到serverless的運行。
只是我現在還沒想明白 如何進行響應。
從oss的html 靜態頁面激活lambda的計算動作,還有怎么做動態的調整 就沒想通了。

回答:
html里面包含js代碼,跟lambda或api gateway交互

隨后:
我大概懂了。 也是靠觸發,點擊頁面的時候 js 發起請求 到api gateway, 然后api gateway 直接觸發lambda。
不過反過來 動態調整網頁這個就不是很清楚了。

案例:
http://aws.amazon.bokecc.com/news/show-1006.html 利用Lambda配合DynamoDB和S3構建一個交互式動態網站
http://aws.amazon.bokecc.com/searchresult.html?title=lambda 這里還有很多相關的在線研討會資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM