AWS 오류 메시지 : 현재이 리소스에 대해 충돌하는 조건부 작업이 진행 중입니다
이 오류가 간헐적으로 발생합니다.
java aws sdk를 사용하고 수만 개의 작은 파일을 s3에로드하는 프로그램이 있습니다. 이 오류가 간헐적으로 나타납니다.
인터넷에서 빠른 검색을 수행 한 후 유용한 답변을 찾을 수 없습니다.
호출 프로그램은 단일 스레드입니다. 기본 AWS Java SDK는 작업자 스레드를 사용하는 것 같습니다.
Status Code: 409, AWS Service: Amazon S3, AWS Request ID: 75E16E8DE2193CA6, AWS Error Code: OperationAborted, AWS Error Message: A conflicting conditional operation is currently in progress against this resource. Please try again., S3 Extended Request ID: 0uquw2YEoFamLldm+c/p412Lzd8jHJGFBDz3h7wN+/4I0f6hnGLkPMe+5LZazKnZ
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:552)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:289)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:170)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2648)
at com.amazonaws.services.s3.AmazonS3Client.createBucket(AmazonS3Client.java:578)
at com.amazonaws.services.s3.AmazonS3Client.createBucket(AmazonS3Client.java:503)
다음과 같은 오류 메시지가 나타납니다.
버킷 생성-기본적으로 미국 리전으로 이동 (AWSCLI 사용)
버킷은 EU 지역으로 이동하여 삭제해야합니다 (AWS 콘솔 사용).
(몇 분 후) EU 지역을 지정하여 버킷을 만들려고했습니다.
3 단계에서 AWS 콘솔에 질문 제목의 오류 메시지가 표시되었습니다.
따라서 미국의 버킷이 삭제되었지만 시간이 걸리는 동기화 프로세스가있을 수 있습니다. 그리고 몇 시간을 기다리면 버킷 이름을 다시 만들 수 있기를 바랍니다. 이번에는 적절한 (EU) 리전입니다.
FIX :-편집 : 약 1 시간 후 (EU 지역) 버킷 생성 시도가 성공했습니다.
구글 에서이 스레드를 우연히 발견 한 다른 모든 사람들에게 1 번째 로이 오류 메시지가 검색됩니다.
버킷을 삭제 한 경우 새 리전에서 다시 생성하려면 이 백그라운드 동기화가 완료 될 때까지 "수동으로"기다리지 말고 작은 bash 스크립트를 실행하여 5 초마다 필요한 버킷 생성을 다시 시도하십시오.
예:
#!/bin/bash
RESULT=2
until [ $RESULT -eq 0 ]; do
aws s3 mb s3://your.bucket.name --region us-west-2
RESULT=$?
sleep 5
done
echo "Bucket created!"
몇 초마다 ( 'sleep'에 따라) "버킷 생성"작업을 다시 시도하고 가능한 한 빨리 생성하여 사용자가 실수로 버킷 이름을 도용 할 수 없도록합니다.
그것이 도움이되기를 바랍니다 :)
예제의 요청은 버킷을 생성하는 것입니다. 버킷을 너무 많이 만들거나 버킷을 교체하려고하면 상태가 좋지 않습니다.
계정에 대한 버킷 수는 100 개로 제한됩니다 ( 여기 참조 ). 편집 : 이제이 한계는 "소프트 한계"이며 필요한 경우 증가시킬 수 있습니다.
또한 버킷을 생성하는 데 시간과 시간이 소요됩니다.
... 애플리케이션의 고 가용성 코드 경로에서 버킷을 작성하거나 삭제하는 호출은 적합하지 않습니다 ...
버킷을 한 번 생성 한 다음 기존 버킷 (또는 단일 버킷)에 원하는 수의 객체를 넣을 수 있습니다.
어쨌든, 지금 실패 할 수있는 시스템으로 작업 할 때, 그러한 오류를 수신 할 때 오류를 처리하고 프로세스 속도를 늦출 수 있어야합니다. 자세한 내용은 AWS Docs를 참조하십시오 .
이 오류는 일반적으로 버킷이 삭제되고 이전 버킷과 동일한 이름으로 새 버킷이 생성 될 때 발생합니다.
같은 이름으로 새 버킷을 만들 수있을 때까지 일정 시간 기다려야한다고 생각합니다.
간단하고 간단합니다. 새 버킷 이름을 변경하거나 1 시간 동안 기다립니다.
'Programing' 카테고리의 다른 글
iOS 시뮬레이터 : 앱을 닫는 방법 (0) | 2020.06.04 |
---|---|
링크를 사용하여 JavaScript를 호출하는 방법은 무엇입니까? (0) | 2020.06.04 |
gradle을 사용하여 APK 파일 이름에서 versionName을 설정하는 방법은 무엇입니까? (0) | 2020.06.04 |
Cordova 명령 행 인터페이스를 사용하여 서명 된 APK 파일을 작성하는 방법은 무엇입니까? (0) | 2020.06.04 |
내 목록 항목 글 머리 기호가 부동 요소와 겹치는 이유 (0) | 2020.06.04 |