- 注册 AWS 账户
访问 AWS 官方网站,点击"免费注册"按钮,按照提示完成账户注册:
提供电子邮件地址、密码和电话号码。
验证身份(可能需要手机验证码)。
设置 billing 信息。
- 登录 AWS 管理控制台
使用注册的邮箱和密码登录 AWS 管理控制台。
- 配置 AWS CLI (可选但推荐)
为了方便后续操作,建议安装并配置 AWS CLI:
下载 AWS CLI:
在 Windows 上:访问 官方链接,运行安装程序。
在 macOS/Linux 上:使用以下命令安装:
BASH
pip install --user awscli
配置 AWS CLI:
打开终端或命令提示符,运行:
BASH
aws configure
按照提示输入你的 AWS Access Key ID、Secret Access Key 和默认区域(例如 us-east-1)。
- 创建 IAM 用户和角色
为了安全起见,建议创建一个 IAM 用户并为其分配必要的权限。
步骤 1:创建 IAM 用户
打开 AWS 管理控制台,导航到 IAM 服务。
在左侧菜单中选择 Users,点击"Add user"。
填写用户名称(例如 ml-pipeline-user),选择权限类型(直接访问资源)。
点击"Next: Permissions",然后选择一个预定义策略或自定义策略:
推荐使用 AmazonSageMakerFullAccess 和 CloudWatchReadOnlyAccess 等策略。
完成创建后,记录下用户的 Access Key ID 和 Secret Access Key。
步骤 2:创建 IAM 角色
在 IAM 控制台中选择 Roles,点击"Create role"。
选择信任关系(例如 AWS Account Arn)。
添加所需的权限策略:
AmazonSageMakerFullAccess
CodePipelineFullAccess
CodeBuildFullAccess
StatesFullAccess
完成创建后,记录角色的 ARN。
- 创建必要的 AWS 资源
步骤 1:创建 S3 存储桶
打开 AWS 管理控制台,导航到 S3。
点击"Create bucket",填写名称(例如 ml-pipeline-bucket)。
配置存储桶的区域和访问权限。
步骤 2:创建 ECR(Elastic Container Registry)仓库
打开 AWS 管理控制台,导航到 ECR。
在区域中选择一个位置(例如 us-east-1),点击"Create repository",填写名称(例如 ml-model-repo)。
步骤 3:创建 IAM 角色并附加策略
返回 IAM 控制台,确保你已经创建了必要的角色。
确保角色已附加以下策略:
AmazonSageMakerFullAccess
CodePipelineFullAccess
CodeBuildFullAccess
StatesFullAccess
- 配置 CodePipeline
打开 AWS 管理控制台,导航到 CodePipeline。
点击"Start pipeline execution"或创建一个新的管道。
按照提示配置管道:
选择源(例如 S3 存储桶)。
配置构建阶段(使用 CodeBuild)。
配置部署阶段(例如 SageMaker)。
- 配置 CodeBuild
打开 AWS 管理控制台,导航到 CodeBuild。
点击"Create project",填写项目名称和描述。
选择构建规范(Docker 或其他),配置构建命令:
BASH
# 示例 Dockerfile
FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]
- 配置 SageMaker
打开 AWS 管理控制台,导航到 SageMaker。
创建一个 SageMaker 实例(例如 ml-pipeline-instance)。
配置模型部署(例如使用推理容器)。 - 配置 CloudWatch 监控
打开 AWS 管理控制台,导航到 CloudWatch。
创建日志组和日志流,监控管道的运行状态。 - 测试管道
提交代码到 S3 存储桶或直接触发 CodePipeline。
监控管道的运行状态,确保所有阶段(构建、部署)顺利完成。
更新之后
步骤 1: 设置 AWS CLI 环境
安装 AWS CLI:
下载并安装 AWS CLI。
配置 AWS CLI:
BASH
aws configure
按提示输入你的 AWS 凭据和区域。
步骤 2: 创建新的 IAM 角色
a. 登录 AWS 管理控制台
打开 AWS 控制台。
使用你的注册邮箱和密码登录。
b. 创建新 IAM 角色
在导航栏中选择 IAM。
选择 Roles,然后点击 Create role。
选择以下信任策略:
AmazonSageMakerFullAccess
CodePipelineReadOnlyAccess
CodeBuildDeveloperAccess
完成创建角色。
c. 添加 IAM 策略
在新角色的权限部分,添加以下策略:
arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
arn:aws:iam::aws:policy/CodePipelineReadOnlyAccess
arn:aws:iam::aws:policy/CodeBuildDeveloperAccess
步骤 3: 更新服务 IAM 角色
a. 更新 CodePipeline
打开 CodePipeline。
选择你的管道,点击 Edit pipeline。
在 Execution role 部分,选择新创建的 IAM 角色。
保存更改。
b. 更新 StepFunctions 状态机
打开 Step Functions。
选择你的状态机,点击 Edit。
在 Execution IAM Role 中,选择新 IAM 角色。
保存并运行状态机。
c. 更新 CodeBuild 项目
打开 CodeBuild。
选择你的构建项目,点击 Edit build project。
在 Service role 部分,选择新 IAM 角色。
保存更改。
步骤 4: 测试管道
a. 提交代码到 CodeCommit
打开终端,克隆你的 CodeCommit 存储库:
BASH
git clone https://git-codecommit.<region>.amazonaws.com/v1/repos/<repository-name>
修改 model/training_script.py 文件。
提交更改:
BASH
git add .
git commit -m "修复IAM角色问题"
git push origin main
b. 触发 CodePipeline
在 CodePipeline 中,选择你的管道并手动运行。
步骤 5: 监控和验证
a. 检查 CloudWatch 日志
打开 CloudWatch Logs。
查看 CodeBuild 和 StepFunctions 的日志,确保没有权限相关错误。
b. 验证 SageMaker 模型训练
在 SageMaker 中,检查模型训练作业是否成功启动并完成。
代码示例
a. IAM 策略文件(iam-policy.json)
JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sagemaker:*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"codepipeline:CancelBuild",
"codepipeline:Get*",
"codepipeline:List*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"codebuild:BatchGetProjects",
"codebuild:GetProject",
"codebuild:StartBuild"
],
"Resource": "*"
}
]
}
b. 更新 CodePipeline 的 IAM 角色
BASH
aws codepipeline update-pipeline \
--name <pipeline-name> \
--configuration '{"executionRoleArn":"arn:aws:iam::<account-id>:role/<new-role-name>"}'
注意事项
权限最小化:仅授予所需的最小权限。
日志监控:及时查看 CloudWatch 日志,排查问题。
测试环境:在非生产环境中进行测试,避免影响线上服务。