I was following the article baeldung site
I did the step
docker run \
--rm -it \
-p 127.0.0.1:4566:4566 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ./target:/opt/code/localstack/target \
localstack/localstack
docker shell
$ winpty docker exec -it 6efc21b9a53b bash
and trying to execute
awslocal lambda create-function \
--function-name baeldung-lambda-function \
--runtime java21 \
--handler com.baeldung.lambda.LambdaHandler\
--role arn:aws:iam::000000000000:role/lambda-role \
--zip-file fileb:///opt/code/localstack/target/java-lambda-function-0.0.1.jar
Error:
Error parsing parameter '--zip-file': Unable to load paramfile fileb:///opt/code/localstack/target/snslambda-1.0-SNAPSHOT.jar: [Errno 2] No such file or directory: '/opt/code/localstack/target/snslamb da-1.0-SNAPSHOT.jar'
my jar file name is correct. agreed -v ./target:/opt/code/localstack/target is the volume and so used in zip-file. But how is the file mapped ? I don't see any file in localstack target folder
I am not sure on what path I have to run any commands. Please can I ask what are the check points and how to solve?
EDIT:
Test
awslocal lambda invoke --function-name sns-lambda-function --payload '{{ "Records": [ { "Sns": { "Message": "Hello from SNS!", "MessageId": "12345", "Timestamp": "2025-02-23T12:34:56.000Z" } } ] }' output.txt
I have solved it following these steps
Run localstack >> open a docker shell >> create a topic >> create a lambda function that can respond to SNSEvent >> create a subscription >> and Test
docker run --rm -it -p 127.0.0.1:4566:4566 -v /var/run/docker.sock:/var/run/docker.sock -v ${PWD}/target:/opt/code/localstack/target localstack/localstack
docker exec -it containerid bash
awslocal sns create-topic --name user-account-created
awslocal lambda create-function --function-name sns-lambda-function --runtime java21 --handler com.example.SNSEventHandler --role arn:aws:iam::000000000000:role/lambda-role --zip-file fileb:///opt/code/localstack/target/java-lambda-function.jar
awslocal sns subscribe --topic-arn arn:aws:sns:us-east-1:000000000000:user-account-created --protocol lambda --notification-endpoint arn:aws:lambda:us-east-1:000000000000:function:sns-lambda-function
Test using below and check the logs of the lambda function container
awslocal sns publish --topic-arn arn:aws:sns:us-east-1:000000000000:user-account-created --message "Hello from LocalStack SNS!"