发现 AWS 上的资产

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

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

然后,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 和内存
    • 容器信息
Amazon Elastic Load Balancing (ELB)
点击即可显示收集的数据。
  • 每个负载均衡器(版本 1 和 2):
    • 详细信息(名称、ARN/ID、DNS 名称、类型、方案)
    • 标记
    • VPC 和可用区
    • 监听器和规则
    • 目标组和目标健康状况
    • 实例健康状况(适用于传统 ELB)
Amazon 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
Amazon DynamoDB
点击即可显示收集的数据。
  • 表详细信息(名称、ARN、创建时间、状态、大小 [以字节为单位]、商品数量、类别)
  • 标记
  • 结算模式
  • 预配的吞吐量
  • 信息流信息
  • 副本
  • 持续备份和时间点恢复状态
Amazon NAT 网关
点击即可显示收集的数据。
  • NAT 网关详细信息(ID、ARN、创建时间、状态)
  • 标记
  • VPC ID 和子网 ID
  • 连接类型
  • 关联的地址
Amazon Route53
点击即可显示收集的数据。
  • 托管区域详细信息(名称、ID、ARN、专用区域、注释、记录集数量)
  • 标记
  • 来电者参考
  • 关联的服务
  • 域名服务器
  • VPC 关联
  • 资源记录集
Amazon ECR
点击即可显示收集的数据。
  • 代码库详细信息(名称、ARN、注册 ID、网址)
  • 标记
  • 图片扫描配置
  • 加密配置(类型、KMS 密钥)
  • 映像标记可变性设置
弹性 IP 地址 (EIP)
点击即可显示收集的数据。
  • 分配 ID 和关联 ID
  • 标记
  • 公共 IP 地址和专用 IP 地址
  • 网域(VPC 或标准)
  • 关联的实例和网络接口 ID
  • 公开和专用 DNS 名称
  • 网络边界组和 IP 池
弹性网络接口 (ENI)
点击即可显示收集的数据。
  • 接口详细信息(ID、ARN、类型、说明、状态)
  • 标记
  • VPC 和子网 ID
  • MAC 地址和专用 IP 地址
  • 关联的安全组
  • IPv6 地址和主要 IPv6 状态
  • 附件详细信息(ID、设备索引、实例 ID)
  • 来源或目的地检查状态
Amazon Elastic Block Store (EBS)
点击即可显示收集的数据。
  • 卷详细信息(ID、ARN、类型、大小、状态)
  • 标记
  • 可用性地区
  • 加密状态和 KMS 密钥 ID
  • 性能指标(IOPS、吞吐量)
  • 快照 ID 和创建时间
  • 多重附加和渠道信息
Amazon EC2 自动扩缩
点击即可显示收集的数据。
  • 群组详细信息(名称、ARN、状态)
  • 标记(包括传播设置)
  • 扩缩配置(最小值、最大值、大小)
  • VPC 可用区标识符和可用区
  • 启动模板和混合实例政策
  • 健康检查配置(类型、宽限期)
  • 关联的负载平衡器和目标群组
  • 终止政策和暂停流程
  • 暖池配置
Amazon Batch
点击即可显示收集的数据。
  • 计算环境详细信息(名称、ARN、类型、状态、状态)
  • 标记
  • ECS 集群和服务角色 ARN
  • 计算资源(实例类型、分配策略、vCPU 限制)
  • 网络配置(子网、安全组)
  • EC2 配置和启动模板
  • EKS 配置和更新政策
Amazon AppSync
点击即可显示收集的数据。
  • API 详细信息(ID、名称、ARN、类型、可见性)
  • 标记
  • 身份验证配置(类型、其他提供商)
  • Lambda 授权方和用户池配置
  • 日志记录和跟踪 (X-ray) 设置
  • 限制(查询深度、解析器数量)
  • 端点 URI
Amazon Simple Notification Service (SNS)
点击即可显示收集的数据。
  • 主题详细信息(名称、ARN、显示名称、所有者)
  • 标记
  • 属性(政策、配送政策)
  • 加密(KMS 密钥 ID)
  • FIFO 主题和去重状态
  • 各种协议(Lambda、SQS 和 HTTP)的反馈配置
  • 跟踪配置
Amazon API 网关
点击即可显示收集的数据。
  • REST API 详细信息(ID、名称、ARN、说明)
  • 标记
  • 端点配置(类型、VPC 端点)
  • API 密钥来源和二进制媒体类型
  • 执行 ARN 和根资源 ID
  • 压缩设置和政策
Amazon 互联网网关
点击即可显示收集的数据。
  • 网关详情(ID、ARN、所有者 ID)
  • 标记
  • 关联的 VPC ID
