无法找到凭据 aws cli

时间:2021-07-22 13:25:36

标签: amazon-web-services aws-cli php-7.1

我使用的是 AWS CLI 版本 2。我使用的是 centos > Nginx > php 7.1,当我直接在命令行上运行时,以下命令可以正常工作。

aws s3 cp files/abc.pdf s3://bucketname/

但是当我使用以下代码从 index.php 文件运行相同的命令时

echo exec("aws s3 cp files/abc.pdf s3://bucketname/ 2>&1");

然后报错

<块引用>

上传失败:无法找到凭据

2 个答案:

答案 0 :(得分:0)

@Jass 在“~/.aws/credentials”或“~/.aws/config”中添加您的凭据并使其成为[default],否则使用 profile_name 以防万一多个帐户。 还要验证,如果您通过 export 将密钥用作环境变量,那么它仅适用于该终端。因此,请尝试从导出密钥的同一终端执行 php 或将其添加到 ~/.aws/credentials 中。

答案 1 :(得分:0)

我试过这个,它对我有用,我相信也应该对你有用。在您的 PHP 代码 (index.php) 中,尝试导出凭证文件位置,如下所示

echo exec("export AWS_SHARED_CREDENTIALS_FILE=/<path_to_aws_folder>/.credentials; aws s3 cp files/abc.pdf s3://bucketname/ 2>&1");

当您从命令行运行时,AWS CLI 会从您的主目录中获取凭证,即 ~/.aws/credentials(这是默认值)。当执行 index.php 时,它会在其主目录中查找上述文件,该文件与您的主目录不同,因此无法找到凭据。通过上述更改,您明确将其指向您的 AWS 凭证。