Kasus penggunaan lain untuk skrip pra dan pasca Manajer Siklus Hidup Data - Amazon EBS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kasus penggunaan lain untuk skrip pra dan pasca Manajer Siklus Hidup Data

Selain menggunakan skrip pra dan pasca untuk mengotomatiskan snapshot yang konsisten dengan aplikasi, Anda dapat menggunakan skrip pra dan pasca bersama-sama, atau secara individual, untuk mengotomatiskan tugas administratif lainnya sebelum atau sesudah pembuatan snapshot. Misalnya:

  • Menggunakan skrip pra untuk menerapkan patch sebelum membuat snapshot. Ini dapat membantu Anda membuat snapshot setelah menerapkan pembaruan perangkat lunak mingguan atau bulanan reguler Anda.

    catatan

    Jika Anda memilih untuk menjalankan skrip pra saja, Tetapkan default ke snapshot crash-consistent diaktifkan secara default.

  • Menggunakan skrip pasca untuk menerapkan patch sebelum membuat snapshot. Ini dapat membantu Anda membuat snapshot setelah menerapkan pembaruan perangkat lunak mingguan atau bulanan reguler Anda.

Memulai untuk kasus penggunaan lainnya

Bagian ini menjelaskan langkah-langkah yang perlu Anda lakukan saat menggunakan skrip pra dan/atau pasca untuk kasus penggunaan selain snapshot yang konsisten dengan aplikasi.

Untuk mempersiapkan instans target Anda untuk skrip pra dan/atau pasca
  1. Instal SSM Agen pada instance target Anda, jika belum diinstal. Jika SSM Agen sudah diinstal pada instance target Anda, lewati langkah ini.

  2. Pastikan SSM agen berjalan. Untuk informasi selengkapnya, lihat Memeriksa status SSM Agen dan memulai agen.

  3. Siapkan Systems Manager untuk EC2 instans Amazon. Untuk informasi selengkapnya, lihat Menyiapkan Systems Manager untuk EC2 instans Amazon di Panduan AWS Systems Manager Pengguna.

Anda harus membuat dokumen SSM perintah yang menyertakan skrip pra dan/atau posting dengan perintah yang ingin Anda jalankan.

Anda dapat membuat SSM dokumen menggunakan templat SSM dokumen kosong di bawah ini dan menambahkan perintah skrip pra dan pos Anda di bagian dokumen yang sesuai.

Perhatikan hal berikut:
  • Merupakan tanggung jawab Anda untuk memastikan bahwa SSM dokumen melakukan tindakan yang benar dan diperlukan untuk beban kerja Anda.

  • SSMDokumen harus menyertakan bidang yang diperlukan untukallowedValues, termasukpre-script,post-script, dandry-run. Amazon Data Lifecycle Manager akan menjalankan perintah pada instans Anda berdasarkan konten bagian tersebut. Jika SSM dokumen Anda tidak memiliki bagian tersebut, maka Amazon Data Lifecycle Manager akan memperlakukannya sebagai eksekusi yang gagal.

###===============================================================================### # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # Permission is hereby granted, free of charge, to any person obtaining a copy of this # software and associated documentation files (the "Software"), to deal in the Software # without restriction, including without limitation the rights to use, copy, modify, # merge, publish, distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ###===============================================================================### schemaVersion: '2.2' description: SSM Document Template for Amazon Data Lifecycle Manager Pre/Post script feature parameters: executionId: type: String default: None description: (Required) Specifies the unique identifier associated with a pre and/or post execution allowedPattern: ^(None|[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})$ command: # Data Lifecycle Manager will trigger the pre-script and post-script actions during policy execution. # 'dry-run' option is intended for validating the document execution without triggering any commands # on the instance. The following allowedValues will allow Data Lifecycle Manager to successfully # trigger pre and post script actions. type: String default: 'dry-run' description: (Required) Specifies whether pre-script and/or post-script should be executed. allowedValues: - pre-script - post-script - dry-run mainSteps: - action: aws:runShellScript description: Run Database freeze/thaw commands name: run_pre_post_scripts precondition: StringEquals: - platformType - Linux inputs: runCommand: - | #!/bin/bash ###===============================================================================### ### Error Codes ###===============================================================================### # The following Error codes will inform Data Lifecycle Manager of the type of error # and help guide handling of the error. # The Error code will also be emitted via AWS Eventbridge events in the 'cause' field. # 1 Pre-script failed during execution - 201 # 2 Post-script failed during execution - 202 # 3 Auto thaw occurred before post-script was initiated - 203 # 4 Pre-script initiated while post-script was expected - 204 # 5 Post-script initiated while pre-script was expected - 205 # 6 Application not ready for pre or post-script initiation - 206 ###===============================================================================### ### Global variables ###===============================================================================### START=$(date +%s) # For testing this script locally, replace the below with OPERATION=$1. OPERATION={{ command }} # Add all pre-script actions to be performed within the function below execute_pre_script() { echo "INFO: Start execution of pre-script" } # Add all post-script actions to be performed within the function below execute_post_script() { echo "INFO: Start execution of post-script" } # Debug logging for parameters passed to the SSM document echo "INFO: ${OPERATION} starting at $(date) with executionId: ${EXECUTION_ID}" # Based on the command parameter value execute the function that supports # pre-script/post-script operation case ${OPERATION} in pre-script) execute_pre_script ;; post-script) execute_post_script ;; dry-run) echo "INFO: dry-run option invoked - taking no action" ;; *) echo "ERROR: Invalid command parameter passed. Please use either pre-script, post-script, dry-run." exit 1 # return failure ;; esac END=$(date +%s) # Debug Log for profiling the script time echo "INFO: ${OPERATION} completed at $(date). Total runtime: $((${END} - ${START})) seconds."
catatan

