httpd/apache的AWS凭据与为ec2用户设置的凭据不同



如何让httpd/apache使用特定的access_key、secret_key和region

我已经使用aws configure为EC2实例设置了默认凭据,其中包含默认的EC2用户。我可以使用aws configure list成功地检索这些内容,并且当作为ec2用户通过ssh登录时,我可以成功地调用aws s3api之类的内容。

我在有问题的实例上以httpd的身份运行apache。当我尝试从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提供的。如果我在以ec2用户身份登录时从SSH运行这些命令,它们就会工作。

使用时,httpd似乎以用户"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的凭据进行配置,但不确定如何做到这一点

根据注释,解决方案是使用environment variables,以便Apache可以访问凭据。

但是,需要注意的是,对实例的凭据进行硬编码不是一个好的做法。建议的方法是将IAM角色附加到您现有的Amazon EC2实例:

IAM角色使您在EC2上运行的应用程序能够使用AWS自动创建、分发和轮换的临时安全凭据。使用临时凭据可以降低长期密钥泄露的风险。。

相关内容

  • 没有找到相关文章

最新更新