我是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安装命令行工具?)。此外,凭证文件的扩展名是什么?
我已经被困在这几个小时,所以任何帮助将不胜感激。
答案 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)
对于AWS Profile(Creds文件)
是的,您需要安装AWS CLI工具,然后使用以下命令设置配置文件
aws configure
访问此link以获取CLI配置。
要在您的应用中使用步骤1中配置的凭据,您应该使用AWS SDK中的凭据提供程序。请阅读此link
我的建议:阅读有关IAM配置文件的信息 - &gt; here
您的应用程序可以从附加到AWS Resource的IAM角色获取S3权限,无论其lambda还是EC2
您应该跳过将信用卡传递给客户或使用信用卡提供商。
因为在代码中创建S3客户端时。
在本地环境中:配置CLI后。 S3 Client将自动在env vars或〜/ .aws dir等多个地方查找信用卡。
部署时:它将从附加到AWS资源的IAM角色中选择权限,其中部署了lambda或EC2。