从零开始:AWS 根账户创建、安全配置与 IAM 权限管理指南

云计算已成为现代软件开发的基石,而 Amazon Web Services (AWS) 作为全球领先的云服务平台,提供了超过 200 种功能齐全的服务。从计算、存储到数据库和机器学习,AWS 允许我们根据需求灵活选择资源,这种“按需付费”的模式极大地降低了创新的门槛。虽然单个 AWS 服务可能功能单一,但正如我们将要看到的,通过合理的架构设计,我们可以轻松地将各种服务集成,构建出高度复杂且健壮的应用程序。

在这篇文章中,我们将深入探讨如何从零开始创建并设置一个 AWS 根账户。为了帮助大家获得实践经验,Amazon 提供了 AWS 免费套餐。这通常包括为期 12 个月的特定服务免费试用,以及某些服务(如 Lambda)的永久免费额度。请注意: 除非您超出了免费套餐的限制,否则注册使用不会被收费。但我必须强调一个最佳实践:在练习结束后,请务必检查并关闭或删除不再使用的资源,以避免意外产生费用。

为什么创建 AWS 账户是第一步?

在深入操作之前,让我们理解一下我们要做什么。创建 AWS 账户不仅仅是注册一个用户名,它实际上是在建立一个云环境的“根”安全边界。这个根账户拥有对账户中所有 AWS 资源和计费信息的完全访问权限。因此,我们的目标不仅是完成注册,还要建立安全意识。你可能会问:“为什么我不直接用根账户登录操作?”这是一个很好的问题,也是我们在配置账户后要讨论的第一个核心安全概念——IAM(身份和访问管理)

准备工作

为了顺利完成接下来的步骤,请准备好以下物品:

  • 一个有效的电子邮箱:未在 AWS 上注册过的邮箱。
  • 一张信用卡或借记卡:国际支付功能(如 Visa 或 MasterCard)。即使使用免费套餐,AWS 也需要此卡来验证身份,这属于预授权验证,通常不会扣费,或者会扣除极小额费用(如 1-2 美元)并在几天内退还。
  • 一部手机:用于接收短信或语音验证码。

步骤 1:访问控制台与初始化

首先,让我们打开 Web 浏览器,在地址栏输入 https://aws.amazon.com/,或者搜索 "AWS Login Console"。点击右上角的 "创建 AWS 账户" 按钮。

步骤 2:填写根账户凭证

此时将打开 AWS 登录控制台页面。我们点击 "Create an AWS Account"(创建 AWS 账户)。

现在,我们需要选择 "Create a new AWS account"(创建新的 AWS 账户)。这是我们要走的路。

在这个阶段,我们必须提供基础的 AWS 账户名称根用户的电子邮件地址。请务必记住这个邮箱,因为它将作为你的根用户登录 ID。

点击 "Verify Email Address"(验证电子邮件地址)后,AWS 会向该邮箱发送一个包含验证码的邮件。

将验证码填入网页,接着,你需要为此账户创建一个强 密码。AWS 对密码强度有较高要求,建议使用大小写字母、数字和特殊符号的组合。完成后点击 "Continue"(继续)。

步骤 3:账户详情与联系人信息

在这一步,我们需要填写 账户所有者 的信息。请务必填写真实信息,因为 AWS 会使用这些信息在紧急情况下(如计费异常或安全风险)与你联系。这里需要包括 全名电话号码国家/地区

步骤 4:支付验证与安全考量

这是许多新手最紧张的一步:绑定信用卡或借记卡。请放心,除非你主动升级服务或超出免费额度,否则 AWS 不会扣费。

技术背景: AWS 会通过发卡行进行一次预授权交易,金额通常为 1 美元或等值货币。这只是用来验证卡号的有效性和账户状态。这笔钱通常会在 3-5 个工作日内由银行自动释放或退还,不会真正计入账单。

步骤 5:身份验证(KYC)

为了防止欺诈和滥用机器人账户,AWS 要求我们进行 电话号码验证。选择你喜欢的方式:短信语音通话。建议选择短信,速度更快。

