2014-10-28 113 views
2

我正在使用AWS Ruby v2 sdk預發佈版。 eu-west-1運行平穩的EC2和S3服務腳本不適用於歐盟中心-1。我得到以下異常:eu-central-1(法蘭克福)的身份驗證失敗AWS

AWS was not able to validate the provided access credentials (Aws::EC2::Errors::AuthFailure) 

短的查詢後,我認定這是由於歐盟中央-1僅支持簽名版本4,這是確定的事實。按照建議,我在config.yml中添加了s3_signature_version: v4。然後我開始得到一個新的例外:

/usr/local/lib/ruby/gems/2.1.0/gems/aws-sdk-core-2.0.3/lib/seahorse/client/configuration.rb:160:in `rescue in block in apply_options': invalid configuration option `:s3_signature_version' (ArgumentError) 

所以現在我有2個問題。

  • s3_signature_version: v4config.yml有什麼問題?
  • Ec2的類似簽名版本4配置需要添加什麼?
+0

在較早的AWS SDK中使用'config.yml'。你使用的是aws-sdk-core,它是最新的。你需要爲aws-sdk-core找到類似的選項。 – slayedbylucifer 2014-10-29 05:00:25

+0

@slayedbylucifer具體的文件名是否有用?我正在使用通用方法從文件中檢索配置。到目前爲止,我沒有看到任何不同的文件名稱的影響。 aws-config.yml是我的真實文件。 'config_file = File.join(File.dirname(__ FILE __),「aws-config.yml」)\ n Aws.config = YAML.load(File.read(config_file))。inject({}){| h, (K,v)| h.merge(k.to_sym => v)}' – Meks 2014-10-29 07:12:42

+0

請查看:https://github.com/aws/aws-sdk-core-ruby/tree/master/aws-sdk-core/spec/aws/簽名者看起來像他們已經將此功能添加到aws-sdk-ruby。你可以嘗試安裝/更新aws-sdk-core gem的最新版本,然後嘗試。它可能支持簽名V4開箱即用。 – slayedbylucifer 2014-10-29 08:55:31

回答

2

如果更新到AWS-SDK核心的2.0.5版本,那麼它會默認爲簽名版4.要強制AWS-SDK核心的舊版本使用sigv4,通過signature_version: 'v4'到客戶端構造函數。

+0

太棒了。所以我的猜測幾乎是正確的:) – slayedbylucifer 2014-10-30 05:37:37

+0

幹得好。謝謝。 – Meks 2014-10-30 22:01:25

+0

如何在ubuntu上更新aws-sdk-core的版本?請告訴我。 – Vivek 2016-03-17 00:06:01