AWS 오류 메시지 : 현재이 리소스에 대해 충돌하는 조건부 작업이 진행 중입니다


181

이 오류가 간헐적으로 발생합니다.

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)

1
객체를 S3에 넣고 즉시 읽으려고합니까?
jamieb

@jamieb, 실제로는 아닙니다.
user1172468

1
나는 당신에게 대답을 바랍니다. 동일한 키를 빠르게 연속해서 다시 작성하려고합니까? S3는 PUT이 정착하는 데 시간이 필요한 "최종 일관성"모델을 기반으로합니다.
jamieb

@ jamieb, 두뇌주기를 소비 해 주셔서 감사하지만 Guy의 대답은 정확합니다. 내 코드에서 버킷을 다시 작성하려고 시도합니다-정상적으로 실패 할 것으로 예상됩니다. 시간의 99.99 %와 같으며 때로는이 오류가 발생합니다. 다시 도와 주셔서 감사합니다. 격려!
user1172468

후속 감사합니다. 행운을 빕니다!
jamieb

답변:


464

다음과 같은 오류 메시지가 나타납니다.

  1. 버킷 생성-기본적으로 미국 리전으로 이동 (AWSCLI 사용)

  2. 버킷은 EU 지역으로 이동하여 삭제해야합니다 (AWS 콘솔 사용).

  3. (몇 분 후) EU 지역을 지정하여 버킷을 만들려고했습니다.

3 단계에서 AWS 콘솔에 질문 제목의 오류 메시지가 표시되었습니다.

따라서 미국의 버킷이 삭제되었지만 시간이 걸리는 동기화 프로세스가있을 수 있습니다. 그리고 몇 시간을 기다리면 버킷 이름을 다시 만들어 사용할 수있게 되었으면합니다. 이번에는 적절한 (EU) 리전입니다.

FIX :-편집 : 약 1 시간 후 (EU 지역) 버킷 생성 시도가 성공했습니다.


4
나는 방금 같은 상황에 부딪쳤다. 다음 시간 안에 버킷을 만들 수 있다면 다시 게시하겠습니다.
AJB

27
이것을 확인할 수 있습니다. 약 1.5 시간이 걸렸으며 그 동안 다른 사람이 버킷 이름을 퍼 내지 않을 것이라는 보장은 없지만 합리적인 기간 내에 약간의 행운으로 다시 얻을 수 있습니다.
AJB

1
@jan에 동의합니다.이 문제를 해결하려면 : 새 이름으로 새 버킷을 생성하십시오. 새 버킷의 이름을 지정하는 동안 삭제 된 버킷의 이름을 사용하지 마십시오.
Dinesh Sunny

5
나에게는 70 분도 걸리지 않았다.
offby1

4
아마존은 최대 10 시간이 소요될 수 있다고 전했다. forums.aws.amazon.com/thread.jspa?threadID=37532
TomDotTom

37

구글 에서이 스레드를 우연히 발견 한 다른 모든 사람들에게 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'에 따라) "버킷 생성"작업을 다시 시도하고 가능한 한 빨리 생성하여 사용자가 실수로 버킷 이름을 도용 할 수 없도록합니다.

그것이 도움이되기를 바랍니다 :)


1
감사합니다! 내 경우에는 이미 aws 구성에 정의 된 영역이 있고 스크립트를 실행하면 다음 오류가 발생했습니다 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 17: ordinal not in range(128). 해결책은 --region깃발 을 제거하는 것이 었습니다 .
MagentoAaron

23

예제의 요청은 버킷을 생성하는 것입니다. 버킷을 너무 많이 만들거나 버킷을 교체하려고하면 상태가 좋지 않습니다.

계정에 대한 버킷 수는 100 개로 제한됩니다 ( 여기 참조 ). 편집 : 이제이 한계는 "소프트 한계"이며 필요한 경우 증가시킬 수 있습니다.

또한 버킷을 생성하는 데 시간과 시간이 소요됩니다.

... 애플리케이션의 고 가용성 코드 경로에서 버킷을 생성하거나 삭제하는 호출은 적합하지 않습니다 ...

버킷을 한 번 생성 한 다음 기존 버킷 (또는 단일 버킷)에 원하는 수의 객체를 넣을 수 있습니다.

어쨌든, 지금 실패한 시스템으로 작업 할 때, 그러한 오류를 수신 할 때 오류를 처리하고 프로세스 속도를 늦출 수 있어야합니다. 자세한 내용은 AWS Docs를 참조하십시오 .


11

이 오류는 일반적으로 버킷이 삭제되고 이전 버킷과 동일한 이름으로 새 버킷이 생성 될 때 발생합니다.

같은 이름으로 새 버킷을 만들 수있을 때까지 일정 시간 기다려야한다고 생각합니다.


8

간단하고 간단합니다. 새 버킷 이름을 변경하거나 1 시간 동안 기다립니다.


0

계정에 100 개가 넘는 버킷이 이미있는 경우에도이 메시지가 나타납니다. 소프트 버킷은 100 개로 제한됩니다.


-1

버킷 이름을 변경하거나 기다리십시오. 나는 30 분도 채되지 않았다. 이름을 변경할 필요가 없었으며 이름을 변경할 때 변경할 수 없었습니다. 호스팅하려는 정적 웹 사이트의 기존 도메인 이름과 일치해야했습니다. 어쨌든 30 분 안에 자동으로 만들어졌습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.