我正在使用google Cloud功能中的gsutil和boto3将文件从我的AWS S3桶复制到GCS桶。参见下面的代码。在我的云函数中,我传递了我的AWS ACCESS_KEY和SECRET_KEY。
数据在AWS S3桶中使用默认的Amazon S3主密钥(SSE-S3)加密,GCS桶中的文件也使用默认的"Google-managed key"选项加密。
所以,我不担心存储中的数据加密,因为它已经得到了照顾,但我不确定数据是否在传输中加密。有没有人知道,在这种情况下如果数据在传输过程中已经加密了?或在写入S3之前,我是否需要使用第三方工具(如"cryptography")加密文件?手动加密我的数据,然后在写入GCS桶之前使用此自定义生成的密钥解密文件?
import boto3
from boto3.session import Session
from botocore.client import Config
from botocore.handlers import set_list_objects_encoding_type_url
import os
from io import BytesIO
from google.cloud import storage
'''
copy all new files from AWS S3 to GCS
Also delete files after copying
'''
def main(request):
ACCESS_KEY = os.environ['ACCESS_KEY']
SECRET_KEY = os.environ['SECRET_KEY']
S3_BUCKET_NAME = os.environ['S3_BUCKET']
GCS_BUCKET_NAME = os.environ['GCS_BUCKET']
session = Session(aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
.....
.....
for s3_file in original_s3_file_list:
file_name = s3_file.key
s3_obj = s3.Object(S3_BUCKET_NAME,file_name)
#copy S3 file to GCS
data=s3_obj.get()['Body'].read()
gcs_blob = gcs_bucket.blob(file_name)
gcs_blob.upload_from_string(data)
您的数据是加密传输的,因为传输使用HTTPS (AWS <->客户& lt;→GCP)。
boto3客户端的默认传输是https。这可以通过use_ssl配置参数链接。默认值是True.
Google Cloud Storage的默认传输也是https。要将其更改为使用http,需要修改API_BASE_URL链接。