aws cli 在运行 shell_exect 时拒绝访问
Posted
技术标签:
【中文标题】aws cli 在运行 shell_exect 时拒绝访问【英文标题】:aws cli gives access denied when running 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。 您介意将其发布为回复吗?或者我可以用我实际使用的命令来回答我自己的问题。 【参考方案1】:我听从了@Sammitch 的建议,并使用了
--profile my_config
其中 my_config 是一组命名的配置参数,使用以下命令创建:
aws configure --profile my_config
来源:AWS creating a named profile
【讨论】:
以上是关于aws cli 在运行 shell_exect 时拒绝访问的主要内容,如果未能解决你的问题,请参考以下文章
运行任何 aws CLI 命令时出现错误“您必须指定一个区域”
在传递 CommaDelimitedList 类型的参数值时看到 Aws cli cloudformation 错误
AWS Lambda NodeJS 运行时是不是安装了 python?
AWS CLI 与控制台和 CloudFormation 堆栈