Langkah ini diperlukan jika:

  • Anda membuat atau memperbarui kebijakan snapshot pra/posting berkemampuan skrip yang menggunakan peran kustom. IAM

  • Anda menggunakan baris perintah untuk membuat atau memperbarui kebijakan snapshot skrip pra/pasca yang diaktifkan yang menggunakan default.

Jika Anda menggunakan konsol untuk membuat atau memperbarui kebijakan snapshot berkemampuan skrip pra/posting yang menggunakan peran default untuk mengelola snapshot () AWSDataLifecycleManagerDefaultRole, lewati langkah ini. Dalam hal ini, kami secara otomatis melampirkan AWSDataLifecycleManagerSSMFullAccesskebijakan ke peran itu.

Anda harus memastikan bahwa IAM peran yang Anda gunakan untuk kebijakan tersebut memberikan izin kepada Amazon Data Lifecycle Manager untuk melakukan SSM tindakan yang diperlukan untuk menjalankan skrip pra dan pasca pada instans yang ditargetkan oleh kebijakan.

Amazon Data Lifecycle Manager menyediakan kebijakan terkelola (AWSDataLifecycleManagerSSMFullAccess) yang menyertakan izin yang diperlukan. Anda dapat melampirkan kebijakan ini ke IAM peran Anda untuk mengelola snapshot guna memastikan bahwa kebijakan tersebut menyertakan izin.

penting

Kebijakan AWSDataLifecycleManagerSSMFullAccess terkelola menggunakan kunci aws:ResourceTag kondisi untuk membatasi akses ke SSM dokumen tertentu saat menggunakan skrip pra dan pasca. Untuk mengizinkan Amazon Data Lifecycle Manager mengakses SSM dokumen, Anda harus memastikan bahwa SSM dokumen Anda ditandai. DLMScriptsAccess:true

Atau, Anda dapat membuat kebijakan khusus secara manual atau menetapkan izin yang diperlukan langsung ke IAM peran yang Anda gunakan. Anda dapat menggunakan izin yang sama yang ditentukan dalam kebijakan AWSDataLifecycleManagerSSMFullAccess terkelola, namun, kunci aws:ResourceTag kondisi bersifat opsional. Jika Anda memutuskan untuk tidak menggunakan kunci kondisi itu, maka Anda tidak perlu menandai SSM dokumen AndaDLMScriptsAccess:true.

Gunakan salah satu metode berikut untuk menambahkan AWSDataLifecycleManagerSSMFullAccesskebijakan ke IAM peran Anda.

Console
Untuk melampirkan kebijakan terkelola ke peran kustom
  1. Buka IAM konsol di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi, pilih Peran.

  3. Cari dan pilih peran kustom Anda untuk mengelola snapshot.

  4. Pada tab Izin, pilih Tambahkan izin, Lampirkan kebijakan.

  5. Cari dan pilih kebijakan AWSDataLifecycleManagerSSMFullAccessterkelola, lalu pilih Tambahkan izin.

AWS CLI
Untuk melampirkan kebijakan terkelola ke peran kustom

Gunakan attach-role-policyperintah. Untuk ---role-name, tentukan nama peran kustom Anda. Untuk --policy-arn, tentukan arn:aws:iam::aws:policy/AWSDataLifecycleManagerSSMFullAccess.

$ aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AWSDataLifecycleManagerSSMFullAccess \ --role-name your_role_name
Console
Untuk membuat kebijakan siklus hidup snapshot
  1. Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/.

  2. Di panel navigasi, pilih Elastic Block Store, Lifecycle Manager, lalu pilih Buat kebijakan siklus hidup.

  3. Pada layar Pilih jenis kebijakan, pilih kebijakan EBS snapshot lalu pilih Berikutnya.

  4. Di bagian Sumber daya target, lakukan hal berikut ini:

    1. Untuk Jenis sumber daya target, pilih Instance.

    2. Untuk Tanda sumber daya target, tentukan tanda sumber daya yang mengidentifikasi instans yang akan dicadangkan. Hanya sumber daya yang memiliki tanda tertentu yang akan dicadangkan.

  5. Untuk IAMperan, pilih AWSDataLifecycleManagerDefaultRole(peran default untuk mengelola snapshot), atau pilih peran khusus yang Anda buat dan siapkan untuk skrip pra dan pasca.

  6. Konfigurasikan jadwal dan opsi tambahan sesuai kebutuhan. Sebaiknya jadwalkan waktu pembuatan snapshot untuk periode waktu yang sesuai dengan beban kerja Anda, seperti selama jendela pemeliharaan.

  7. Di bagian Skrip pra dan pasca, pilih Aktifkan skrip pra dan pasca, lalu lakukan hal berikut:

    1. Pilih SSMDokumen kustom.

    2. Untuk Opsi otomatis, pilih opsi yang cocok dengan skrip yang ingin Anda jalankan.

    3. Untuk SSMdokumen, pilih SSM dokumen yang Anda siapkan.

  8. Konfigurasikan opsi tambahan berikut jika diperlukan:

    • Batas waktu skrip - Periode batas waktu setelah Amazon Data Lifecycle Manager menggagalkan upaya menjalankan skrip jika belum selesai. Jika skrip tidak selesai dalam periode batas waktu, Amazon Data Lifecycle Manager menggagalkan upaya tersebut. Periode batas waktu berlaku untuk skrip pra dan pasca secara individual. Periode batas waktu minimum dan default-nya adalah 10 detik. Dan periode batas waktu maksimumnya adalah 120 detik.

    • Coba lagi skrip yang gagal — Pilih opsi ini untuk mencoba lagi skrip yang tidak selesai dalam periode batas waktu. Jika skrip pra gagal, Amazon Data Lifecycle Manager akan mencoba ulang seluruh proses pembuatan snapshot, termasuk menjalankan skrip pra dan pasca. Jika skrip pasca gagal, Amazon Data Lifecycle Manager mencoba ulang skrip pasca saja; dalam hal ini, skrip pra akan selesai dan snapshot mungkin telah dibuat.

    • Default ke snapshot crash-consistent — Pilih opsi ini ke default ke snapshot crash-consistent jika skrip pra gagal dijalankan. Ini adalah perilaku pembuatan snapshot default untuk Amazon Data Lifecycle Manager jika skrip pra dan pasca tidak diaktifkan. Jika Anda mengaktifkan percobaan ulang, Amazon Data Lifecycle Manager akan default ke snapshot crash-consistent hanya setelah semua upaya percobaan ulang habis. Jika skrip pra gagal dan Anda tidak menetapkan default ke snapshot crash-consistent, Amazon Data Lifecycle Manager tidak akan membuat snapshot untuk instans selama jadwal berjalan.

  9. Pilih Buat kebijakan default.

    catatan

    Jika Anda mendapatkan kesalahan Role with name AWSDataLifecycleManagerDefaultRole already exists, lihat Memecahkan masalah Amazon Data Lifecycle Manager untuk informasi selengkapnya.

AWS CLI
Untuk membuat kebijakan siklus hidup snapshot

Gunakan create-lifecycle-policyperintah, dan sertakan Scripts parameter diCreateRule. Untuk informasi selengkapnya tentang parameter, lihat Referensi Amazon Data Lifecycle Manager. API

$ aws dlm create-lifecycle-policy \ --description "policy_description" \ --state ENABLED \ --execution-role-arn iam_role_arn \ --policy-details file://policyDetails.json

Di mana policyDetails.json termasuk yang berikut.

{ "PolicyType": "EBS_SNAPSHOT_MANAGEMENT", "ResourceTypes": [ "INSTANCE" ], "TargetTags": [{ "Key": "tag_key", "Value": "tag_value" }], "Schedules": [{ "Name": "schedule_name", "CreateRule": { "CronExpression": "cron_for_creation_frequency", "Scripts": [{ "Stages": ["PRE" | "POST" | "PRE","POST"], "ExecutionHandlerService":"AWS_SYSTEMS_MANAGER", "ExecutionHandler":"ssm_document_name|arn", "ExecuteOperationOnScriptFailure":true|false, "ExecutionTimeout":timeout_in_seconds (10-120), "MaximumRetryCount":retries (0-3) }] }, "RetainRule": { "Count": retention_count } }] }