使用AWS IAM用戶角色的動機是讓AWS自動處理每個服務調用的AWS密鑰/憑證。這種方法在Apache Camel之後使用,後者然後使用憑證安全地進行數據傳輸,即不在源代碼中存儲任何憑證。使用AWS IAM的AWS S3存儲桶API調用用戶角色憑證:
我發現的問題是僅在aws cli中在IAM工具中創建的憑據。
舉例來說,我從IAM自動生成憑證成功運行此(我的環境變量中設置它們):
aws s3 cp test.txt s3://x/test.txt
然而,當我試圖模仿中同一操作(相同的憑據) API調用,我給這個錯誤信息:
The AWS Access Key Id you provided does not exist in our records.
(Service: Amazon S3; Status Code: 403; Error Code: InvalidAccessKeyId;
Request ID: 07A4FCDCA2E82F9E)
此外,使用我的AWS賬戶的安全證書(即製造一個安全密鑰ID和密鑰),我可以得到上述API工作。所以API不是問題(考慮到我已經測試了2個全音質證書集)。
最後,我的AWS IAM用戶角色設置爲擁有對S3存儲桶的完全訪問權限,並且S3存儲桶本身被配置爲允許這樣做。這是我開始迷失在潛在的路線上。
瞭解了所有這些,我已經做了一些研究並找到了類似問題的人(1)(2)。每個源代碼都提出了不同的想法來解決這個問題,但是對於我使用Apache Camel的用例來說,兩者都不適用。
對於我使用Apache的駱駝的知識,我的代碼示例如下:
String awsS3Connection = "aws-s3://x" + "?accessKey=" + accessId +
"&secretKey=" + accessKey;
from(awsS3Connection)
.to(importProcessingEndpoint);
我正在向您提出的有關駱駝支持此事的相同結論。我會看看是否有任何實現或缺乏駱駝接口內傳遞自定義憑據的規則。我發現的任何其他信息將在您的答案下作爲單獨的答案和評論發佈! –
似乎最近的aws sdk與駱駝不兼容,因此憑證檢索工作正常,但客戶端不能與駱駝一起使用。 –