I have a requirement to read a file from a folder SubFoldinabctentacles in bucket abctentacles (GCS), convert it to UTF-8 without BOM and move it to outbound folder in the same bucket i.e. abctentacles.
I have created a cloud function to run the below python code. ( runtime 3.10), but i keep getting an error
import codecs
import os
import tempfile
from pathlib import Path
import chardet
from google.cloud import storage
def convert_encoding(content):
encoding = chardet.detect(content)['encoding']
decoded_content = content.decode(encoding)
encoded_content = decoded_content.encode('utf-8')
return encoded_content
def move_file(source_bucket, source_file, destination_folder):
client = storage.Client()
source_bucket_obj = client.get_bucket(source_bucket)
source_blob = source_bucket_obj.blob(source_file)
destination_file_path = os.path.join(destination_folder, os.path.basename(source_file))
destination_blob = source_bucket_obj.copy_blob(source_blob, source_bucket_obj, destination_file_path)
source_blob.delete()
def convert_encoding_and_move(event, context):
source_bucket = 'abctentacles'
source_file = 'SubFoldinabctentacles/A{CM}_C{foo}.JSONL'
destination_folder = 'outbound'
client = storage.Client()
source_bucket_obj = client.get_bucket(source_bucket)
source_blob = source_bucket_obj.blob(source_file)
file_content = source_blob.download_as_bytes()
encoded_content = convert_encoding(file_content)
destination_blob = source_bucket_obj.blob(os.path.join(destination_folder, os.path.basename(source_file)))
destination_blob.upload_from_string(encoded_content)
move_file(source_bucket, source_file, destination_folder)
convertFileEncodingdgm4igqwci4d Traceback (most recent call last): File "/layers/google.python.pip/pip/lib/python3.10/site-packages/google/cloud/storage/client.py", line 1099, in download_blob_to_file blob_or_uri._do_download( File "/layers/google.python.pip/pip/lib/python3.10/site-packages/google/cloud/storage/blob.py", line 984, in _do_download response = download.consume(transport, timeout=timeout) File "/layers/google.python.pip/pip/lib/python3.10/site-packages/google/resumable_media/requests/download.py", line 237, in consume return _request_helpers.wait_and_retry( File "/layers/google.python.pip/pip/lib/python3.10/site-packages/google/resumable_media/requests/_request_helpers.py", line 155, in wait_and_retry response = func() File "/layers/google.python.pip/pip/lib/python3.10/site-packages/google/resumable_media/requests/download.py", line 219, in retriable_request self._process_response(result) File "/layers/google.python.pip/pip/lib/python3.10/site-packages/google/resumable_media/_download.py", line 188, in _process_response _helpers.require_status_code( File "/layers/google.python.pip/pip/lib/python3.10/site-packages/google/resumable_media/_helpers.py", line 108, in require_status_code raise common.InvalidResponse( google.resumable_media.common.InvalidResponse: ('Request failed with status code', 404, 'Expected one of', <HTTPStatus.OK: 200>, <HTTPStatus.PARTIAL_CONTENT: 206>)
does anyone know what this issue is all about? and how to fix it.