如何为PHP设置AWS S3凭据

时间:2018-03-23 06:09:18

标签: php amazon-web-services amazon-s3

我是S3的新手,我很难通过文件设置我的凭据。这是一个工作解决方案,我目前使用硬编码凭证(IAM_KEY和IAM_SECRET是用于存储我的密钥的变量):

// Using hard-coded credentials
    $s3 = new S3Client([
        'version'     => 'latest',
        'region'      => 'us-east-1',
        'credentials' => [
            'key'    => $IAM_KEY,
            'secret' => $IAM_SECRET ,
        ],
    ]);

但是,我想将密钥和密钥存储在一个文件中,以便在将文件推送到GitHub时不可见。这是我的尝试不起作用:

// using credential file - not working :(
$s3 = S3Client::factory(
     array(
        'profile' => 'my_profile',
        'version' => 'latest',
        'region'  => 'us-east-1'
    ));

我的凭据文件如下:

[my_profile]
aws_access_key_id = someKey
aws_secret_access_key = someKey

我已经在AWS上阅读了文档(https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html),但仍然被卡住了。它提到我必须将我的凭证文件存储在〜/ .aws / credentials中,但是,我找不到该目录(我是否需要先为AWS安装命令行工具?)。此外,凭证文件的扩展名是什么?

我已经被困在这几个小时,所以任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以将AWS凭据存储在通过.gitignore文件忽略的文件中。

例如:

<强> AWS-credentials.php

<?php

    $IAM_KEY = 'key';
    $IAM_SECRET = 'secret';

?>

<强>的index.php

<?php                                                                           

require_once('aws-credentials.php');                                            

echo $IAM_KEY . "\n\n";                                                         
echo $IAM_SECRET . "\n\n";                                                      

?> 

<强>的.gitignore

aws-credentials.php

由于文件&#34; aws-credentials.php&#34;在.gitignore文件中引用,当您将更改提交给git时,它不会被包括在内。

自从我在生产环境中使用PHP以来已经有一段时间了,但将aws-credentials.php文件存储在Web根目录之外也是一种好习惯,只是为了排除远程数据库如果Web服务器未配置为正确执行PHP文件,则可能会暴露文件的内容。

如果您在Amazon EC2上托管该应用程序,最好不要使用IAM凭据,而是使用IAM roles

答案 1 :(得分:0)

  1. 对于AWS Profile(Creds文件)

    是的,您需要安装AWS CLI工具,然后使用以下命令设置配置文件

    aws configure

    访问此link以获取CLI配置。

  2. 要在您的应用中使用步骤1中配置的凭据,您应该使用AWS SDK中的凭据提供程序。请阅读此link

  3. 我的建议:阅读有关IAM配置文件的信息 - &gt; here
    您的应用程序可以从附加到AWS Resource的IAM角色获取S3权限,无论其lambda还是EC2

    您应该跳过将信用​​卡传递给客户或使用信用卡提供商。

    因为在代码中创建S3客户端时。

    在本地环境中:配置CLI后。 S3 Client将自动在env vars或〜/ .aws dir等多个地方查找信用卡。

    部署时:它将从附加到AWS资源的IAM角色中选择权限,其中部署了lambda或EC2。