【发布时间】:2019-05-25 19:53:33
【问题描述】:
对于我正在使用的连接,使用 AWS 共享凭证文件默认配置文件。我有 .aws/credentials 设置,其中包含 aws_access_key_id aws_secret_access_key。这适用于使用 S3Client 的 localhost 到 S3 连接。
但是,我想使用 S3EncryptionClient 进行客户端加密/解密,这就是问题开始的地方。使用 PHP 3.6 和 aws-sdk-php 3.5。我不得不手动安装 Crypto 目录,因为无论出于何种原因,即使据我了解 v3.38 中添加了支持,composer 也无法获得它们。
Amazon S3 Client-Side Encryption with the AWS SDK for PHP Version 3 example 之后的 putObject 失败并显示“从实例配置文件元数据服务器检索凭据时出错”。在使用 S3Client 或使用 S3EncryptionClient 时,我在两种情况下都使用相同的用户、密钥和密钥。我假设 KmsMaterialsProvider 不需要指定 'credentials' => $provider,但我也尝试过。
编辑: 在 IAM Policy Simulator 中进行了相同的尝试。可能策略设置不正确。但不太确定需要什么。尝试了一堆不同的变化,但没有任何成功。不断收到“拒绝隐式拒绝(没有匹配的陈述)”。用于以下操作:加密、解密,即使策略具有这些操作。我在本地机器上这样做的问题是什么?但后来我会认为非加密的写入/读取会以同样的方式失败。
【问题讨论】:
标签: php amazon-web-services amazon-s3 encryption aws-php-sdk