Upload
takashi-makino
View
7.560
Download
0
Embed Size (px)
Citation preview
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