aws lambdaとapi gatewayでサーバレスなシステム構築に踏み出してみる
TRANSCRIPT
-
AWS LambdaAPI Gateway
@makinog3
1
-
pAWS LambdanHello Lambda!n
pS3pSNS
pAmazon API GatewaynAPI GatewayLambda
2
-
AWS Lambdap
3
-
4
Amazon S3
Amazon SNS
Amazon Kinesis
Amazon DynamoDB
-
5
.forwardRDB
-
pnnn
pS3DynamoDBnS3DynamoDB
pnEC2
6
-
pnDynamoDB
nAWS Lambda pNode.jsJava 8nNode.jsJava
p
nJava 8 :-P
7
-
AWS Lambdapn
p/tmpn
pImageMagicknS3
pexec()ngcc
8
-
Hello Lambda
9
Lambda
-
LambdaNode.js
10
API GatewayTokyoOregon
Execution Role
-
LambdaRolepExecution RolenLambda AWS
nLambda SNS SNS
pInvocation RolenLambdanLambda
11
-
12
(
)
CloudWatch
Lambda
-
Hello LambdaTEST
13
-
S3SNS
14
S3 SNS
Lambda
-
S3
15
-
SNS
16
-
S3Lambda
17
-
18
console.log('Loading function'); var aws = require('aws-sdk'); var s3 = new aws.S3({ apiVersion: '2006-03-01' });
var sns = new aws.SNS({ accessKeyId: ACCESS_KEY_ID', secretAccessKey: SECRET_ACCESS_KEY',
region: REGION' }); exports.handler = function(event, context) {
//console.log('Received event:', //JSON.stringify(event, null, 2));
// Get the object from the event and // show its content type var bucket = event.Records[0].s3.bucket.name; var key = event.Records[0].s3.object.key;
var params = { Bucket: bucket, Key: key };
s3.getObject(params, function(err, data) { if (err) { console.log(err); var message = "Error getting" +
" object " + key + " from bucket " + bucket; console.log(message);
context.fail(message); } else { sns.publish({ Message: 'Got object ' +
key + ' (' + data.ContentType + ') from bucket ' + bucket,
Subject: '[ykcloud] Got object', TopicArn: TOPIC_ARN' }, function(err, data){ if(err) throw err;
else context.fail('Unable + ' to send e-mail'); }); console.log('CONTENT TYPE:,
data.ContentType); context.succeed(data.ContentType); }
}); };
-
pAWS LambdaAPI Gateway
19
AWS LambdaWeb
LambdaWeb
Amazon API Gateway !
-
Amazon API GatewaypLambdaAWSREST APInAWSnnAWSIAMnAPIJavaScriptAndroidiOSSDK
20
-
/prod/hello
/prod/hello
API
21
/prod/hello
GET PUT POST DELETE :
Stages
Stages
StageCloudWatchAPIStage
Resources
Methods
-
HelloLambdaAPI
22
-
HelloLambdaAPI
23
-
API
24
-
API
25
-
Web
26
JSON
JSON
S3HTMLEC2Web CORS http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html
-
27
Hello Lambda $(function(){ $("#response").html("Response Values"); $("#button").click( function(){ var url = $("#url_post").val(); var JSONdata = { key1: $("#key1").val(), key2: $("#key2").val(), key3: $("#key3").val() }; $.ajax({ type : 'post', url : url, data : JSON.stringify(JSONdata), contentType: 'application/JSON', dataType : 'JSON', scriptCharset: 'utf-8', success : function(data) { // alert(JSON.stringify(data)); $("#response").html(JSON.stringify(data)); }, error : function(data) { alert("error"); // alert(JSON.stringify(data)); $("#response").html(JSON.stringify(data)); } }); }) })
Post to HelloLambda API Gateway URL: Key1: Key2: Key3: post
-
pAWS LambdanS3DynamoDBnLambda
pAmazon API GatewayRESTfulWebn
n
p LambdaAPI28
-
p AWS Lambda http://docs.aws.amazon.com/lambda/latest/dg/welcome.htmlp Amazon API Gateway http://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html
29