第 2 章 创建并上传 AWS AMI 镜像
要在 Amazon Web Services (AWS)云中使用自定义的 RHEL 系统镜像,请使用相应的输出类型,使用镜像构建器创建系统镜像,配置您的系统以上传镜像,并将镜像上传到 AWS 帐户。
2.1. 准备手动上传 AWS AMI 镜像
在上传 AWS AMI 镜像前,您必须配置系统来上传镜像。
先决条件
- 您必须在 AWS IAM account manager 中配置了一个 Access Key ID。
- 您必须具有一个可写的 S3 存储桶。
流程
安装 Python 3 和
pip
工具:# dnf install python3 python3-pip
使用
pip
安装 AWS 命令行工具 :# pip3 install awscli
设置您的配置集。终端提示您提供凭证、地区和输出格式:
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
为存储桶定义名称并创建存储桶:
$ BUCKET=bucketname $ aws s3 mb s3://$BUCKET
使用实际的存储桶名称替换
bucketname
。它必须是全局唯一的名称。因此,您的存储桶会被创建。要授予访问 S3 存储桶的权限,如果您还没有这样做,请在 AWS Identity and Access Management (IAM) 中创建一个
vmimport
S3 角色:创建一个 JSON 格式的带有信任策略配置的
trust-policy.json
文件。例如:{ "Version": "2022-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:Externalid": "vmimport" } } }] }
创建一个 JSON 格式的带有角色策略配置的
role-policy.json
文件。例如:{ "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
使用
trust-policy.json
文件为您的 Amazon Web Services 帐户创建一个角色:$ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
使用
role-policy.json
文件嵌入一个内联策略文档:$ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json