体验 COS 与 CDN 服务 for Python

腾讯云
基础
0 个任务
剩余 3 个名额

你还可以 创建 或者 使用已有 云主机不限时上机

实验内容

对象存储(Cloud Object Storage)是稳定安全的云端存储服务,可以存放任意数量和形式的非结构化内容。结合内容分发网络(Content Delivery Network),将内容分发至加速节点,利用全球调度系统使用户在就近节点获取内容。本实验介绍如何在Python应用中使用COS 与 CDN 服务。

首次可免费使用云主机 1 小时 ,到期后云主机将被重置并退库,若想保留成果请及时留用。

实验资源

云服务器

软件环境

CentOS 7.2 64 位

目录

# 体验 COS 与 CDN 服务 for Python ## CDN 服务申请 > <time>30min ~ 60min</time> ### 实名认证与申请服务 腾讯云提供了 [CDN 的加速服务][cnd_link], 但使用服务前您需要实名认证, 点击下面的视频了解如何申请该服务 > <link for="cnd_link" href="https://www.qcloud.com/product/cdn?fromSource=lab"></link> [如何申请腾讯云的 CDN 加速服务][VIDEO_CDN_APPLY] 如果您已经实名认证,可以直接跳过这一步 > <video for="VIDEO_CDN_APPLY" platform="qq" vid="h050773p0z0" name="如何申请腾讯云的 CDN 加速服务 - 腾讯云"></video> ## 使用 COS 服务 > <time>30min ~ 60min</time> ### 开通 COS 并上传文件 CDN 开通后, 我们既可以使用 CDN 全站加速的功能, 也可以使用 CDN 部署资源文件的功能,本实验使用 COS/CDN 超出免费配额可能产生小额费用。 在使用 CDN 部署资源文件的功能前, 我们需要开通腾讯云的 COS 服务, 点击下面的视频了解如何申请该服务 [如何申请和使用腾讯云的 COS 服务][VIDEO_COS_APPLY] > <video for="VIDEO_COS_APPLY" platform="qq" vid="m0507zt65cs" name="如何申请和使用腾讯云的 COS 服务 - 腾讯云"></video> ### COS 文件地址与 CDN 加速地址 文件通过腾讯云官网控制台web页面上传后, 通过查看上传文件信息可以得到形如 `Bucket名称-id.cos地区缩写.myqcloud.com/文件名` 的 URL 地址, 将该地址中的 `cos地区缩写` 改为 `file` 即可得到 CDN 的加速地址. 使用该加速地址来访问的资源文件可以得到更快的响应, 达到加速的目的. 如: 文件地址: ``` http://cloud-1251435248.costj.myqcloud.com/hello.txt ``` 对应的 CDN 地址: ``` http://cloud-1251435248.file.myqcloud.com/hello.txt ``` cos地址与对应园区的关系 + `costj` -- 华北(天津园区) + `cossh` -- 华东(上海园区) + `cosgz` -- 华南(广州园区) + `cossgp` -- 新加坡园区 ## 使用 COS SDK for Python > <time>30min ~ 60min</time> ### 准备工作 上面介绍了使用浏览器上传文件到 COS 并得到 CDN 地址的方式, 下面介绍如何通过 SDK 的方式使用 COS. 在这之前, 我们需要做一些准备工作 #### 创建相关目录 ``` mkdir -p /data/upload ``` > <checker type="output-contains" command="[ -d '/data/upload' ]; echo $?" hint="创建目录 /data/upload"> > <keyword regex="0" /> > </checker> #### 准备相关的文件 执行下面的命令, 在 [/data][data-upload-path] 目录下创建一个名叫`upload_example.txt`的文件 > <locate for="data-upload-path" path="/data/upload" hint="将演示用的文件拖动到此目录"/> ``` echo 'Hello World' > /data/upload/upload_example.txt ``` > <checker type="output-contains-no" command="ls -1p /data/upload | grep -v '/' | wc -l" hint="在 /data/upload 下存放文件"> > <keyword regex="0" /> > </checker> #### 查看appid, secret_id 和 secret_key 信息 + 如果您 Bucket 的默认域名中包含125开头的 APPID,请使用“API密钥”, [点击前往][https://console.qcloud.com/capi] + 如果您 Bucket 的默认域名中包含100开头的项目 ID,请使用“项目密钥”, [点击前往][https://console.qcloud.com/capi/project] #### 查看 bucket 属于哪个园区 + 打开 [bucket列表][https://console.qcloud.com/cos4/bucket] + 在列表中点击将要上传的 bucket, 进入详情页 + 选择 `基础配置` tab + 查看 `基本信息` - `所属地区` + 华北地区对应 `tj`, 华南地区对应 `gz`, 华东地区对应 `sh` #### 确认 Python 环境为 Python >= 2.7 ``` python -V ``` 如果不符合条件, 可通过 [搭建Python开发环境][https://www.qcloud.com/developer/labs/lab/10036] 查看如何搭建环境 #### 安装 pip ``` yum install -y python-pip ``` > <checker type="output-contains" command="ls /usr/bin" hint="安装 pip"> > <keyword regex="pip" /> > </checker> #### 使用 pip 安装 COS 的 Python SDK ``` pip install -U qcloud_cos_v4 ``` 如果下载速度过慢, 可尝试更换`pip源`安装 ``` pip install -U qcloud_cos_v4 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/ ``` > <checker type="output-contains" command="ls /usr/lib/python2.7/site-packages" hint="安装 qcloud_cos_v4"> > <keyword regex="qcloud_cos_v4" /> > </checker> ### 使用 SDK 上传文件到 COS 在 [/data][data-path] 目录下创建 cos_python_upload.py 文件, 并编辑内容如下 > <locate for="data-path" path="/data" hint="在此处创建 cos_python_upload.py 文件"/> ```python /// <example verb="create" file="/data/cos_python_upload.py" /> #!/usr/bin/env python # coding=utf-8 from qcloud_cos import CosClient from qcloud_cos import UploadFileRequest appid = 100000 # 替换为你的appid secret_id = u'' # 替换为你的secret_id secret_key = u'' # 替换为你的secret_key bucket = u'' # 替换为你要操作的bucket名 region = "tj" # 替换为该bucket所属的地区代码, tj/sh/gz/sgp cos_client = CosClient(appid, secret_id, secret_key, region) ################################## # 文件操作 # ################################## # 上传文件(默认不允许覆盖) # 将本地的 upload_example.txt 上传到 bucket 的根分区下,并命名为 upload_sample_python.txt request = UploadFileRequest(bucket, u'/upload_sample_python.txt', u'/data/upload/upload_example.txt') upload_file_response = cos_client.upload_file(request) print upload_file_response ``` 将你的 appid, secret_id 和 secret_key, bucket 的名称, bucket 所属的地区码填入后执行 ``` cd /data && python /data/cos_python_upload.py ``` 如果调用成功, 会返回类似如下结构的信息: ``` { u'message': u'SUCCESS', u'code': 0, u'data': { u'url': u'http: //sh.file.myqcloud.com/files/v2/1253675457/detect/upload_sample_python.txt', u'access_url': u'http: //detect-1253675457.file.myqcloud.com/upload_sample_python.txt', u'resource_path': u'/1253675457/detect/upload_sample_python.txt', u'vid': u'6fea7b37c3a323fd4fbfbaaff80496ba1496285703', u'source_url': u'http: //detect-1253675457.cossh.myqcloud.com/upload_sample_python.txt' }, u'request_id': u'NTkyZjgyMDdfOTJhMDY4XzUwZDZfODBlNTg=' } ``` [点击这里][https://www.qcloud.com/document/product/430/6005]了解返回的各个字段的含义 在 [bucket列表][https://console.qcloud.com/cos4/bucket] 中选择你刚才填入的 bucket 并查看文件列表, 会发现新增了 `upload_sample_python.txt` 文件, 证明确实已经成功上传到 COS 如果调用失败, 会返回类似如下的信息: ``` {u'message': 'url:http://sh.file.myqcloud.com/files/v2/125367457/detect/upload_sample_python.txt, status_code:403', u'code': -2} ``` 结合 [cos错误码说明][https://www.qcloud.com/document/product/430/5921] 和`message`字段, 您可以知道发生错误的原因 > <checker type="output-contains" command="ls /data" hint="创建 cos_python_upload.py 文件"> > <keyword regex="cos_python_upload.py" /> > </checker> ### 使用 SDK 移动 COS 文件 COS 提供通过 SDK, 移动同一 bucket 下的文件位置的能力 在 [/data][data-path] 目录下创建 cos_python_move.py 文件, 并编辑内容如下 > <locate for="data-path" path="/data" hint="在此处创建 cos_python_move.py 文件"/> ```python /// <example verb="create" file="/data/cos_python_move.py" /> #!/usr/bin/env python # coding=utf-8 from qcloud_cos import CosClient from qcloud_cos import MoveFileRequest appid = 100000 # 替换为你的appid secret_id = u'' # 替换为你的secret_id secret_key = u'' # 替换为你的secret_key bucket = u'' # 替换为你要操作的bucket名 region = "tj" # 替换为该bucket所属的地区代码, tj/sh/gz/sgp cos_client = CosClient(appid, secret_id, secret_key, region) ################################## # 文件操作 # ################################## # 移动文件, 将 upload_sample_python.txt 移动到 sample_file_move_python.txt request = MoveFileRequest(bucket, u'/upload_sample_python.txt', u'/sample_file_move_python.txt') stat_file_ret = cos_client.move_file(request) print stat_file_ret ``` 将你的 appid, secret_id 和 secret_key, bucket 的名称, bucket 所属的地区码填入后执行 ``` cd /data && python /data/cos_python_move.py ``` 如果调用成功, 会返回类似如下结构的信息: ``` { u'message': u'SUCCESS', u'code': 0, u'request_id': u'NTkyZmJhODVfOTJiODQzX2I1MGJfODA3YmY=' } ``` 在 [bucket列表][https://console.qcloud.com/cos4/bucket] 中选择你刚才填入的 bucket 并查看文件列表, 会发现`upload_sample_python.txt`文件名字变成了 `sample_file_move_python.txt` 文件, 证明文件移动成功 > <checker type="output-contains" command="ls /data" hint="创建 cos_python_move.py 文件"> > <keyword regex="cos_python_move.py" /> > </checker> ### 使用 SDK 创建 COS 目录 COS 提供通过 SDK, 在 bucket 下创建目录的能力 在 [/data][data-path] 目录下创建 cos_python_create_folder.py 文件, 并编辑内容如下 > <locate for="data-path" path="/data" hint="在此处创建 cos_python_create_folder.py 文件"/> ```python /// <example verb="create" file="/data/cos_python_create_folder.py" /> #!/usr/bin/env python # coding=utf-8 from qcloud_cos import CosClient from qcloud_cos import CreateFolderRequest appid = 100000 # 替换为你的appid secret_id = u'' # 替换为你的secret_id secret_key = u'' # 替换为你的secret_key bucket = u'' # 替换为你要操作的bucket名 region = "tj" # 替换为该bucket所属的地区代码, tj/sh/gz/sgp cos_client = CosClient(appid, secret_id, secret_key, region) ################################## # 目录操作 # ################################## # 生成目录, 目录名为sample_folder request = CreateFolderRequest(bucket, u'/sample_folder/') create_folder_ret = cos_client.create_folder(request) print create_folder_ret ``` 将你的 appid, secret_id 和 secret_key, bucket 的名称, bucket 所属的地区码填入后执行 ``` cd /data && python /data/cos_python_create_folder.py ``` 如果调用成功, 会返回类似如下结构的信息: ``` { u'message': u'SUCCESS', u'code': 0, u'data': { u'ctime': 1496300704 }, u'request_id': u'NTkyZmJjYTBfNGFhYTQzXzNiYl84MDhhMg==' } ``` 在 [bucket列表][https://console.qcloud.com/cos4/bucket] 中选择你刚才填入的 bucket 并查看文件列表, 会发现新增了一个`sample_folder`目录, 证明目录创建成功 > <checker type="output-contains" command="ls /data" hint="创建 cos_python_create_folder.py 文件"> > <keyword regex="cos_python_create_folder.py" /> > </checker> ### 实验完成 恭喜您已经完成了 CDN 与 COS for Python 的学习