What's new with Serverless
-
Upload
keisuke-nishitani -
Category
Software
-
view
496 -
download
5
Transcript of What's new with Serverless
#aws_serverless
What’s New with ServerlessKeisuke Nishitani (@Keisuke69)
Amazon Web Services Japan K.K.Dec 07, 2016
#aws_serverless
ProfileKeisuke NishitaniSpecialist Solutions Architect, Amazon Web Service Japan K.K
@Keisuke69 Keisuke69
✤ Specialist SA- Serverless- Mobile- DevOps- Application Service
✤ ソーシャルで⾚ドクロの⼈です✤ RESTおじさん✤ 餃⼦の王将エヴァンジェリスト(⾃称)✤ ⾳楽が好きです、フジロッカーです、今年も⾏きました✤ ブログ: http://keisuke69.hatenablog.jp/
Keisuke69 Keisuke69Keisuke69x
#aws_serverless
AWS Serverless Application Model (SAM)✤ サーバレスアプリケーションの構成を定義するための共通⾔語
⎻ CloudFomationのエクステンション
✤ Lambdaベースのアプリケーションをパッケージしてデプロイするためのツール
✤ コンソール上からLambdaのブループリントやファンクションをSAMとしてエクスポート可能
#aws_serverless
AWS Serverless Application ModelAWSTemplateFormatVersion: '2010-09-09’Transform: AWS::Serverless-2016-10-31Resources: GetHtmlFunction:Type: AWS::Serverless::FunctionProperties:CodeUri: s3://flourish-demo-bucket/todo_list.zipHandler: index.gethtmlRuntime: nodejs4.3Policies: AmazonDynamoDBReadOnlyAccessEvents:GetHtml: Type: ApiProperties: Path: /{proxy+} Method: ANYListTable: Type: AWS::Serverless::SimpleTable
Functions
APIs
Storage
#aws_serverless
AWS Serverless Application ModelAWSTemplateFormatVersion: '2010-09-09’Transform: AWS::Serverless-2016-10-31Resources: GetHtmlFunction:Type: AWS::Serverless::FunctionProperties:CodeUri: s3://flourish-demo-bucket/todo_list.zipHandler: index.gethtmlRuntime: nodejs4.3Policies: AmazonDynamoDBReadOnlyAccessEvents:GetHtml: Type: ApiProperties: Path: /{proxy+} Method: ANYListTable: Type: AWS::Serverless::SimpleTable
AWSTemplateFormatVersion: '2010-09-09'
Resources:
GetHtmlFunctionGetHtmlPermissionProd:
Type: AWS::Lambda::Permission
Properties:
Action: lambda:invokeFunction
Principal: apigateway.amazonaws.com
FunctionName:
Ref: GetHtmlFunction
SourceArn:
Fn::Sub: arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${ServerlessRestApi}/Prod/ANY/*
ServerlessRestApiProdStage:
Type: AWS::ApiGateway::Stage
Properties:
DeploymentId:
Ref: ServerlessRestApiDeployment
RestApiId:
Ref: ServerlessRestApi
StageName: Prod
ListTable:
Type: AWS::DynamoDB::Table
Properties:
ProvisionedThroughput:
WriteCapacityUnits: 5
ReadCapacityUnits: 5
AttributeDefinitions:
- AttributeName: id
AttributeType: S
KeySchema:
- KeyType: HASH
AttributeName: id
GetHtmlFunction:
Type: AWS::Lambda::Function
Properties:
Handler: index.gethtml
Code:
S3Bucket: flourish-demo-bucket
S3Key: todo_list.zip
Role:
Fn::GetAtt:
- GetHtmlFunctionRole
- Arn
Runtime: nodejs4.3
GetHtmlFunctionRole:
Type: AWS::IAM::Role
Properties:
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Action:
- sts:AssumeRole
Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
ServerlessRestApiDeployment:
Type: AWS::ApiGateway::Deployment
Properties:
RestApiId:
Ref: ServerlessRestApi
Description: 'RestApi deployment id: 127e3fb91142ab1ddc5f5446adb094442581a90d'
StageName: Stage
GetHtmlFunctionGetHtmlPermissionTest:
Type: AWS::Lambda::Permission
Properties:
Action: lambda:invokeFunction
Principal: apigateway.amazonaws.com
FunctionName:
Ref: GetHtmlFunction
SourceArn:
Fn::Sub: arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${ServerlessRestApi}/*/ANY/*
ServerlessRestApi:
Type: AWS::ApiGateway::RestApi
Properties:
Body:
info:
version: '1.0'
title:
Ref: AWS::StackName
paths:
"/{proxy+}":
x-amazon-apigateway-any-method:
x-amazon-apigateway-integration:
httpMethod: ANY
type: aws_proxy
uri:
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-
31/functions/${GetHtmlFunction.Arn}/invocations
responses: {}
swagger: '2.0'
REPLACES:
#aws_serverless
Serverless CI/CD pipeline
✤ CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接Pull
GitHub
Source Deploy
CloudFormationCodeBuild
Build
NEW!
#aws_serverless
Serverless CI/CD pipeline
✤ CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接Pull
✤ AWS CodeBuildでサーバレスアプリのビルドとパッケージング⎻ npm、pip、Javaコンパイル
GitHub
Source Deploy
CloudFormationCodeBuild
Build
NEW!
#aws_serverless
Serverless CI/CD pipeline
✤ CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接Pull✤ AWS CodeBuildでサーバレスアプリのビルドとパッケージング
⎻ Npm、pip、Javaコンパイル✤ AWS CloudFormationで完成したアプリをデプロイ
GitHub
Source Deploy
CloudFormationCodeBuild
Build
NEW!
#aws_serverless
ICYMI: CloudWatchの新機能✤ Percentiles
⎻ あらゆるメトリクスでパーセンタイル統計をサポート
✤ Metrics-to-Logs⎻ メトリクスのポイント
から直接CloudWatch logsに⾶べるように
#aws_serverless
AWS X-Rayとのインテグレーション✤AWS X-Rayを⽤いることでサービス間の
イベントの遷移を可視化
✤Lambdaファンクションから他のサービスに対する呼び出しと時間をトレース
✤ファンクションとサービスの依存関係、関連性を実際に⽬視
✤消えたイベントやスロットルといった状態を確認したり診断したりが簡単に
✤簡単なセットアップ
✤サポートはもう間もなく
簡単セットアップ
AWSLambda
AmazonS3
AmazonDynamoDB
#aws_serverless
AWS X-Rayとのインテグレーション✤ ⾮同期呼び出しの滞留時間とリトライを確認✤ AWSサービスに対する呼び出しパフォーマンスをプロファイリング
⎻ イベント処理の失敗を検知⎻ パフォーマンス問題の特定と修正が簡単に
dwelltimes
servicecalltimes
retries
#aws_serverless
AWS Lambdaの新機能・エンハンス✤ Kinesis IteratorとしてAT_TIMESTAMPをサポート
✤ 対応⾔語としてC#のサポート
✤ デッドレターキュー
#aws_serverless
AT_TIMESTAMPのサポート✤ Kinesisのイテレータとして新たにAT_TIMESTAMPをサポート✤ 任意の時点でのストリームデータ処理が可能✤ データが巻き戻ったり、失われたりすることなく処理の停⽌と開始
AmazonKinesis
LATESTTRIM_HORIZON TIMESTAMP
#aws_serverless
デッドレターキュー(Dead Letter Queue, DLQ)✤ 信頼性の⾼いエンドツーエンドのイベン
ト処理ソリューションの作成が簡単に✤ 3回実⾏しても処理されなかったイベント
をSQSのキューもしくはSNSトピックへと送信
✤ コードに問題が有る場合や、スロットルされる場合もイベントを保存
✤ ファンクション単位✤ すべての⾮同期呼び出しで利⽤可能
AmazonSQS
AmazonSNS
AWSLambda
#aws_serverless
AWS Step Functions✤信頼性⾼く複数のLambdaファンクション
をオーケストレーション
✤3回以上の試⾏
✤⾮同期なファンクションに対するコールバックの追加
✤待ち合わせのハンドリング
✤連鎖的なファンクション実⾏
✤ロングランニングなワークフローのサポート
#aws_serverless
Lambda Bots and Amazon Lex•テキストスピーチ
•ビジネスロジックをLambdaで実⾏
•Facebook、MobileHub
•SlackおよびTwilio とのインテグレーションは近⽇中
I’dliketobookahotel
#aws_serverless
AWS Snowball Edge✤オンプレからAWSへの⾼速・シンプル・セキュアなデータ移⾏
✤100TBクラスのキャパシティ
✤ローカルでLambdaファンクションを実⾏可能
✤マルチメディアコンテンツの変換、リアルタイムな圧縮、監査
#aws_serverless
AWS Greengrass(Preview)✤AWSの処理をデバイス上でも
✤低遅延、ニアリアルタイム
✤デバイス上でLambdaファンクションを実⾏
✤AWS IoTを通じたクラウドストレージとコンピュート
✤必要スペック:1GHz、 128MB、x86/ARM、Linux
#aws_serverless
Lambda@Edge(Preview)✤低レイテンシなリクエスト/レスポンスのカスタマイズ
✤Viewerとオリジンのイベントをサポート
✤プレビューでの制限⎻ Node.jsのみ⎻ 最⼤50msのタイムアウト⎻ ヘッダのみ Signuptojointhepreview!
#aws_serverless
バイナリのサポート
イメージやオーディオなどのバイナリコンテンツを
サポート
Content-TypeとAcceptヘッダを参照してハンドリング
Lambdaインテグレーションの場合は⾃動的にbase64でエンコード
#aws_serverless
APIドキュメンテーション✤ APIをドキュメント化–コンソール上から直接編集可能✤ Swagger インポート/エクスポート✤ 独⽴した更新とパブリッシュのフローをサポート
Coolfeature:Inheritance!
#aws_serverless
AWS Marketplaceとのインテグレーション✤ APIのマネタイズ
✤ ⾃⾝のAPIをマーケットプレイス上で販売可能
✤ API利⽤者のための簡単な発⾒と調達
✤ コンシューマ/APIキーによるAPI利⽤量のトラッキング
✤ AWSによる⾃動化された請求処理
URLReputationAPIs
SpeechunderstandingAPIs
#aws_serverless
Developer Portalの⽣成✤ API利⽤者のためのポータルサイトを⽣成✤ API Gatewayで作成したAPIのリストやカタログと開発者のサインアップを
実現するサーバレスなアプリケーションを⽣成✤ S3のStatic Web Site Hosting機能で配信可能✤ https://github.com/awslabs/aws-api-gateway-developer-portal
#aws_serverless
サーバレス個別相談会やります✤ 1⽉12⽇(⽊)にサーバレスに関する個別技術相談会を開催します✤ サーバレスなシステムに関するアーキテクチャ相談✤ 1スロット、45分で7スロット受け付け予定✤ 要事前登録✤ もちろん無料
https://aws-serverless.connpass.com/event/45337/