簡體   English   中英

適用於 PHP 的 S3 S3EncryptionClient AWS 開發工具包:從實例配置文件元數據服務器檢索憑證時出錯

[英]S3 S3EncryptionClient AWS SDK for PHP: Error retrieving credentials from the instance profile metadata server

對於我的連接,我使用使用 AWS 共享憑證文件默認配置文件。 我有包含 aws_access_key_id aws_secret_access_key 的 aws/credentials 設置。 這適用於使用 S3Client 的本地主機到 S3 的連接。

但是,我想使用 S3EncryptionClient 進行客戶端加密/解密,這就是問題開始的地方。 使用 PHP 3.6 和 aws-sdk-php 3.5。 我不得不手動安裝 Crypto 目錄,因為無論出於何種原因,作曲家都無法獲得它們,即使據我所知在 v3.38 中添加了支持。

使用適用於 PHP 的 AWS 開發工具包版本 3 示例的 Amazon S3 客戶端加密后的putObject 失敗,並顯示“從實例配置文件元數據服務器檢索憑證時出錯”。 在使用 S3Client 或使用 S3EncryptionClient 時,我在這兩種情況下都使用相同的用戶、密鑰和機密。 我假設 KmsMaterialsProvider 不需要指定 'credentials' => $provider,但我也試過了。

編輯:在 IAM Policy Simulator 中進行了相同的嘗試。 可能政策設置不正確。 但不太確定需要什么。 嘗試了一堆不同的變體但沒有成功。 不斷收到“被拒絕隱式拒絕(沒有匹配的陳述)”。 對於以下操作:加密、解密,即使策略具有這些操作。 我是從我的本地機器上做這個的問題嗎? 但是后來我認為對於非加密的寫入/讀取它會以同樣的方式失敗。

弄清楚這一點,以防萬一有人遇到同樣的問題,因為看起來至少有幾個人沒有回答。 在開發環境 (localhost) 上創建 KmsClient 需要指定 'credentials' => $provider,即使已經為 S3EncryptionClient 指定。 還要確保為密鑰和 KMS 服務設置了權限策略。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM