aws-lambda
#aws-lambda
1
1: aws-lambda
2
2
2
Lambda
2
Examples
2
2
Java AWS-Lambda S3
8
2: AWS Lambda with S3
11
11
Examples
11
11
javascriptAWS-SDK
11
11
S3
11
Elasticache Redis
11
3: AWSS3
13
Examples
13
Java
13
4: PythonAWS Lambda
14
Examples
14
AWS
14
-
14
5: S3aws-lambda
26
26
26
26
26
26
26
S3 PUT
26
6:
28
Examples
28
BlueprintAlexa
28
7:
31
31
31
Examples
31
31
CRUD
31
8: aws-lambdaC
39
39
39
39
Examples
39
1. Visual Studio
39
2.
41
3 - AWS
43
4. Visual StudioAWS Lambda
44
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: aws-lambda
It is an unofficial and free aws-lambda ebook created for educational purposes. All the content is
extracted from Stack Overflow Documentation, which is written by many hardworking individuals at
Stack Overflow. It is neither affiliated with Stack Overflow nor official aws-lambda.
The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to [email protected]
1: aws-lambda
のい
AWS Lambdaは、クラウドでをするためのサーバーレスです。のAmazon Web Servicesテクノロ
ジをして、なにのみ、のしたでにおよびできます。ラムダをすると、コードをアップロードし、
さまざまなトリガにづいてするようにし、したらプロセスをにすることができます。これは、ペ
イ・パー・ユース・モデルでし、にがく、がです。
AWS Lambdaは、Node.jsJavaScript、Python、JavaJava 8およびC.NET Coreでかれたコード
をサポートしています。あなたのコードには、のライブラリもまれています。
トリガにはのものがあります。
HTTPエンドポイント
モバイルアプリ
•
のAWSサービスAmazon APIゲートウェイでのRESTをむ
•
Lambda
は、のようなリアルタイムのサーバー
レスデータにされています。
アップロードのファイル
トランスコード
○インデックス
○ ○サイズとフィルタリング
○•
ストリーミングデータ
•
テレメトリー
•
メソッドベースのモバイルおよびWebバックエンドとして
•
のAWSのとリンク
•
Examples
インストールまたはセットアップ
AWS Consoleにログインし、[ サービス ]タブの[ ラムダ ]をクリックします。
1.
では、じラベルのボタンをってラムダをすることができます。
2.
https://riptutorial.com/ja/home
2
をできるがされます。これらは、ラムダをすぐにいめるためののラムダのにすぎません。
3.
のでは、このラムダをオフにするためにするトリガーをできます。トリガなしタスクにじて
でで、APIゲートウェイサーバーレスのRESTクライアントをする、Alexaスキル、またはす
るをするのくのツールからできます。
4.
、 、 ランタイムをしたり、インラインでをしたり、.zipファイルをアップロードしたり、
Amazon S3からファイルをアップロードしたり、 ロールをしたりすることで、のでをしま
すパーミッションベースAWSサービスの、メモリとをし、ライブでできるようにアプリを
します。
に、あなたのをしてします。 LambdaはPay-Per-Useモデルをしているので、しくしたをす
るまでチャージャーはしません。
Java AWS-Lambda S3
トリガー
AWS-Lambdaは、のバケットイベントにアタッチすることができます。ファイル/フォルダがまた
はされるたびに、イベントによってラムダのがトリガされます。
アップロードされたファイルのをするなラムダ
これは、アップロードされたファイルのをする1つのクラスのラムダプロジェクトです。これらの
をするがあります。
<dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-lambda-java-core</artifactId> <version>1.1.0</version>https://riptutorial.com/ja/home
8
<type>jar</type> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-lambda-java-events</artifactId> <version>1.3.0</version> <type>jar</type> </dependency> </dependencies>
さあ、HelloWorldクラスにきましょう
package com; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.S3Event; import com.amazonaws.services.s3.event.S3EventNotification;public class HelloWorld implements RequestHandler< S3Event, String> { @Override
public String handleRequest(S3Event event, Context ctx) {
S3EventNotification.S3EventNotificationRecord record=event.getRecords().get(0); System.out.println("Bucket Name is "+record.getS3().getBucket().getName()); System.out.println("File Path is "+record.getS3().getObject().getKey()); return null; } }
のステップは、mvnをしてプロジェクトをビルドすることです。
プロジェクトをビルドした、AWS-Lambdaにアップロードするがあります。ラムダにき、「ラム
ダを」をします。 Javaがそこにないので、をするをスキップしてください。
また、のからするため、「トリガーの」をスキップしてください。のページでは、のラムダのを
し、にさなをし、にJavaをします。
「コードタイプ」で「ZIPファイルからアップロード」をし、ので.zipファイルをしてアップロー
ドします。
このページののんだはHandlerフィールドです。ハンドラフィールドでは、RequestHandlerをす
るクラスのをするがあります。このクラスはラムダのエントリポイントであり、ラムダはしくさ
れていないとしません。ケースハンドラは "com.HelloWorld"です。
ラムダにS3トリガーをける
ここでは、S3ファイルのアップロードにトリガーをします
S3にみ、バケットをしてから[プロパティ]をします。
•
[プロパティ]セクションで、[イベント]にします。
•
イベントのをします。 [イベント]フィールドで、ラムダのトリガーをします。 "
ObjectCreatedAll"をします。ラムダとバケットはじアマゾンにあるがあることにしてくださ
い
•
"Sends to"には、Lambda Functionをチェックし、リストからラムダをします。
•
ラムダの
ここで、ラムダトリガをつファイルをバケットにアップロードします。ラムダとログをるには、
"CloudWatch"にき、 "Logs"をんでラムダをんでください。 「ログストリーム」のにのエントリ
がされ、のものをしてくことができます。そこにラムダのをることができるはずです。
オンラインで
aws-lambda
のいをむ
https://riptutorial.com/ja/aws-lambda/topic/2357/aws-lambda
の
い
https://riptutorial.com/ja/home
10
2: AWS Lambda with S3
き
ラムダのは、のAWSリソースのをとするをします。このトピックでは、ファイルやそののをする
ためににされるS3Simple Storage Serviceにをてています。このドキュメントでは、ラムダの
AWS-SDKの、ラムダのS3のファイルへのアクセス、S3のイベントがしたときのラムダのトリガ
についてします
Examples
カンニングペーパー
javascript
の
AWS-SDK
Lambdaには、グローバルにaws-sdk https://aws.amazon.com/sdk-for-node-js/がまれているため、
このノードモジュールをzipにアップロードするはありません。
const AWS = require('aws-sdk');
サンプル
module.exports.myFunction = (event, context, callback) => { const response = {
statusCode: 200, body: 'Hello Lambda!', };
return callback(null, response); };
S3
の
const s3 = new AWS.S3;
Elasticache Redis
での
//make sure redis node-module is added in zip const redis = require('redis');
//the redis information should be stored in the environment, not hard coded const redis_options = {
host: process.env.REDIS_HOST, port: process.env.REDIS_PORT };
module.exports.myFunction = (event, context, callback) => { try {
let client = redis.createClient(redis_options); context.callbackWaitsForEmptyEventLoop = false; client.on('connect', () => { console.log('Connected:', client.connected); }); client.on('end', () => { console.log('Connection closed.'); }); client.on('ready', function () { console.log('Connection ready.'); client.keys('*', (err, keys) => {
//always quit the redis client when no longer needed //else the connection will be used up
client.quit();
const response = { statusCode: 200, body: keys, };
return callback(null, response); }); } catch (err) { if (client) { client.quit();} console.log('Error!: ' + err.message); callback(err); } };
オンラインで
AWS Lambda with S3
をむ
https://riptutorial.com/ja/aws-lambda/topic/9286/aws-lambda-with-s3
3: AWS
ラムダは
S3
によってトリガされる
Examples
Java
のエコー
ハンドラのをバーフリングすることで、このをにできます。たとえば、Javaの
public String handleRequest(String input, Context context) {context.getLogger().log("Input: " + input);
String output = "Input:" + System.getProperty("line.separator") + input;
return output; }
オンラインで
AWS
ラムダは
S3
によってトリガされるをむ
https://riptutorial.com/ja/aws-lambda/topic/6216/aws
ラムダは
s3
によってトリガされる
4: Python
をした
AWS Lambda
Examples
なぜ
AWS
ラムダですか
AWS Lambdaがサポート
なスケーラビリティと
•
にやさしいとサーバーのは
•
AWSサービスとのネイティブな
•
アイドルをうはありません
•
RESTfulな
•
AWS APIゲートウェイをしたRESTfulインターフェイスの
•
ハローワールド - ラムダ
これはもなラムダの1つです。 Hello Worldプログラムとです。
のプログラムをするには、のにいます。
AWS Consoleにログインする
1.
のラムダをクリックします
2.
ラムダのをクリックします。
3.
https://riptutorial.com/ja/home
14
したのセクションをスキップする
4.
トリガでのをクリック
5.
APIゲートウェイを
6.
なをのようにします。
7.
API Nameは、するAPIのです。 リソースパターンは、ラムダをびすことができるURLパス
です。なhttpメソッドをします。このではGETをします。 AWSではステージングはprodや
devのようにさまざまなでうことができます...これはprodとdevのをするのにちます。デモの
ために、セキュリティをオープンとしてすることができますではされません。
API Nameは、するAPIのです。 リソースパターンは、ラムダをびすことができるURLパス
です。なhttpメソッドをします。このではGETをします。 AWSではステージングはprodや
devのようにさまざまなでうことができます...これはprodとdevのをするのにちます。デモの
ために、セキュリティをオープンとしてすることができますではされません。
のようにをする
8.
、の、およびをします。たちはとしてPythonをしています。
コードをします。
ここではのクラウドトレイルでaws lambdaイベントをしています。また、をしています。
9.
ラムダハンドラとロールをする
10.
ハンドラがlambda_functionでまることをしてください。lambdaをするためのしいロールも
してください。をするためになメインメモリのをします。デフォルトのタイムアウトをし、
へをクリックします
をクリックします。
11.
これであなたのはがいました。 awsがするリンクをクリックしてください
12.
リンクをクリックするとラムダがバックグラウンドでされ、ブラウザにがされます。
オンラインで
Python
をした
AWS Lambda
をむ
https://riptutorial.com/ja/aws-lambda/topic/6698/python
をした
aws-lambda
5: S3
によってトリガされた
aws-lambda
デシリアライズされたJSONベースのオブジェクト
•
「レコード」キーには1つまたはののイベントがあります
•
サブイベントオブジェクトには、されたをするためになすべてのがまれています
•
パラメーター
パラメータ
Records - > [] - > s3 - > bucket - > name
S3バケットの
Records - > [] - > s3 - > object - > keyファイルのパスと。
ファイル
ほとんどのファイルパスとはなり、S3キーJSONスキーマ $.Records[0].s3.object.key にはスラッ
シュがまれていません。したがって、パスs3://mybucket/path/file.txtにファイルがある、キーは
path/file.txtなりpath/file.txtなくともPythonでは、キーフィールドはUTF-8 URLエンコードされています。これは、ファイル
にまたはASCIIのがまれているにになります。フィールドをURLでデコードし、にUTF-8をデコー
ドするがあります -
ラムダの
S3
イベントから
ASCII
ファイル
を
するを
レコードキー
イベントの"Records"キーのにじまたはなるアクションをつことができます。ただし、には、、ラ
ムダのびしごとに1つのイベントがされます。
よりくのとテスト
[アクション] - > [テストイベントの]をすると、にはラムダコンソールにサンプルイベントがあり
ます。ただし、のでは、PUTをることができます。
AWS Lambdaコンソールからテストイベントをしてして、がどのようにするかをすることができ
ます。
Examples
S3 PUT
https://riptutorial.com/ja/home
26
{ "Records": [ { "eventVersion": "2.0", "eventTime": "1970-01-01T00:00:00.000Z", "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "s3": { "configurationId": "testConfigRule", "object": { "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901", "key": "HappyFace.jpg", "size": 1024 }, "bucket": { "arn": "arn:aws:s3:::mybucket", "name": "sourcebucket", "ownerIdentity": { "principalId": "EXAMPLE" } }, "s3SchemaVersion": "1.0" }, "responseElements": { "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH", "x-amz-request-id": "EXAMPLE123456789" }, "awsRegion": "us-east-1", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "eventSource": "aws:s3" } ] }
オンラインで
S3
によってトリガされた
aws-lambda
をむ
https://riptutorial.com/ja/aws-lambda/topic/6618/s3
によってトリガされた
aws-lambda
6:
アレクサスキルキット
Examples
Blueprint
をして
Alexa
スキルキットをする
AWS Management Consoleにログインし、AWS Lambdaにします。
[]をクリックすると、このウィンドウがされます。
ランタイムをしますが、node.jsとpythonののみサンプルコードをしてください
アレクサスキルキットには2つのがあります。あなたはそれらのものをフィルタリングすることが
できます。
これらのいプリントのの1つをします。なフィールドにをして、にトリガするウィンドウをするこ
とができます。
https://riptutorial.com/ja/home
28
[ Configure function]ウィンドウで、ラムダのをし、のにロールをするがあります。
これで、をできます。
、あなたのをテストすることができます。クリックアクションボタン
ここでは、 Configure test event
ウィンドウで、alexaイベントテンプレートをします。テンプレートはしたによってなります
このテンプレートをすると、コードサンプルをテストできます。
オンラインでアレクサスキルキットをむ
https://riptutorial.com/ja/aws-lambda/topic/7698/
アレクサ
スキルキット
7:
サーバーレスフレームワーク
き
オープンソースのアプリケーションフレームワークで、AWS Lambdaなどでサーバーレスのアー
キテクチャをにできます。このセクションでは、アプリケーションのためのサーバーレスフレー
ムワークをするでするについてします。
「Serverless」はフレームワークです https : //serverless.com/
Examples
サーバレス
グローバルにサーバーレスでインストールする
npm install serverless -gNode.jsにAWS Lamdbaをする
serverless create --template aws-nodejs
handler.js
'use strict';
// Your first function handler
module.exports.hello = (event, context, cb) => cb(null,
{ message: 'Go Serverless v1.0! Your function executed successfully!', event } );
// You can add more handlers here, and reference them in serverless.yml
ライブAWSアカウントにデプロイする
serverless deployシンプルな
CRUD
をする
サーバレスフレームワークをしたなCRUDの
グローバルにServerlessフレームワークをインストールする
npm install serverless -gなラムダサービスをする
serverless create --template aws-nodejs --path myService
まれるmyServiceディレクトリにします。
serverless.yml
1.
handler.js
2.
event.json
3.
すべてのServerlessサービスはserverless.ymlによってされます
CRUDサービスをするためにをしてください。
serverless.ymlファイルの
service: serverless-crud provider: name: aws runtime: nodejs4.3 region: us-east-1 stage: dev iamRoleStatements: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:Query - dynamodb:Scan - dynamodb:GetItem - dynamodb:PutItem - dynamodb:UpdateItem - dynamodb:DeleteItem Resource: "arn:aws:dynamodb:us-east-1:*:*" functions: create: handler: handler.create events: - http: path: todos method: post cors: true readAll: handler: handler.readAll events: - http: path: todos method: get cors: true readOne: handler: handler.readOne events: - http: path: todos/{id}https://riptutorial.com/ja/home
32
method: get cors: true update: handler: handler.update events: - http: path: todos/{id} method: put cors: true delete: handler: handler.delete events: - http: path: todos/{id} method: delete cors: true resources: Resources: TodosDynamoDbTable: Type: 'AWS::DynamoDB::Table' DeletionPolicy: Retain Properties: AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - AttributeName: id KeyType: HASH ProvisionedThroughput: ReadCapacityUnits: 1 WriteCapacityUnits: 1 TableName: 'todos'
このファイル
ラムダプログラミング
1.
ラムダポリシー
2.
Dynamodbテーブルのとポリシー
3.
HTTPエンドポイントAPIゲートウェイエンドポイント
4.
に、handler.jsファイルにラムダnode.jsをするがあります。これをすることができます。
'use strict';const todosCreate = require('./todos-create.js'); const todosReadAll = require('./todos-read-all.js'); const todosReadOne = require('./todos-read-one.js'); const todosUpdate = require('./todos-update.js'); const todosDelete = require('./todos-delete.js');
module.exports.create = (event, context, callback) => { todosCreate(event, (error, result) => {
headers: { "Access-Control-Allow-Origin" : "*" }, body: JSON.stringify(result), }; context.succeed(response); }); };
module.exports.readAll = (event, context, callback) => { todosReadAll(event, (error, result) => {
const response = { statusCode: 200, headers: { "Access-Control-Allow-Origin" : "*" }, body: JSON.stringify(result), }; context.succeed(response); }); };
module.exports.readOne = (event, context, callback) => { todosReadOne(event, (error, result) => {
const response = { statusCode: 200, headers: { "Access-Control-Allow-Origin" : "*" }, body: JSON.stringify(result), }; context.succeed(response); }); };
module.exports.update = (event, context, callback) => { todosUpdate(event, (error, result) => {
const response = { statusCode: 200, headers: { "Access-Control-Allow-Origin" : "*" }, body: JSON.stringify(result), }; context.succeed(response); }); };
module.exports.delete = (event, context, callback) => { todosDelete(event, (error, result) => {
const response = { statusCode: 200, headers: { "Access-Control-Allow-Origin" : "*" }, body: JSON.stringify(result), };
https://riptutorial.com/ja/home
34
context.succeed(response); }); };
に、CRUDをするためのしいファイルをするがあります
これらのファイルをする
todos-create.js
1.
todos-read-all.js
2.
todos-read-one.js
3.
todos-update.js
4.
todos-delete.js
5.
に、これらのをファイルでします。
todos-create.js
'use strict';const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient(); const uuid = require('uuid');
module.exports = (event, callback) => { const data = JSON.parse(event.body);
data.id = uuid.v1();
data.updatedAt = new Date().getTime();
const params = { TableName: 'todos', Item: data
};
return dynamoDb.put(params, (error, data) => { if (error) { callback(error); } callback(error, params.Item); }); };
todos-read-all.jsの
'use strict';const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports = (event, callback) => { const params = {
return dynamoDb.scan(params, (error, data) => { if (error) { callback(error); } callback(error, data.Items); }); }; For todos-read-one.js <br> 'use strict';
const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports = (event, callback) => { const params = { TableName: 'todos', Key: { id: event.pathParameters.id } };
return dynamoDb.get(params, (error, data) => { if (error) { callback(error); } callback(error, data.Item); }); };
todos-update.jsの
'use strict';const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports = (event, callback) => { const data = JSON.parse(event.body);
data.id = event.pathParameters.id; data.updatedAt = new Date().getTime();
const params = { TableName : 'todos', Item: data
};
return dynamoDb.put(params, (error, data) => { if (error) { callback(error); } callback(error, params.Item); }); };
https://riptutorial.com/ja/home
36
todos-delete.jsの
'use strict';const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports = (event, callback) => { const params = { TableName : 'todos', Key: { id: event.pathParameters.id } };
return dynamoDb.delete(params, (error, data) => { if (error) { callback(error); } callback(error, params.Key); }); };
これらのアプリケーションをするには、npmのをインストールするがあります
npm init npm1.
npm install aws-sdk --saveインストールしますnpm install aws-sdk --save aws-sdkをインス
トールします
2.
npm install uuid --save
3.
これらのプロジェクトをすることができます
cd myServiceプロジェクトディレクトリにあることをしてからコードをデプロイできます serverless deployエンドポイントをする
あなたがにしたは、コンソールにapi gatewayのをしてください。
エンドポイントのをテストする
curl -X POST https://XXXX.execute-api.region.amazonaws.com/dev/todos --data '{ "body" : "Learn Serverless" }'
みりエンドポイントのテストすべてみり
curl https://XXXX.execute-api.region.amazonaws.com/dev/todos
みりエンドポイントのテストみり
エンドポイントのテスト
curl -X PUT https://XXXX.execute-api.region.amazonaws.com/dev/todos/<id> --data '{ "body" : "Understand Serverless" }'
エンドポイントののテスト
`curl -X DELETE https://XXXX.execute-api.region.amazonaws.com/dev/todos/<id`>
オンラインでサーバーレスフレームワークをむ
https://riptutorial.com/ja/aws-lambda/topic/6719/
サ
ーバーレスフレームワーク
8:
ローカルマシンで
aws-lambdaC
をする
き
Serverless
の
きのとして、AWSは、AWS LambdaのCサポートをしました。このでは、Visual
Studio 2015をしてなCAWSラムダを、インストール、びしするをします。
このをするに、まずの「」にみ、なコンポーネントがすべてインストールされていることをして
ください。
なコンポーネントをインストールする
この20171に、のコンポーネントをこのでマシンにインストールするがあります。がったマシン
にはWindows 10 Homeがインストールされていました。
Visual Studio 2015
アップデート3
1.
AWS Toolkit for Visual Studio 2015 - バージョン1.11.2.0
2.
Microsoft .NET
コアツールプレビュー2
- バージョン14.1.21111.0
3.
これらのコンポーネントはにされ、リリースされているため、にじてリンクとバージョンをし、
このドキュメントをしてください。
これら
は
それぞれ
インストール
に
がかかることがあります
ので、いをにえるためにに1つずつって
ください。
に、をするにWindowsをするのはしいことですが、Windowsボックスになツールをインストール
したは、にいアイデアです。
Examples
1. Visual Studio
でしいソリューションをする
Visual Studioをき、ファイルを - >プロジェクト
1.
テストをむAWSラムダプロジェクト.NET Coreを
2.
に、 のがされます。 「 の」をし、「」ボタンをクリックします。
3.
「ツール」 - >「NuGetパッケージマネージャー」 - >「パッケージマネージャーコンソール
」をします。
4.
コンソールウィンドウで、「 Install-Package Amazon.Lambda.Core
」
とし
ます。
5.
ソリューションエクスプローラでプロジェクトをクリックし、[パッケージの]をします。こ
6.
https://riptutorial.com/ja/home
40
れはコードをするのなです。
ステップ2.プロジェクトのコードをしてする
Function.csをき、クラスコードをのようにきえます。 public class Function
{
/// <summary>
/// A simple function that takes a birth date and returns Age in years /// </summary>
/// <param name="input"></param> /// <returns>Age is years</returns> ///
[LambdaSerializer(typeof(SimpleSerializer))]
public string FunctionHandler(Dictionary<string, int> input) {
var defaultMessage = "Age could not be determined.";
var birthDate = new DateTime(input["year"], input["month"], input["day"]); var ageInYears = DateTime.Today.Year - birthDate.Year;
if (birthDate.DayOfYear > DateTime.Today.DayOfYear) ageInYears--;
defaultMessage = $"Age in years: {ageInYears}";
return defaultMessage; } }
1.
のくにのusingステートメントをするがあります。
using System.Collections.Generic; using Amazon.Lambda.Core;SimpleSerializer.csというのプロジェクトにファイルをする
2.
そのファイルにのコードをします。
3.
using System; using System.IO; using Amazon.Lambda.Core; using Newtonsoft.Json; namespace AWSLambdaFunctionAgeInYears {public class SimpleSerializer : ILambdaSerializer {
public T Deserialize<T>(Stream requestStream) {
string text;
using (var reader = new StreamReader(requestStream)) text = reader.ReadToEnd();
try {
return JsonConvert.DeserializeObject<T>(text); }
catch (Exception ex) {
if (typeof(T) == typeof(System.String))
return (T)Convert.ChangeType(text, typeof(T));
throw ex; }
}
public void Serialize<T>(T response, Stream responseStream) {
StreamWriter streamWriter = new StreamWriter(responseStream); try
{
string text = JsonConvert.SerializeObject(response); streamWriter.Write(text);
streamWriter.Flush(); }
catch (Exception ex) { if (typeof(T) == typeof(System.String)) { streamWriter.Write(response); streamWriter.Flush(); return; } throw ex; } } } }
テストプロジェクトで、 FunctionTest.cs 23をのようにします。
4.
https://riptutorial.com/ja/home
42
var upperCase = function.FunctionHandler(null);