Amazon 应用负载平衡器 (ALB)
点击即可显示收集的数据。
  • 负载平衡器详细信息(名称、ARN、方案、状态)
  • 标记
  • VPC 和子网映射
  • 关联的安全组
  • DNS 名称和规范的托管区域 ID
  • IP 地址类型(IPv4、双栈)
  • 属性(空闲超时、防删除保护、HTTP/2 设置)
  • 访问和连接日志记录配置
  • Web 应用防火墙 (WAF) 和路由行为

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 政策

点击可显示 IAM 政策。
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "apigateway:GetRestApis",
        "apigateway:GetTags",
        "appsync:ListGraphqlApis",
        "appsync:ListTagsForResource",
        "autoscaling:DescribeAutoScalingGroups",
        "batch:DescribeComputeEnvironments",
        "cloudfront:ListDistributions",
        "cloudfront:ListTagsForResource",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:GetMetricData",
        "cloudwatch:ListTagsForResource",
        "dynamodb:DescribeContinuousBackups",
        "dynamodb:DescribeTable",
        "dynamodb:ListTables",
        "dynamodb:ListTagsOfResource",
        "ec2:DescribeAddresses",
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeNatGateways",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribeRegions",
        "ec2:DescribeSubnets",
        "ec2:DescribeVolumes",
        "ec2:DescribeVpcs",
        "ecr:DescribeRepositories",
        "ecr:GetEncryptionConfiguration",
        "ecr:ListTagsForResource",
        "ecs:DescribeClusters",
        "ecs:DescribeContainerInstances",
        "ecs:DescribeServices",
        "ecs:DescribeTasks",
        "ecs:ListClusters",
        "ecs:ListContainerInstances",
        "ecs:ListServices",
        "ecs:ListTasks",
        "efs:DescribeAccessPoints",
        "efs:DescribeBackupPolicy",
        "efs:DescribeFileSystems",
        "efs:DescribeLifecycleConfiguration",
        "efs:DescribeMountTargets",
        "efs:DescribeReplicationConfigurations",
        "efs:ListTagsForResource",
        "eks:DescribeCluster",
        "eks:DescribeFargateProfile",
        "eks:DescribeNodegroup",
        "eks:ListClusters",
        "eks:ListFargateProfiles",
        "eks:ListNodegroups",
        "elasticloadbalancing:DescribeInstanceHealth",
        "elasticloadbalancing:DescribeListeners",
        "elasticloadbalancing:DescribeLoadBalancers",
        "elasticloadbalancing:DescribeRules",
        "elasticloadbalancing:DescribeTags",
        "elasticloadbalancing:DescribeTargetGroups",
        "elasticloadbalancing:DescribeTargetHealth",
        "lambda:GetFunctionConcurrency",
        "lambda:ListEventSourceMappings",
        "lambda:ListFunctions",
        "lambda:ListTags",
        "pi:GetResourceMetrics",
        "rds:DescribeDBEngineVersions",
        "rds:DescribeDBInstances",
        "redshift:DescribeClusters",
        "redshift-serverless:GetNamespace",
        "redshift-serverless:ListSnapshotCopyConfigurations",
        "redshift-serverless:ListTagsForResource",
        "redshift-serverless:ListWorkgroups",
        "route53:GetHostedZone",
        "route53:ListHostedZones",
        "route53:ListResourceRecordSets",
        "route53:ListTagsForResource",
        "s3:GetBucketLocation",
        "s3:GetBucketTagging",
        "s3:GetBucketVersioning",
        "s3:GetLifecycleConfiguration",
        "s3:ListAllMyBuckets",
        "sns:GetTopicAttributes",
        "sns:ListTagsForResource",
        "sns:ListTopics",
        "ssm:DescribeInstanceInformation"
      ],
      "Resource": "*"
    }
  ]
}
  

向 AWS 进行身份验证

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

使用现有的 AWS 凭据

如需使用现有的 AWS 凭据,请直接从 AWS Cloud Shell 运行 mcdc CLI 命令。 如果您从 AWS Cloud Shell 运行 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:要发现的资产类型。 请提供以逗号分隔列表。支持的值包括 albapigatewayappsyncautoscalingbatchcloudfrontdb (RDS)、dynamodbebsecrecsefseipekselbeniinternetgatewaylambdanatgatewayredshiftroute53s3snsvm (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:要发现的资产类型。 请提供以逗号分隔列表。支持的值包括 albapigatewayappsyncautoscalingbatchcloudfrontdb (RDS)、dynamodbebsecrecsefseipekselbeniinternetgatewaylambdanatgatewayredshiftroute53s3snsvm (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。

后续步骤