Skip to Main Content

Developer Community

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

i am trying to copy data from aws s3 to oracle cloud bucket using lambda function,I am getting 400 error could anyone guide

4016107Sep 21 2023

import requests

import json
import boto3

def lambda_handler(event, context):

Oracle Cloud Object Storage details

namespace = "***"
bucket_name = "bucket-21092023-s3"
auth_token = "***"

print(event)

S3 event details

s3_bucket = event['Records'][0]['s3']['bucket']['name']
s3_key = event['Records'][0]['s3']['object']['key']

Construct the Oracle Cloud Object Storage URL

#url = f"https://{namespace}.compat.objectstorage.<REGION>.oraclecloud.com/{bucket_name}/{s3_key}"
url = f"https://{namespace}.compat.objectstorage.us-phoenix-1.oraclecloud.com/{bucket_name}/{s3_key}"

Create headers with the Authentication Token

headers = {
"Authorization": f"Bearer {auth_token}",
"Content-Type": "application/json"
}

s3_client = boto3.client('s3')
response = s3_client.get_object(Bucket=s3_bucket, Key=s3_key)
object_data = response['Body'].read()

Read the S3 object

s3_object_data =object_data

print(s3_object_data)

Upload the object to Oracle Cloud Object Storage

#response = requests.put(url, data=s3_object_data, headers=headers)
print(url)
print(headers)
response = requests.put(url, data=s3_object_data, headers=headers)

print(response)

if response.status_code == 200:
return {
'statusCode': 200,
'body': 'Data transfer completed successfully!'
}
else:
return {
'statusCode': response.status_code,
'body': 'Data transfer failed!'
}

Comments
Post Details
Added on Sep 21 2023
0 comments
403 views