I am a beginner at lambda and python.
Executed the following code:
import boto3
import json
from collections import OrderedDict
def handler(event, context):
# Define required constants
BUCKET_NAME=event ['bucket_name']
BUCKET_KEY=event ['bucket_key']
UPLOAD_BUCKET_KEY = 'b.json'
# a.json loading
s3 = boto3.client('s3')
obj=s3.get_object(Bucket=BUCKET_NAME, key=BUCKET_KEY)
data=json.loads(obj['Body'].read().decode('utf-8')))
print(f'{BUCKET_KEY} content: {data}')
# b. Uploading sjon
s3 = boto3.resource('s3')
obj=s3.Bucket(BUCKET_NAME).Object(UPLOAD_BUCKET_KEY)
data=OrderDict(file_name=UPLOAD_BUCKET_KEY, author=data['author'], age=(data['age']+1))
res=obj.put(Body=json.dumps(data))
ifres ['ResponseMetadata'] ['HTTPSstatusCode'] == 200:
print(f'[SUCCESS] upload {UPLOAD_BUCKET_KEY}')
Tested on AWS Lambda.
As a result, the following error occurred:
"errorMessage": "'bucket_name',
"errorType": "KeyError",
"requestId": "752f59f8-f95a-4903-8412-60334115be69",
"stackTrace": [
" File\"/var/task/main.py\", line7, in handler\nBUCKET_NAME=event['bucket_name']\n"
]
}
The lambda test event was described as follows:
{
"BUCKET_NAME": "bucket_name",
"BUCKET_KEY": "bucket_key"
}
The handler is set to main.handler and specifies to call a function of this code.
I'm having trouble knowing the cause of the error.
We fixed it in the AWS lambda test event.
{
"bucket_name": "lambda-test-keepin",
"bucket_key": "a.json"
}
The error changed when I ran the test again.
VersionId, SSECcustomerAlgorism, SSECcustomerKey, SSECcustomerKeyMD5, RequestPayer, PartNumber, ExpectedBucketOwner",
"errorType": "ParamValidationError",
"requestId": "ed79a6d9-2510-42fe-8105-d43732124bb2",
"stackTrace": [
" File\"/var/task/main.py\", line13, in handler\nobj=s3.get_object(Bucket=BUCKET_NAME, key=BUCKET_KEY)\n",
" File\"/var/runtime/botocore/client.py\", line386, in_api_call\nreturn self._make_api_call(operation_name, kwargs)\n",
" File\"/var/runtime/botocore/client.py\", line677, in_make_api_call\nrequest_dict=self._convert_to_request_dict(\n",
" File\"/var/runtime/botocore/client.py\", line725, in_convert_to_request_dict\nrequest_dict=self._serialize_to_request(\n",
" File\"/var/runtime/botocore/validate.py\", line 337, serialize_to_request\nraiseParamValidationError(report=report.generate_report())\n"
]
}
python python3 aws-lambda
I haven't written much in Python, but
{
"BUCKET_NAME": "bucket_name",
"BUCKET_KEY": "bucket_key"
}
The key in the dictionary is "BUCKET_NAME", "BUCKET_KEY", so if you want to refer to the value, you can use
#Define required constants
BUCKET_NAME=event ['BUCKET_NAME']
BUCKET_KEY=event ['BUCKET_KEY']
Isn't that right?
Python Lambda Function Handler - AWS Lambda
617 Uncaught (inpromise) Error on Electron: An object could not be cloned
581 PHP ssh2_scp_send fails to send files as intended
911 When building Fast API+Uvicorn environment with PyInstaller, console=False results in an error
610 GDB gets version error when attempting to debug with the Presense SDK (IDE)
574 Who developed the "avformat-59.dll" that comes with FFmpeg?
© 2024 OneMinuteCode. All rights reserved.