Data Lifecycle Manager 사전 및 사후 스크립트의 기타 사용 사례 - Amazon EBS

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Data Lifecycle Manager 사전 및 사후 스크립트의 기타 사용 사례

사전 및 사후 스크립트를 사용하여 애플리케이션에 일관되게 적용되는 스냅샷을 자동화하는 것 외에도 사전 및 사후 스크립트를 함께 사용하거나 개별적으로 사용하여 스냅샷 생성 전후에 다른 관리 작업을 자동화할 수 있습니다. 예:

  • 스냅샷을 생성하기 전에 사전 스크립트를 사용하여 패치를 적용합니다. 이렇게 하면 정기 주간 또는 월간 소프트웨어 업데이트를 적용한 후 스냅샷을 생성할 수 있습니다.

    참고

    사전 스크립트만 실행하도록 선택하면 중단 일관성 스냅샷으로 기본 설정이 활성화됩니다.

  • 스냅샷을 생성한 후 사후 스크립트를 사용하여 패치를 적용합니다. 이렇게 하면 정기 주간 또는 월간 소프트웨어 업데이트를 적용하기 전 스냅샷을 생성할 수 있습니다.

다른 사용 사례를 위한 시작하기

이 섹션에서는 애플리케이션에 일관되게 적용되는 스냅샷 이외의 사용 사례에 사전 및/또는 사후 스크립트를 사용할 때 수행해야 하는 단계를 설명합니다.

사전 및/또는 사후 스크립트를 위한 대상 인스턴스 준비
  1. 아직 설치되지 않은 경우 대상 인스턴스에 SSM 에이전트를 설치합니다. SSM 에이전트가 대상 인스턴스에 이미 설치되어 있는 경우 이 단계를 건너뜁니다.

  2. SSM 에이전트가 실행 중인지 확인합니다. 자세한 내용은 SSM 에이전트 상태 확인 및 에이전트 시작을 참조하세요.

  3. Amazon EC2 인스턴스용 Systems Manager를 설정합니다. 자세한 내용은 AWS Systems Manager 사용 설명서Amazon EC2 인스턴스용 Systems Manager 설정을 참조하세요.

실행하려는 SSM 명령과 함께 사전 및/또는 사후 스크립트가 포함된 명령 문서를 생성해야 합니다.

아래의 빈 SSM 문서 템플릿을 사용하여 SSM 문서를 생성하고 적절한 문서 섹션에 사전 및 사후 스크립트 명령을 추가할 수 있습니다.

유의할 사항:
  • SSM 문서가 워크로드에 대해 정확하고 필요한 작업을 수행하도록 하는 것은 사용자의 책임입니다.

  • SSM 문서에는 allowedValues, 및 pre-script를 포함한 의 필수 필드가 포함되어야 합니다post-scriptdry-run. Amazon Data Lifecycle Manager는 이러한 섹션의 내용을 기반으로 인스턴스에서 명령을 실행합니다. SSM 문서에 이러한 섹션이 없는 경우 Amazon Data Lifecycle Manager는 이를 실패한 실행으로 취급합니다.

###===============================================================================### # 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."
참고

이 단계는 다음과 같은 경우 필요합니다.

  • 사용자 지정 IAM 역할을 사용하는 사전/사후 스크립트 지원 스냅샷 정책을 생성하거나 업데이트합니다.

  • 명령줄을 사용하여 기본값을 사용하는 사전/사후 스크립트 지원 스냅샷 정책을 생성하거나 업데이트합니다.

콘솔을 사용하여 스냅샷 관리에 기본 역할을 사용하는 사전/사후 스크립트 지원 스냅샷 정책을 생성하거나 업데이트하는 경우(AWSDataLifecycleManagerDefaultRole) 이 단계를 건너뜁니다. 이 경우 해당 역할에 AWSDataLifecycleManagerSSMFullAccess 정책을 자동으로 연결합니다.

정책에 사용하는 IAM 역할이 정책 대상 인스턴스에서 사전 및 사후 스크립트를 실행하는 데 필요한 SSM 작업을 수행할 수 있는 권한을 Amazon Data Lifecycle Manager에 부여해야 합니다.

Amazon Data Lifecycle Manager는 필요한 권한을 포함하는 관리형 정책(AWSDataLifecycleManagerSSMFullAccess)을 제공합니다. 스냅샷을 관리하기 위해 IAM 역할에 이 정책을 연결하여 해당 정책에 권한이 포함되어 있는지 확인할 수 있습니다.

중요

AWSDataLifecycleManagerSSMFullAccess 관리형 정책은 aws:ResourceTag 조건 키를 사용하여 사전 및 사후 스크립트를 사용할 때 특정 SSM 문서에 대한 액세스를 제한합니다. Amazon Data Lifecycle Manager가 SSM 문서에 액세스하도록 허용하려면 SSM 문서에 로 태그가 지정되어 있어야 합니다DLMScriptsAccess:true.

또는 사용자 지정 정책을 수동으로 생성하거나 사용하는 IAM 역할에 필요한 권한을 직접 할당할 수 있습니다. AWSDataLifecycleManagerSSMFullAccess 관리형 정책에 정의된 것과 동일한 권한을 사용할 수 있지만 aws:ResourceTag 조건 키는 선택 사항입니다. 해당 조건 키를 사용하지 않기로 결정한 경우 SSM 문서에 를 태그 지정할 필요가 없습니다DLMScriptsAccess:true.

