AWS S3: ที่ฝากข้อมูลที่คุณพยายามเข้าถึงต้องได้รับการแก้ไขโดยใช้จุดสิ้นสุดที่ระบุ


185

ฉันพยายามลบไฟล์ภาพที่อัพโหลดด้วยอัญมณี Ruby AWS-SDK-Core

ฉันมีรหัสต่อไปนี้:

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
หากคุณใช้ไคลเอนต์ Ruby ให้ตั้งค่าENV["AWS_REGION"]ที่ถูกต้อง (เช่น"us-east-1") สำหรับที่เก็บข้อมูลก่อนเริ่มต้นไคลเอนต์
Abe Voelker

ถ้าคุณต้องการใช้มากกว่าหนึ่ง bucket (เช่น dev / staging / production เป็นต้น)
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 และในผู้ให้บริการข้อมูลประจำตัวมีพารามิเตอร์ที่คุณสามารถตั้งค่าภูมิภาคได้ ฉันตั้งค่าไว้ในภูมิภาคที่ฉันตั้งใจจะใช้
เจย์ 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 มีที่ฝากข้อมูลในเส้นทาง เมื่อฉันเปลี่ยนรูปแบบ URL ให้มี bucketname เป็นโดเมนย่อย 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ซึ่งก็คือเวอร์จิเนียตอนเหนือ

รายละเอียดเพิ่มเติมเกี่ยวกับ S3 ปลายทางและภูมิภาคในเอกสาร AWS: http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region 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 ถูกสร้างขึ้นด้วยจุดปลายที่แตกต่างจากที่ตั้งค่าไว้ในขณะที่สร้างที่เก็บข้อมูล

  • รหัสข้อผิดพลาด - ที่ฝากข้อมูลถูกตั้งค่าด้วยภูมิภาคตะวันออก

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'region เปลี่ยนเส้นทางไปที่ 'eu-west-2' ภูมิภาคที่ถูกต้องสำหรับ S3 คือ 'eu-west-2'


0

สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันมีข้อ จำกัด ip ต้นทางเกี่ยวกับนโยบายที่ผู้ใช้ใช้ (คีย์การเข้าถึง / รหัสลับ) เพื่อสร้างที่เก็บข้อมูล s3 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.