2017-11-17 9 views
0

localstackにルビーaws-sdkを使用します。これは、いくつかの構成AWS SDKミスを思わやバグを持っている、それがエラーを発生させます:私はawscliを使用する場合、同じコンテナにローカルスタック:awscliが動作し、aws-sdkエラーが発生します

/usr/local/lib/ruby/2.2.0/net/http.rb:879:in `initialize': unable to connect to 
`mybucket.localstack`; SocketError: getaddrinfo: Name or service not known 
(Seahorse::Client::NetworkingError) 

Aws::S3::Resource.new.bucket('mybucket').exists? 

後は、提起します問題はありません。

[email protected]:/app/user# aws --endpoint-url=http://localstack:4572 s3 mb s3://test1 
    make_bucket: test1 
[email protected]:/app/user# aws --endpoint-url=http://localstack:4572 s3 ls 
    2006-02-03 16:45:09 test1 

問題を解決するためにdocker-compose.ymlを作成しました。

https://github.com/ook/localstack-s3-problem

私は今のところみました何のreadmeに気づきました。

してくださいアドバイス:)あなたの問題を再現するための詳細なレポを提供するための

答えて

1

感謝。
Awsの設定をforce_path_stylebased off of this)にすることでこれを解決できました。
TLDR:

If you enable path style access on your client, it will not append the bucket name to your domain name

だから設定はこのように見てしまった:

Aws.config.update(endpoint: localstack, credentials: Aws::Credentials.new('sofake', 'solie'), region: 'eu-west-1', force_path_style: true) 

次の問題は、バケットは(少なくとも私のマシン上で)まだ存在していなかったという事実によるものでした。その問題を解決するための

Setting endpoint to http://localstack:4572/ 
    Aws.config={:endpoint=>"http://localstack:4572/", :credentials=># 
    <Aws::Credentials access_key_id="sofake">, :region=>"eu-west-1", 
:force_path_style=>true} 
    sleeping 1s 
    setting aws endpoint 
    Aws::S3::Resource.new.bucket('mybucket').exists? 
    #<Aws::S3::Bucket:0x00559716b95a20 @name="mybucket", @data=nil, @client=#<Aws::S3::Client>> 
    true 
+0

おかげで多くのことを:だから、私は期待どおりにスクリプトが働いていたことを後Aws::S3::Resource.new.create_bucket(bucket: 'mybucket')

たら、このコマンドを実行する必要がありました!私はこれで多くの時間を過ごしました...私はlocalstackをFAQに追加し、aws-ruby-sdkはawscliと一貫性を持たせることを提案します。再び:ありがとう。 –

+0

問題ありません!お力になれて、嬉しいです! :) – cameck

関連する問題