This guide explains how to set up an AWS Lambda function with API Gateway integration using the AWS CLI.
- AWS CLI installed and configured
- Java 11
- Gradle
- AWS Account with appropriate permissions
- IAM Role for Lambda execution
- Build and package your Lambda function
- Create the Lambda function in AWS
- Set up API Gateway
- Configure integrations and permissions
- Deploy and test
Build your Java project:
gradle clean build
Create deployment package:
zip function.zip build/libs/<your-jar-file-name>.jar
Create the function using AWS CLI:
aws lambda create-function \
--function-name PostRequestLambda \
--runtime java11 \
--role arn:aws:iam::<account-id>:role/<role-name> \
--handler com.example.lambda.PostRequestHandler::handleRequest \
--timeout 15 \
--memory-size 512 \
--zip-file fileb://function.zip
Create HTTP API:
aws apigatewayv2 create-api \
--name "PostRequestAPI" \
--protocol-type "HTTP"
Create Lambda integration:
aws apigatewayv2 create-integration \
--api-id <ApiId> \
--integration-type AWS_PROXY \
--integration-uri arn:aws:lambda:<region>:<account-id>:function:PostRequestLambda
Create route:
aws apigatewayv2 create-route \
--api-id <ApiId> \
--route-key "POST /post"
Deploy the API:
aws apigatewayv2 create-deployment \
--api-id <ApiId>
Grant API Gateway permissions:
aws lambda add-permission \
--function-name PostRequestLambda \
--statement-id ApiGatewayInvokePermission \
--action lambda:InvokeFunction \
--principal apigateway.amazonaws.com \
--source-arn arn:aws:execute-api:<region>:<account-id>:<ApiId>/*/POST/post
Test your API endpoint using curl:
curl -X POST \
-H "Content-Type: application/json" \
-d '{"name":"AWS"}' \
https://<api-id>.execute-api.<region>.amazonaws.com/post
Replace the following placeholders with your actual values:
<account-id>
: Your AWS account ID<region>
: Your AWS region<ApiId>
: API Gateway ID from creation step<role-name>
: IAM role name for Lambda execution<api-id>
: API Gateway endpoint ID
Common issues and solutions:
- Permission errors: Verify IAM role permissions
- Deployment failures: Check Lambda function handler path
- Integration errors: Confirm API Gateway configuration
- Timeout issues: Adjust Lambda timeout setting