AWS CloudFormation으로 AWS Backup을 작성할 때 AWSBackupDefaultServiceRole 이 생성이 안될 때

2024.04.25

소개

안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 AWS CloudFormation으로 AWS Backup을 작성한 후 백업을 실행할 권한이 없다는 오류가 발생하는 문제에 대해 소개하도록 하겠습니다.

문제 발생

Your backup job failed as AWS Backup does not have permission to describe resource arn:aws:ec2:region:AWS Account:instance/EC2 instance ID. Please review your IAM policies to ensure AWS Backup can protect your resources.

처음으로 AWS Backup을 AWS CloudFormation으로 작성하여 백업을 실행 했을 경우 위와 같은 권한이 없다는 에러가 발생하게 됩니다.
AWS 콘솔 화면에서 작성하게 되면 자동으로 AWS Backup의 Default IAM Role이 작성되지만 AWS CloudFormation으로 작성하게 되면 자동으로 생성되지 않게 됩니다.
해결 방법으로는 수동으로 AWSBackupDefaultServiceRole 을 작성하거나 CloudFormation 에 AWSBackupDefaultServiceRole를 작성하는 방법이 있습니다.
이번 블로그에서는 CloudFormation 에 AWSBackupDefaultServiceRole를 작성하여 해결하도록 하겠습니다.

AWSBackupDefaultServiceRole 작성이 포함된 CloudFormation 코드

AWSBackupDefaultServiceRole 사용 되는 정책

CloudFormation 코드

AWSTemplateFormatVersion: '2010-09-09'
Description: "Backup CloudFormation Template"
Parameters:
  SystemName:
    Description: "System name of each resource names."
    Type: String
    Default: "test"
  Cron:
    Description: "Time to do backup(cron) UTC"
    Type: String
    Default: cron(0 0 * * ? *)
  TagKey:
    Description: TagKey for backup
    Type: String
    Default: 'test'
  TagValue:
    Description: TagValue for backup
    Type: String
    Default: 'test'

Resources:
  BackupVault:
    Type: "AWS::Backup::BackupVault"
    Properties:
      BackupVaultName: 
        Fn::Sub: ${SystemName}-prd-backupvault

  BackupPlan:
    Type: AWS::Backup::BackupPlan
    Properties: 
      BackupPlan: 
        BackupPlanName: 
          Fn::Sub: ${SystemName}-prd-plan
        BackupPlanRule: 
          - RuleName: 
              Fn::Sub: ${SystemName}-prd-rule
            TargetBackupVault: !Ref BackupVault
            ScheduleExpression: !Ref Cron
            CompletionWindowMinutes: 120
            StartWindowMinutes: 60
            Lifecycle:
              DeleteAfterDays: 30

  BackupSelection:
    Type: AWS::Backup::BackupSelection
    Properties:
      BackupPlanId: !Ref BackupPlan
      BackupSelection:
        SelectionName:
          Fn::Sub: ${SystemName}-prd-backup-ec2-resources
        IamRoleArn: !GetAtt BackupIAMrole.Arn
        ListOfTags:
          - ConditionType: "STRINGEQUALS"
            ConditionKey: !Ref TagKey
            ConditionValue: !Ref TagValue

  BackupIAMrole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: AWSBackupDefaultServiceRole
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
        - Effect: Allow
          Action: sts:AssumeRole
          Principal:
            Service: backup.amazonaws.com
      ManagedPolicyArns:
      - arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup
      - arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores
      Path: "/service-role/"

마무리

이번 블로그에서는 AWS CloudFormation으로 AWS Backup을 작성할 때 AWSBackupDefaultServiceRole 이 생성 안 됐을 때 나타나는 에러에 대해 설명하였습니다.
저와 같은 문제가 발생하신 분들께 조금이나마 도움이 되었으면 좋겠습니다.

참고자료