Amazon RDS (CLI) - กู้คืนอินสแตนซ์จากสแน็ปช็อต - กลุ่มความปลอดภัยผิด (ไม่มีสิทธิ์ขาเข้า)

ฉันกำลังเตรียมสคริปต์ทุบตีขนาดเล็กที่อ่านชื่อสแน็ปช็อตล่าสุดสำหรับอินสแตนซ์ที่กำหนด และสร้างอินสแตนซ์ใหม่จากสแน็ปช็อตนั้น คำสั่งที่ฉันใช้คือ

rds-restore-db-instance-from-db-snapshot snapshot-instance --db-snapshot-identifier rds:snapshot-name --region eu-west-1 --availability-zone eu-west-1a --db-instance-class db.t2.micro --multi-az false

ใช้งานได้ดี อินสแตนซ์จะถูกสร้างขึ้น แต่อินสแตนซ์มีการกำหนดกลุ่มความปลอดภัยที่ไม่ถูกต้อง ทำให้ไม่สามารถเข้าถึงได้จากภายนอก (ซึ่งจำเป็นสำหรับการ "ทิ้ง" มาตรฐานของข้อมูล sql)

กลุ่มความปลอดภัยดั้งเดิม (VPC) ของอินสแตนซ์สแน็ปช็อตคือ

default (sg-2bc44xxx) ( active )

แต่เมื่อสร้างอินสแตนซ์ใหม่จากสแน็ปช็อตผ่าน CLI จะได้รับมอบหมายต่อไปนี้:

default:vpc-95c10xxx ( active )
rds-default-vpc-95c10-xxxx (sg-9e45bxxx) ( active )

คุณจะเห็นความแตกต่างระหว่างกลุ่มความปลอดภัย (sg) ของกลุ่มความปลอดภัยเก่าและใหม่

แต่ฉันไม่สามารถเปลี่ยนการเชื่อมต่อนี้ผ่าน CLI:

rds-modify-db-instance snapshot-instance --region eu-west-1 -sg sg-2bc44xxx

ผลลัพธ์

"Malformed input-MalformedInput".

ลองอื่น:

rds-modify-db-instance snapshot-instance --region eu-west-1 -a sg-2bc44xxx

ซึ่งจะช่วยให้

Could not find the resource you requested: DBSecurityGroup not found:  sg-2bc44xxx

เมื่อฉันเปลี่ยนกลุ่มผ่าน Web-Console เป็นค่าเริ่มต้น การเชื่อมต่อขาเข้าก็ใช้งานได้ และฉันสามารถใช้ mysqldump ได้โดยไม่มีปัญหาใดๆ

ขณะนี้ยังไม่มีความชัดเจนว่าควรใช้ตัวเลือกใด -a หรือ -sg นอกจากนี้ยังไม่ชัดเจนว่าตัวระบุที่ถูกต้องสำหรับกลุ่มความปลอดภัยคืออะไร (id, group-name, ...)

ความช่วยเหลือหรือข้อมูลใด ๆ ที่จะได้รับการชื่นชมอย่างมาก

ความนับถือ,

เอริค


person TheNightCoder    schedule 28.08.2015    source แหล่งที่มา
comment
หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับกลุ่มความปลอดภัยของคุณ คุณสามารถเรียกใช้ rds-describe-db-security-groups - ดูเหมือนว่า -a ใช้สำหรับกลุ่มความปลอดภัย DB ของคุณและ -sg สำหรับ VPC คุณลองแล้ว --vpc-security-group-ids sg-2bc44xxx   -  person Frederic Henri    schedule 28.08.2015
comment
สิ่งหนึ่งที่ฉันไม่เข้าใจคือเหตุใดอินสแตนซ์ที่สร้างขึ้นใหม่จึงเชื่อมโยงกับกลุ่มความปลอดภัยสำหรับ DB และ VPC แยกกัน ในขณะที่อินสแตนซ์ต้นทางมีเพียงการเชื่อมต่อ VPC ผลลัพธ์ของความพยายามของฉันคือ: rds-modify-db-instance snapper-1 --region eu-west-1 --vpc-security-group-ids sg-2bc44xxx =› ตัวเลือกที่ไม่รู้จัก (แม้ว่าจะมีการบันทึกไว้ก็ตาม) rds-modify- db-instance snapper-1 --region eu-west-1 -sg sg-2bc44xxx =› อินพุตที่มีรูปแบบไม่ถูกต้อง-MalformedInput ---------- rds-modify-db-instance snapper-1 --region eu- west-1 --db-security-groups default =› SC ไม่ได้เป็นของ VPC vpc-95c10xxx   -  person TheNightCoder    schedule 28.08.2015
comment
เพิ่ม --db-subnet-group-name ‹subnet group name› ลงในบรรทัดคำสั่งของคุณ   -  person riffrazor    schedule 22.07.2017


คำตอบ (2)


ฉันประสบปัญหาที่คล้ายกัน ดังนั้นหลังจากกู้คืนฐานข้อมูลโดยใช้สแน็ปช็อต ฉันเห็นว่ากลุ่มความปลอดภัยที่กำหนดนั้นเป็นค่าเริ่มต้น ซึ่งไม่มีกฎขาเข้าใดๆ หากคุณไปที่หน้าแรกของคอนโซล RDS คุณจะเห็นการกำหนดค่าสำหรับแพลตฟอร์มที่รองรับเป็น (EC2, VPC) หรือเพียง (VPC) ตามที่แสดง ที่นี่

น่าเศร้าที่ Restore-db-instance-from-db-snapshot ไม่ได้ใช้ตัวเลือกกลุ่ม vpc-security ใด ๆ ดังนั้นหลังจากกู้คืนฐานข้อมูลแล้ว ฉันจึงต้องแก้ไขโดยใช้

aws rds modify-db-instance --db-instance-identifier your-db-identifier --vpc-security-group-ids sg-4xxxxxxx

สิ่งนี้ได้ผลสำหรับฉัน

person Akash Reddy    schedule 22.08.2017

ฉันกลับมาที่นี่เพื่อแจ้งให้ทราบว่าฉันใช้วิธีแก้ไขปัญหาอื่น ฉันใช้ AWS SDK สำหรับ PHP และสามารถรับชื่อของสแน็ปช็อตล่าสุดผ่าน API ได้อย่างง่ายดาย ฉันใช้มันเพื่อหมุนอินสแตนซ์ชั่วคราว (ซึ่งเชื่อมโยงกับกลุ่มความปลอดภัยเดียวกัน กลุ่มพารามิเตอร์ ฯลฯ เช่นเดียวกับอินสแตนซ์ดั้งเดิม) สำรวจอินสแตนซ์นี้จนกระทั่งอยู่ในสถานะ "พร้อม" จากนั้นจึงดำเนินการ mysqldump จริงซึ่งก็คือ อัปโหลดไปยัง S3 หลังจากนั้นฉันก็ทำลายอินสแตนซ์ชั่วคราว ทั้งหมดนี้ทำได้ผ่านเชลล์สคริปต์ PHP และการใช้งาน AWS SDK อย่างเป็นทางการสำหรับ PHP

สคริปต์ทำงานได้ดีโดยไม่มีข้อผิดพลาดมาเกือบ 2 ปีทุกวัน (ดัมพ์มีขนาด ~ 15GB) ขอบคุณสำหรับคำตอบของคุณ สิ่งเหล่านี้อาจเป็นประโยชน์กับผู้อื่นที่ประสบปัญหานี้ การทำสิ่งเหล่านี้ให้สำเร็จด้วย SDK เป็นเรื่องง่ายมาก

person TheNightCoder    schedule 25.08.2017