lambda、SSMRuncommand EC2 python でサーバー内のスクレイピング用pythonファイルを実行しようとすると、 RuncommandでModuleNotFoundError: No module named 'selenium'と
怒られます。
環境としては
OS:ubuntu
ミドルウェア:nginx
サーバー内pythonファイル:test.py
import
1from selenium import webdriver 2import urllib.request 3 4from selenium.webdriver.chrome.options import Options 5import chromedriver_autoinstaller 6 7from webdriver_manager.chrome import ChromeDriverManager 8 9#chromedriver_autoinstaller.install() 10 11op = Options() 12options = webdriver.ChromeOptions() 13options.add_argument("--disable-gpu"); 14options.add_argument("--disable-extensions"); 15options.add_argument("--proxy-server='direct://'"); 16options.add_argument("--proxy-bypass-list=*"); 17options.add_argument("--start-maximized"); 18options.add_argument("--headless"); 19#options.add_argument('--headless') 20 21browser = webdriver.Chrome(ChromeDriverManager().install(),chrome_options=options) 22browser2 = webdriver.Chrome(ChromeDriverManager().install(),chrome_options=options) 23 24 25browser.get('https://***********.com') 26time.sleep(60.0) 27 28browser.quit()
諸事情あり、上記のpythonファイルを2台構成のEC2内でlambdaを使い、実行したいです。
seleniumはすでにpipでインストール済です。
lambda関数は下記となります。
import
1 2ec2 = boto3.client("ec2") 3ssm = boto3.client("ssm") 4 5def lambda_handler(event, context): 6 7 try: 8 targets = target_instances("Name","Instance-nametag") 9 10 execute(targets, ["cd ファイルまでのディレクトリ;python test.py"]) 11 except Exception as e: 12 13 raise e 14 15def target_instances(tagname, tagvalue): 16 resp = ec2.describe_instances(Filters=[{"Name": f"tag:{tagname}", "Values": [tagvalue]}]) 17 instances = [] 18 for resv in resp["Reservations"]: 19 for i in resv["Instances"]: 20 instances.append(i) 21 return [instances[0]] # 先頭の1件を選ぶ 22 23def execute(targets, commands): 24 ids = [i["InstanceId"] for i in targets] 25 ssm.send_command( 26 InstanceIds=ids, 27 DocumentName="AWS-RunShellScript", 28 Parameters={"commands": commands, "executionTimeout": ["3600"]}, 29 )
1台目のサーバーに異常があれば、2台目に実行しにいく作りになっています。
上記Lambda関数を実行すると成功するのですが、
SSM Runcommandで失敗となり、下記エラーが吐かれます。
エラーは下記となります。
Traceback
1 2File "test.py", line 2, in <module> 3 4from selenium import webdriver 5 6ModuleNotFoundError: No module named 'selenium' 7 8failed to run commands: exit status 1 9
-----試したこと------
https://syachiku.net/aws-lambda-python-selenium/
https://qiita.com/shizen-shin/items/5851c5359529904d43d0
やり方が間違っているかもしれませんが、上記をやってみても
同じエラーが出されます。
どなたか解決方法がわかれば教えていただきたいです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。