file.csv를 S3 버킷에 놓을 때 내 람다 함수에서 아래 오류가 표시됩니다. 파일이 크지 않고 읽기를 위해 파일을 열기 전에 60 초의 수면을 추가하기도했지만 어떤 이유로 파일에 추가 된 ".6CEdFe7C"가 추가되었습니다. 왜 그런가요?Python 읽기 전용 파일 시스템 오류 읽기 전용 파일을 열 때 S3 및 람다 오류
[Errno 30] Read-only file system: u'/file.csv.6CEdFe7C': IOError
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 75, in lambda_handler
s3.download_file(bucket, key, filepath)
File "/var/runtime/boto3/s3/inject.py", line 104, in download_file
extra_args=ExtraArgs, callback=Callback)
File "/var/runtime/boto3/s3/transfer.py", line 670, in download_file
extra_args, callback)
File "/var/runtime/boto3/s3/transfer.py", line 685, in _download_file
self._get_object(bucket, key, filename, extra_args, callback)
File "/var/runtime/boto3/s3/transfer.py", line 709, in _get_object
extra_args, callback)
File "/var/runtime/boto3/s3/transfer.py", line 723, in _do_get_object
with self._osutil.open(filename, 'wb') as f:
File "/var/runtime/boto3/s3/transfer.py", line 332, in open
return open(filename, mode)
IOError: [Errno 30] Read-only file system: u'/file.csv.6CEdFe7C'
코드 :
def lambda_handler(event, context):
s3_response = {}
counter = 0
event_records = event.get("Records", [])
s3_items = []
for event_record in event_records:
if "s3" in event_record:
bucket = event_record["s3"]["bucket"]["name"]
key = event_record["s3"]["object"]["key"]
filepath = '/' + key
print(bucket)
print(key)
print(filepath)
s3.download_file(bucket, key, filepath)
위의 결과는 다음과 같습니다
mytestbucket
file.csv
/file.csv
[Errno 30] Read-only file system: u'/file.csv.6CEdFe7C'
키/파일 "file.csv"이 경우
, 그럼 왜 s3.download_file 방법을 수행 "file.csv.6CEdFe7C"를 다운로드 해보십시오. 함수가 트리거되면 파일은 file.csv.xxxxx이지만 줄 75가되면 파일은 file.csv로 이름이 변경됩니까?
덤프가 읽기와 같지 않음! 따라서 임시 폴더 (또는 램)에있는 파일은'self._osutil.open (filename, 'wb')가 f :'가 아닌'rb'etc 만 덤프해야합니다. 따라서 처리하기 전에 소스 파일을 처리해야합니다. – dsgdfg