• 検索結果がありません。

シンプルなCRUDをする

ドキュメント内 aws-lambda #awslambda (ページ 34-42)

7: サーバーレスフレームワーク

オープンソースのアプリケーションフレームワークで、AWS Lambdaなどでサーバーレスのアー キテクチャをにできます。このセクションでは、アプリケーションのためのサーバーレスフレー ムワークをするでするについてします。

「Serverless」はフレームワークです https : //serverless.com/

Examples

なラムダサービスをする

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) => {

const response = {

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 = {

TableName: 'todos',

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

npm 1.

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 https://XXXX.execute-api.region.amazonaws.com/dev/todos/<id>

エンドポイントのテスト

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/サ ーバーレスフレームワーク

https://riptutorial.com/ja/home 38

8: ローカルマシンでaws-lambdaCをする

Serverlessのきのとして、AWSは、AWS LambdaのCサポートをしました。このでは、Visual Studio 2015をしてなCAWSラムダを、インストール、びしするをします。

このをするに、まずの「」にみ、なコンポーネントがすべてインストールされていることをして ください。

ドキュメント内 aws-lambda #awslambda (ページ 34-42)

関連したドキュメント