

 AWS Mobile SDK for Unity が に含まれるようになりました AWS SDK for .NET。このガイドでは Mobile SDK for Unity のアーカイブバージョンを参照します。詳細については、[ AWS Mobile SDK for Unity とは](what-is-unity-plugin.md) を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

AWS Lambda は、リクエストまたはイベントに応答してコードを実行するコンピューティングサービスです。コンピューティングリソースを自動的に管理して、新規情報に迅速に対応するアプリケーションを容易に構築できるようにします。AWS Lambda 関数は、モバイル、IoT、ウェブアプリから直接呼び出して、同期的にレスポンスを返すことができるため、インフラストラクチャをプロビジョニングまたは管理することなく、モバイルアプリ向けにスケーラブルかつセキュアで可用性が高いバックエンドを容易に作成することができます。

AWS Lambda は、次のいずれかに応答して Lambda 関数を実行できます。
+ 離散型アップデートの分割のようなイベント (Amazon S3 または CloudWatch アラートのオブジェクト作成イベントなど)、またはアップデートのストリーミング (ウェブサイトのクリックストリームや接続されたデバイスからの出力など)。
+ カスタムアプリケーションからの JSON の入力または HTTPS コマンド。

AWS Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケーリングします。これらの機能により、Lambda を使って Amazon S3 や Amazon DynamoDB などの AWS サービス用のトリガーを簡単に構築し、Amazon Kinesis に保存されたストリーミングデータを処理し、AWS のスケール、パフォーマンス、およびセキュリティで運用される独自のバックエンドを作成できます。

AWS Lambda の仕組みについては、「[AWS Lambda: 仕組み](https://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html)」を参照してください。

## アクセス許可
<a name="permissions"></a>

Lambda 関数に関するアクセス権限は 2 種類あります。
+  **実行アクセス権限** — アカウントの他の AWS リソースにアクセスするために Lambda 関数が必要とするアクセス権限。これらのアクセス権限は、実行ロールと呼ばれる 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. [**ロール**] をクリックします。

1. [**新しいロールの作成**] をクリックします。

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 (Lambda 関数の作成)**] をクリックします。

1. [**スキップ**] をクリックして設計図の作成をスキップします。

1. 次の画面で、独自の関数を設定します。関数名、説明を入力し、ランタイムを選択します。選択したランタイムに基づき、画面上の指示に従います。新しく作成したロールを関数に割り当て、実行権限を指定します。

1. 完了したら、[**次へ**] をクリックします。

1. [**関数の作成**] をクリックします。

## 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>

呼び出して、リクエストオブジェクトを渡すには、以下のように行います。

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