2장. AWS AMI 이미지 생성 및 업로드
AWS(Amazon Web Services) 클라우드에서 사용자 지정 RHEL 시스템 이미지를 사용하려면 해당 출력 유형을 사용하여 Image Builder로 시스템 이미지를 생성하고, 이미지를 업로드하도록 시스템을 구성하고, AWS 계정에 이미지를 업로드합니다.
2.1. AWS AMI 이미지 업로드 준비 링크 복사링크가 클립보드에 복사되었습니다!
AWS AMI 이미지를 업로드하기 전에 이미지를 업로드할 시스템을 구성해야 합니다.
사전 요구 사항
- AWS IAM 계정 관리자에 Access Key ID가 구성되어 있어야 합니다.
- 쓰기 가능한 S3 버킷이 준비되어 있어야 합니다.
절차
Python 3 및
pip툴을 설치합니다.dnf install python3 dnf install python3-pip
# dnf install python3 # dnf install python3-pipCopy to Clipboard Copied! Toggle word wrap Toggle overflow pip를 사용하여 AWS 명령행 툴 을 설치합니다.pip3 install awscli
# pip3 install awscliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 프로필을 설정합니다. 터미널에서 인증 정보, 지역 및 출력 형식을 제공하라는 메시지를 표시합니다.
aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 버킷 이름을 정의하고 다음 명령을 사용하여 버킷을 생성합니다.
BUCKET=bucketname aws s3 mb s3://$BUCKET
$ BUCKET=bucketname $ aws s3 mb s3://$BUCKETCopy to Clipboard Copied! Toggle word wrap Toggle overflow bucketname 을 실제 버킷 이름으로 교체합니다. 이는 전역적으로 고유한 이름이어야 합니다. 결과적으로 버킷이 생성됩니다.
S3 버킷에 액세스할 수 있는 권한을 부여하려면 이전에 수행하지 않은 경우 AWS IAM(Identity and Access Management)에서
vmimportS3 역할을 생성합니다.printf '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }' > trust-policy.json printf '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::%s", "arn:aws:s3:::%s/*" ] }, { "Effect":"Allow", "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource":"*" } ] }' $BUCKET $BUCKET > role-policy.json aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json$ printf '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }' > trust-policy.json $ printf '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::%s", "arn:aws:s3:::%s/*" ] }, { "Effect":"Allow", "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource":"*" } ] }' $BUCKET $BUCKET > role-policy.json $ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json $ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow