AWS基本教程
AWS升级配置
1.先停止
实例,不是终止
实例
2.修改实例类型
服务器局域网互通
需要把局域网 想要互通的服务器,加入一个公共的的默认安全组
选择default
安全组
要看服务器部署在哪里
JavaSDK上传图片到S3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| @RestController @Slf4j @Api(tags = "上传接口") public class UploadController { @Value("${S3.accessKey}") String accessKey;
@Value("${S3.secretKey}") String secretKey;
@Value("${S3.endPoint}") String endPoint;
@Value("${S3.bucketName}") String bucketName;
@PostMapping("/upload") @ApiOperation("上传") @NotNeedAuth public Response<String> upload(@RequestParam("file") MultipartFile file) { String originalFilename = file.getOriginalFilename(); if (!Constant.PHOTO_LIST.contains(originalFilename.substring(originalFilename.lastIndexOf(".") + 1))) { return Response.fail(CodeConstant.CODE_095); }
String newImageName = ThreadLocalRandom.current().nextInt(10000) + System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase(); String fileName = "lxdt/dt/" + Constant.DIRECTORY_TIME_FORMAT.format(LocalDateTime.now(Constant.TIME_ZONE)) + newImageName; try { S3Util.uploadFileByFile(accessKey, secretKey, endPoint, bucketName, fileName, file); } catch (Exception e) { log.error("上传失败", e); return Response.error(""); } return Response.successData(fileName); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class S3Util {
public static void uploadFileByFile(String accessKey, String secretKey, String endPoint, String bucketName, String folderName, MultipartFile file) throws IOException { ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTPS); AmazonS3 amazonS3 = AmazonS3Client.builder().withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endPoint, Region.getRegion(Regions.AP_SOUTHEAST_1).getName())) .withClientConfiguration(clientConfig).withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey))) .disableChunkedEncoding().withPathStyleAccessEnabled(true).withForceGlobalBucketAccessEnabled(true).enablePathStyleAccess().build(); ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentType(file.getContentType()); objectMetadata.setContentLength(file.getSize()); amazonS3.putObject(new PutObjectRequest(bucketName, folderName, file.getInputStream(), objectMetadata).withCannedAcl(CannedAccessControlList.PublicRead)); } }
|
S3桶策略
公开访问桶策略
1 2 3 4 5 6 7 8 9 10 11 12
| { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
|
印象中有遇到这种情况:
第一次操作桶的时候,桶里面的文件是能正常共享出来的
很久之后没有操作了,再上传一个新文件,上传的这个文件就不能共享了
第二次出现这样情况的时候,我文件的url搞错了,是可以正常共享的
PicGO+S3
创建存储桶
红框里不要勾选
创建文件夹,设置公开
开启静态托管
新建IAM用户
访问创建IAM页面
创建使用者
创建使用者详情
创建使用者权限,点击下一步,然后就能看到key和密钥了
PicGO配置
PicGO软件许要下再S3插件,然后再配置文件里粘贴这个
1 2 3 4 5 6 7
| "aws-s3": { "accessKeyID": "AKIA2Q6ZSIPP7MKZOFHR", "secretAccessKey": "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", "bucketName": "mmzcg.com", "uploadPath": "blog/{year}/{fullName}", "acl": "public-read" }
|
参考
S3教程
PicGoS3教程
CloudFront加速Vercel
1.找到vercel自动分配的域名
2.aws 创建分配
3.选择源
不要选择源,输入vercel分配的域名
4.选择全部https,其它可以默认
5.选择证书
备用域名:
比如vercel默认分配的是xxx.vercel.app
你想加速的域名是 abc.blog,备用域名就填abc.blog
自定义SSL证书:
用aws自带的证书申请工具
点击保存,回到CloudFront首页
6.cname
- 看上次修改时间这一列,如果显示的时间,就表示刚才的配置已经生效了,如果显示在部署中…就等一会
- CloudFront这一列会分配一个域名,在域名解析那里Cname指向这个域名就可以了
AWS S3和Hexo
1.安装插件
1 2
| npm install hexo-deployer-aws-s3 --save-dev
|
2.改_config.yml
1 2 3 4 5 6 7 8
| deploy:
type: 'aws-s3' region: ap-east-1 bucket: mmzcg.com
|
如果要部署多个地方,每个仓库的type前面要加一个-
如果只有一个,就只用type开头就行
3.执行环境变量
1 2 3
| export AWS_ACCESS_KEY_ID=AKIA2Q6ZSIPP7MKZOFHR export AWS_SECRET_ACCESS_KEY=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 source /etc/profile
|
4.部署
1 2 3 4
| hexo clean hexo algoli hexo d -g
|
发现报错,The bucket does not allow ACLs
,还需要在存储中开启 ACLs
接下来要关闭「阻止共有访问操作」
部署成功后,开启静态网站托管功能
RDS
创建RDS
选择mysql社区版本
AWS的RDS开启慢查询日志到cloudwatch中
快照导出到S3
参考文档
接下来的页面是需要的设置
- 导出标识符,就是导出任务的名字
- 导出的数据,这里测试就简单点,导出全部表,要是选部分表,文档里有导出规则
- S3 目标, 选一个存储桶
- 接下来的两个是难点,IAM角色,和加密
先看加密,先创建ARN,找到配置的选项卡
点击下面的链接
在客户管理的秘钥,创建一个秘钥, 客户管理的密钥和AWS托管的密钥是有区别的,要选对
创建完之后,再回到 密钥列表的页面,点密钥ID,进入到详情页
复制ARN刚刚才导出的页面,角色权限什么的,各种尝试下就可以了