发现 AWS 上的资产

本文档介绍了如何使用迁移中心资产识别客户端 CLI 在 Amazon Web Services (AWS) 账号上运行资产识别。

您可以使用 mcdc CLI 收集有关 AWS 账号中以下资产的信息:

  • Amazon CloudFront(预览版
  • Amazon Elastic Compute Cloud (EC2)
  • Amazon Elastic Container Service (ECS)(预览版
  • Amazon Elastic File System (EFS)(预览版
  • Amazon Elastic Kubernetes Service (EKS)(预览版
  • Amazon Redshift(预览版
  • Amazon Relational Database Service (RDS)
    • Microsoft SQL Server
    • MySQL
    • PostgreSQL
  • Amazon Simple Storage Service (S3)(预览版
  • Amazon Virtual Private Cloud (VPC)(预览版
  • AWS Lambda(预览版
  • Elastic Load Balancing (ELB)(预览版

然后,mcdc CLI 会将收集的信息发送到 Migration Center,您可以在其中完成评估。

限制

在 AWS 账号上运行清单发现时,mcdc CLI 存在以下限制:

  • TCO 报告中仅包含 EC2 和 RDS 资产类型。如需在 Migration Center 之外导出和分析所有资产类型,请导出您的资产清点数据
  • 系统不会收集 EC2 实例的以下信息:
    • 系统不会收集内存用量。如需收集此信息,请确保在 EC2 实例上安装并配置 Amazon CloudWatch 代理。
    • 可用磁盘空间。如需收集此信息,请运行客机发现
  • 您无法在 Linux 机器上运行 mcdc CLI 来从 AWS Windows EC2 实例收集数据。如需从 Windows EC2 实例收集信息,请在 Windows 机器上运行 mcdc CLI。

在商品目录发现期间收集的数据

mcdc CLI 会从受支持的 AWS 服务中收集以下信息:

资源类型 已收集数据
Amazon EC2
点击即可显示收集的数据。
  • 实例详情(ID、类型、状态)
  • 所有者折扣 ID
  • 实例类型详细信息(CPU、内存)
  • 标记
  • 操作系统信息(来自 SSM)
  • 块设备映射和卷详细信息
  • 性能指标(CPU 利用率、网络 I/O、磁盘 I/O)
Amazon RDS
点击即可显示收集的数据。
  • 数据库实例详细信息(标识符、类、状态)
  • 引擎和引擎版本详细信息
  • 已分配的存储空间
  • 标记
  • 性能指标(CPU 利用率、网络吞吐量、IOPS、可用存储空间)
  • 性能分析(可用内存)
Amazon S3
点击即可显示收集的数据。
  • 存储分区详细信息(名称、ARN、区域、创建日期)
  • 标记
  • 版本控制状态
  • 生命周期规则
  • 效果指标(按存储类别细分的存储桶大小、对象数量)
Amazon EKS
点击即可显示收集的数据。
  • 按集群:
    • 集群详细信息(名称、ARN、版本、状态、端点)
    • 标记
    • 角色 ARN
    • VPC 配置
    • 日志记录配置
    • 启动类型(EC2 或 Fargate)
  • 每个受管节点组:
    • 节点组详细信息(名称、ARN、AMI 类型、实例类型、磁盘大小)
    • 扩缩配置(最小、最大、所选大小)
    • 关联的自动伸缩组
  • 每个 Fargate 配置文件:
    • 个人资料详细信息(名称、Pod 执行角色 ARN)
    • 子网
    • 选择器(命名空间、标签)
Amazon ECS
点击即可显示收集的数据。
  • 按集群:
    • 集群详细信息(名称、ARN、状态)
    • 标记
    • 服务和任务的数量
    • 已注册的容器实例
  • 按服务:
    • 服务详情(名称、ARN、启动类型)
    • 任务定义
    • 安排策略
    • 部署配置
    • 负载平衡器信息
  • 每项任务:
    • 任务详细信息(ARN、上次状态、所选状态)
    • CPU 和内存
    • 容器信息
ELB
点击即可显示收集的数据。
  • 每个负载均衡器(版本 1 和 2):
    • 详细信息(名称、ARN/ID、DNS 名称、类型、方案)
    • 标记
    • VPC 和可用区
    • 监听器和规则
    • 目标组和目标健康状况
    • 实例健康状况(适用于传统 ELB)
AWS Lambda
点击即可显示收集的数据。
  • 按功能:
    • 配置(名称、ARN、运行时、角色、处理程序、超时)
    • 标记
    • 内存大小和临时存储空间
    • 软件包类型和代码大小
    • 架构
    • 环境变量
    • 跟踪配置
    • 事件来源映射
    • 并发设置
Amazon CloudFront
点击即可显示收集的数据。
  • 按分发渠道:
    • 详细信息(ID、ARN、域名、状态、已启用)
    • 标记
    • 别名 (CNAME)
    • 来源和来源组
    • 缓存行为
    • 价格等级、HTTP 版本、是否启用 IPv6
Amazon EFS
点击即可显示收集的数据。
  • 每个文件系统:
    • 详细信息(ID、ARN、名称、创建时间)
    • 标记
    • 总大小(标准和不频繁访问)
    • 性能和吞吐量模式
    • 加密状态
    • 生命周期政策
    • 备份政策
    • 复制配置
    • 装载目标和接入点
Amazon Redshift
点击即可显示收集的数据。
  • 按已配置的集群:
    • 集群详细信息(标识符、ARN、状态、版本)
    • 标记
    • 节点类型和数量
    • 数据库名称
    • VPC 和 IAM 角色
    • 加密状态
    • 快照和水下配置
  • 每个无服务器工作组:
    • 工作组详细信息(名称、ARN、状态、基本 RPU)
    • 标记
    • 命名空间信息(数据库名称、IAM 角色、KMS 密钥)
    • VPC 端点
    • 快照复制配置
Amazon VPC
点击即可显示收集的数据。
  • 每个 VPC:
    • VPC 详细信息(ID、ARN、状态、CIDR 块、租户)
    • 标记
    • DHCP 选项 ID
    • 关联的子网
    • 关联的网络 ACL

mcdc CLI 会收集过去 30 天的指标,但数据库内存用量除外。对于数据库内存使用情况,AWS 默认仅保存最多 7 天的数据,因此 mcdc CLI 仅收集过去 7 天的数据。

准备工作

在开始发现资产清单之前,请完成以下步骤:

  1. 查看下载和运行 mcdc CLI 的要求
  2. 选择 mcdc CLI 的下载位置,然后完成下载 mcdc CLI 的步骤。
  3. 确保您有权访问自己的 AWS 账号。

选择 mcdc CLI 的下载位置

您可以将 mcdc CLI 下载到 Linux 和 Windows 机器。我们建议使用 Windows EC2 实例下载并运行 mcdc CLI,因为该实例支持所有可用的收集方法

您可以将 mcdc CLI 下载到可访问目标资产的位置,例如:

  • AWS CloudShell
  • Linux EC2 实例
  • Windows EC2 实例
  • 安装了 mcdc CLI 且可远程访问 AWS 账号的任何计算机。

如需下载 mcdc CLI 的相关说明,请参阅下载 mcdc CLI

创建 AWS IAM 政策

如需授权 mcdc CLI 读取 AWS 资产清单数据,请创建具有以下权限的 AWS IAM 政策

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudfront:ListDistributions",
        "cloudfront:ListTagsForResource",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:ListTagsForResource",
        "cloudwatch:GetMetricData",
        "ec2:DescribeRegions",
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeVolumes",
        "ec2:DescribeVpcs",
        "ec2:DescribeSubnets",
        "ec2:DescribeNetworkAcls",
        "ecs:ListClusters",
        "ecs:DescribeClusters",
        "ecs:ListServices",
        "ecs:DescribeServices",
        "ecs:ListTasks",
        "ecs:DescribeTasks",
        "ecs:ListContainerInstances",
        "ecs:DescribeContainerInstances",
        "efs:DescribeFileSystems",
        "efs:ListTagsForResource",
        "efs:DescribeLifecycleConfiguration",
        "efs:DescribeBackupPolicy",
        "efs:DescribeReplicationConfigurations",
        "efs:DescribeMountTargets",
        "efs:DescribeAccessPoints",
        "eks:ListClusters",
        "eks:DescribeCluster",
        "eks:ListNodegroups",
        "eks:DescribeNodegroup",
        "eks:ListFargateProfiles",
        "eks:DescribeFargateProfile",
        "autoscaling:DescribeAutoScalingGroups",
        "elasticloadbalancing:DescribeLoadBalancers",
        "elasticloadbalancing:DescribeTags",
        "elasticloadbalancing:DescribeListeners",
        "elasticloadbalancing:DescribeRules",
        "elasticloadbalancing:DescribeTargetGroups",
        "elasticloadbalancing:DescribeTargetHealth",
        "elasticloadbalancing:DescribeInstanceHealth",
        "lambda:ListFunctions",
        "lambda:ListTags",
        "lambda:ListEventSourceMappings",
        "lambda:GetFunctionConcurrency",
        "rds:DescribeDBInstances",
        "rds:DescribeDBEngineVersions",
        "pi:GetResourceMetrics",
        "redshift:DescribeClusters",
        "redshift-serverless:ListWorkgroups",
        "redshift-serverless:GetNamespace",
        "redshift-serverless:ListSnapshotCopyConfigurations",
        "redshift-serverless:ListTagsForResource",
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation",
        "s3:GetBucketTagging",
        "s3:GetBucketVersioning",
        "s3:GetLifecycleConfiguration",
        "ssm:DescribeInstanceInformation"
      ],
      "Resource": "*"
    }
  ]
}

向 AWS 进行身份验证

如需授权 mcdc CLI 访问您的 AWS 环境,请使用以下方法之一对您的账号进行身份验证:

使用现有的 AWS 凭据

如需使用现有的 AWS 凭据,请直接从 AWS Cloud Shell 运行 mcdc CLI 命令。 如果您从 AWS CloudShell 运行 mcdc CLI,则可以使用现有凭据,而无需访问密钥。在这种情况下,mcdc CLI 可以访问您的 AWS 环境来发现 AWS 资产,因为您的凭据授予了访问权限。

mcdc CLI 创建访问密钥

如需为 mcdc CLI 创建访问密钥,请按以下步骤操作:

  1. 创建专用 IAM 用户以与 AWS API 互动。
  2. 将您在上一部分中创建的 IAM 政策附加到新用户。
  3. 在 AWS 控制台中,找到您在上一步中创建的 IAM 用户,然后依次点击用户  > 安全凭据  > 创建访问密钥  > 其他  > 下一步  > 创建访问密钥

    如需了解详情,请参阅创建访问密钥

存储访问密钥 ID 和访问密钥。您需要此信息才能扫描 AWS 资源。

可选:设置访问权限以收集客户机操作系统数据

客户操作系统数据可丰富价格报告、许可报告和资产详细信息导出内容。这些数据还有助于评估是否适合将应用容器化并迁移到 Google Kubernetes Engine、GKE Autopilot 和 Cloud Run。如果您不想收集操作系统数据,可以跳过此部分。

如需收集客机操作系统数据,运行 mcdc CLI 的工作站必须连接到目标 EC2 实例。确保目标 EC2 实例上已打开以下端口:

  • Linux 机器的端口 22 (SSH)
  • Windows 机器的端口 135 (WMI)

发现 AWS 账号中的资产

如需发现 AWS 账号中的资产,请按以下步骤操作:

  1. 在命令行终端中,切换到下载 mcdc CLI 的目录。

  2. 运行发现:

    AWS CloudShell

    如需发现 AWS 账号中的资产,请运行以下命令:

    Linux

    ./mcdc discover aws --host-config \ 
    [--services AWS_SERVICE_NAMES] \
    [--region AWS_REGION]

    Windows

    mcdc.exe discover aws --host-config \ 
    [--services AWS_SERVICE_NAMES] \
    [--region AWS_REGION]

    替换以下内容:

    • AWS_SERVICE_NAMES:要发现的资产类型。 请提供以英文逗号分隔的列表。支持的值包括 cloudfrontdynamodbecsefsekselblambdadb (RDS)、redshiftroute53s3vm (EC2) 和 vpc。如果您未提供此标志,系统会发现所有受支持的资源类型。
    • AWS_REGION:您的 EC2 实例和 RDS 数据库所在的 AWS 区域。此标志是可选标志。 如果您未提供此标志,系统会发现所有已启用的 AWS 区域中的资产。

    AWS 访问密钥

    如需使用 AWS 访问密钥 ID 和访问密钥发现 AWS 账号中的资产,请运行以下命令:

    Linux

    ./mcdc discover aws --access-key-id AWS_ACCESS_KEY_ID \  
    --secret-access-key AWS_ACCESS_KEY \
    [--services AWS_SERVICE_NAMES] \
    [--region AWS_REGION]

    Windows

    mcdc.exe discover aws --access-key-id AWS_ACCESS_KEY_ID \  
    --secret-access-key AWS_ACCESS_KEY \
    [--services AWS_SERVICE_NAMES] \
    [--region AWS_REGION]

    替换以下内容:

    • AWS_ACCESS_KEY_ID:您在mcdc CLI 创建访问密钥部分中创建的访问密钥 ID。
    • AWS_ACCESS_KEY:您在mcdc CLI 创建访问密钥部分中创建的访问密钥。
    • AWS_SERVICE_NAMES:要发现的资产类型。 请提供以英文逗号分隔的列表。支持的值包括 cloudfrontdynamodbecsefsekselblambdadb (RDS)、redshiftroute53s3vm (EC2) 和 vpc。如果您未提供此标志,系统会发现所有受支持的资源类型。
    • AWS_REGION:您的 AWS 资产所在的 AWS 区域。此标志是可选标志。如果您未提供此标志,系统会发现所有已启用的 AWS 区域中的资产。

    输出应类似如下所示:

    [+] Collecting for AWS Account: 123456789012
    [+] Collecting RDS in region eu-north-1
    [✓] Collected 0 DB instances
    [!] No DB instances found
    [+] Collecting ECS in region eu-north-1
    [+] Successfully collected data for 2 ECS clusters in region eu-north-1
    [+] Collecting S3...
    [+] Successfully collected data for 74 S3 buckets
    [✓] Collection completed.
    
  3. 可选:如需查看收集的数据,请运行以下命令:

    Linux

    ./mcdc discover ls

    Windows

    mcdc.exe discover ls

    输出应类似如下所示:

    VM Assets
    PLATFORM VM ID       NAME              COLLECTED DATA   OS                          IP ADDRESSES
    i-011d6234b5769fe2a  abc-rhel9.0-arm   AWSVM            Red Hat Enterprise Linux    192.0.2.1
    i-08f7e5e469508460f  def-rhel9.0-arm   AWSVM            Red Hat Enterprise Linux    192.0.2.2
    i-09e28bb6eggg94db8  ghi-ol9.3         AWSVM            Linux/UNIX                  192.0.2.3
    
    Database Assets
    GENERATED ID                                         PROVIDER        ENGINE
    arn:aws:rds:eu-west-1:12345678912:db:abc-sqlserver   RDS             SQL Server
    
    AWS CloudFront Distribution: 2 assets were collected.
    AWS ECS Cluster: 3 assets were collected.
    AWS EFS: 5 assets were collected.
    AWS Elastic Load Balancer: 7 assets were collected.
    AWS Lambda: 9 assets were collected.
    AWS Redshift: 2 assets were collected.
    AWS S3 Bucket: 77 assets were collected.
    AWS VPC: 84 assets were collected.
    

    (可选)使用 --asset-types 标志显示特定类型的资源。 例如,如需仅显示 EC2 实例,请运行以下命令:

    Linux

    ./mcdc discover ls --asset-types=vm

    Windows

    mcdc.exe discover ls --asset-types=vm

    使用 --asset-types 标志时,仅支持以下素材资源类型:

    • db:Relational Database Service (RDS)
    • vm:Elastic Compute Cloud (EC2)

  4. 发现资产后,如需查看资产,请将收集的数据导出到 Migration Center。

后续步骤