You can use the below python script to upload or write a file to the s3 bucket using boto3.
Step 1: Install and configure boto3
https://cloudaffaire.com/how-to-install-python-boto3-sdk-for-aws/
https://cloudaffaire.com/how-to-configure-python-boto3-sdk-for-aws/
https://pypi.org/project/argparse/
Step 2: Create a script to write a file in S3 bucket
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
## Create a python script to upload objects in S3 bucket cat << EOF > upload_file.py import boto3 from botocore.exceptions import ClientError import os import argparse parser = argparse.ArgumentParser(description='Create an object in s3 bucket') parser.add_argument('--bucket_name', type=str, help='The name of the bucket you want upload to') parser.add_argument('--file_name', type=str, help='The name of the file you want to upload') parser.add_argument('--folder_name', type=str, help='The name key in s3 bucket where the file will be uploaded, for root location filename and foldername is same') args = parser.parse_args() def upload_file(file_name, bucket, folder_name=None): # If S3 folder_name was not specified, use file_name if folder_name is None: folder_name = os.path.basename(file_name) # Upload the file s3_client = boto3.client('s3') try: response = s3_client.upload_file(file_name, bucket, folder_name) print("new object created successfully!") except ClientError as e: print(e) bucket_name = args.bucket_name file_name = args.file_name folder_name = args.folder_name upload_file(file_name, bucket_name, folder_name) EOF |
Step 3: Upload a file in S3 bucket with prefix (folder) using boto3
1 2 3 4 5 6 7 8 9 |
## Create a directory and file mkdir sourceDir && echo "hello" > sourceDir/sourceFile ## upload an object with prefix (folder) to s3 bucket python3 upload_file.py --bucket_name cloudaffaire --file_name sourceDir/sourceFile --folder_name targetDir/targetFile ## upload an object to s3 bucket python3 upload_file.py --bucket_name cloudaffaire --file_name sourceDir/sourceFile --folder_name sourceFile |