sns
sns copied to clipboard
Unable to publish to created topic
When I try to publish to the topic I just created I'm getting a An error occurred (NotFound) when calling the Publish operation: Topic not found
error.
Reproduction case:
Start the sns/sqs servers using docker-compose:
cd examples
docker-compose up
Publish to the existing test1 topic
AWS_DEFAULT_REGION=us-east-1 AWS_ACCESS_KEY_ID=foo AWS_SECRET_ACCESS_KEY=bar aws sns --endpoint-url http://localhost:9911 list-topics
{
"Topics": [
{
"TopicArn": "arn:aws:sns:us-east-1:1465414804035:test1"
}
]
}
AWS_DEFAULT_REGION=us-east-1 AWS_ACCESS_KEY_ID=foo AWS_SECRET_ACCESS_KEY=bar aws sns --endpoint-url http://localhost:9911 publish --topic-arn arn:aws:sns:us-east-1:1465414804035:test1 --message 'TEST'
{
"MessageId": "bcbded98-610f-4921-930b-286571588609"
}
This is all as expected - however when I create a new topic and publish to it I get
AWS_DEFAULT_REGION=us-east-1 AWS_ACCESS_KEY_ID=foo AWS_SECRET_ACCESS_KEY=bar aws sns --endpoint-url http://localhost:9911 create-topic --name new
{
"TopicArn": "arn:aws:sns:us-east-1:123456789012:new"
}
AWS_DEFAULT_REGION=us-east-1 AWS_ACCESS_KEY_ID=foo AWS_SECRET_ACCESS_KEY=bar aws sns --endpoint-url http://localhost:9911 list-topics
{
"Topics": [
{
"TopicArn": "arn:aws:sns:us-east-1:1465414804035:test1"
},
{
"TopicArn": "arn:aws:sns:us-east-1:123456789012:new"
}
]
}
AWS_DEFAULT_REGION=us-east-1 AWS_ACCESS_KEY_ID=foo AWS_SECRET_ACCESS_KEY=bar aws sns --endpoint-url http://localhost:9911 publish --topic-arn arn:aws:sns:us-east-1:123456789012:new --message 'TEST'
An error occurred (NotFound) when calling the Publish operation: Topic not found: arn:aws:sns:us-east-1:123456789012:new
Am I doing something wrong here? Is this happening because I don't have any subscriptions for this topic?
Ubuntu 14.04, docker 17.09.1-ce, compose 1.18.0, aws cli 1.14.38
I am having the same problem with some of my topics. I tried out your question "Is this happening because I don't have any subscriptions for this topic" and my issue went away. Unfortunately I have situations in my test environment where I only want to create the topic and ignore the queue.
Very confusing, this behavior should be documented
How do you handle the subscription confirmation? after subscribing to the topic and publishing to it, my endpoint doesn't get call...
Anyone got success to publish a msg with some workaround ?
From this line https://github.com/s12v/sns/blob/master/src/main/scala/me/snov/sns/actor/SubscribeActor.scala#L50
We can see that, to consider the topic as "found", we need an actual subscription. Using a command like this docker exec <CONTAINER_ID> sh -c 'aws sns --endpoint-url http://localhost:9911 subscribe --topic-arn arn:aws:sns:us-east-1:1465414804035:test1 --protocol email --notification-endpoint [email protected]'
should make it work.
This needs to be added to documentation (and to docker-hub documentation as well)
I was unable to get this to work even using the solution that @Minivera proposed above.
Is there a reason the subscriptions are required? I'm in a situation where I need to create the topic and publish to it but I don't have any subscriptions yet, as subscriptions are downstream of my current resources, and from a publishing standpoint I don't actually care what is subscribed.
How do we feel about updating the logic of SubscriberActor.fanOut()
to no longer throw an exception when there are no subscriptions for a topic and to simply return Success
instead? That looks like a straightforward fix (although it is a change in behavior) and I wouldn't mind putting together a PR for it.