Amazon SNS: an offline mock - amazon-web-services

Is there an AMAZON-SNS mock?
That is, some non-hosted version that I can use for testing or for offline cases? Preferably with the same API.
Like elasticMQ is for SQS?
Thank you

LocalStack - A fully functional local AWS cloud stack
LocalStack provides an easy-to-use test/mocking framework for
developing Cloud applications.
Currently, the focus is primarily on supporting the AWS cloud stack.
LocalStack spins up the following core Cloud APIs on your local
machine:
API Gateway at http://localhost:4567
Kinesis at http://localhost:4568
DynamoDB at http://localhost:4569
DynamoDB Streams at http://localhost:4570
Elasticsearch at http://localhost:4571
S3 at http://localhost:4572
Firehose at http://localhost:4573
Lambda at http://localhost:4574
SNS at http://localhost:4575
SQS at http://localhost:4576
Redshift at http://localhost:4577

If you really need a service you can try https://github.com/s12v/sns
Another option would be mocking. SNS is a HTTP service, so you can mock responses in your application.

Related

AWS Lambda alternative on Oracle Cloud Infrastructure

We are currently using AWS Lambda for some of the services with the following flow.
A rails application (kubernetes) adds a message to SQS queue
Lambda function is invoked via SQS trigger
Lambda function adds the notification to SNS
SNS calls the configured https endpoint to notify the rails application of the status
This has been working well for us. The function takes about 15 seconds to run (for generating some pdf with headless-chrome)
Due to Geographical data security restrictions for a separate installation of our application, we are unable to use AWS and the only feasible option is to use Oracle Cloud Infrastructure (OCI). OCI has cloud functions and also a Queue service, however unlike AWS, OCI doesn't seem to have inbuilt integration between cloud functions and Queue service.
One of the solutions we have discussed in the team is to deploy a service in kubernetes to consume the messages from the OCI Queue and invoke the cloud function and send the results to Notifications service.
I would appreciate any inputs that can simplify this flow but also maintain the async nature and scalability.
Rather than using OCI Queues you can send the events using OCI Streaming with a single subscriber
then you can link Functions easily and Notification service is available
I guess that when you are talking about service in K8s is 24/24 7/7 service and don't want to manage it through HPA/VPA.
If so, you can use https://knative.dev or alternatives https://ramitsurana.github.io/awesome-kubernetes/projects/projects/#serverless-implementations

How do I integrate event-drive architectures between AWS and Azure

I need to extend an event-driven architecture across a multi-cloud environment. AWS Eventbridge is the present bus. I need to use functions in Azure. I'm considering the following:
AWS Eventbridge - direct connection to Azure Service Bus. Is this possible? Has anyone done it? If so, how?
Azure Functions directly connecting to AWS Eventbridge and using the Azure funtions to drive Azure functionality.
Thoughts on these two approaches? or other options?

Is there a REST API available for SageMaker, or is it possible to interact with SageMaker over the Amazon API Gateway?

SageMaker provides a full machine learning development environment on AWS. It works with the Amazon SageMaker Python SDK, which allows Jupyter Notebooks to interact with the functionality. This also provides the path to using the Amazon SageMaker Feature Store.
Is there any REST API available for SageMaker? Say one wanted to create their own custom UI, but still use SageMaker features, is this possible?
Can it be done using the Amazon API Gateway?
Amazon API Gateway currently does not provide first-class integration for SageMaker. But you can use these services via AWS SDK. If you wish, you can embed the AWS SDK calls into a service, host on AWS (e.g. running on EC2 or as lambda functions) and use API gateway to expose your REST API.
Actually, SageMaker is not fundamentally different from any other AWS service from this aspect.
I think you're better off wrapping the functionalities you need as an API you own to avoid the timeouts associated with REST. Did you check out https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html as well?

Can Amazon Kinesis be accessed from outside AWS

I am having a first look at Amazon Kinesis to compare it to Apache Kafka.
Can Kinesis Producers/Consumers access the Kinesis broker from outside AWS? Or have the (Java) clients to be deployed on a EC2 instance?
Yes, you can create and interact with your streams using the API and the AWS SDKs.

Is it possible to call API on EC2 from AWS IoT Rules Engine?

I have use case like once data received in AWS IoT Rules Engine from things, I want to call API instead of dynamoDb, kinesis and lambda. I read FAQ https://aws.amazon.com/iot/faqs/ and doc but now found anything related to routing data to API on EC2 instance. This developer guide http://docs.aws.amazon.com/iot/latest/developerguide/iot-create-rule.html shows how to route data to dynamoDb, S2, Kinesis, SNS and machine learning. Is it possible to route data to EC2 instance from IoT Rules Engine?
You can create a iot rule to connect to lambda and in lambda function you can call your EC2 API.