通过Google Cloud Function从加密S3传数据到GCS时传输中是否加密?
结论:你不需要额外手动加密/解密数据,传输过程默认已经加密
- 你通过boto3从S3拉取数据的环节:AWS官方SDK默认所有API请求走HTTPS TLS加密通道,你调用
s3_obj.get()读取数据的传输过程全程加密,不会在公网传输明文。 - 你通过Google Cloud Storage Python SDK上传到GCS的环节:GCS官方SDK默认同样使用HTTPS TLS加密传输,
upload_from_string的上传过程全程加密,不会泄露明文。 - 你已经配置了S3侧的SSE-S3静态加密、GCS侧的谷歌托管密钥静态加密,整个数据链路的传输态、静态存储加密已经全部覆盖,完全没有必要额外引入cryptography工具做手动加解密,反而会增加不必要的性能损耗和维护成本。
可选优化建议
你当前的实现是将整个文件全量读入内存再上传,如果需要处理的单个文件体积较大,可能会超出Cloud Function的内存配额,可以修改为流式传输避免全量加载:
# 流式传输示例 for s3_file in original_s3_file_list: file_name = s3_file.key s3_obj = s3.Object(S3_BUCKET_NAME,file_name) # 直接获取S3返回的流对象,不读取全量数据到内存 s3_data_stream = s3_obj.get()['Body'] gcs_blob = gcs_bucket.blob(file_name) # 直接把S3流上传到GCS gcs_blob.upload_from_file(s3_data_stream)
内容的提问来源于stack exchange,提问作者PraP
相关产品推荐
相关产品推荐

