61
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. April 2016 Javascript and Node.js Development Alex Smith @alexjs / [email protected]

Javascript & Node.js Development on Amazon Web Services

Embed Size (px)

Citation preview

Page 1: Javascript & Node.js Development on Amazon Web Services

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

April 2016

Javascript and Node.js Development

Alex Smith

@alexjs / [email protected]

Page 2: Javascript & Node.js Development on Amazon Web Services

JavaScript

is everywhere.

Page 3: Javascript & Node.js Development on Amazon Web Services

AWS SDK for

JavaScript in Node.js

Page 4: Javascript & Node.js Development on Amazon Web Services

AWS SDK for

JavaScript in the

BrowserDesktop or mobile devices

Page 5: Javascript & Node.js Development on Amazon Web Services

Let’s use them.

Page 6: Javascript & Node.js Development on Amazon Web Services

Goals

Learn about

AWS SDK for

Node.js

Introduce AWS

SDK for

JavaScript in

the Browser

Write a two-

tiered web

application

Page 7: Javascript & Node.js Development on Amazon Web Services

AWS SDK for Node.js

Page 8: Javascript & Node.js Development on Amazon Web Services

Service Coverage

Support for many AWS services

Page 9: Javascript & Node.js Development on Amazon Web Services

Extensible ClientsCustomize any part of

the request cycle

Page 10: Javascript & Node.js Development on Amazon Web Services

Standard Node.js Idioms

• Streams

• EventEmitter

• Domains

Page 11: Javascript & Node.js Development on Amazon Web Services

Open Source

• Apache License, Version

2.0

• https://github.com/aws/aw

s-sdk-js

• Pull requests welcome!

Page 12: Javascript & Node.js Development on Amazon Web Services

Getting Started:

AWS SDK for Node.js

Page 13: Javascript & Node.js Development on Amazon Web Services

Installing$ npm install aws-sdk

Bash

Page 14: Javascript & Node.js Development on Amazon Web Services

Loadingvar AWS = require(‘aws-sdk’);

JS

Page 15: Javascript & Node.js Development on Amazon Web Services

Configuring the SDKAWS.config

• Credentials*

• Region*

• Extras

* Required by the SDK

Page 16: Javascript & Node.js Development on Amazon Web Services

Configuring Credentials• IAM roles for EC2

Instances

• Environment Variables

• File System (outside

source control)

Page 17: Javascript & Node.js Development on Amazon Web Services

Do Not Hardcode Credentials

Unless they are read-only and scoped to specific resources.

Page 18: Javascript & Node.js Development on Amazon Web Services

IAM Roles for EC2 Instances

=Zero Configuration

Page 19: Javascript & Node.js Development on Amazon Web Services

Configuration Items• AWS_ACCESS_KEY_ID

• AWS_SECRET_ACCESS_KEY

• AWS_REGION*

Page 20: Javascript & Node.js Development on Amazon Web Services

Configuration:

Region and Extras

Page 21: Javascript & Node.js Development on Amazon Web Services

AWS.config.update({

region: ‘ap-southeast-1’, // AWS_REGION

maxRetries: 10, // default: 3

logger: process.stdout,

// ... more options ...

});

JS

Page 22: Javascript & Node.js Development on Amazon Web Services

Config From a File

AWS.config.loadFromPath(‘./config.json’);

JS

If this file contains credentials, keep it out of source control

Page 23: Javascript & Node.js Development on Amazon Web Services

Working with Services

Page 24: Javascript & Node.js Development on Amazon Web Services

Service ObjectsAWS.S3

AWS.EC2

AWS.DynamoDB

AWS.SQS

AWS.SNS

...

Page 25: Javascript & Node.js Development on Amazon Web Services

Constructing a Service Object

var ec2 = new AWS.EC2([config]);

JS

Page 26: Javascript & Node.js Development on Amazon Web Services

Calling an Operation

ec2.describeInstances(params, callback);

JS

Page 27: Javascript & Node.js Development on Amazon Web Services

The Callback

function (err, data) { ... }

JS

Page 28: Javascript & Node.js Development on Amazon Web Services

Getting a Request Object

var req = ec2.describeInstances(params);

JS

Page 29: Javascript & Node.js Development on Amazon Web Services

Sending the Request Object

var resp = req.send(callback);

JS

Page 30: Javascript & Node.js Development on Amazon Web Services

Adding Listeners

to the Request Object

req.on(‘complete’, function(resp) { ... });

JS

Page 31: Javascript & Node.js Development on Amazon Web Services

The Request Cycle

Page 32: Javascript & Node.js Development on Amazon Web Services

