S3에서 파일을 다운로드할 때 AWS Lambda에서 "읽기 전용 파일 시스템" 오류가 발생했습니다.
S3 버킷에 file.csv를 떨어뜨렸을 때 lambda 함수에서 아래 오류가 나타납니다.파일 크기가 크지 않고 읽기 위해 파일을 열기 전에 60초 동안 절전 모드를 추가하기도 했지만 어떤 이유에서인지 파일에 ".6"이 추가로 포함되어 있습니다.여기에 "CEdFe7C"가 첨부되어 있습니다.왜 그런 것일까요?
[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.6"을 다운로드하려고 합니까?CEdFe7C?함수가 트리거되면 파일이 file.csv.xxxxxx인데 75번 줄에 도착할 때쯤이면 파일 이름이 file.csv로 바뀌게 되는 건가요?
오직./tmp
AWS Lambda로 쓸 수 있는 것 같습니다.
따라서 다음과 같은 효과가 있습니다.
filepath = '/tmp/' + key
참조:
- https://aws.amazon.com/blogs/compute/choosing-between-aws-lambda-data-storage-options-in-web-apps
- https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html
http://boto3.readthedocs.io/en/latest/guide/s3-example-download-file.html 에 의하면.
예제에서는 클라우드 이름에 대한 첫 번째 매개 변수와 다운로드할 로컬 경로에 대한 두 번째 매개 변수를 사용하는 방법을 보여 줍니다.
다른 말로, 아마존 문서들은 말합니다.
따라서 우리는 파일 생성을 위한 512MB를 보유하고 있습니다.람다와우에 대한 제 코드는 여기 있습니다. 매력적으로 작동합니다.
.download_file(Key=nombre_archivo,Filename='/tmp/{}'.format(nuevo_nombre))
람다에 대한 코드를 업로드했을 때 알아차렸습니다.directly as a zip file
나는 오직 에만 편지를 쓸 수 있었습니다./tmp
folder, 그러나 업로드된 코드는S3
나는 그에게 편지를 쓸 수 있었습니다.project root folder
너무.
C#의 경우에도 완벽한 작업:
using (var fileStream = File.Create("/tmp/" + fName))
{
str.Seek(0, SeekOrigin.Begin);
str.CopyTo(fileStream);
}
언급URL : https://stackoverflow.com/questions/39383465/error-read-only-file-system-in-aws-lambda-when-downloading-a-file-from-s3
'programing' 카테고리의 다른 글
wordpress visual composer 속성 확인란을 처음 선택하는 방법 (0) | 2023.09.19 |
---|---|
고유한 구속조건이 존재하는지 확인하고 액상을 사용하여 떨어트립니다. (0) | 2023.09.19 |
마지막 자식을 제외한 요소의 모든 자식을 선택하려면 어떻게 해야 합니까? (0) | 2023.09.19 |
oracle sql 쿼리 질문(2열로 grouping) (0) | 2023.09.19 |
잘못된 핸드셰이크로 인해 RMariaDB 장애 발생 (0) | 2023.09.19 |