【问题标题】:aws cli gives access denied when running shell_exectaws cli 在运行 shell_exect 时拒绝访问
【发布时间】:2021-07-23 05:57:02
【问题描述】:

在命令行我可以运行:

aws s3 同步 s3://my_bucket 。 --dryrun

很好。

但是,我正在尝试在 Laravel 中将其作为命令运行:

public function handle()
    {
        $command = 'aws s3 sync s3://my_bucket . --dryrun';
        shell_exec($command);
    }

我得到了:

致命错误:调用 ListObjectsV2 操作:拒绝访问

为什么相同的命令可以在命令行上运行,但不能在我的 PHP 应用程序中运行?

【问题讨论】:

  • 通过 PHP 运行时,可能没有设置环境变量,因此 AWS CLI 不知道从哪里自动加载您的凭证。明确指定凭证文件,并查看 CLI 文档/帮助/手册页以了解如何执行此操作。或者,您可以使用一些库直接与 AWS API 交互,而不是来回访问 CLI。
  • 您介意将其发布为回复吗?或者我可以用我实际使用的命令来回答我自己的问题。

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


【解决方案1】:

我听从了@Sammitch 的建议,并使用了

--profile my_config

其中 my_config 是一组命名的配置参数,使用以下命令创建:

aws configure --profile my_config

来源:AWS creating a named profile

【讨论】:

    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多