Send AWS.Request

Get AWS.Response

Page 33: Javascript & Node.js Development on Amazon Web Services

AWS.Request

Operation

AWS.Response

build sign send

complete

success

error

Emitted Lifecycle Events

... ... ...

Request Lifecycle

callbacksend()

Page 34: Javascript & Node.js Development on Amazon Web Services

AWS.Request

.send(callback)

.on(event, callback)

.httpRequest

...

Page 35: Javascript & Node.js Development on Amazon Web Services

AWS.Response

.error

.data

.retryCount

.httpResponse

...

Page 36: Javascript & Node.js Development on Amazon Web Services

Request Lifecycle Recap

• Send AWS.Request

• Emits Lifecycle

Events

• Callback with

AWS.Response

Page 37: Javascript & Node.js Development on Amazon Web Services

Features of the SDK

Page 38: Javascript & Node.js Development on Amazon Web Services

Features

Global Configuration Object

Bound Parameters

Response Pagination

Event Listeners (Per-Service and Global)

API Version Locking

Secure Credential Management

Page 39: Javascript & Node.js Development on Amazon Web Services

Demo

Page 40: Javascript & Node.js Development on Amazon Web Services

AWS SDK

for JavaScript

in the Browser

Page 41: Javascript & Node.js Development on Amazon Web Services

HTMLGetting the SDK

<script src=”https://sdk.amazonaws.com/js/aws-sdk-2.3.5.min.js” />

Page 42: Javascript & Node.js Development on Amazon Web Services

Many Supported ServicesS3

DynamoDB

SQS

SNS

STS

Kinesis

Lambda

Default: all services that support CORS

Page 43: Javascript & Node.js Development on Amazon Web Services

All Modern Browsers

28.0+ 23.0+ 10+ 17.0+ 5.1+

Page 44: Javascript & Node.js Development on Amazon Web Services

Usage is the same.

But in your browser, or mobile

device

Page 45: Javascript & Node.js Development on Amazon Web Services

Configuration is different.

Page 46: Javascript & Node.js Development on Amazon Web Services

Why?

Two-Tier Web Applications

Page 47: Javascript & Node.js Development on Amazon Web Services

Traditional Application Architecture

Other ServicesNode.js Backend

Your Services

Page 48: Javascript & Node.js Development on Amazon Web Services

Two-Tier Application Architecture

Your Services

SDK on the Device

Page 49: Javascript & Node.js Development on Amazon Web Services

Benefits

• Fewer moving parts

• Easy prototyping

• Deploying as simple as

copying files to Amazon

S3

• Fully dynamic app for

pennies a month

Page 50: Javascript & Node.js Development on Amazon Web Services

Next Level Web Apps

Page 51: Javascript & Node.js Development on Amazon Web Services

App

Ideas

Forum Software

Blog Commenting Service

Blogging Platform

Firefox/Chrome Extensions

WinRT (Metro Style) Apps

Any Mobile App!

Page 52: Javascript & Node.js Development on Amazon Web Services

Let’s Look at a Web

Application

Using nothing but

HTML, CSS, and JavaScript

Page 53: Javascript & Node.js Development on Amazon Web Services

A Simple Blog

• Content stored in Amazon

DynamoDB

• Assets in Amazon S3

• Lambda Function

• We don’t have it in now,

but using Lambda to

take a thumbnail

Page 54: Javascript & Node.js Development on Amazon Web Services

AWS Javascript SDKfor the browser

Amazon DynamoDBUnlimited size and

throughput Database

Amazon S3Unlimited Storage &

Web Service

AWS LambdaUnlimited Cloud Functions

Function: Create Thumbnailfor new files in S3

Demo – Serverless Solution at Any Scale

FacebookAuthentication

Page 55: Javascript & Node.js Development on Amazon Web Services

Demo

Page 56: Javascript & Node.js Development on Amazon Web Services

We ♥ Open Source

https://github.com/aws/aws-sdk-js

Page 57: Javascript & Node.js Development on Amazon Web Services

Contribute to the SDK

Improve Documentation

Report Issues

Submit Pull Requests

Open Source

Third Party Plugins

Great way to easily add features

Page 58: Javascript & Node.js Development on Amazon Web Services

Node.js

Page 59: Javascript & Node.js Development on Amazon Web Services

Please, write More!

Page 60: Javascript & Node.js Development on Amazon Web Services

Q&A

Twitter

@alexjs

LinkedIn

https://sg.linkedin.com/in/alexjs

Email

[email protected]

Page 61: Javascript & Node.js Development on Amazon Web Services

Alex Smith - @alexjs / [email protected]

Thank You!