Post

CLOUDFLARE R2的aws S3应用

命令行和图形界面

继上次的CLOUDFLARE图床设置,因为网上都是推荐软件上传,但是软件上传实际上对纯命令行的工作环境来说使用体验非常不好,所以需要用命令行来进行操作。虽然命令行没有图形界面来的直观,但是程序员真正喜欢的应该还是直接的命令行。

兼容aws s3的CLOUDFLARE R2

R2根据官网介绍兼容部分s3,所以可以用aws s3的形式操作R2。但是平时办公环境还是在windows,所以还是得下载win版的awscli,如果是在linux可能就自己写点小脚本用aws的SDK了,在win下就算了吧,直接用cli。这里还是吐槽以下,在win下运行命令行是真的不习惯。

aws s3

1. 第一步就是下载相应版本的awscli

2. 配置configure

1
2
3
4
5
aws configure
AWS Access Key ID : 
AWS Secret Access Key :
Default region name [auto]: auto
Default output format [json]: json

这里的key需要在R2里面进行设置。

3. 尝试列一下bucket信息

1
aws s3api list-buckets --endpoint-url https://[**R2-ID**].r2.cloudflarestorage.com

这里的R2-ID是CLOUDFLARE bucket给出的endpoint的地址

如果不出问题,将会正常列出bucket信息

1
2
3
4
5
6
7
8
9
10
11
12
13
{
    "Buckets": [
        {
            "Name": "flyingbear",
            "CreationDate": "2024-05-29T07:09:05.048000+00:00"
        }
    ],
    "Owner": {
        "DisplayName": "bucket_name",
        "ID": "bucket_id"
    }
}

4. 尝试列以下bucket里面所有文件

1
2
aws s3api list-objects-v2 --endpoint-url https://[**R2-ID**].r2.cloudflarestorage.com --bucket flyingbear

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
{
    "Contents": [
        {
            "Key": "favicon-64x64.png",
            "LastModified": "2024-05-29T08:37:32.786000+00:00",
            "ETag": "\"8cfe65bdd65ef606ca3793178abd29ae\"",
            "Size": 8901,
            "StorageClass": "STANDARD"
        },
        {
            "Key": "flyingbear/2024/05/27280a963be030d47bc17708f3f76e5a.jpg",
            "LastModified": "2024-05-29T08:21:58.109000+00:00",
            "ETag": "\"27280a963be030d47bc17708f3f76e5a\"",
            "Size": 55993,
            "StorageClass": "STANDARD"
        },
        {
            "Key": "flyingbear/2024/05/ab9fbe3794e04e4f973f86b62f343cdc.jpg",
            "LastModified": "2024-05-29T08:28:40.502000+00:00",
            "ETag": "\"ab9fbe3794e04e4f973f86b62f343cdc\"",
            "Size": 153967,
            "StorageClass": "STANDARD"
        }
    ],
    "RequestCharged": null
}

所有文件信息就可以直接看到了

5. 往bucket上传本地文件

1
aws s3 cp D:\hero_img_1.jpg s3://flyingbear/hero.jpg  --endpoint-url https://[**R2-ID**].r2.cloudflarestorage.com

这里上传本地D盘下的hero_img_1.jpg至flyingbear bucket下,并命名为hero.jpg 上传成功会有以下提示

1
upload: D:\hero_img_1.jpg to s3://flyingbear/hero.jpg

CLI的好处

这里就可以看出来,通过CLI上传,可以自由的控制路径和文件名,这样,只要我在本地把图片分类好,命名好,一个命令直接跟云端保持同步就好了,blog上的所有图片都可以直接利用文件名去引用就行了,不管怎么更换bucket都可以方便的进行迁移。

win下的使用体验

通过cli可以简单的跟云端仓库进行文件传输,但是每次执行命令的反应特别慢,不知道是因为key验证的速度问题还是什么,每次都需要大概半分钟到一分钟才能执行命令,这个实在是无法忍受。由于没在linux下对比,不知道这个是win下的问题,还是就是这样的。感觉这个问题需要优化。

This post is licensed under CC BY 4.0 by the author.