AWS S3: 액세스하려는 버킷은 지정된 끝점을 사용하여 주소를 지정해야 합니다.
업로드한 이미지 파일을 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
다음 오류가 표시됩니다.
지정한 키가 없습니다.
내가 여기서 뭘 잘못하고 있는 거지?
이 버킷은 us-west-2가 아닌 다른 지역에서 생성된 것 같습니다.액세스하려는 버킷은 지정된 엔드포인트를 사용하여 주소를 지정해야 합니다.향후 모든 요청을 이 엔드포인트로 보내주십시오."
는 미국표입니다.
us-east-1
이 지역에 있어서 비슷한 오류에 직면했습니다.us-west-2
경로에 URL 패턴의 버킷 이름이 있습니다.한번은 파일을 잡기 위해 URL 패턴을 버킷 이름을 URL 서브도메인으로 변경하여 적용했습니다.
예를 들어 이전 URL은
https://s3.amazonaws.com/bucketname/filePath/filename
그런 다음 다음 다음과 같이 교체했습니다.
https://bucketname.s3.amazonaws.com/filePath/filename
콘솔에서 버킷 위치를 확인한 다음 사용할 엔드포인트에 대한 참조로 사용합니다. http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
저의 경우, 지역 끝점을 잘못 선택했습니다.올바른 지역 끝점을 선택한 후 작동하기 시작했습니다 :)
오랜 수색 끝에, 저는 효과적인 해결책을 찾았습니다.문제는 잘못된 것 때문이었습니다.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
버킷 이름 오른쪽 코너를 클릭하면 지역 번호를 찾을 수 있습니다.
모드 세부 정보를 보려면 클릭
다른 AWS 프로파일을 사용할 때 이 문제가 발생했습니다.관리자 권한이 있는 계정을 사용할 때 오류가 발생하여 권한 문제가 발생할 가능성은 거의 없는 것 같습니다.
AWS가 사용자 관점에서 필요한 작업과 상관관계가 거의 없는 오류 메시지를 표시하는 경향이 있다는 것은 정말 유감스러운 일입니다.
다음을 사용하는 사용자를 위해@aws-sdk/client-s3
명령을 보내기 전에 버킷의 영역을 클라이언트에 제공해야 합니다.CLI를 사용하여 다음과 같은 이점을 얻을 수 있습니다.
$ aws s3api get-bucket-location --bucket <bucket_name>
{
"LocationConstraint": "ca-central-1"
}
const client = new S3Client({ region: "ca-central-1", credentials...
이 문제가 여전히 발생하는 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}.
이것으로 저는 그 문제를 해결했습니다.
저도 같은 실수를 했어요.버킷을 생성하는 동안 설정된 엔드포인트와 다른 엔드포인트로 s3 클라이언트를 생성할 때 발생했습니다.
- 오류 코드 - 버킷이 EAST 지역으로 설정되었습니다.
s3Client = 새 Amazon S3Client(AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint).USWest2)
- 고치다
s3Client = 새 Amazon S3Client(AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint).마지막으로 사용1)
위의 답변 중 어느 것도 제 문제를 해결하지 못했습니다.
위의 답변들이 당신의 문제의 원인일 가능성이 더 높지만, 제 문제는 제가 잘못된 버킷 이름을 사용하고 있었다는 것입니다.유효한 버킷 이름이었는데, 제 버킷이 아니었습니다.
제가 가리키는 버킷은 제 람다 기능이 있는 다른 영역에 있었으니 버킷 이름을 확인하세요!
S3 버킷은 글로벌하지만 버킷에 액세스하는 동안 지역을 지정해야 합니다..netcore에서 오류가 발생했습니다. 아래 코드에 지역을 추가하면 작동하기 시작합니다.
var s3Client = new AmazonS3Client(Amazon.RegionEndpoint.USWest2);
제 경우에는 버킷 이름이 잘못되었습니다.
C#에서 다음과 같은 확인을 할 수 있습니다. 다른 SDK에서도 비슷한 코드가 가능할 것 같습니다.
var client = new AmazonS3Client(
credentials.AccessKey,
credentials.ClientSecret,
new AmazonS3Config{}
);
var bucketLocationRequest = new GetBucketLocationRequest
{
BucketName = amazonS3Bucket.BucketName
};
var response = await client.GetBucketLocationAsync(bucketLocationRequest);
var region = response.Location;
var regionEndpoint = region != null ? RegionEndpoint.GetBySystemName(region.Value) : RegionEndpoint.EUCentral1;
var clientWithRegion = new AmazonS3Client(
credentials.AccessKey,
credentials.ClientSecret,
new AmazonS3Config
{
RegionEndpoint = regionEndpoint
}
);
많은 S3 API 패키지(최근에 npm s3 패키지에서 이 문제가 발생했습니다)의 경우 해당 지역이 미국 표준으로 가정되는 문제가 발생할 수 있으며, 이름으로 조회하면 해당 지역 외부에서 버킷을 호스팅하도록 선택한 경우 해당 지역을 명시적으로 정의해야 합니다.
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 클라이언트를 생성합니다.
저는 같은 문제에 직면했습니다.많은 어려움을 겪은 후에 저는 진짜 문제가 com.amazonaws 의존성에 있다는 것을 알게 되었습니다.종속성을 추가한 후 이 오류가 사라졌습니다.
c#.net에서 이 예외가 발생했습니다. 클라이언트 생성 시 RegionEndpoint 값을 아래와 같이 변경한 후 수정되었습니다.
var client = new AmazonS3Client(accesKey,secretKey, RegionEndpoint.APSoutheast2)
존재하지 않는 버킷에 액세스하려고 할 때 이 오류가 발생했습니다.
경로 변수를 버킷 이름 변수로 잘못 전환하여 버킷 이름에 파일 경로 값이 있습니다.요청에 설정한 버킷 이름이 올바른지 다시 확인하십시오.
저는 영국에 살고 있습니다. 계속해서 'us-west-2' 지역을 위해 노력하고 있었습니다.그래서 'eu-west-2'로 리디렉션되었습니다.S3의 올바른 영역은 'eu-west-2'입니다.
s3 버킷을 생성하기 위해 사용자(액세스 키/비밀 키)가 사용하는 정책에 대한 source ip 제약 조건이 있을 때 이 문제가 발생했습니다.제 IP는 정확했지만, 어떤 이유에서인지 작동하지 않아 이 오류가 발생했습니다.
언급URL : https://stackoverflow.com/questions/25027462/aws-s3-the-bucket-you-are-attempting-to-access-must-be-addressed-using-the-spec
'source' 카테고리의 다른 글
루비에서 include와 extend의 차이점은 무엇입니까? (0) | 2023.06.03 |
---|---|
명령줄에서 안드로이드 에뮬레이터를 시작하려면 어떻게 해야 합니까? (0) | 2023.06.03 |
일정관리 응용프로그램에서 반복 이벤트를 모델링하는 가장 좋은 방법은 무엇입니까? (0) | 2023.06.03 |
값 배열에 대한 Ruby 해시 (0) | 2023.06.03 |
WPF 텍스트 블록의 자동 수직 스크롤 막대? (0) | 2023.06.03 |