AWS 开发笔记
基础知识
IAM
IAM 是 Identity and Access Management(身份及存取管理)的缩写
使用该服务可以在账号下创建若干子用户(称为 IAM 用户)。
这些 IAM 用户可以分组,赋予相关权限,也可以用来登录 AWS。
S3
S3 是 Simple Storage Service(简单存储服务)的缩写
S3 相当于网上硬盘,使用该服务首先需要创建若干 bucket(存储桶,相当于硬盘分区),然后就可以在各个存储桶中创建文件夹并上传文件。
每个文件(对象)都有独立的 URL 地址。
RDS
RDS 是 Relational Database Service(关系型数据库服务)的缩写
CloudWatch
使用 CloudWatch 服务可以查看网上日志。
Lambda
使用 Lambda 服务可以创建 Lambda 函数,相当于定制的 API。
Lambda 函数可以使用多种语言开发。
使用 Visual Studio 开发 Lambda 函数
安装插件
首先需要给 Visual Studio 安装扩展(插件): AWS Toolkit for Visual Studio 2017 and 2019
(Extensions -> Manage Extensions -> Online -> Visual Studio Marketplace -> 搜索 AWS)
该插件会安装 AWS Toolkit For Visual Studio,即一系列工具程序所组成的工具箱。
新建 Lambda 函数
新建应用程序,选择 Visual C# -> AWS Lambda -> AWS Lambda Project(*.NET Core - C#)
然后在 New AWS Lambda C# Project 向导中选择 Empty Function, 点击 Finish 创建空的 Lambda 函数
// ...
using Amazon.Lambda.Core;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
namespace AWSLambda1
{
public class Function
{
public string FunctionHandler(string input, ILambdaContext context)
{
return input?.ToUpper();
}
}
}
处理器函数
FunctionHandler 函数是 Lambda 函数的主体,缺省的空函数输入输出均为 string
输入与输出类型均可修改
处理器函数内如果调用 Console.WriteLine
输出信息,该信息将被记录在 CloudWatch 日志中。
// 没有输入也没有输出
public void FunctionHandler()
// 异步函数,输入为 S3 事件信息,输出字符串
public Task<string> FunctionHandler(S3Event event)
{
await ...
return "..."
}
开发者权限
上传 Lambda 函数需要开发者权限
为此需要新建一个能用程序访问资源的 IAM 用户
成功创建之后可以下载一个内含该用户秘钥(访问密钥ID和秘密访问密钥)的 csv 文件。
发布 Lambda 函数
右键点击工程,然后点击 Publish to AWS lambda...
打开 Upload Lambda Function 向导
初次上传需要指定 Profile 和 Region(区域)
配置 Profile 需要输入
- Profile Name: 任意指定,初次可设为 default
- Access Key ID: 访问秘钥 ID,可以通过导入 csv 文件来指定
- Secrect Access Key: 秘密访问秘钥,可以通过导入 csv 文件来指定
- Account Number: 账号
最后点击 Finish 上传
执行 Lambda 函数
Lambda 函数上传完毕会打开函数执行窗口
在此可以指定输入,一般为 json 字符串,也可以通过选择 Example Requests 来指定
最后点击 Invoke 按钮执行函数
调试 Lambda 函数
不上传函数也能调试 Lambda 函数
按 F5 打开 Mock Lambda Test Tool 可以在以下网页中执行并调试函数
http://localhost:5050/