httpd/apache 的 AWS 凭据不同于为 ec2-user 设置的凭据
AWS credentials for httpd / apache different from those set for ec2-user
如何让 httpd / apache 使用特定的 access_key、secret_key 和区域?
我已经使用 aws configure
为 EC2 实例设置默认凭据,使用默认的 ec2-user。我可以使用 aws configure list
成功检索这些,并且当通过 ssh 以 ec2-user.
登录时,我可以成功调用 aws s3api
之类的东西
我运行在相关实例上将 apache 作为 httpd。当我尝试从 Web 应用程序进行调用时,例如使用 php $output = shell_exec('aws s3api Example-Commands --output text 2>&1');
我收到错误消息 403 Forbidden。如果我 运行 $output = shell_exec('aws configure list --output text 2>&1');
然后我看到 access_key 和 secret_key 不是我使用 aws configure
提供的那些。如果我改为 运行 这些来自 SSH 的命令,当以 ec2-user 身份登录时,它们会起作用。
httpd 在使用
时似乎是 运行ning 用户 "apache"
[ec2-user@ip-172-26-0-172 ~]$ ps aux | egrep '(apache|httpd)'
root 7425 0.0 0.3 4***76 2***6 ? Ss Apr15 1:39 /usr/sbin/httpd
apache 9074 0.3 1.0 5***16 8***8 ? Sl 22:45 0:01 /usr/sbin/httpd
apache 9075 0.0 0.2 4***20 1***0 ? Sl 22:45 0:00 /usr/sbin/httpd
apache 9081 0.2 0.8 5***04 6***6 ? Sl 22:45 0:00 /usr/sbin/httpd
nano ~/.aws/credentials
显示我之前输入的凭据。
我希望让 httpd 使用我之前提供给 aws configure 的凭据,但我不确定如何操作。
根据评论,解决方案是使用 environment variables
以便 Apache 可以访问凭据。
但是,应该注意的是,在实例上硬编码凭据不是一个好的做法。推荐的方式是 Attach an IAM role to your existing Amazon EC2 instance:
IAM roles enable your applications running on EC2 to use temporary security credentials that AWS creates, distributes, and rotates automatically. Using temporary credentials reduces the risk of long-term key compromise..
如何让 httpd / apache 使用特定的 access_key、secret_key 和区域?
我已经使用 aws configure
为 EC2 实例设置默认凭据,使用默认的 ec2-user。我可以使用 aws configure list
成功检索这些,并且当通过 ssh 以 ec2-user.
aws s3api
之类的东西
我运行在相关实例上将 apache 作为 httpd。当我尝试从 Web 应用程序进行调用时,例如使用 php $output = shell_exec('aws s3api Example-Commands --output text 2>&1');
我收到错误消息 403 Forbidden。如果我 运行 $output = shell_exec('aws configure list --output text 2>&1');
然后我看到 access_key 和 secret_key 不是我使用 aws configure
提供的那些。如果我改为 运行 这些来自 SSH 的命令,当以 ec2-user 身份登录时,它们会起作用。
httpd 在使用
时似乎是 运行ning 用户 "apache"[ec2-user@ip-172-26-0-172 ~]$ ps aux | egrep '(apache|httpd)'
root 7425 0.0 0.3 4***76 2***6 ? Ss Apr15 1:39 /usr/sbin/httpd
apache 9074 0.3 1.0 5***16 8***8 ? Sl 22:45 0:01 /usr/sbin/httpd
apache 9075 0.0 0.2 4***20 1***0 ? Sl 22:45 0:00 /usr/sbin/httpd
apache 9081 0.2 0.8 5***04 6***6 ? Sl 22:45 0:00 /usr/sbin/httpd
nano ~/.aws/credentials
显示我之前输入的凭据。
我希望让 httpd 使用我之前提供给 aws configure 的凭据,但我不确定如何操作。
根据评论,解决方案是使用 environment variables
以便 Apache 可以访问凭据。
但是,应该注意的是,在实例上硬编码凭据不是一个好的做法。推荐的方式是 Attach an IAM role to your existing Amazon EC2 instance:
IAM roles enable your applications running on EC2 to use temporary security credentials that AWS creates, distributes, and rotates automatically. Using temporary credentials reduces the risk of long-term key compromise..