Laravel对接 AWS S3 完整流程

重要的三个参数

AWS_ENDPOINT
AWS_KEY
AWS_SECRET

1、创建存储桶

Laravel对接 AWS S3 完整流程_第1张图片

2、开启权限
Laravel对接 AWS S3 完整流程_第2张图片

3、编辑存储桶策略
Laravel对接 AWS S3 完整流程_第3张图片
Laravel对接 AWS S3 完整流程_第4张图片
Laravel对接 AWS S3 完整流程_第5张图片
4、使用策略生成器生成json策略
Laravel对接 AWS S3 完整流程_第6张图片

Laravel对接 AWS S3 完整流程_第7张图片

Laravel对接 AWS S3 完整流程_第8张图片
显示公开访问
Laravel对接 AWS S3 完整流程_第9张图片

控制台随便上传一个文件后查看属性复制AWS_ENDPOINT 即对象URI的域名字段
Laravel对接 AWS S3 完整流程_第10张图片

5、创建IAM用户、添加用户组权限
Laravel对接 AWS S3 完整流程_第11张图片
创建用户成功后进入用户详情 创建访问密钥

Laravel对接 AWS S3 完整流程_第12张图片

至此三个参数都已得到

AWS_KEY
AWS_SECRET

Lravel 实现S3文件上传/删除

1.安装扩展

composer require aws/aws-sdk-php-laravel

2.注册服务

#app/config/app.php
// 将下面代码追加到 providers 数组中
Aws\Laravel\AwsServiceProvider::class,
// 将下面代码追加到 aliases 数组中
'AWS' => Aws\Laravel\AwsFacade::class,

3.配置文件

#app/config/aws.php
return [
    'version' =>'latest',
    'region'  => env('AWS_REGION', 'ap-south-1'),  
    'endpoint' => env('AWS_ENDPOINT', 'https://sharerabc.s3.ap-south-1.amazonaws.com'),
    'use_path_style_endpoint' =>true,
    'credentials' => [
        'key'    => env('AWS_KEY', 'YOUR_AWS_ACCESS_KEY'),
        'secret' => env('AWS_SECRET', 'YOUR_AWS_SECRET_KEY'),
    ],
    'Ses' => [
        'region' => env('AWS_SES_REGION', 'ap-south-1'),
    ],
];
   

4.文件上传

    public function add(){
        $s3Client = AwsFacade::createClient('s3');

        $s3_return = $s3Client->putObject([
            'Bucket' => date('Ymd'), //存储桶(我的理解就是文件系统中的目录)
            'Key' => time() . '.png', //文件名(包括后缀名)
            'Body' => file_get_contents('img/demo.png') //要上传的文件
        ]);

        if($s3_return['@metadata']['statusCode'] == 200){
            echo $s3_return['@metadata']['effectiveUri'];
        } else {
            echo '返回值错误 : return fail! ';
        }
}

5.文件删除

public function del(){
    $s3Client = AwsFacade::createClient('s3');
    $bucket = 'demo';

    $s3Client->deleteObjects([
        'Bucket'  => $bucket,
        'Delete' => [
            'Objects' => [['Key' => '20210208/1612777025.png']]
        ]
    ]);
}

参考链接:
https://github.com/aws/aws-sdk-php-laravel
https://blog.csdn.net/qq_43489208/article/details/113759771
https://blog.csdn.net/zimu002/article/details/85788476

你可能感兴趣的:(aws,laravel,云计算)