Posted at

AWS SDK for Ruby を LocalStack で利用する際の設定について

More than 1 year has passed since last update.

先程ハマって解決できたのでメモを残しておきます。

開発時等で LocalStack を利用する際に aws sdk を使って s3 upload/download などをすると TCP エラーになるかと思います。この問題を解決するための設定が以下になります。(以下は rails 環境で s3 のみ設定する例です。)

endpoint = ENV['AWS_S3_ENDPOINT'].to_s

if endpoint.present? && endpoint =~ /(localstack|localhost|127\.0\.0\.1)/
Aws.config[:s3] = {
endpoint: ENV['AWS_S3_ENDPOINT'].to_s,
force_path_style: true,
}
end

force_path_styletrue にすることで endpoint に bucket 名が含まれなくなり意図した endpoint に接続できるようになります。