AWS S3 : 액세스하려는 버킷은 지정된 엔드 포인트를 사용하여 해결해야합니다.


185

AWS-SDK-Core Ruby Gem으로 업로드 된 이미지 파일을 삭제하려고합니다.

다음 코드가 있습니다.

require 'aws-sdk-core'

def pull_picture(picture)
    Aws.config = {
        :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
        :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
        :region => 'us-west-2'
    }

    s3 = Aws::S3::Client.new

    test = s3.get_object(
        :bucket => ENV["AWS_S3_BUCKET"],
        :key => picture.image_url.split('/')[-2],   
    )
end

그러나 다음과 같은 오류가 발생합니다.

액세스하려는 버킷은 지정된 엔드 포인트를 사용하여 해결해야합니다. 향후 모든 요청을이 엔드 포인트로 보내십시오.

로 변경 us-east-1하면 다음 오류가 표시 되므로 지역이 올바른지 알고 있습니다 .

지정된 키가 존재하지 않습니다.

내가 여기서 뭘 잘못하고 있니?


6
실수로 지정된 버킷에 잘못된 지역을 지정했을 때 이런 일이 발생했습니다.
머핀 남자

잘못된 AWS 리전 이름이 사용 되었기 때문일 수 있습니다.
Dattatray

답변:


311

이 버킷은 다른 지역에서 생성 된 것 같습니다. IE는 us-west-2가 아닙니다. "내가 액세스하려는 버킷을 지정된 엔드 포인트를 사용하여 해결해야합니다. 향후 모든 요청을이 엔드 포인트로 보내십시오."

미국 표준은 us-east-1


30
결코 그런 생각을하지 않았지만 그것은 나를 위해 일했습니다! AWS SDK에서 "US Standard"리전은 AWSRegionUSEast1 인 것으로 보입니다.
Nerrolken

지역을 설정하는 방법에 대한 답변을 찾고있었습니다. 감사!
Sylar

6
당신은 루비 클라이언트를 사용하는 경우, 설정 ENV["AWS_REGION"]올바른 값 (예에 "us-east-1"클라이언트 초기화하기 전에 버킷에 대한)
아베 Voelker

하나 이상의 버킷을 사용해야하는 경우 (예 : 개발 / 스테이징 / 제작 등)?
yekta

1
Java에서도 같은 문제가있었습니다. 솔루션이 도움이되었습니다. 그들은 S3에서 이상한 이름을 사용합니다. 리젼의 엔드 포인트 , 저장소에서 오브젝트 이름의 ...
Gangnus

21

콘솔에서 버킷 위치를 확인한 다음 사용할 엔드 포인트에 대한 참조로이를 사용 하십시오 . http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region


2
어떻게 설명 할 수 있습니까? region: 'us-west-1',무엇으로 교체 하시겠습니까?
Aamir Afridi

@AamirAfridi 사용중인 SDK에 따라 다릅니다. iOS SDK를 사용하고 있으며 자격 증명 공급자에 지역을 설정할 수있는 매개 변수가 있습니다. 사용하려는 지역으로 설정했습니다.
Jay Q.

방금 버킷 영역을 최적화 한 비슷한 예제가 있었지만 도메인 이름을 업데이트하지 않았습니다. 수정은 해당 버킷에 대한 S3 콘솔의 엔드 포인트 참조에서 볼 수 있듯이 이전 도메인 이름을 새 도메인 이름으로 바꾸는 것이 었습니다. 예 : 그 오류를 해결하기 위해 교체 https://s3.amazonaws.com/mybucket/myasset.jpg했습니다 https://mybucket.s3-ap-southeast-2.amazonaws.com/myasset.jpg.
Fabien Haddadi

19

버킷이 지역에 us-west-2있고 URL 패턴에 경로에 bucketname 이 있기 때문에 비슷한 오류 가 발생했습니다. 일단 URL 패턴을 URL 하위 도메인으로 버킷 이름을 갖도록 파일을 가져 와서 변경했습니다.

예를 들어 이전 URL은

https://s3.amazonaws.com/bucketname/filePath/filename

그런 다음으로 교체했습니다.

https://bucketname.s3.amazonaws.com/filePath/filename

정규화 된 이름을 입력하면 나에게 도움이됩니다. 싱가포르 가용 영역에있는 버킷에 대한 s3-ap-southeast-1.amazonaws.com/ng-spark/Java8.json
Nilesh Gule

1

많은 S3 API 패키지의 경우 (최근 에이 문제가 npm s3 패키지 인 경우 ) 리전이 미국 표준으로 간주되는 문제가 발생할 수 있으며 버킷을 호스팅하도록 선택한 경우 이름별로 조회하려면 리전을 명시 적으로 정의해야합니다 그 지역 밖에서.


1

