第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

每當(dāng)觸發(fā) lambda 時,如何運行 AWS EC2 中存在的 python 腳本?

每當(dāng)觸發(fā) lambda 時,如何運行 AWS EC2 中存在的 python 腳本?

千萬里不及你 2022-05-24 14:57:34
我的 AWS EC2 實例中有一個 python 腳本可以完成一些工作。每當(dāng)新文件進入特定存儲桶時,我都必須觸發(fā)該腳本。我的想法是向該存儲桶添加一個 lambda 觸發(fā)器,該觸發(fā)器依次觸發(fā) EC2 中存在的腳本,但未能這樣做。那么如果按照我的計劃如何實現(xiàn)解決方案,或者是否有任何其他解決方法可以解決這個問題?
查看完整描述

3 回答

?
呼啦一陣風(fēng)

TA貢獻1802條經(jīng)驗 獲得超6個贊

正如評論中建議更好地使用SNSor ,我認為它比 lambda 函數(shù)更合適,并且 SNS 或 SQS 涉及與實例SQS之間的一對一通信,那么為什么要添加額外的 lambda 層?S3EC2

雖然三個可以訂閱事件,但 lambda 涉及一個額外的層,并且還涉及 ssh,我認為這在時間上是昂貴的(s3 事件接收 + 事件進程 + ssh 到 ec2)。

http://img1.sycdn.imooc.com//628c81f90001f41a07010604.jpg

使用 Lambda:

當(dāng) lambda 觸發(fā)器將開始ssh對 ec2 執(zhí)行操作并運行腳本時,Lambda 的一大優(yōu)勢是您可以運行任何類型的腳本,并且您不需要服務(wù)器來保持它們的正常運行,就像 SQS 和社交網(wǎng)絡(luò)。您可以探索這些示例ssh-ec2-lambda/scheduling-ssh-jobs-using-aws-lambda,第二個示例類似,只是您需要基于事件而不是調(diào)度。

社交網(wǎng)絡(luò):

如果多個實例假設(shè)在 ec2 實例上運行作業(yè)腳本,則 SNS 是更好的選擇。該圖有點類似于您的用例或用于表示大圖。


http://img1.sycdn.imooc.com//628c820400016e4705870198.jpg

質(zhì)量保證:

如果只有一個實例應(yīng)該運行腳本,那么 SQS 將適合處理該事件。

http://img1.sycdn.imooc.com//628c821200010bf805430811.jpg

查看完整回答
反對 回復(fù) 2022-05-24
?
斯蒂芬大帝

TA貢獻1827條經(jīng)驗 獲得超8個贊

  • 我不知道為什么你的選擇不起作用,因為它絕對有可能,我已經(jīng)使用這個博客aws blog

  • 每當(dāng)具有特定擴展名的文件上傳到存儲桶 (terraform) 時,此 git存儲庫都有代碼觸發(fā) lambda。

  • 您可以通過 lambda 訪問 EC2 實例,如上面的塊中所示,使用標(biāo)簽。

  • 希望這一切對您有所幫助。


查看完整回答
反對 回復(fù) 2022-05-24
?
PIPIONE

TA貢獻1829條經(jīng)驗 獲得超9個贊

我在網(wǎng)上找到的博客的幫助下進行了管理,該博客的鏈接已丟失,但有代碼。


import time

import boto3

import paramiko

import os


def lambda_handler(event, context):


    ec2 = boto3.resource('ec2', region_name='us-east-1',aws_access_key_id='XXXXXXXXXXXXXXXXXXXX',aws_secret_access_key='XXXXXXXXXXXXXXXXXXXX')


    instance_id = 'XXXXXXXXXXXXXXXX'


    instance = ec2.Instance(instance_id)


    # Start the instance

    instance.start()


    # Giving some time to start the instance completely

    #time.sleep(60)


    # Connect to S3, we will use it get the pem key file of your ec2 instance

    s3_client = boto3.client('s3',aws_access_key_id='XXXXXXXXXXXXXXXXXXXX',aws_secret_access_key='XXXXXXXXXXXXXXXXXXXX')


    # # # Download private key file from secure S3 bucket

    # # # and save it inside /tmp/ folder of lambda event

    bucket_name = ''

    key_name = ''

    key_location = ''

    s3_client.download_file(bucket_name, key_name, key_location)


    # # # # Allowing few seconds for the download to complete

    time.sleep(10)


    ssh = paramiko.SSHClient()

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    privkey = paramiko.RSAKey.from_private_key_file(key_location)

    # # # username is most likely 'ec2-user' or 'root' or 'ubuntu'

    # # # depending upon yor ec2 AMI

    ssh.connect(instance.private_ip_address,22, username='ubuntu', pkey=privkey)




    commands = []

    for command in commands:

        print("Executing {}".format(command))

        stdin , stdout, stderr = ssh.exec_command(command)

        stdin.flush()

        data = stdout.read().splitlines()

        for line in data:

            print(line)

    ssh.close()


    return 'Success'

現(xiàn)在只需壓縮 paramiko 庫。如果我再次找到該博客,將更新答案。


查看完整回答
反對 回復(fù) 2022-05-24
  • 3 回答
  • 0 關(guān)注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號