S3 Object Lambda Demo | Access points | S3
CloudDeepDive
0:00 / 0:00
S3 Object Lambda Demo | Access points | S3
1 833 просмотра · 5 лет назад
CloudDeepDive
5,02 тыс. подписчиков
1 833 просмотра · 5 лет назад
Introducing Amazon S3 Object Lambda – Use Your Code to Process Data as It Is Being Retrieved from S3.
Commands -
sudo yum update -y
sudo yum install python3 python3-pip -y
sudo pip3 install --upgrade pip
pip install --upgrade pip
mkdir python
pip install --target python requests
pip install --target python boto3
pip install --target python requests --upgrade
pip install --target python boto3 --upgrade
zip -r importModules.zip python
Change Bucket name
aws s3 cp importModules.zip s3://bucketName/importModules.zip --region us-east-1
aws lambda publish-layer-version --layer-name importModulesLayer --description "requests + boto3 modules" --content S3Bucket=bucketName,S3Key=importModules.zip --compatible-runtimes python3.6 python3.7 python3.8
Replace Lambda function name and arn
aws lambda update-function-configuration --function-name LambdaFunctionName --layers arn:aws:lambda:us-east-1:11111111111111:layer:importModulesLayer:1
Retrieve object using S3 Object Lambda Function (Change ARN )
aws s3api get-object --bucket arn:aws:s3-object-lambda:us-east-1:11111111111111:accesspoint/test1 --key demo.txt demo.txt
Retrieve object using S3 AccesPoint (Change ARN with your S3 access point ARN)
aws s3api get-object --bucket arn:aws:s3:us-east-1:11111111111111:accesspoint/s3accesspoint --key demo.txt demo1.txt
Labmda Code -
import boto3
import requests
def lambda_handler(event, context):
print(event)
object_get_context = event["getObjectContext"]
request_route = object_get_context["outputRoute"]
request_token = object_get_context["outputToken"]
s3_url = object_get_context["inputS3Url"]
Get object from S3
response = requests.get(s3_url)
original_object = response.content.decode('utf-8')
Transform object
transformed_object = original_object.upper()
Write object back to S3 Object Lambda
s3 = boto3.client('s3')
s3.write_get_object_response(
Body=transformed_object,
RequestRoute=request_route,
RequestToken=request_token)
return {'status_code': 200}