截图1: DynamoDB For Games!
任务1: Guild Table
- 目标: 创建DynamoDB表存储游戏公会数据。
- 要求:
- 表名: `guild_data`
- 分区键: `id`
- 排序键: `gname`
- 验证方式: 创建后点击 "Check Progress"。
---
截图2: A-B-C, setting up services is easy as 1-2-3
任务1: Create an EC2 instance
- 目标: 创建Linux EC2实例。
- 限制: 仅限 `t2.micro` 类型。
- 步骤:
1. 打开AWS控制台 → EC2。
2. 启动实例,选择Linux AMI和`t2.micro`。
- 验证方式: 创建后点击 "Check Progress"。
---
截图3: What is blocking my access?
任务1: 访问S3文件
- 前置步骤:
1. 切换到角色 `JAMPerfogenffolder`(通过控制台右上角菜单)。
2. 记录AWS账户ID(用于S3桶名)。
- 任务:
1. 访问S3桶(桶名为账户ID)。
2. 下载文件并提交文件中的代码。
- 问题: 当前权限不足,需切换角色。
---
截图4: 时钟在滴答作响!
任务1: 更改CloudFront策略协议
- 背景: CloudFront分发策略需调整以安全访问S3源。
- 操作:
1. 检查CloudFront分发配置。
2. 更新S3桶策略,限制仅CloudFront OAI可访问。
- 验证: 确保生产应用可通过HTTPS访问。
任务2: 修复网站访问
- 目标: 解决CloudFront+S3的访问问题。
- 关键步骤:
1. 检查OAI权限是否附加到S3桶。
2. 测试URL: `https://[CloudFront域名]/production-application/index.html`。
---
截图5: Task 2 of 3 (Create S3 Bucket)
任务2: Create an S3 Bucket
- 目标: 创建S3存储桶。
- 步骤:
1. 打开AWS控制台 → S3。
2. 输入唯一桶名,其他配置默认。
- 验证: 提交桶名称。
---
截图6: Task 3 of 3 (Create Lambda)
任务3: Create an AWS Lambda Function
- 目标: 创建默认Lambda函数。
- 要求:
- 使用现有角色 `service-role/UseThisLambdaTAMRole`。
- 提供函数ARN。
- 验证: 提交ARN(格式如`arn:aws:lambda:region:account-id:function:Name`)。
---
截图7: Task 2 of 2 (Character Table)
任务2: Character Table
- 目标: 创建DynamoDB表存储角色数据。
- 要求:
- 表名: `character_data`
- 分区键: `id`,排序键: `username`
- 手动设置读写容量(根据事务需求计算)。
- 验证: 创建后点击 "Check Progress"。
---
截图8: Task 2 of 2 (网站未上线)
任务2: 修复网站访问
- 背景: CloudFront分发策略已更改,但网站仍无法访问。
- 操作:
1. 检查CloudFront的OAI权限是否配置正确。
2. 确保S3桶策略允许OAI访问。
- 验证: 成功访问 `https://[CloudFront域名]/production-application/index.html`。
---
关键点总结
1. DynamoDB任务: 需严格按分区键/排序键要求建表。
2. 权限问题: 角色切换(`JAMPerfogenffolder`)和OAI配置是核心。
3. 验证方式: 多为点击按钮或提交资源标识符(如ARN、桶名)。
以下是针对每个任务的详细分步操作指南,涵盖AWS控制台的具体操作路径和关键配置:
---
任务1: Guild Table (DynamoDB)
1. 进入DynamoDB控制台
- 登录AWS → 搜索"DynamoDB" → 点击"创建表"。
2. 配置表参数
- 表名: `guild_data`
- 分区键: `id` (类型选择"字符串")
- 排序键: `gname` (类型选择"字符串")
- 其他设置保持默认(按需容量模式)。
3. 创建并验证
- 点击"创建" → 返回任务界面点击"Check Progress"。
---
任务1: Create an EC2 instance
1. 进入EC2控制台
- 登录AWS → 搜索"EC2" → 点击"启动实例"。
2. 选择AMI和实例类型
- AMI: 选择"Amazon Linux 2 AMI"(免费层标记)
- 实例类型: 选择`t2.micro`(确保有免费层标记)
3. 其他配置
- 保持默认VPC、存储(8GiB gp2)、安全组(允许SSH)。
4. 启动实例
- 点击"启动" → 选择现有密钥对或创建新密钥对 → 返回任务界面点击"Check Progress"。
---
任务1: 访问S3文件(权限不足)
1. 切换角色
- 点击AWS控制台右上角账号 → "切换角色" → 输入:
- 账户: 当前账户ID(自动填充)
- 角色: `JAMPerfogenffolder`
- 点击"切换角色"。
2. 访问S3桶
- 搜索"S3" → 找到以账户ID命名的桶(如`123456789012-bucket`)→ 进入下载文件。
3. 提交代码
- 打开文件复制内容 → 粘贴到任务提交框。
---
任务1: 更改CloudFront策略协议
1. 检查CloudFront分发
- 搜索"CloudFront" → 选择目标分发 → 记录"域名"(如`d123.cloudfront.net`)。
2. 更新S3桶策略
- 进入S3 → 选择源S3桶 → "权限" → "存储桶策略" → 添加以下策略(替换`OAI-ID`和`Bucket-Name`):
```json
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity OAI-ID"},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::Bucket-Name/"
}]
}
```
3. 验证HTTPS访问
- 访问`https://d123.cloudfront.net/production-application/index.html`。
---
任务2: Create an S3 Bucket
1. 进入S3控制台
- 搜索"S3" → 点击"创建存储桶"。
2. 配置桶
- 桶名: 输入全局唯一名称(如`my-unique-bucket-2023`)
- 其他设置保持默认(禁用公共访问)。
3. 提交桶名
- 创建后复制桶名 → 粘贴到任务提交框。
---
任务3: Create Lambda Function
1. 进入Lambda控制台
- 搜索"Lambda" → 点击"创建函数"。
2. 配置函数
- 函数名: 任意(如`DefaultFunction`)
- 运行时: 选择"Python 3.9"或默认选项。
- 权限: 展开"更改默认执行角色" → 选择"使用现有角色" → 输入`UseThisLambdaTAMRole`。
3. 获取ARN
- 创建后从函数详情页复制ARN(如`arn:aws:lambda:us-east-1:123456789012:function:DefaultFunction`)→ 提交。
---
任务2: Character Table (DynamoDB)
1. 创建表
- 同Guild Table步骤,配置如下:
- 表名: `character_data`
- 分区键: `id` (字符串)
- 排序键: `username` (字符串)
2. 手动设置容量
- 选择"预置容量" → 根据提示输入读写单位(如5读/5写)。
3. 验证
- 创建后点击"Check Progress"。
---
任务2: 修复网站访问(CloudFront+S3)
1. 检查OAI配置
- 进入CloudFront → 选择分发 → "源"选项卡 → 确认源S3桶已关联OAI。
2. 更新S3权限
- 确保S3桶策略允许OAI(同CloudFront任务步骤)。
3. 测试访问
- 等待CloudFront部署(约5分钟)→ 访问`https://[CloudFront域名]/production-application/index.html`。
---
常见问题处理
- 权限错误: 确保角色切换正确或策略附加到资源。
- 访问拒绝: 检查S3桶策略和CloudFront OAI的ARN是否匹配。
- 验证失败: 等待AWS服务同步(通常1-2分钟)。
按以上步骤操作可高效完成任务,注意任务间的依赖关系(如先切换角色再访问S3)。
创建lambda function:
在亚马逊云(AWS)上创建 Lambda 函数的步骤如下(以控制台操作为例):
---
### **步骤 1:登录 AWS 控制台并进入 Lambda 服务**
1. 访问 [AWS管理控制台](https://console.aws.amazon.com/)。
2. 在顶部导航栏选择目标区域(如 **us-east-1**)。
3. 搜索并进入 **Lambda** 服务。
---
### **步骤 2:创建 Lambda 函数**
1. 点击 **“创建函数”**。
2. 选择创建方式:
- **从头开始编写**:手动配置函数。
- **使用蓝图**:AWS 提供的示例模板(如处理 S3 事件、API Gateway 请求等)。
- **容器镜像**:通过 Docker 容器部署函数。
- **从 AWS Serverless Application Repository 部署**:使用预构建的 Serverless 应用。
---
### **步骤 3:配置函数基本信息**
1. **基本信息**:
- **函数名称**:自定义名称(如 `my-lambda-function`)。
- **运行时**:选择编程语言(如 Python 3.12、Node.js 20.x 等)。
- **架构**:选择 `x86_64` 或 `arm64`(ARM 架构可能成本更低)。
2. **权限**:
- **执行角色**:选择或新建一个 IAM 角色,授予 Lambda 访问其他 AWS 服务的权限(如 S3、DynamoDB 等)。
- 推荐选择 **“创建新角色并附加基本 Lambda 权限”**(自动生成基础权限)。
3. **高级设置(可选)**:
- **启用 VPC**:如果 Lambda 需要访问私有子网中的资源(如 RDS 数据库),需绑定 VPC、子网和安全组。
- **文件系统**:挂载 EFS 存储(适用于大文件持久化)。
- **环境变量**:配置键值对(如数据库连接信息)。
---
### **步骤 4:编写函数代码**
1. 在代码编辑器中输入代码(或上传 ZIP 文件)。
- **示例代码(Python)**:
```python
def lambda_handler(event, context):
print("Hello from Lambda!")
return {
'statusCode': 200,
'body': 'Success'
}
```
2. **部署**:点击 **“部署”** 按钮保存代码。
---
### **步骤 5:配置触发器(可选)**
1. 点击 **“添加触发器”**,选择触发 Lambda 的事件源:
- **API Gateway**:通过 HTTP 请求触发。
- **S3**:文件上传/删除时触发。
- **CloudWatch Events**:定时触发(如每 5 分钟执行一次)。
- **SNS/SQS**:消息队列触发。
2. 根据触发器类型配置参数(如指定 S3 存储桶、API 路径等)。
---
### **步骤 6:测试函数**
1. 点击 **“测试”** 按钮。
2. 选择 **“创建新测试事件”**,输入测试数据(JSON 格式),保存后点击 **“测试”**。
3. 查看执行结果:
- **执行日志**:在 CloudWatch 中查看 `print` 或 `console.log` 输出。
- **响应状态**:检查是否返回预期结果(如 HTTP 200)。
---
### **步骤 7:监控与优化**
1. 在 Lambda 控制台的 **“监控”** 标签页查看调用次数、错误率、延迟等指标。
2. **调整配置**(如内存、超时时间)以提高性能或降低成本。
---
### **通过 AWS CLI 创建 Lambda(可选)**
1. 安装并配置 AWS CLI。
2. 创建 ZIP 包(包含代码和依赖项):
```bash
zip function.zip lambda_function.py
```
3. 创建 Lambda 函数:
```bash
aws lambda create-function \
--function-name my-lambda-function \
--runtime python3.12 \
--role arn:aws:iam::123456789012:role/lambda-role \
--handler lambda_function.lambda_handler \
--zip-file fileb://function.zip
```
---
### **注意事项**
1. **权限管理**:确保执行角色具有所需权限(如访问 S3、DynamoDB)。
2. **超时设置**:默认 3 秒,可根据任务复杂度调整(最长 15 分钟)。
3. **冷启动**:首次调用或长时间未使用时可能延迟较高,可通过预置并发缓解。
4. **成本控制**:Lambda 按请求次数和执行时间计费,避免频繁调用或长时间运行。
---
### **常见问题排查**
- **权限错误(AccessDenied)**:检查执行角色是否附加正确策略。
- **函数超时**:增加超时时间或优化代码逻辑。
- **无法访问 VPC 资源**:确认 Lambda 绑定了正确的子网和安全组,且子网路由表允许访问目标资源(如通过 NAT 网关访问互联网)。
---
通过以上步骤,即可快速创建一个 AWS Lambda 函数并根据需求扩展其功能。