@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (method.getName().equals("toString")) { return this.toString(); } else if (method.getName().equals("hashCode")) { return this.hashCode(); } LambdaFunction annotation = validateInterfaceMethod(method, args); InvokeRequest invokeRequest = buildInvokeRequest(method, annotation, args == null ? null : args[0]); InvokeResult invokeResult = awsLambda.invoke(invokeRequest); return processInvokeResult(method, invokeResult); }
lambdaClient_.getFunction(new GetFunctionRequest() .withFunctionName(functionName.toString()) ); lambdaClient_.updateFunctionCode(new UpdateFunctionCodeRequest() .withFunctionName(functionName.toString()) .withS3Bucket(bucketName) ); lambdaClient_.updateFunctionConfiguration(new UpdateFunctionConfigurationRequest() .withFunctionName(functionName.toString()) .withHandler(handler) lambdaClient_.createFunction(new CreateFunctionRequest() .withFunctionName(functionName.toString()) .withHandler(handler)
@Test public void testLambdaFunctionTags() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config_tags.json"; TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:test_tags"); AWSLambdaClientFactory mockFactory = mock(AWSLambdaClientFactory.class); AWSLambda mockLambda = mock(AWSLambda.class); doReturn(mockLambda).when(mockFactory).newInstance(); ListTagsResult mockResult = mock(ListTagsResult.class); HashMap<String, String> expected = new HashMap<String, String>() { { put("t1", "foo"); put("t2", "bar"); } }; doReturn(expected).when(mockResult).getTags(); doReturn(mockResult).when(mockLambda).listTags(any()); handler.lambdaClientFactory = mockFactory; handler.init(context); Map<String, String> actual = handler.monitor.getTagsMap(); assertTrue(actual.entrySet().containsAll(expected.entrySet())); }
private void tagFunction(AWSLambda lambda, FunctionConfiguration config) { if (getTags() != null) { ListTagsRequest listTagsRequest = new ListTagsRequest() .withResource(config.getFunctionArn()); ListTagsResult listTagsResult = lambda.listTags(listTagsRequest); if (!listTagsResult.getTags().isEmpty()) { MapDifference<String, String> tagDifferences = Maps.difference(listTagsResult.getTags(), getTags()); UntagResourceRequest untagResourceRequest = new UntagResourceRequest() .withResource(config.getFunctionArn()) .withTagKeys(tagDifferences.entriesOnlyOnLeft().keySet()); lambda.untagResource(untagResourceRequest); } if (!getTags().isEmpty()) { TagResourceRequest tagResourceRequest = new TagResourceRequest() .withTags(getTags()) .withResource(config.getFunctionArn()); lambda.tagResource(tagResourceRequest); getLogger().info("Update Lambda function tags requested: {}", config.getFunctionArn()); } } } }
String nextMarker = null; do{ listFnRslt = lamdaClient.listFunctions(new ListFunctionsRequest().withMarker(nextMarker)); functionsTemp = listFnRslt.getFunctions(); if( !functionsTemp.isEmpty() ) { functionsTemp.forEach( function -> { Map<String,String> tags = lamdaClient.listTags(new ListTagsRequest().withResource(function.getFunctionArn())).getTags(); LambdaVH lambda = new LambdaVH(function, tags); lambdaList.add(lambda);
private GetFunctionResult getFunction(LambdaFunction lambdaFunction) { return lambdaClient.getFunction(new GetFunctionRequest().withFunctionName(lambdaFunction.getFunctionName())); }
.withS3ObjectVersion(s3File.getObjectVersion()); UpdateFunctionCodeResult updateFunctionCode = lambda.updateFunctionCode(request); getLogger().info("Update Lambda function requested: {}", updateFunctionCode.getFunctionArn());
.withTags(getTags()) .withCode(functionCode); createFunctionResult = lambda.createFunction(request); getLogger().info("Create Lambda function requested: {}", createFunctionResult.getFunctionArn());
public void givePermissionForApiGatewayEndpoint(String aliasArn) { String policyId = "api-gateway-policy-" + deployment.getVersion().replace(".", "-"); try { getLambdaClient().removePermission(new RemovePermissionRequest() .withFunctionName(aliasArn) .withStatementId(policyId) ); } catch (Exception e) { /** * Do nothing */ } try { getLambdaClient().removePermission(new RemovePermissionRequest() .withFunctionName(functionArn) .withStatementId(policyId) ); } catch (Exception e) { /** * Do nothing */ } getLambdaClient().addPermission(new AddPermissionRequest() .withAction(POLICY_ACTION) .withFunctionName(aliasArn) .withPrincipal(API_GATEWAY_PRINCIPAL) .withStatementId(policyId) ); }
protected boolean createAlias(String functionArn, String version, String functionVersion) { try { CreateAliasRequest createAliasRequest = new CreateAliasRequest(); createAliasRequest.setFunctionName(functionArn); createAliasRequest.setFunctionVersion(functionVersion); createAliasRequest.setName(createLambdaFriendlyVersionName(version)); getLambdaClient().createAlias(createAliasRequest); return true; } catch (ResourceConflictException e) { return false; } }
private void createPolicyForLambda(final String lambdaFunctionName, final AWSLambda lambdaClient) { AddPermissionRequest addPermissionRequest = new AddPermissionRequest() .withFunctionName(lambdaFunctionName) .withPrincipal(config.getJob().getLambda().getPrincipal()) .withStatementId("sid-".concat(config.getJob().getLambda().getTargetId())) .withAction(config.getJob().getLambda().getActionEnabled()); AddPermissionResult result = lambdaClient.addPermission(addPermissionRequest); log.info("Successfully created Policy for Lambda Function:"+result.getStatement()); }
@Test public void tagsDuplicate() throws HandlerException { BaseHandler.CONFIG_FILE = "/config/handler_config_tags_duplicate.json"; TestContext context = new TestContext(); context.setInvokedFunctionArn("arn:aws:lambda:us-east-1:123:function:test:test_tags"); AWSLambdaClientFactory mockFactory = mock(AWSLambdaClientFactory.class); AWSLambda mockLambda = mock(AWSLambda.class); doReturn(mockLambda).when(mockFactory).newInstance(); ListTagsResult mockResult = mock(ListTagsResult.class); HashMap<String, String> functionTags = new HashMap<String, String>() { { put("f1", "foo"); put("f2", "foo"); } }; doReturn(functionTags).when(mockResult).getTags(); doReturn(mockResult).when(mockLambda).listTags(any()); handler.lambdaClientFactory = mockFactory; handler.init(context); Map<String, String> actual = handler.monitor.getTagsMap(); HashMap<String, String> expected = new HashMap<String, String>() { { put("f1", "foo"); put("f2", "foo"); put("u1", "bar"); } }; assertTrue(actual.entrySet().containsAll(expected.entrySet())); }
private void tagFunction(AWSLambda lambda) { if (getTags() != null) { ListTagsRequest listTagsRequest = new ListTagsRequest() .withResource(getUpdateFunctionConfiguration().getFunctionArn()); ListTagsResult listTagsResult = lambda.listTags(listTagsRequest); if (!listTagsResult.getTags().isEmpty()) { MapDifference<String, String> tagDifferences = Maps.difference(listTagsResult.getTags(), getTags()); UntagResourceRequest untagResourceRequest = new UntagResourceRequest() .withResource(getUpdateFunctionConfiguration().getFunctionArn()) .withTagKeys(tagDifferences.entriesOnlyOnLeft().keySet()); lambda.untagResource(untagResourceRequest); } if (!getTags().isEmpty()) { TagResourceRequest tagResourceRequest = new TagResourceRequest() .withTags(getTags()) .withResource(getUpdateFunctionConfiguration().getFunctionArn()); lambda.tagResource(tagResourceRequest); getLogger().info("Update Lambda function tags requested: {}", getUpdateFunctionConfiguration().getFunctionArn()); } } } }
/** * The entry point into the AWS lambda function. */ public void execute() throws MojoExecutionException { super.execute(); try { lambdaFunctions.forEach(context -> { try { deleteTriggers.andThen(deleteFunction).apply( context.withFunctionArn(lambdaClient.getFunction(new GetFunctionRequest() .withFunctionName(context.getFunctionName())).getConfiguration().getFunctionArn())); } catch (Exception e) { getLog().error(e.getMessage()); } }); } catch (Exception e) { getLog().error(e.getMessage(), e); } }
/** * Updates Lambda function's code. * * @return The latest lambda version */ protected String updateCode() { if (log != null) { log.info("JAR FILE Location: s3://" + deployment.getBucketName() + "/" + deployment.getJarFileLocationOnS3()); } UpdateFunctionCodeRequest updateFunctionCodeRequest = new UpdateFunctionCodeRequest(); updateFunctionCodeRequest.setFunctionName(functionArn); updateFunctionCodeRequest.setS3Bucket(deployment.getBucketName()); updateFunctionCodeRequest.setS3Key(deployment.getJarFileLocationOnS3()); updateFunctionCodeRequest.setPublish(true); UpdateFunctionCodeResult updateFunctionCodeResult = getLambdaClient().updateFunctionCode(updateFunctionCodeRequest); if (log != null) { log.info("Lambda function is at version: " + updateFunctionCodeResult.getVersion()); } return updateFunctionCodeResult.getVersion(); }
.withTags(getTags()) .withCode(functionCode); createFunctionResult = lambda.createFunction(request); getLogger().info("Create Lambda function requested: {}", createFunctionResult.getFunctionArn());
createAliasResult = lambda.createAlias(request);
private void createPolicyForLambda(final String lambdaFunctionName, final AWSLambda lambdaClient) { AddPermissionRequest addPermissionRequest = new AddPermissionRequest() .withFunctionName(lambdaFunctionName) .withPrincipal(config.getRule().getLambda().getPrincipal()) .withStatementId("sid-".concat(config.getRule().getLambda().getTargetId())) .withAction(config.getRule().getLambda().getActionEnabled()); lambdaClient.addPermission(addPermissionRequest); }
@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { validateInterfaceMethod(method, args); // With Android version before Lollipop (API level 22), args can be an // empty array when the method takes no arguments. final Object buildArg = (args == null || args.length == 0) ? null : args[0]; final InvokeRequest invokeRequest = buildInvokeRequest(method, buildArg); final InvokeResult invokeResult = lambda.invoke(invokeRequest); return processInvokeResult(method, invokeResult); }
ListTagsResult res = lambda.listTags(new ListTagsRequest().withResource(ctx.getInvokedFunctionArn())); monitor.addTagsMap(res.getTags());