Score:0

การเข้าถึงบริการข้อมูลเมตา EC2 จากอินสแตนซ์ CodeBuild

ธง vn

ฉันใช้งานคอนเทนเนอร์นักเทียบท่าจากภายใน AWS CodeBuild ภายใน VPC ของฉัน บนโฮสต์ ฉันไม่มีปัญหาในการทำงาน aws sts รับตัวตนผู้โทร ไม่มีข้อมูลประจำตัว เช่น.:

aws sts รับตัวตนผู้โทร
{
    "รหัสผู้ใช้": "[แก้ไขแล้ว]",
    "บัญชี": "[แก้ไข]",
    "Arn": "arn:aws:sts::[redacted]:assumed-role/[redacted]"
}

อย่างไรก็ตาม ภายในคอนเทนเนอร์นักเทียบท่า ฉันได้รับข้อผิดพลาดขณะพยายามระบุตัวตนของฉัน:

% aws sts รับรหัสผู้โทร
ไม่สามารถเข้าถึงบริการข้อมูลเมตาของ EC2

ไม่พบข้อมูลรับรอง คุณสามารถกำหนดค่าข้อมูลรับรองโดยเรียกใช้ "aws configuration"

ฉันคิดว่าเป็นเพราะฉันไม่สามารถเข้าถึงบริการข้อมูลเมตาของ EC2 เพื่อรับคีย์บทบาทได้ แต่ฉันคิดว่ามันควรจะ "ใช้งานได้" เนื่องจากคอนเทนเนอร์ควรมีสิทธิ์เข้าถึงเครือข่ายเดียวกันกับโฮสต์

ดังนั้นฉันจึงถอยออกมาและดูโฮสต์อีกครั้ง - ดูเหมือนว่าฉันไม่สามารถเข้าถึงบริการข้อมูลเมตาได้ http://169.254.169.254:

# curl -kv http://169.254.169.254/latest/meta-data/public-hostname
* ลอง 169.254.169.254:80...
* ตั้งค่า TCP_NODELAY
* การเชื่อมต่อทันทีล้มเหลวสำหรับ 169.254.169.254: อาร์กิวเมนต์ไม่ถูกต้อง
* ปิดการเชื่อมต่อ 0
curl: (7) ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์

อย่างไร aws เซนต์ ทำงานกับโฮสต์? ฉันคิดว่า AWS CLI จำเป็นต้องเข้าถึงบริการข้อมูลเมตานั้น หากไม่ได้ระบุข้อมูลประจำตัว ฉันจะทำให้มันทำงานภายในคอนเทนเนอร์ได้อย่างไร (ฉันไม่ต้องการส่งโทเค็นที่มีอายุการใช้งานยาวนานในตัวแปรสภาพแวดล้อม)

(แก้ไขด้วยรายละเอียดเพิ่มเติมจากการสำรวจโดยตรงบน SessionManager ในอินสแตนซ์ CodeBuild)

Tim avatar
gp flag
Tim
CodeBuild สร้างในคอนเทนเนอร์ ไม่ใช่บน EC2 แม้ว่าฉันเดาว่าท้ายที่สุดแล้วคอนเทนเนอร์จะอยู่บน EC2 ฉันเดาว่าไม่มีทางรับข้อมูลเมตาของอินสแตนซ์ สิ่งเดียวกันนี้เกิดขึ้นกับ RDS / Oracle คุณไม่สามารถเข้าถึงบทบาทของอินสแตนซ์ได้ วิธีแก้ปัญหาอย่างหนึ่งคือการส่งข้อมูลประจำตัวในพารามิเตอร์
DrTeeth avatar
vn flag
ปัญหาคือ ฉันต้องการข้อมูลรับรองจริง ๆ รวมถึงการจัดการ หมุนเวียน ส่งต่อเป็น env vars เป็นต้น ประเด็นของบทบาทอินสแตนซ์คือฉันสามารถพูดว่า "โปรเจ็กต์ CodeBuild นี้ควรมีสิทธิ์เหล่านี้" และฉันก็ทำเสร็จแล้ว . และสิ่งนี้ใช้ได้กับอินสแตนซ์ CodeBuild เพียงแต่ไม่ได้อยู่ในคอนเทนเนอร์นักเทียบท่าที่เกิดบนอินสแตนซ์นั้น - และฉันไม่แน่ใจว่าเป็นอย่างไร - ดูเหมือนจะไม่เป็นไปตามวิธีการจัดทำเอกสาร AWS CLI หากเป็นเช่นนั้น ฉันจะรับข้อมูลรับรองจากบทบาทเพื่อส่งต่อไปยังคอนเทนเนอร์ได้อย่างไร
Score:2
ธง vn

ดีที่สุดที่ฉันเคยพบมาในตอนนี้...

ขอบคุณสำหรับความคิดเห็นจาก @Tim CodeBuild ทำงานบน ECS เมื่อทำเช่นนั้น มันจะดึงข้อมูลประจำตัวจากข้อมูลประจำตัวของคอนเทนเนอร์ สิ่งเหล่านี้ถูกดึงมาจากที่อยู่ IP อื่นซึ่งสามารถเข้าถึงได้ผ่าน

169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

คุณสามารถแยกข้อมูลประจำตัวของบทบาทจากการโทรนั้นแล้วส่งต่อไปยังคอนเทนเนอร์ Docker

Tim avatar
gp flag
Tim
น่าสนใจ. ฉันสงสัยว่า RDS จะคล้ายกันหรือไม่ ถ้าทำอย่างนั้นคงบอกเราได้มากทีเดียว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา