亚马逊S3-2

服务端

920 发布: 2020/12/24 15:12 本文总阅读量

亚马逊存储桶+服务端配置

亚马逊

亚马逊后台配置:https://aws.amazon.com/cn/
1.登录账号,进入Amazon s3创建存储桶
图1
图2
按照上图所示填写内容,剩下的信息默认,点击底部创建存储桶
2.存储桶权限设置
图3
图4
设置跨域内容如下:更换对应的域名,其他配置信息不做修改.

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "https://yunyue.s3.amazonaws.com",//这里更换为自己的存储访问域名
            "http://yuedantest.yunbaozb.com"//这里更换问自己服务器访问域名
        ],
        "ExposeHeaders": [
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ]
    },
    {
        "AllowedHeaders": [],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": []
    }
]

3.添加IAM用户

i:https://console.aws.amazon.com/iam/home?region=ap-southeast-1#/users
图5
图6

ii:IAM用户权限设置以下两个即可:然后一直下一步直到创建用户 图7

iii:获取密钥 图8

服务端配置

后台

图9

密钥代码配置 在服务器根目录下找到Home/www,没有则创建,赋权限755Home/www下创建.aws文件夹,放入文件credentials在文件里配置获取到的密钥信息即可
图10

服务端SDK 关于亚马逊上传的SDK可以根据composer安装,也可以直接复制aws.zip解压到项目对应的目录中,参考:https://docs.aws.amazon.com/zh_cn/sdk-for-php/v3/developer-guide/getting-started_installation.html

上传代码

			$name=$files['name'];
/***
*省略部分代码
*/
			require_once( CMF_ROOT.'sdk/aws/aws-autoloader.php');//引入文件
			$configpri=getConfigPri();				
$sharedConfig = [
					'profile' => 'default',
					'region' => $configpri['aws_region'], //区域
					'version' => 'latest',
					'Content-Type' => $files['type'],
					//'debug'   => true
			];
				$sdk = new \Aws\Sdk($sharedConfig);	
				$s3Client = $sdk->createS3();
				$result = $s3Client->putObject([
					'Bucket' => $configpri['aws_bucket'],
					'Key' => $name,
					'ACL' => 'public-read',
					'Content-Type' => $files['type'],
					'Body' => fopen($files['tmp_name'], 'r')
				]);			
				$a = (array)$result;
				$n = 0;
				foreach($a as $k =>$t){
					if($n==0){
						$n++;
						$url = $t['ObjectURL'];//上传成功返回地址
				}
				}

异常 如果出现以下错误:则是缺少用户权限:AmazonS3FullAccess 图11
图12

至此,完毕.