我們有一個全程使用Amazon S3的Web應用程序,爲了便於維護,我們使用相應的存儲桶權限等設置了不同的IAM用戶。我們爲此設置了憑據用戶在爲這樣我們的Ruby /西納特拉應用程序的初始化部分:覆蓋AWS-SDK中的默認憑證
# MyS3UserIAM
Aws.config.update({
:region => 'us-east-1',
:credentials => Aws::Credentials.new(ENV['AWS_S3_KEY'],ENV['AWS_S3_SECRET'])
})
這個偉大的工程,因爲我們可以實例S3通過我們的代碼對象都無需重新指定每次憑據。
問題是,我們現在爲我們網站的一個子部分添加了一個小例程,該子部分需要使用Amazon DynamoDB進行兩次調用。我們已經成立了一個獨立的IAM與權限DynamoDB表,我們正在創建的程序中的對象作爲這樣的:
# MyDynamoUserIAM
mydynamodb = Aws::DynamoDB::Client.new(
access_key_id: ENV['AWS_DYNAMO_KEY'],
secret_access_key: ENV['AWS_DYNAMO_SECRET']
)
的問題是,當我們試圖讓使用mydynamodb任何查詢,我們發現訪問失敗,說MyS3UserIAM對我們的DynamoDB表沒有權限。
(事實上,該錯誤是混亂的,因爲錯誤信息給我們的錯誤字符串MyDynamoUserIAM ARN,但顯示MyS3UserIAM作爲IAM的名字!)
我本來以爲指定在Aws::Object
實例化期間的憑據將覆蓋Aws.config
設置,但似乎沒有。有什麼辦法可以解決這個問題嗎?