awslabs/researchstack-on-aws

GitHub: awslabs/researchstack-on-aws

该项目提供了一套预置的 CloudFormation 模板和可选的 Service Catalog 治理层,帮助科研机构在 AWS 上快速部署标准化、可追踪成本的研究计算与存储基础设施。

Stars: 1 | Forks: 0

# AWS 上的 ResearchStack 只需几分钟即可在 AWS 上部署研究计算基础设施 —— 包括 EC2、S3、EFS、SageMaker、ParallelCluster 等 —— 并内置安全性、成本追踪和治理功能。适用范围从单一研究人员到多账户机构。 ## 为什么选择 ResearchStack? - **研究人员**:只需几分钟而非几天即可部署计算和存储资源。无需网络或 IAM 知识 —— 只需选择一个模板,填写您的项目名称和成本中心,即可启动。 - **IT 管理员**:为研究人员提供对标准化、安全加固基础设施的自助式访问。每次部署都遵循相同的架构,使故障排除具有可重复性。 - **FinOps 团队**:每个资源都会自动标记项目、成本中心和所有者 —— 可直接对接 [Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/) 或 [Data Exports](https://docs.aws.amazon.com/cur/latest/userguide/what-is-data-exports.html) 进行资助成本分摊,无需手动打标签。 ## 模板 | 类别 | 模板 | 功能说明 | |----------|----------|-------------| | Compute | ec2-general-purpose.yaml | 通用型(M 系列)实例,提供均衡的计算、内存和网络能力 | | Compute | ec2-compute-optimized.yaml | 计算优化型(C 系列)实例,适用于模拟和批处理 | | Compute | ec2-memory-optimized.yaml | 内存优化型(R 系列)实例,适用于基因组学和大型内存数据集 | | Compute | ec2-accelerated-gpu.yaml | GPU 实例(G 系列用于推理,P 系列用于通过 [Capacity Blocks](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-blocks.html) 进行训练) | | Compute | ec2-spot-fleet.yaml | 跨多种实例类型和可用区 (AZ) 的成本优化 [Spot](https://aws.amazon.com/ec2/spot/) 实例(最高节省 70%) | | Compute | parallelcluster-hpc.yaml | 具备自动扩缩容和可选远程桌面功能的 Slurm HPC 集群 | | Storage | s3-research-bucket.yaml | 具备版本控制和智能分层功能的加密 S3 存储桶 | | Storage | efs-shared-storage.yaml | 跨多个实例的共享网络文件系统 (NFS) | | Storage | s3-files.yaml | 通过 NFS 将 S3 挂载为 POSIX 文件系统(比 EFS 便宜约 13 倍) | | Storage | fsx-lustre.yaml | 用于计算密集型 I/O 的高吞吐量并行文件系统 | | ML | sagemaker-studio.yaml | 支持 GPU 的托管式 Jupyter 环境 | | Governance | budget-alert.yaml | 按成本中心进行每月预算追踪并发出电子邮件提醒 | | Networking | research-vpc.yaml | 包含公有/私有子网、NAT 网关和 S3 终端节点的 VPC | 所有模板均包含成本追踪标签、加密和安全默认配置。EC2 模板还包含空闲关机功能。有关参数详情、实例类型指南和操作系统选项,请参阅 [Templates README](templates/README.md)。 不确定哪个模板适合您的工作?请查阅 [Research Lifecycle Guide](docs/research-lifecycle-guide.md) 或 [Cost Optimization Guide](docs/cost-optimization-guide.md)。 ## 快速入门 **前提条件**:拥有 administrator 或 [PowerUserAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/PowerUserAccess.html) 权限的 AWS 账户。如果您的机构通过 [AWS Organizations](https://aws.amazon.com/organizations/) 管理账户,请咨询您的云团队应使用哪个账户。对于 CLI 部署,请安装 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 并[配置凭证](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html)。 ### 通过 AWS 控制台部署(推荐) 控制台为 VPC、子网和实例类型提供下拉菜单 —— 对大多数用户来说最简单。 1. 打开 [CloudFormation 控制台](https://console.aws.amazon.com/cloudformation/home#/stacks/create) 2. 从 [`templates/`](templates/README.md) 上传一个模板 YAML 3. 填写参数(至少包括:ProjectName、CostCenter、VPC、子网)。如果您只是测试,ProjectName 和 CostCenter 填写任意值均可。 4. 创建堆栈 大多数模板需要 VPC。如果您没有 VPC,请先部署 [Research VPC](templates/README.md#networking-networking) 模板。 ### 通过 CLI 部署(可重复部署) 对于脚本化或可重复的部署,请结合参数文件使用 `deploy.sh`。每个模板的预置配置位于 `params/` 目录中 —— 复制其中一个,填入您的具体值(VPC、子网、项目名称),然后进行部署: ``` # 1. 复制参数文件并填写您的值 cp params/compute-ec2.json params/my-project.json # 编辑 my-project.json — 用您的 VPC、subnet、project name 等替换 REPLACE_ME。 # 2. 预览部署 ./deploy.sh --config params/my-project.json --dry-run # 3. 部署 ./deploy.sh --config params/my-project.json ``` 有关所有可用的配置以及查找您的 VPC/子网 ID 的命令,请参见 [params/README.md](params/README.md)。 ### 通过 Service Catalog 部署 适用于在受治理的自助服务环境下管理多个 AWS 账户的机构。研究人员只需浏览目录并点击“启动”即可 —— 无需具备 CloudFormation 知识。请参阅 [Service Catalog 指南](docs/service-catalog-guide.md)。 ### 访问您的资源 部署完成后,请检查 CloudFormation 堆栈的输出,以获取特定于您模板的连接详情、资源 ID 和后续步骤。在控制台中:CloudFormation → 您的堆栈 → 输出选项卡。通过 CLI 查看: ``` aws cloudformation describe-stacks --stack-name my-stack --query 'Stacks[0].Outputs' --output table ``` 对于 Service Catalog 部署,输出位于预置产品 (Provisioned Products) → 您的产品 → 输出。 ### 删除资源 删除 CloudFormation 堆栈可清理所有资源并停止计费。包含数据的 S3 存储桶必须先[清空](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) —— CloudFormation 无法删除非空存储桶。请在删除 VPC 堆栈之前删除计算/存储堆栈。 ## 成本追踪与访问控制 所有资源都会自动打上标签:Project、CostCenter、Owner、ManagedBy、Environment。您可以在 [Cost Explorer](https://console.aws.amazon.com/cost-management/home#/cost-explorer) 中使用这些标签以实现快速可视化,或通过 [Data Exports](https://docs.aws.amazon.com/cur/latest/userguide/what-is-data-exports.html) 进行基于 CSV 的详细单笔资助成本分摊。如果您只是测试,ProjectName 和 CostCenter 填写任意值均可 —— 它们只是资源标签,而不是账单结构。有关预算、Savings Plans 以及 F&A 指南,请参阅 [Cost Optimization Guide](docs/cost-optimization-guide.md)。 关于访问控制,我们推荐使用 [IAM Identity Center](https://aws.amazon.com/iam/identity-center/) (IDC) 作为身份基础 —— 可在您所有的 AWS 账户中实现单点登录。最简单的模型是账户级隔离:每个实验室或研究组使用一个 AWS 账户,并通过 IDC 权限集授予访问权限。账户边界即是访问控制。有关开箱即用的最小权限 IAM 策略(包含 Service Catalog、SSM、EC2 启动/停止、S3、SageMaker Studio 和 Cost Explorer 访问权限),请参阅 [`examples/researcher-policy.json`](examples/researcher-policy.json)。对于 Service Catalog 部署,请参阅[授予产品组合访问权限](docs/service-catalog-guide.md#granting-portfolio-access)。 ## 架构 ResearchStack 支持两种部署路径: ``` graph LR subgraph Standalone R1[Researcher] -->|Log in| Acct[Individual Account] end subgraph "Service Catalog" Admin[IT Admin] -->|"cdk deploy"| Hub[Hub Account] Hub -->|"OU sharing + StackSets"| Spoke[Spoke Accounts] R2[Researcher] -->|Log in| Spoke end Acct -->|"CFN console / deploy.sh"| T[ResearchStack Templates] Spoke -->|"Browse & Launch"| T T --> R["Deployed & Tagged Resources EC2 · S3 · EFS · SageMaker · PCluster · VPC"] ``` - **独立部署**:通过 CloudFormation 控制台或 CLI 直接部署模板 —— 最适合单一账户 - **[Service Catalog](https://aws.amazon.com/servicecatalog/)**:具备启动角色、OU 共享和自助目录的治理层 —— 最适合多账户机构 这两种路径使用相同的模板,并生成同样带有标签的资源。 ## 仓库结构 ``` researchstack/ ├── templates/ # CloudFormation templates (the core product) │ ├── compute/ # EC2, ParallelCluster │ ├── storage/ # S3, EFS, S3 Files, FSx Lustre │ ├── ml/ # SageMaker │ ├── networking/ # VPC │ └── governance/ # Budget alerts ├── params/ # Parameter files for deploy.sh ├── examples/ # Researcher IAM policy ├── deploy.sh # CLI deploy helper ├── service-catalog/ # CDK code for Service Catalog governance layer ├── docs/ # Guides and documentation └── ADRs/ # Architecture Decision Records ``` ## 文档 - [Templates README](templates/README.md) — 模板详情、实例类型、操作系统选项 - [参数文件](params/README.md) — 部署配置和资源查找命令 - [Research Lifecycle Guide](docs/research-lifecycle-guide.md) — 将研究阶段映射到模板 - [Cost Optimization Guide](docs/cost-optimization-guide.md) — 预算、Savings Plans、F&A - [FAQ](docs/faq.md) — 连接、成本、安全、配置 - [ParallelCluster 指南](docs/parallelcluster-guide.md) — HPC 集群部署与自定义 - [Service Catalog 指南](docs/service-catalog-guide.md) — 多账户治理设置 - [贡献指南](CONTRIBUTING.md) — 模板标准和提交流程 ## 支持 - **问题**:[GitHub Issues](https://github.com/awslabs/researchstack-on-aws/issues) - **讨论**:[GitHub Discussions](https://github.com/awslabs/researchstack-on-aws/discussions) - **AWS 支持**:联系您的 AWS 客户团队 ## 许可证 Apache License 2.0 — 详见 [LICENSE](LICENSE)。
标签:AWS, CDK, CloudFormation, DPI, 成本管理, 科研计算