故事里的小黄花,挑战无极限

 截图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 函数并根据需求扩展其功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值