Amazon S3에 캐시 된 정보를 저장하는 ColdFusion 9에서 사이트를 실행하고 있습니다.Amazon S3 - 파일이 s3cmd에 의해 삭제되면 ColdFusion의 fileExists가 깨집니다.
ColdFusion 응용 프로그램은 파일을 작성하여 Amazon S3에 저장합니다. N
시간마다 캐시는 s3cmd del
을 실행하는 bash 스크립트로 플러시됩니다. ColdFusion의 fileDelete
또는 directoryDelete
보다 훨씬 효율적이기 때문입니다.
그러나 파일을 s3cmd에서 삭제 한 후에도 내용을 읽을 수는 없지만 ColdFusion은 여전히 기존 파일로 플래그를 지정합니다.
ColdFusion 응용 프로그램의 경우 Application.cfc
에 S3 자격 증명을 제공하며 s3cmd에서 사용하는 것과 동일한 인증 키이므로 사용자 권한 문제는 아닌 것 같습니다. 과정을 통해
하자 실행 :
// Create an S3 directory with 3 files
fileWrite(myBucket & 'rabbits/bugs-bunny.txt', 'Hi there, I am Bugs Bunny');
fileWrite(myBucket & 'rabbits/peter-rabbit.txt', 'Hi there, I am Peter Rabbit');
fileWrite(myBucket & 'rabbits/roger-rabbit.txt', 'Hi there, I am Roger Rabbit');
writeDump(var = directoryList(myBucket & 'rabbits/', 'true', 'name'), label = 'Contents of the rabbits/ folder on S3');
// Delete one of the files with ColdFusion's fileDelete
fileDelete(myBucket & 'rabbits/roger-rabbit.txt');
writeDump(var = directoryList(myBucket & 'rabbits/', 'true', 'name'), label = 'Contents of the rabbits/ folder on S3');
// Now, let's delete a file using the command line:
[~]$ s3cmd del s3://myBucket/rabbits/peter-rabbit.txt
File s3://myBucket/rabbits/peter-rabbit.txt deleted
writeDump(var = directoryList(myBucket & 'rabbits/', 'true', 'name'), label = 'Contents of the rabbits/ folder on S3');
는
// So far, so good!
// BUT!... ColdFusion still thinks that peter-rabbit.txt exists, even
// though it cannot display its contents
writeOutput('Does bugs-bunny.txt exist?: ' & fileExists(myBucket & 'rabbits/bugs-bunny.txt'));
writeOutput('Then show me the content of bugs-bunny.txt: ' & fileRead(myBucket & 'rabbits/bugs-bunny.txt'));
writeOutput('Does peter-rabbit.txt exist?: ' & fileExists(myBucket & 'rabbits/peter-rabbit.txt'));
writeOutput('Then show me the content of peter-rabbit.txt: ' & fileRead(myBucket & 'rabbits/peter-rabbit.txt'));
// Error on fileRead(peter-rabbit.txt) !!!
S3 return xml result. ColdFusion은 404가 아닌 결과를 반환하는 모든 url에 대해서도 반환합니다. 이것이 사실이라고 생각하는 이유입니다. –
@PriteshPatel fileDelete ('roger')를 사용하여 파일을 삭제하면 fileExists ('roger')가 false를 반환하기 때문에 그렇게 생각하지 않습니다. 그것은 오히려 뭔가 CF와 같은 디렉토리에있는 파일의 목록을 캐싱, 그리고 그들이 s3cmd와 같은 외부 서비스에 의해 삭제되면 새로 고치지 않아요 –
내가 너무 빨리 읽은 것 같아요 : ( –