소개
안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 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 이 생성 안 됐을 때 나타나는 에러에 대해 설명하였습니다.
저와 같은 문제가 발생하신 분들께 조금이나마 도움이 되었으면 좋겠습니다.