localstackのバージョンを上げたらSQS周りでハマった
上のissueに関係するものでした。タイトルにbugって書いてあるが、bugじゃなく仕様のようです。
バージョンアップ前は
# 環境変数 SQS_URL=http://localstack:4566/000000000000/app_name
# config/initializers/sqs_active_job.rb Aws::Rails::SqsActiveJob.configure do |config| config.logger = ActiveSupport::Logger.new($stdout) config.max_messages = 5 config.queues = { default: ENV.fetch('SQS_URL', nil) } config.client = Aws::SQS::Client.new(region: 'ap-northeast-1') end
こんな感じで指定していましたが、localstack/localstack:2.0.2
のdocker imageを使うようになってからエラーが発生するようになりました。
なので、環境変数で与えてる部分を
SQS_URL=http://localstack:4566/000000000000/ap-northeast-1/app_name
こんな感じで、regionを追加したら動くようになりました。
この方式は
https://docs.localstack.cloud/user-guide/aws/sqs/#queue-urls
に載っている、SQS_ENDPOINT_STRATEGY= path
にしたときと同じ動きですが、SQS_ENDPOINT_STRATEGYはどこにも指定して無いです。
githubのlocalstackのソースコードを読めばわかりそうな感じでしたが、そこまでする理由が今回は見当たらなかったので、そこで調査はやめています。
調査は楽しいですが、しすぎるのも良くないと最近思いました。