Amazon RDS (CLI) - Pulihkan instans dari snapshot - grup keamanan yang salah (Tidak ada izin masuk)

Saya sedang menyiapkan skrip bash kecil yang membaca nama snapshot terbaru untuk instance tertentu dan membuat instance baru dari snapshot tersebut. Perintah yang saya gunakan adalah

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

Ini berfungsi dengan baik, instance dibuat. Namun instance tersebut memiliki penetapan grup keamanan yang salah, sehingga mencegahnya diakses dari luar (yang diperlukan untuk "membuang" data sql standar).

Grup Keamanan (VPC) asli dari instance yang diambil snapshotnya adalah

default (sg-2bc44xxx) ( active )

namun ketika instance baru dari snapshot dibuat melalui CLI, instance tersebut mendapat tugas berikut:

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

Anda melihat perbedaan grup Keamanan (sg) dari grup keamanan lama dan yang baru.

Tapi saya tidak bisa mengubah koneksi ini melalui CLI:

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

Hasil dalam

"Malformed input-MalformedInput".

Percobaan lainnya:

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

yang memberikan

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

Ketika saya mengubah grup melalui Konsol Web ke grup default, koneksi masuk dapat digunakan dan saya dapat menggunakan mysqldump tanpa masalah.

Saat ini tidak jelas opsi apa yang akan digunakan, baik -a atau -sg. Selain itu, tidak jelas pengidentifikasi yang benar untuk grup keamanan (id, nama grup, ...).

Bantuan atau informasi apa pun akan sangat dihargai.

Salam,

Erik


person TheNightCoder    schedule 28.08.2015    source sumber
comment
untuk mengetahui lebih lanjut tentang grup keamanan Anda, Anda dapat menjalankan rds-describe-db-security-groups - sepertinya -a juga digunakan untuk grup keamanan DB Anda dan -sg untuk VPC. apakah kamu mencoba --vpc-security-group-ids sg-2bc44xxx   -  person Frederic Henri    schedule 28.08.2015
comment
Satu hal yang saya tidak mengerti adalah mengapa instans yang baru dibuat terikat ke grup keamanan untuk DB dan VPC secara terpisah, sedangkan instans asal hanya memiliki koneksi VPC. Hasil dari upaya saya adalah: rds-modify-db-instance snapper-1 --region eu-west-1 --vpc-security-group-ids sg-2bc44xxx =› opsi yang tidak dikenal (walaupun didokumentasikan) rds-modify- db-instance snapper-1 --region eu-west-1 -sg sg-2bc44xxx =› Format input-MalformedInput salah ---------- rds-modify-db-instance snapper-1 --region eu- west-1 --db-security-groups default =› SC bukan milik VPC vpc-95c10xxx   -  person TheNightCoder    schedule 28.08.2015
comment
Tambahkan --db-subnet-group-name ‹nama grup subnet› ke baris perintah Anda.   -  person riffrazor    schedule 22.07.2017


Jawaban (2)


Saya menghadapi masalah serupa, jadi setelah memulihkan database menggunakan snapshot, saya melihat bahwa grup keamanan yang ditetapkan adalah default, yang tidak memiliki aturan masuk apa pun. Jika Anda membuka halaman beranda konsol RDS, Anda dapat melihat konfigurasi untuk platform yang didukung sebagai (EC2, VPC) atau hanya (VPC) seperti yang ditunjukkan di sini

Sayangnya, recovery-db-instance-from-db-snapshot tidak menggunakan opsi grup keamanan vpc apa pun. Jadi setelah memulihkan database, saya harus memodifikasinya menggunakan

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

Ini berhasil untuk saya.

person Akash Reddy    schedule 22.08.2017

Saya kembali ke sini untuk memberi tahu bahwa saya menjalankan solusi yang berbeda. Saya menggunakan AWS SDK untuk PHP dan bisa dengan mudah mendapatkan nama snapshot terbaru melalui API. Saya menggunakannya kemudian untuk memutar contoh sementara (yang terikat ke grup keamanan yang sama, grup parameter, dll. seperti contoh asli), melakukan polling contoh ini hingga dalam keadaan "siap" dan kemudian melakukan mysqldump sebenarnya yang kemudian diunggah ke S3. Setelah itu, saya menghancurkan temp-instance. Itu semua dilakukan melalui skrip shell PHP dan penggunaan AWS SDK for PHP resmi.

Skrip berfungsi dengan baik tanpa kesalahan apa pun selama hampir 2 tahun sekarang setiap hari (dump berukuran ~ 15GB). Terima kasih atas jawaban Anda, mungkin bermanfaat bagi orang lain yang mengalami masalah ini. Sangat mudah untuk mencapai hal-hal ini dengan SDK.

person TheNightCoder    schedule 25.08.2017