Skip to content

Implemented empty methods in LambdaContext #66

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 78 additions & 38 deletions src/main/java/cloud/localstack/LambdaContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,76 +5,116 @@
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;

public class LambdaContext implements Context {

private final Logger LOG = Logger.getLogger(LambdaContext.class.getName());
private static final int DEFAULT_MEMORY_SIZE_IN_MB = 256;
private static final String DEFAULT_ACCOUNT_ID = "123456789012";
private static final String DEFAULT_REGION = "us-east-1";
private static final String DEFAULT_FUNCTION_NAME = "localstack";
private static final String DEFAULT_FUNCTION_VERSION = "$LATEST";

public LambdaLogger getLogger() {
return new LambdaLogger() {
private static final String TODAY = new SimpleDateFormat("yyyy/MM/dd").format(new Date());
private static final String CONTAINER_ID = UUID.randomUUID().toString();

@Override
public void log(String msg) {
LOG.log(Level.INFO, msg);
}
private final Logger LOG = Logger.getLogger(LambdaContext.class.getName());

@Override
public void log(byte[] msg) {
log(new String(msg));
}
};
}
private final String requestId;

public String getAwsRequestId() {
// TODO Auto-generated method stub
return null;
public LambdaContext(String requestId) {
this.requestId = requestId;
}

public ClientContext getClientContext() {
// TODO Auto-generated method stub
return null;
@Override
public String getAwsRequestId() {
return requestId;
}

@Override
public String getFunctionName() {
// TODO Auto-generated method stub
return null;
String functionName = System.getenv("AWS_LAMBDA_FUNCTION_NAME");
if (functionName == null) {
functionName = DEFAULT_FUNCTION_NAME;
}
return functionName;
}

@Override
public String getFunctionVersion() {
// TODO Auto-generated method stub
return null;
}

public CognitoIdentity getIdentity() {
// TODO Auto-generated method stub
return null;
String functionVersion = System.getenv("AWS_LAMBDA_FUNCTION_VERSION");
if (functionVersion == null) {
functionVersion = DEFAULT_FUNCTION_VERSION;
}
return functionVersion;
}

@Override
public String getInvokedFunctionArn() {
// TODO Auto-generated method stub
return null;
String region = System.getenv("AWS_REGION");
if (region == null) {
region = DEFAULT_REGION;
}
return String.format("arn:aws:%s:%s:function:%s:%s",
region, DEFAULT_ACCOUNT_ID, getFunctionName(), getFunctionVersion());
}

@Override
public String getLogGroupName() {
// TODO Auto-generated method stub
return null;
return String.format("/aws/lambda/%s", getFunctionName());
}

@Override
public String getLogStreamName() {
// TODO Auto-generated method stub
return null;
return String.format("%s[%s]%s", TODAY, getFunctionVersion(), CONTAINER_ID);
}

@Override
public int getMemoryLimitInMB() {
// TODO Auto-generated method stub
return 0;
String memorySize = System.getenv("AWS_LAMBDA_FUNCTION_MEMORY_SIZE");
if (memorySize == null) {
return DEFAULT_MEMORY_SIZE_IN_MB;
} else {
try {
return Integer.parseInt(memorySize);
} catch (NumberFormatException e) {
return DEFAULT_MEMORY_SIZE_IN_MB;
}
}
}

@Override
public int getRemainingTimeInMillis() {
// TODO Auto-generated method stub
return 0;
return Integer.MAX_VALUE;
}

@Override
public LambdaLogger getLogger() {
return new LambdaLogger() {
@Override
public void log(String msg) {
LOG.log(Level.INFO, msg);
}

@Override
public void log(byte[] msg) {
log(new String(msg));
}
};
}

@Override
public ClientContext getClientContext() {
return null;
}

@Override
public CognitoIdentity getIdentity() {
return null;
}

}
3 changes: 2 additions & 1 deletion src/main/java/cloud/localstack/LambdaExecutor.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;

/**
Expand Down Expand Up @@ -89,7 +90,7 @@ public static void main(String[] args) throws Exception {
}
}

Context ctx = new LambdaContext();
Context ctx = new LambdaContext(UUID.randomUUID().toString());
if (handler instanceof RequestHandler) {
Object result = ((RequestHandler<Object, ?>) handler).handleRequest(inputObject, ctx);
// try turning the output into json
Expand Down