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
질문됨 7달 전712회 조회
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
전문가
답변함 7달 전
  • 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/

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