다음 방법 중 하나를 사용하여 IAM 정책에 AWSDataLifecycleManagerSSMFullAccess 역할에 추가합니다.

Console
사용자 지정 역할에 관리형 정책 연결
  1. 에서 IAM 콘솔을 엽니다https://console.aws.amazon.com/iam/.

  2. 탐색 창에서 [역할(Roles)]을 선택합니다.

  3. 스냅샷 관리를 위한 사용자 지정 역할을 검색하고 선택합니다.

  4. 권한 탭에서 권한 추가, 정책 연결을 선택합니다.

  5. AWSDataLifecycleManagerSSMFullAccess 관리형 정책을 검색하여 선택한 다음 권한 추가를 선택합니다.

AWS CLI
사용자 지정 역할에 관리형 정책 연결

attach-role-policy 명령을 사용합니다. ---role-name에 대해 사용자 지정 역할의 이름을 지정합니다. --policy-arn에서 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
스냅샷 수명 주기 정책 생성
  1. 에서 Amazon EC2 콘솔을 엽니다https://console.aws.amazon.com/ec2/.

  2. 탐색 창에서 Elastic Block Store, Lifecycle Manager수명 주기 정책 생성을 차례로 선택합니다.

  3. 정책 유형 선택 화면에서 EBS 스냅샷 정책을 선택한 다음 다음을 선택합니다.

  4. 대상 리소스(Target resources) 섹션에서 다음을 수행합니다.

    1. 대상 리소스 유형에서는 Instance를 선택합니다.

    2. 대상 리소스 태그에서 백업할 인스턴스를 식별하는 리소스 태그를 지정합니다. 지정된 태그가 있는 리소스만 백업됩니다.

  5. IAM 역할 에서 AWSDataLifecycleManagerDefaultRole (스냅샷 관리를 위한 기본 역할)을 선택하거나 사전 및 사후 스크립트를 위해 만들고 준비한 사용자 지정 역할을 선택합니다.

  6. 필요에 따라 일정과 추가 옵션을 구성합니다. 유지 관리 기간과 같이 워크로드에 맞는 기간으로 스냅샷 생성 시간을 예약하는 것이 좋습니다.

  7. 사전 및 사후 스크립트 섹션에서 사전 및 사후 스크립트 활성화를 선택하고 다음을 수행합니다.

    1. 사용자 지정 SSM 문서 를 선택합니다.

    2. 자동화 옵션에서 실행하려는 스크립트와 일치하는 옵션을 선택합니다.

    3. SSM 문서 에서 준비한 SSM 문서를 선택합니다.

  8. 필요한 경우 다음과 같은 추가 옵션을 구성합니다.

    • 스크립트 제한 시간 - Amazon Data Lifecycle Manager에서 완료되지 않은 스크립트 실행 시도가 실패하기 전까지의 제한 시간입니다. 스크립트가 제한 시간 내에 완료되지 않으면 Amazon Data Lifecycle Manager에서 시도는 실패합니다. 제한 시간은 사전 스크립트와 사후 스크립트에 개별적으로 적용됩니다. 최소 및 기본 제한 시간은 10초입니다. 최대 제한 시간은 120초입니다.

    • 실패한 스크립트 재시도 - 제한 시간 내에 완료되지 않은 스크립트를 재시도하려면 이 옵션을 선택합니다. 사전 스크립트가 실패할 경우 Amazon Data Lifecycle Manager는 사전 및 사후 스크립트 실행을 포함하여 전체 스냅샷 생성 프로세스를 재시도합니다. 사후 스크립트가 실패할 경우 Amazon Data Lifecycle Manager는 사후 스크립트만 재시도합니다. 이 경우 사전 스크립트가 완료되고 스냅샷이 생성되었을 수 있습니다.

    • 중단 일관성 스냅샷으로 기본 설정 - 사전 스크립트 실행에 실패할 경우 중단 일관성 스냅샷을 기본값으로 설정하려면 이 옵션을 선택합니다. 이는 사전 및 사후 스크립트가 활성화되지 않은 경우 Amazon Data Lifecycle Manager의 기본 스냅샷 생성 동작입니다. 재시도를 활성화한 경우 Amazon Data Lifecycle Manager는 모든 재시도가 소진된 후에만 중단 일관성 스냅샷으로 기본 설정됩니다. 사전 스크립트가 실패하고 중단 일관성 스냅샷을 기본으로 설정하지 않으면 Amazon Data Lifecycle Manager는 해당 일정 실행 중에 인스턴스에 대한 스냅샷을 생성하지 않습니다.

  9. 기본 정책 생성을 선택합니다.

    참고

    Role with name AWSDataLifecycleManagerDefaultRole already exists 오류가 발생하는 경우 자세한 내용은 Amazon Data Lifecycle Manager 문제 해결 섹션을 참조하세요.

AWS CLI
스냅샷 수명 주기 정책 생성

create-lifecycle-policy 명령을 사용하고 에 Scripts 파라미터를 포함합니다CreateRule. 파라미터에 대한 자세한 내용은 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

여기에서 policyDetails.json은 다음을 포함합니다.

{ "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 } }] }