Php 在Laravel文件系统中使用EC2元数据凭据

Php 在Laravel文件系统中使用EC2元数据凭据,php,laravel,amazon-web-services,amazon-s3,Php,Laravel,Amazon Web Services,Amazon S3,我如何告诉Laravel文件系统层在EC2实例上使用s3元数据?我不想为我的s3存储桶提供硬编码密钥和秘密。我不清楚配置应该是什么样子。当我从文件系统配置中排除密钥和密码时,我得到以下错误 ErrorException Undefined index: key 提供凭据的正确方法是使用.env文件 在.env文件中,添加如下内容: EC2_SECRET=your_ec2_secret EC3_KEY=your_ec2_key 'ec2' => [ ... 'key' =>

我如何告诉Laravel文件系统层在EC2实例上使用s3元数据?我不想为我的s3存储桶提供硬编码密钥和秘密。我不清楚配置应该是什么样子。当我从文件系统配置中排除密钥和密码时,我得到以下错误

ErrorException
Undefined index: key

提供凭据的正确方法是使用
.env
文件

在.env文件中,添加如下内容:

EC2_SECRET=your_ec2_secret
EC3_KEY=your_ec2_key
'ec2' => [
  ...
  'key' => env('EC2_SECRET'),
  'secret' => env('EC3_KEY'),
],
在``配置文件中,使用如下内容:

EC2_SECRET=your_ec2_secret
EC3_KEY=your_ec2_key
'ec2' => [
  ...
  'key' => env('EC2_SECRET'),
  'secret' => env('EC3_KEY'),
],

您现在应该能够使用该服务,而无需将凭据存储在存储库中。

修复方法是为key和secret保留空的占位符值。例如,在config/filesystems.php中

return [
    'cloud' => 's3',    
    'disks' => [
         's3' => [
             'driver' => 's3',
             'key' => '',
             'secret' => '',
             'region' => env('S3_REGION'),
             'bucket' => env('S3_BUCKET'),
         ],
    ],
];

我对Laravel只有一点模糊的、暂时的熟悉,但基于AWS的一般知识,在我看来,如果您使用的是包含官方AWS PHP SDK的东西,那么如果您不提供静态凭据,那么实例角色凭据将自动使用。解决方法可能比看起来要简单,但我真的不知道。我想你误解了这个问题。我希望使用元数据端点提供的元数据凭据,该凭据可从AWS EC2实例获得,而不是使用静态密钥和密码,我必须手动发布和更新这些密钥和密码。看见