

适用于 Unity 的 AWS 移动 SDK 现已包含在 适用于 .NET 的 AWS SDK。本指南引用适用于 Unity 的 Mobile SDK 的存档版本。有关更多信息，请参阅 [适用于 Unity 的 AWS 移动 SDK 是什么？](what-is-unity-plugin.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS Lambda
<a name="lambda"></a>

AWS Lambda 是一个计算服务，它运行您的代码来响应请求或事件，并且自动为您管理计算资源，使构建快速响应新信息的应用程序变得容易。AWS Lambda 函数可以直接从移动设备、物联网和 Web 应用调用，并且可以同步发回响应，因此无需预配置或管理基础设施，就可方便地为移动应用程序创建可扩展、安全且高度可用的后端。

AWS Lambda 可以执行您的 Lambda 函数来响应以下任务之一：
+ 事件，例如离散更新（例如，Amazon S3 中的对象创建事件或 CloudWatch 警报），或流式更新（例如，网站点击流或来自联网设备的输出）。
+ 来自您的自定义应用程序的 JSON 输入或 HTTPS 命令。

只有在需要时 AWS Lambda 才执行您的代码，并且能自动扩展，从每天几个请求扩展到每秒数千个请求。借助这些功能，您可以使用 Lambda 来轻松地为 AWS 服务（如 Amazon S3 和 Amazon DynamoDB）构建触发程序，处理存储在 Amazon Kinesis 中的流数据，或创建您自己的按 AWS 规模、性能和安全性运行的后端。

要了解有关 AWS Lambda 工作原理的更多信息，请参阅 [AWS Lambda：工作原理](https://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html)。

## Permissions
<a name="permissions"></a>

有两种权限与 Lambda 函数有关：
+  **执行权限** – 您的 Lambda 函数访问您账户中的其他 AWS 资源所需的权限。您通过创建 IAM 角色（称作执行角色）来授予此类权限。
+  **调用权限** – 事件源与您的 Lambda 函数通信所需的权限。根据调用模型 (推模型或拉模型)，您可以使用执行角色或资源策略 (与 Lambda 函数关联的访问策略) 来授予这些权限。

## 项目设置
<a name="project-setup"></a>

### 设置 AWS Lambda 权限
<a name="set-permissions-for-aws-lambda"></a>

1. 打开 [AWS IAM 控制台](https://console.aws.amazon.com/iam/home)。

1. 将这种自定义策略附加到您的角色，让您的应用程序能够调用 AWS Lambda。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "lambda:*"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### 创建新的执行角色
<a name="create-a-new-execution-role"></a>

该角色适用于您将在下一步中创建的 Lambda 函数，另外它还决定该函数可以访问哪些 AWS 资源。

1. 打开 [AWS IAM 控制台](https://console.aws.amazon.com/iam/home)。

1. 单击 **Roles**。

1. 单击 **Create New Roles**。

1. 按照屏幕上的说明选择您的 Lambda 函数需要访问的服务和相应策略。例如，如果您想让您的 Lambda 函数创建 S3 存储桶，则您的策略需要 S3 写入权。

1. 单击**创建角色**。

### 在 AWS Lambda 中创建函数
<a name="creating-a-function-in-aws-lambda"></a>

1. 打开 [AWS Lambda 控制台](https://console.aws.amazon.com/lambda/home)。

1. 单击 **Create a Lambda function**。

1. 单击 **Skip** 以跳过创建蓝图。

1. 在下一屏幕上配置您自己的函数。输入函数名称、描述并选择您的运行时。基于您选择的运行时，按照屏幕上的说明操作。通过将新创建的执行角色分配给您的函数来指定执行权限。

1. 完成后，单击 **Next**。

1. 单击 **Create Function**。

## 创建 Lambda 客户端
<a name="create-a-lambda-client"></a>

```
var credentials = new CognitoAWSCredentials(IDENTITY_POOL_ID, RegionEndpoint.USEast1);
var Client = new AmazonLambdaClient(credentials, RegionEndpoint.USEast1);
```

## 创建请求对象
<a name="create-a-request-object"></a>

创建请求对象来指定调用类型和函数名称：

```
var request = new InvokeRequest()
{
    FunctionName = "hello-world",
    Payload = "{\"key1\" : \"Hello World!\"}",
    InvocationType = InvocationType.RequestResponse
};
```

## 调用 Lambda 函数
<a name="invoke-your-lambda-function"></a>

调用 invoke，传递请求对象：

```
Client.InvokeAsync(request, (result) =>
{
    if (result.Exception == null)
    {
        Debug.Log(Encoding.ASCII.GetString(result.Response.Payload.ToArray()));
    }
    else
    {
        Debug.LogError(result.Exception);
    }
});
```