S3Client를 작성하는 동안 특정 리젼에 대한 엔드 포인트 맵핑을 지정할 수 있습니다. 기본값 이 노스 버지니아 인 s3.amazonaws.com버킷이 생성됩니다 us-east-1.

AWS의 문서에서 S3 엔드 포인트 및 지역에 대한 자세한 내용은 다음과 같습니다 http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region .

따라서 S3Client를 생성 할 때 항상 엔드 포인트 / 리전을 확인하고 동일한 리전에서 동일한 클라이언트를 사용하여 S3 리소스에 액세스하십시오.

버킷이 AWS S3 콘솔에서 생성 된 경우 콘솔에서 해당 버킷의 리전을 확인한 다음 위 링크에 언급 된 엔드 포인트 세부 정보를 사용하여 해당 리전에서 S3 클라이언트를 생성하십시오.


1

위의 답변 중 어느 것도 내 문제를 해결하지 못했습니다.

위의 답변은 아마도 문제의 원인 일 가능성이 높지만 내 문제는 잘못된 버킷 이름을 사용하고 있다는 것입니다. 유효한 버킷 이름이었고 내 버킷이 아닙니다.

내가 가리키는 버킷은 람다 기능과 다른 지역에 있었으므로 버킷 이름을 확인하십시오!


1

다른 AWS 프로파일을 사용할 때이 문제가 발생했습니다. 관리자 권한이있는 계정을 사용할 때 오류가 발생하여 권한 문제가 발생할 가능성이 거의 없었습니다.

실제로 AWS는 사용자 관점에서 필요한 조치와 관련이 거의없는 오류 메시지를 발행하는 경향이 있습니다.


0

여전히이 문제에 직면하고있는 ppl의 경우 구성 해시에 다음과 같이 s3_host를 추가하십시오

   :storage => :s3,
   :s3_credentials => {:access_key_id => access key,
   :secret_access_key => secret access key},
   :bucket => bucket name here,
   :s3_host_name => s3-us-west-1.amazonaws.com or whatever comes as per your region}.

이것은 나를 위해 문제를 해결했습니다.


0

존재하지 않는 버킷에 액세스하려고 할 때이 오류가 발생했습니다.

버킷 이름 변수로 경로 변수를 실수로 전환했기 때문에 버킷 이름에 파일 경로 값이 있습니다. 요청에 설정 한 버킷 이름이 올바른 경우 다시 확인하십시오.


0

나는 같은 오류가 있었다. 버킷을 생성하는 동안 설정된 엔드 포인트와 다른 엔드 포인트로 s3 클라이언트를 생성했을 때 발생했습니다.

  • 오류 코드-버킷이 EAST 리전으로 설정되었습니다.

s3Client = 새 AmazonS3Client (AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint.USWest2)

  • 고치다

s3Client = 새 AmazonS3Client (AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint. USEast1 )


0

나는 많은 문제를 겪은 후 실제 문제가 com.amazonaws 종속성과 관련이 있음을 발견했습니다. 종속성을 추가 한 후이 오류가 사라졌습니다.


0

나는 영국에 살고 'us-west-2'지역을 계속 시도했습니다. 따라서 'eu-west-2'로 리디렉션되었습니다. S3의 올바른 지역은 'eu-west-2'입니다.


0

이것은 사용자 (액세스 키 / 비밀 키)가 s3 버킷을 만드는 데 사용하는 정책에 대한 소스 IP 제약 조건이있을 때 발생했습니다. 내 IP는 정확했지만 어떤 이유로 든 작동하지 않아이 오류가 발생했습니다.


0

긴 검색 후, 나는 해결책을 찾았습니다. 문제가 잘못되었습니다 region-code.

아래는 지역 코드 목록이며 적절한 코드를 설정하면 문제가 해결됩니다.

Code                         Name
US East (Ohio)               us-east-2

US East (N. Virginia)       us-east-1

US West (N. California)     us-west-1

US West (Oregon)            us-west-2

Asia Pacific (Hong Kong)    ap-east-1

Asia Pacific (Mumbai)       ap-south-1

Asia Pacific (Osaka-Local)  ap-northeast-3

Asia Pacific (Seoul)        ap-northeast-2

Asia Pacific (Singapore)    ap-southeast-1

Asia Pacific (Sydney)       ap-southeast-2

Asia Pacific (Tokyo)        ap-northeast-1

Canada (Central)            ca-central-1

Europe (Frankfurt)          eu-central-1

Europe (Ireland)            eu-west-1

Europe (London)             eu-west-2

Europe (Paris)             eu-west-3

Europe (Stockholm)         eu-north-1

Middle East (Bahrain)      me-south-1

South America (São Paulo)   sa-east-1

버킷 이름 오른쪽 코너를 클릭하면 지역 코드를 찾을 수 있습니다.

여기에 이미지 설명을 입력하십시오

모드에 대한 자세한 내용을 보려면 클릭

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