How to upload file from local machine to an EC2 instance? (Planning to use AWS SDK via Python)

0

As the subject says, I would like to upload a file (over 300 MB) to an EC2 instance using AWS SDK in Python. Any help would be appreciated. If there is a better way to do this porgrammatically then I'm open to recommendations.

Gableo
已提問 6 個月前檢視次數 680 次
1 個回答
0

Hello.

You cannot directly upload files to EC2 with the AWS SDK.
One way is to use an S3 event trigger to run Lambda and have it execute a Systems Manager RunCommand.
The Lambda code looks like this:

from datetime import datetime
import boto3
import os

ssm = boto3.client('ssm')

instance_id = os.environ['instance_id']
now = datetime.now()
file_name = 'file_name' + now.strftime('%Y%m%d%H%M%S')

def lambda_handler(event, context):
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    response = ssm.send_command(
        InstanceIds=[instance_id],
        DocumentName='AWS-RunShellScript',
        Parameters={
            'commands': [
                f'aws s3 cp s3://{bucket}/{key} /home/ec2-user/{file_name}'
            ],
            'executionTimeout': ['3600'],
        }
    )
profile picture
專家
已回答 6 個月前
  • Okay, i see. As a follow up question, what would be the best way to upload a 20 GB file to an EC2 instance without using AWS SDK and S3?

  • How about uploading with SCP command? If you really want to upload to EC2 with Python, you can use a module called "paramiko" to operate SFTP from Python code. https://www.paramiko.org/

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南