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, 成本管理, 科研计算