[英]How do I run a python script that is located on the AWS EC2 server?
我想在我的計算機上使用 python 代碼來運行位於服務器上的 python 腳本(EC2 ubuntu 18)。 我知道您可以為此使用 boto,但我沒有找到一個完整的示例,它可以在這里編寫為服務器,我們像這樣連接到它,我們像這樣執行腳本。
您可以使用 AWS SSM 或 lambda function 來執行此操作。
請參閱 @mokugo-devops對 AWS SSM 的回答
或參考此 lambda function 方法
#requires paramiko package
#paramiko package is available at:
# https://github.com/pranavmalaviya2/COVID-19-Live-Data-board/tree/master/lambda%20functions/SSH_lambda-Deployment-package
import json
import boto3
import paramiko
import time
def lambda_handler(event, context):
# boto3 client
client = boto3.client('ec2')
s3_client = boto3.client('s3')
# getting instance information
describeInstance = client.describe_instances()
# downloading pem file from S3
s3_client.download_file('bucket-name','key-name.pem', '/destination/folder/new-key-name.pem')
# reading pem file and creating key object
key = paramiko.RSAKey.from_private_key_file("/destination/folder/new-key-name.pem")
# an instance of the Paramiko.SSHClient
ssh_client = paramiko.SSHClient()
# setting policy to connect to unknown host
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# connect using ec2 instance ID if requires
ssh_client.connect(hostname="12.12.12.12", username="ubuntu", pkey=key)
# command list
commands = [
"python script.py",
"python script2.py",
"aws s3 cp --recursive source/ s3://destination-bucket/",
]
# executing list of commands within server
print("Starting execution")
for command in commands:
print("Executing command: " + command)
stdin , stdout, stderr = ssh_client.exec_command(command)
print(stdout.read())
print(stderr.read())
print("finished execution")
return {
'statusCode': 200,
'body': json.dumps('Execution Completed')
}
看看 AWS SSM - 運行命令。
從本地 Python 腳本中,您可以運行send-command
您可以:
要執行此操作,您需要確保目標實例已安裝SSM 代理,並且該實例具有具有正確權限的角色。 示例命令
import boto3
client = boto3.client('ssm')
client.send_command(
InstanceIds=[
'i-01234567',
],
DocumentName='AWS-RunShellScript',
Parameters={
'commands': [
'python3 /home/ec2-user/main.py',
]
}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.