Reputation: 4307
I have two files:
MyLambdaFunction.py
config.json
I zip those two together to create MyLambdaFunction.zip. I then upload that through the AWS console to my lambda function.
The contents of config.json are various environmental variables. I need a way to read the contents of the file each time the lambda function runs, and then use the data inside to set run time variables.
How do I get my Python Lambda function to read the contents of a file, config.json, that was uploaded in the zip file with the source code?
Upvotes: 20
Views: 22858
Reputation: 49
import os
os.environ['LAMBDA_TASK_ROOT'] + '/config.json'
or you can use formatting
f"{os.environ['LAMBDA_TASK_ROOT']}/config.json"
Upvotes: 0
Reputation: 128
Just done it in python3.8 lambda with simple:
with open('./dir/file.whatever') as f:
And it works just fine.
Upvotes: 1
Reputation: 4307
Figured it out with the push in the right direction from @helloV.
At the top of the python file put import os
Inside your function handler put the following:
configPath = os.environ['LAMBDA_TASK_ROOT'] + "/config.json"
print("Looking for config.json at " + configPath)
configContents = open(configPath).read()
configJson = json.loads(configContents)
environment = configJson['environment']
print("Environment: " + environment)
That bit right there, line by line, does the following:
Here is what the config.json looks like:
{
"environment":"dev"
}
EDIT AWS lambda now supports use of environmental variables directly in the console UI. So if your use case is the same as mine (i.e. for a config file) you no longer need a config file.
Upvotes: 24
Reputation: 2255
Actually, I'd rather prefer judging the context of the running lambda to determine the config it should use, instead of uploading different zip files, which is difficult to maintain.
lambda_configs = {
"function_name_1":{
},
"function_name_2":
{
}
}
config = lambda_configs[context.function_name]
Upvotes: 1
Reputation: 52443
Try this. The file you uploaded can be accessed like:
import os
os.environ['LAMBDA_TASK_ROOT']/config.json
Upvotes: 3