步骤 6:选择支持计划

最后,我们需要选择一个 支持计划。对于正在学习或测试的开发者来说,选择 Basic Support(基本支持) 是最合适的。它是完全免费的,并且包含了访问 AWS 信任中心、健康仪表板以及大量文档的权限。如果你在生产环境中遇到问题,可以随时升级到 Developer 或 Business 支持,但现在我们不需要。

2026年进阶安全配置:从根账户到 IAM 与 Zero Trust

注册完成后,你现在拥有了 AWS 根账户的访问权限。请仔细阅读以下内容,这是专业开发者与业余用户最大的区别。

千万不要使用根账户进行日常开发或管理操作!

在 2026 年,随着 Agentic AI(自主智能体)Vibe Coding(氛围编程) 的兴起,开发环境变得极其动态。如果根账户凭据泄露,不仅仅是数据丢失的风险,AI 代理可能会在几分钟内消耗掉巨额的计算资源。我们需要立即使用 AWS IAM (Identity and Access Management) 服务来建立基于 Zero Trust(零信任) 的安全模型。

#### 1. 理解 2026 年的 IAM 核心原则

在 AWS 中,最小权限原则 依然是安全的核心,但我们需要结合 临时凭证 的概念。现代开发实践中,我们不再使用长期有效的 Access Key,而是结合 SSO(单点登录)AWS IAM Identity Center 来发放短期token。让我们看一个实际的代码示例,这是一个允许特定 AI 代理服务仅访问 S3 存储桶中特定路径的策略。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAIAgentSpecificAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::my-ai-app-data/agents/agent-01/*"
      ]
    },
    {
      "Sid": "DenyGeneralAccess",
      "Effect": "Deny",
      "Action": [
        "s3:DeleteBucket",
        "s3:ListAllMyBuckets"
      ],
      "Resource": "*"
    }
  ]

代码解析:

  • 显式拒绝: 2026 年的最佳实践是,除了允许特定操作外,必须显式拒绝高风险操作(如删除桶),防止配置错误导致的灾难。
  • 资源隔离: 我们强制 AI 代理只能访问 agents/agent-01/ 路径。这样,即使该 Agent 被攻击或产生幻觉,其影响范围也被严格限制。

#### 2. 现代化管理:自动化配置与 Terraform

手动点击控制台创建用户已经过时了。让我们来看看如何使用 Terraform(基础设施即代码)来自动化这个过程。在我们的最近一个构建 AI 原生应用的项目中,我们使用 Terraform 确保所有开发环境的 IAM 配置一致且可审计。

以下是一个 Terraform 配置块,用于创建一个具有只读 S3 权限的 IAM 用户组,并附加 MFA 强制策略:

# 1. 创建一个 S3 只读策略
data "aws_iam_policy_document" "s3_read_only" {
  statement {
    effect    = "Allow"
    actions   = ["s3:Get*", "s3:List*"]
    resources = ["arn:aws:s3:::my-company-data", "arn:aws:s3:::my-company-data/*"]
  }
}

resource "aws_iam_policy" "s3_read_only_policy" {
  name        = "S3ReadOnlyPolicy-2026"
  description = "Policy for read only access to S3 buckets"
  policy      = data.aws_iam_policy_document.s3_read_only.json
}

# 2. 创建用户组并附加策略
resource "aws_iam_group" "developers" {
  name = "Developers-2026"
}

resource "aws_iam_group_policy_attachment" "attach_s3_read" {
  group      = aws_iam_group.developers.name
  policy_arn = aws_iam_policy.s3_read_only_policy.arn
}

# 3. 强制 MFA 策略(如果未启用 MFA,则拒绝除特定管理操作外的所有操作)
data "aws_iam_policy_document" "enforce_mfa" {
  statement {
    sid     = "DenyAllExceptListedIfNoMFA"
    effect  = "Deny"
    not_actions = [
      "iam:CreateVirtualMFADevice",
      "iam:EnableMFADevice",
      "iam:GetUser",
      "iam:ListMFADevices",
      "iam:ListVirtualMFADevices",
      "iam:ResyncMFADevice",
      "sts:GetSessionToken"
    ]
    resources = ["*"]
    
    condition {
      test     = "BoolIfExists"
      variable = "aws:MultiFactorAuthPresent"
      values   = ["false"]
    }
  }
}

resource "aws_iam_policy" "mfa_policy" {
  name   = "EnforceMFA-2026"
  policy = data.aws_iam_policy_document.enforce_mfa.json
}

resource "aws_iam_group_policy_attachment" "attach_mfa" {
  group      = aws_iam_group.developers.name
  policy_arn = aws_iam_policy.mfa_policy.arn
}

实战建议: 这种 "Infrastructure as Code" (IaC) 的方法不仅安全,而且它是可重现的。当我们要扩展到新的 AWS 区域(比如 INLINECODEe48efb0c 或 INLINECODEd5a2da9e)时,只需运行 terraform apply 即可建立完全一致的安全基座。

AI 时代的成本优化:智能预算与可观测性

在 2026 年,随着 AI 辅助工作流 的普及,资源消耗的波动性大大增加。传统的“月度账单”已经太滞后了。我们需要引入 FinOps(云财务运营) 和实时可观测性。

#### 场景 1:AI 模型微调带来的突发成本

你可能会使用 AWS SageMaker 进行模型微调。如果训练脚本陷入死循环或者 GPU 实例选择错误(比如错误地选用了 p5.48xlarge 这种昂贵实例),几小时内就能产生数万美元的账单。

解决方案: 我们可以使用 Python 脚本结合 Boto3(AWS SDK)来设置一个动态的“熔断机制”。以下是一个简单的示例代码,用于监控预算并在超限时强制关闭特定标签的 EC2/Sagemaker 实例。

import boto3
import os

# 设置环境变量 AWS_BUDGET_THRESHOLD
def check_and_shutdown_on_budget_exceeded(threshold_percentage=100):
    # 初始化客户端
    ce_client = boto3.client(‘ce‘, region_name=‘us-east-1‘)
    ec2_client = boto3.client(‘ec2‘, region_name=‘us-east-1‘)
    sm_client = boto3.client(‘sagemaker‘, region_name=‘us-east-1‘)
    
    # 获取当月到目前为止的成本
    response = ce_client.get_cost_and_usage(
        TimePeriod={‘Start‘: ‘2026-01-01‘, ‘End‘: ‘2026-01-31‘}, # 实际应用中应动态生成日期
        Granularity=‘MONTHLY‘,
        Metrics=[‘BlendedCost‘],
        GroupBy=[{‘Type‘: ‘DIMENSION‘, ‘Key‘: ‘SERVICE‘}]
    )
    
    total_cost = 0
    for result in response[‘ResultsByTime‘]:
        # 简单的累加,生产环境需要更复杂的解析逻辑
        pass 
    
    # 模拟:假设我们获取到的当前预估费用
    estimated_cost = 15.00 
    budget_limit = 10.00
    
    if estimated_cost > budget_limit:
        print(f"警告:当前预估费用 ${estimated_cost} 已超过预算限额 ${budget_limit}。启动紧急停机流程...")
        
        # 1. 停止带有 ‘Project: AI-Training‘ 标签的 EC2 实例
        ec2_response = ec2_client.describe_instances(
            Filters=[{‘Name‘: ‘tag:Project‘, ‘Values‘: [‘AI-Training‘]}]
        )
        
        for reservation in ec2_response[‘Reservations‘]:
            for instance in reservation[‘Instances‘]:
                if instance[‘State‘][‘Name‘] == ‘running‘:
                    print(f"正在停止实例: {instance[‘InstanceId‘]}")
                    ec2_client.stop_instances(InstanceIds=[instance[‘InstanceId‘]])
                    
        # 2. 停止 SageMaker 训练任务
        # sm_client.stop_notebook_instance(NotebookInstanceName=‘...‘)
        
        # 3. 发送 SNS 通知给管理员
        sns_client = boto3.client(‘sns‘)
        sns_client.publish(
            TopicArn=‘arn:aws:sns:us-east-1:123456789:BudgetAlerts‘,
            Message=f‘预算超限警报!已自动切断非关键资源。当前费用:${estimated_cost}‘,
            Subject=‘AWS Budget Alert: Auto Shutdown Triggered‘
        )
    else:
        print(f"预算正常。当前费用:${estimated_cost}")

if __name__ == "__main__":
    check_and_shutdown_on_budget_exceeded()

这段代码展示了 Agentic AI 的早期形态:一个能够感知环境(成本)并采取行动(关机)的自动化脚本。你可以将其部署为 AWS Lambda 函数,配合 CloudWatch Events 每小时运行一次。

现代开发工作流:Vibe Coding 与云原生集成

设置好账户后,我们该如何高效开发?在 2026 年,我们不再需要手动编写大量的样板代码。通过 CursorGitHub Copilot 等 AI IDE,我们可以直接通过自然语言描述意图,快速生成部署脚本。

实战案例: 假设我们想要部署一个简单的 Python Flask 应用到 AWS App Runner(一个完全托管的服务器less容器服务)。

  • 在 Cursor 中编写应用:我们只需要写核心业务逻辑。
  • 使用 AI 生成配置:我们可以提示 AI:“为这个 Flask 应用生成一个 Dockerfile,并创建一个 apprunner.yaml 配置文件。”
  • 自动化部署

以下是我们可能会用到的 apprunner.yaml 配置,这在现代 CI/CD 流水线中是标准配置:

version: 1.0

runtime:
  name: python311
  build:
    commands:
      build:
        - pip install -r requirements.txt
  run:
    command: python application.py
    network:
      port: 8080 # 环境变量 APP_PORT 通常由 App Runner 自动注入

configuration:
  # 环境变量管理:敏感信息应从 Secrets Manager 获取
  env:
    - name: DB_CONNECTION
      value: "postgresql://..." 
    # 生产环境中,不要硬编码,应使用 `reference-secrets` 指向 AWS Secrets Manager
    # - name: API_KEY
    #   reference-secrets: "my-app-secrets:api-key"

resources:
  cpu: 0.25 vCPU
  memory: 0.5 GB
  # 对于流量突发的 AI 应用,启用并发配置
  instance:
    concurrency: 10
    
observability:
  configuration:
    # 2026年的标准:集成 X-Ray 进行分布式追踪
    tracing_enabled: true

关键点: 注意观察我们在代码中是如何处理并发和可观测性的。在 2026 年,可观测性 不仅仅是锦上添花,它是必须的。通过开启 tracing_enabled: true,我们可以让 AWS X-Ray 自动捕获请求在 DynamoDB、S3 以及我们的应用之间流转的耗时,这在调试微服务架构或 Agentic AI 调用链时至关重要。

结语:迈向 AI 原生的未来

创建一个 AWS 账户只是云原生之旅的起点。我们今天不仅完成了注册流程,更重要的是,我们探讨了如何安全地管理这个账户(通过 IAM 和 Zero Trust)、如何通过代码和策略来定义权限边界,以及如何通过智能监控和自动化脚本来应对 AI 时代带来的成本挑战。

云计算的强大在于其灵活性,但这也意味着责任共担模型。AWS 负责保护云本身的安全,而你负责云中的安全,包括你部署的 AI Agent 的行为边界。现在,你已经有了一个坚实的账户基础,去探索 AWS 提供的广阔世界吧!建议你的下一步是尝试使用 AWS Q Developer(前身为 CodeWhisperer)来辅助你编写第一个 Lambda 函数,或者使用 Amplify 快速部署一个全栈应用。祝你在云端和 AI 时代的探索之旅充满乐趣与收获!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/17841.html
点赞
0.00 平均评分 (0% 分数) - 0