localstack_bootstrap.sh 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. echo "configuring sns/sqs"
  4. echo "==================="
  5. LOCALSTACK_HOST=localhost
  6. AWS_REGION=us-east-1
  7. LOCALSTACK_DUMMY_ID=000000000000
  8. get_all_queues() {
  9. awslocal --endpoint-url=http://${LOCALSTACK_HOST}:4566 sqs list-queues
  10. }
  11. create_queue() {
  12. local QUEUE_NAME_TO_CREATE=$1
  13. awslocal --endpoint-url=http://${LOCALSTACK_HOST}:4566 sqs create-queue --queue-name ${QUEUE_NAME_TO_CREATE}
  14. }
  15. get_all_topics() {
  16. awslocal --endpoint-url=http://${LOCALSTACK_HOST}:4566 sns list-topics
  17. }
  18. create_topic() {
  19. local TOPIC_NAME_TO_CREATE=$1
  20. awslocal --endpoint-url=http://${LOCALSTACK_HOST}:4566 sns create-topic --name ${TOPIC_NAME_TO_CREATE}
  21. }
  22. link_queue_and_topic() {
  23. local TOPIC_ARN_TO_LINK=$1
  24. local QUEUE_ARN_TO_LINK=$2
  25. awslocal --endpoint-url=http://${LOCALSTACK_HOST}:4566 sns subscribe --topic-arn ${TOPIC_ARN_TO_LINK} --protocol sqs --notification-endpoint ${QUEUE_ARN_TO_LINK}
  26. }
  27. get_queue_arn_from_name() {
  28. local QUEUE_NAME=$1
  29. echo "arn:aws:sns:${AWS_REGION}:${LOCALSTACK_DUMMY_ID}:$QUEUE_NAME"
  30. }
  31. get_topic_arn_from_name() {
  32. local TOPIC_NAME=$1
  33. echo "arn:aws:sns:${AWS_REGION}:${LOCALSTACK_DUMMY_ID}:$TOPIC_NAME"
  34. }
  35. PAYMENTS_TOPIC_NAME="payments-local-topic"
  36. echo "creating topic $PAYMENTS_TOPIC_NAME"
  37. TOPIC_CREATED_RESULT=$(create_topic ${PAYMENTS_TOPIC_NAME})
  38. echo "created topic: $TOPIC_CREATED_RESULT"
  39. PAYMENTS_TOPIC_ARN=$(get_topic_arn_from_name $PAYMENTS_TOPIC_NAME)
  40. SYNCING_SERVER_TOPIC_NAME="syncing-server-local-topic"
  41. echo "creating topic $SYNCING_SERVER_TOPIC_NAME"
  42. TOPIC_CREATED_RESULT=$(create_topic ${SYNCING_SERVER_TOPIC_NAME})
  43. echo "created topic: $TOPIC_CREATED_RESULT"
  44. SYNCING_SERVER_TOPIC_ARN=$(get_topic_arn_from_name $SYNCING_SERVER_TOPIC_NAME)
  45. AUTH_TOPIC_NAME="auth-local-topic"
  46. echo "creating topic $AUTH_TOPIC_NAME"
  47. TOPIC_CREATED_RESULT=$(create_topic ${AUTH_TOPIC_NAME})
  48. echo "created topic: $TOPIC_CREATED_RESULT"
  49. AUTH_TOPIC_ARN=$(get_topic_arn_from_name $AUTH_TOPIC_NAME)
  50. FILES_TOPIC_NAME="files-local-topic"
  51. echo "creating topic $FILES_TOPIC_NAME"
  52. TOPIC_CREATED_RESULT=$(create_topic ${FILES_TOPIC_NAME})
  53. echo "created topic: $TOPIC_CREATED_RESULT"
  54. FILES_TOPIC_ARN=$(get_topic_arn_from_name $FILES_TOPIC_NAME)
  55. ANALYTICS_TOPIC_NAME="analytics-local-topic"
  56. echo "creating topic $ANALYTICS_TOPIC_NAME"
  57. TOPIC_CREATED_RESULT=$(create_topic ${ANALYTICS_TOPIC_NAME})
  58. echo "created topic: $TOPIC_CREATED_RESULT"
  59. ANALYTICS_TOPIC_ARN=$(get_topic_arn_from_name $ANALYTICS_TOPIC_NAME)
  60. REVISIONS_TOPIC_NAME="revisions-server-local-topic"
  61. echo "creating topic $REVISIONS_TOPIC_NAME"
  62. TOPIC_CREATED_RESULT=$(create_topic ${REVISIONS_TOPIC_NAME})
  63. echo "created topic: $TOPIC_CREATED_RESULT"
  64. REVISIONS_TOPIC_ARN=$(get_topic_arn_from_name $REVISIONS_TOPIC_NAME)
  65. SCHEDULER_TOPIC_NAME="scheduler-local-topic"
  66. echo "creating topic $SCHEDULER_TOPIC_NAME"
  67. TOPIC_CREATED_RESULT=$(create_topic ${SCHEDULER_TOPIC_NAME})
  68. echo "created topic: $TOPIC_CREATED_RESULT"
  69. SCHEDULER_TOPIC_ARN=$(get_topic_arn_from_name $SCHEDULER_TOPIC_NAME)
  70. QUEUE_NAME="analytics-local-queue"
  71. echo "creating queue $QUEUE_NAME"
  72. QUEUE_URL=$(create_queue ${QUEUE_NAME})
  73. echo "created queue: $QUEUE_URL"
  74. ANALYTICS_QUEUE_ARN=$(get_queue_arn_from_name $QUEUE_NAME)
  75. echo "linking topic $PAYMENTS_TOPIC_ARN to queue $ANALYTICS_QUEUE_ARN"
  76. LINKING_RESULT=$(link_queue_and_topic $PAYMENTS_TOPIC_ARN $ANALYTICS_QUEUE_ARN)
  77. echo "linking done:"
  78. echo "$LINKING_RESULT"
  79. QUEUE_NAME="auth-local-queue"
  80. echo "creating queue $QUEUE_NAME"
  81. QUEUE_URL=$(create_queue ${QUEUE_NAME})
  82. echo "created queue: $QUEUE_URL"
  83. AUTH_QUEUE_ARN=$(get_queue_arn_from_name $QUEUE_NAME)
  84. echo "linking topic $PAYMENTS_TOPIC_ARN to queue $AUTH_QUEUE_ARN"
  85. LINKING_RESULT=$(link_queue_and_topic $PAYMENTS_TOPIC_ARN $AUTH_QUEUE_ARN)
  86. echo "linking done:"
  87. echo "$LINKING_RESULT"
  88. echo "linking topic $AUTH_TOPIC_ARN to queue $AUTH_QUEUE_ARN"
  89. LINKING_RESULT=$(link_queue_and_topic $AUTH_TOPIC_ARN $AUTH_QUEUE_ARN)
  90. echo "linking done:"
  91. echo "$LINKING_RESULT"
  92. echo "linking topic $FILES_TOPIC_ARN to queue $AUTH_QUEUE_ARN"
  93. LINKING_RESULT=$(link_queue_and_topic $FILES_TOPIC_ARN $AUTH_QUEUE_ARN)
  94. echo "linking done:"
  95. echo "$LINKING_RESULT"
  96. echo "linking topic $REVISIONS_TOPIC_ARN to queue $AUTH_QUEUE_ARN"
  97. LINKING_RESULT=$(link_queue_and_topic $REVISIONS_TOPIC_ARN $AUTH_QUEUE_ARN)
  98. echo "linking done:"
  99. echo "$LINKING_RESULT"
  100. QUEUE_NAME="files-local-queue"
  101. echo "creating queue $QUEUE_NAME"
  102. QUEUE_URL=$(create_queue ${QUEUE_NAME})
  103. echo "created queue: $QUEUE_URL"
  104. FILES_QUEUE_ARN=$(get_queue_arn_from_name $QUEUE_NAME)
  105. echo "linking topic $AUTH_TOPIC_ARN to queue $FILES_QUEUE_ARN"
  106. LINKING_RESULT=$(link_queue_and_topic $AUTH_TOPIC_ARN $FILES_QUEUE_ARN)
  107. echo "linking done:"
  108. echo "$LINKING_RESULT"
  109. QUEUE_NAME="syncing-server-local-queue"
  110. echo "creating queue $QUEUE_NAME"
  111. QUEUE_URL=$(create_queue ${QUEUE_NAME})
  112. echo "created queue: $QUEUE_URL"
  113. SYNCING_SERVER_QUEUE_ARN=$(get_queue_arn_from_name $QUEUE_NAME)
  114. echo "linking topic $SYNCING_SERVER_TOPIC_ARN to queue $SYNCING_SERVER_QUEUE_ARN"
  115. LINKING_RESULT=$(link_queue_and_topic $SYNCING_SERVER_TOPIC_ARN $SYNCING_SERVER_QUEUE_ARN)
  116. echo "linking done:"
  117. echo "$LINKING_RESULT"
  118. echo "linking topic $FILES_TOPIC_ARN to queue $SYNCING_SERVER_QUEUE_ARN"
  119. LINKING_RESULT=$(link_queue_and_topic $FILES_TOPIC_ARN $SYNCING_SERVER_QUEUE_ARN)
  120. echo "linking done:"
  121. echo "$LINKING_RESULT"
  122. echo "linking topic $SYNCING_SERVER_TOPIC_ARN to queue $AUTH_QUEUE_ARN"
  123. LINKING_RESULT=$(link_queue_and_topic $SYNCING_SERVER_TOPIC_ARN $AUTH_QUEUE_ARN)
  124. echo "linking done:"
  125. echo "$LINKING_RESULT"
  126. echo "linking topic $AUTH_TOPIC_ARN to queue $SYNCING_SERVER_QUEUE_ARN"
  127. LINKING_RESULT=$(link_queue_and_topic $AUTH_TOPIC_ARN $SYNCING_SERVER_QUEUE_ARN)
  128. echo "linking done:"
  129. echo "$LINKING_RESULT"
  130. QUEUE_NAME="revisions-server-local-queue"
  131. echo "creating queue $QUEUE_NAME"
  132. QUEUE_URL=$(create_queue ${QUEUE_NAME})
  133. echo "created queue: $QUEUE_URL"
  134. REVISIONS_QUEUE_ARN=$(get_queue_arn_from_name $QUEUE_NAME)
  135. echo "linking topic $SYNCING_SERVER_TOPIC_ARN to queue $REVISIONS_QUEUE_ARN"
  136. LINKING_RESULT=$(link_queue_and_topic $SYNCING_SERVER_TOPIC_ARN $REVISIONS_QUEUE_ARN)
  137. echo "linking done:"
  138. echo "$LINKING_RESULT"
  139. echo "linking topic $REVISIONS_TOPIC_ARN to queue $REVISIONS_QUEUE_ARN"
  140. LINKING_RESULT=$(link_queue_and_topic $REVISIONS_TOPIC_ARN $REVISIONS_QUEUE_ARN)
  141. echo "linking done:"
  142. echo "$LINKING_RESULT"
  143. QUEUE_NAME="scheduler-local-queue"
  144. echo "creating queue $QUEUE_NAME"
  145. QUEUE_URL=$(create_queue ${QUEUE_NAME})
  146. echo "created queue: $QUEUE_URL"
  147. SCHEDULER_QUEUE_ARN=$(get_queue_arn_from_name $QUEUE_NAME)
  148. echo "all topics are:"
  149. echo "$(get_all_topics)"
  150. echo "all queues are:"
  151. echo "$(get_all_queues)"