2

Details on the AWS Lambda Python LambdaContext context object when instantiated...

 1 year ago
source link: https://gist.github.com/gene1wood/c0d37dfcb598fc133a8c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

LambdaContext

Here is the raw output from examining the Python LambdaContext context object in a AWS Lambda function when called from a CloudFormation stack. More information on the context object can be found here : http://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html

LambdaContext object : print(context)

<__main__.LambdaContext object at 0x7fd706780710>

LambdaContext vars : vars(context)

{
    'aws_request_id': 'a3de505e-f16b-42f4-b3e6-bcd2e4a73903',
    'log_stream_name': '2015/10/26/[$LATEST]c71058d852474b9895a0f221f73402ad',
    'invoked_function_arn': 'arn:aws:lambda:us-west-2:123456789012:function:ExampleCloudFormationStackName-ExampleLambdaFunctionResourceName-AULC3LB8Q02F',
    'client_context': None,
    'log_group_name': '/aws/lambda/ExampleCloudFormationStackName-ExampleLambdaFunctionResourceName-AULC3LB8Q02F',
    'function_name': 'ExampleCloudFormationStackName-ExampleLambdaFunctionResourceName-AULC3LB8Q02F',
    'function_version': '$LATEST',
    'identity': <__main__.CognitoIdentity object at 0x7fd7042a2b90>,
    'memory_limit_in_mb': '128'
} 

LambdaContext dir : dir(context)

[
    '__class__',
    '__delattr__',
    '__dict__',
    '__doc__',
    '__format__',
    '__getattribute__',
    '__hash__',
    '__init__',
    '__module__',
    '__new__',
    '__reduce__',
    '__reduce_ex__',
    '__repr__',
    '__setattr__',
    '__sizeof__',
    '__str__',
    '__subclasshook__',
    '__weakref__',
    'aws_request_id',
    'client_context',
    'function_name',
    'function_version',
    'get_remaining_time_in_millis',
    'identity',
    'invoked_function_arn',
    'log',
    'log_group_name',
    'log_stream_name',
    'memory_limit_in_mb'
]

context.succeed()

The Python runtime does not have the equivalent of a context.succeed(), context.done() or context.fail().

In order to achieve the same thing, merely return from the handler function to succeed or raise an exception to fail

def lambda_handler(event, context):
    if event['variable_name'] == 1:
        return { 
            'message' : 'We are done'
        }
    else:
        raise Exception('Sending failure')

What does it look like from AWS's side

@NovemberOscar points out this code which shows what AWS sees on their side for the Python context

https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/lambda_context.py


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK