Submit Search
What's new with Serverless
•
5 likes
•
2,167 views
Keisuke Nishitani
Follow
2016/12/11 Serverless Meetup Sapporoでの資料です。
Read less
Read more
1 of 38
Download now
Downloaded 14 times
More Related Content
What's new with Serverless
1.
What’s New with
Serverless Keisuke Nishitani (@Keisuke69) Amazon Web Services Japan K.K. Dec 11, 2016
2.
Profile Keisuke Nishitani Specialist Solutions
Architect, Amazon Web Service Japan K.K @Keisuke69 Keisuke69 ✤ Specialist SA - Serverless - Mobile - DevOps - Application Service ✤ ソーシャルで⾚ドクロの⼈です ✤ RESTおじさん ✤ 餃⼦の王将エヴァンジェリスト(⾃称) ✤ ⾳楽が好きです、フジロッカーです、今年も⾏きました ✤ ブログ: http://keisuke69.hatenablog.jp/ Keisuke69 Keisuke69Keisuke69x
3.
サーバレスプラットフォームの機能性
4.
Serverless AppのCI/CD
5.
環境変数のサポート
6.
AWS Serverless Application
Model (SAM) ✤ サーバレスアプリケーションの構成を定義するための共通⾔語 ⎻ CloudFomationのエクステンション ✤ Lambdaベースのアプリケーションをパッケージしてデプロイするた めのツール ✤ コンソール上からLambdaのブループリントや ファンクションをSAMとしてエクスポート可能
7.
AWS Serverless Application
Model AWSTemplateFormatVersion: '2010-09-09’ Transform: AWS::Serverless-2016-10-31 Resources: GetHtmlFunction: Type: AWS::Serverless::Function Properties: CodeUri: s3://flourish-demo-bucket/todo_list.zip Handler: index.gethtml Runtime: nodejs4.3 Policies: AmazonDynamoDBReadOnlyAccess Events: GetHtml: Type: Api Properties: Path: /{proxy+} Method: ANY ListTable: Type: AWS::Serverless::SimpleTable Functions APIs Storage
8.
AWS Serverless Application
Model AWSTemplateFormatVersion: '2010-09-09’ Transform: AWS::Serverless-2016-10-31 Resources: GetHtmlFunction: Type: AWS::Serverless::Function Properties: CodeUri: s3://flourish-demo-bucket/todo_list.zip Handler: index.gethtml Runtime: nodejs4.3 Policies: AmazonDynamoDBReadOnlyAccess Events: GetHtml: Type: Api Properties: Path: /{proxy+} Method: ANY ListTable: 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:
9.
Serverless CI/CD pipeline ✤
CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接 Pull GitHub Source Deploy CloudFormationCodeBuild Build NEW!
10.
Serverless CI/CD pipeline ✤
CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接 Pull ✤ AWS CodeBuildでサーバレスアプリのビルドとパッケージング ⎻ npm、pip、Javaコンパイル GitHub Source Deploy CloudFormationCodeBuild Build NEW!
11.
Serverless CI/CD pipeline ✤
CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接Pull ✤ AWS CodeBuildでサーバレスアプリのビルドとパッケージング ⎻ Npm、pip、Javaコンパイル ✤ AWS CloudFormationで完成したアプリをデプロイ GitHub Source Deploy CloudFormationCodeBuild Build NEW!
12.
ICYMI: CloudWatchの新機能 ✤ Percentiles ⎻
あらゆるメトリクスで パーセンタイル統計を サポート ✤ Metrics-to-Logs ⎻ メトリクスのポイント から直接CloudWatch logsに⾶べるように
13.
AWS X-Rayとのインテグレーション ✤AWS X-Rayを⽤いることでサービス間の イベントの遷移を可視化 ✤Lambdaファンクションから他のサービス に対する呼び出しと時間をトレース ✤ファンクションとサービスの依存関係、関 連性を実際に⽬視 ✤消えたイベントやスロットルといった状態 を確認したり診断したりが簡単に ✤簡単なセットアップ ✤サポートはもう間もなく 簡単セットアップ AWS Lambda Amazon S3 Amazon DynamoDB
14.
AWS X-Rayとのインテグレーション ✤ ⾮同期呼び出しの滞留時間とリトライを確認 ✤
AWSサービスに対する呼び出しパフォーマンスをプロファイリング ⎻ イベント処理の失敗を検知 ⎻ パフォーマンス問題の特定と修正が簡単に dwell times service call times retries
15.
AWS Lambdaの新機能・エンハンス ✤ Kinesis
IteratorとしてAT_TIMESTAMPをサポート ✤ 対応⾔語としてC#のサポート ✤ デッドレターキュー
16.
AT_TIMESTAMPのサポート ✤ Kinesisのイテレータとして新たにAT_TIMESTAMPをサポート ✤ 任意の時点でのストリームデータ処理が可能 ✤
データが巻き戻ったり、失われたりすることなく処理の停⽌と開始 Amazon Kinesis LATESTTRIM_HORIZON TIMESTAMP
17.
C#サポート ✤ 新しい⾔語としてC#をサポート ⎻ .NET
Core で動作 ⎻ Win32 API や COMコンポーネントは呼べません ✤ Visual Studio に統合された環境を利⽤可能 ⎻ AWS Tools for Visual Studio 最新版をインストールしてください ⎻ dotnet CLIベースの開発も可能 ✤ Context等の基本的なものから、 シリアライザや各サービスのイベン トオブジェクトなど3種類のライブラリを提供 ⎻ Nugetでインストール 17
18.
Lambda関数ハンドラ(C#) ✤ クラスの静的またはインスタンス メソッドとして定義 ✤
デフォルトではSystem.IO.Stream型をサポート ⎻ それ以外の型はシリアライザが必要 ✤ シグニチャの例 ⎻ public Stream RunLambda(Stream inputStream); ⎻ public string RunLambda(string inputString); ⎻ public MyResponse RunLambda(MyRequest request); ⎻ POCO in(イベント オブジェクトを含む), POCO out ⎻ public void RunLambda(MyRequest request); ⎻ public async Task<MyResponse> RunLambda(...); ⎻ ⾮同期呼び出し ⎻ 但し、Labmdaは戻り値を無視する(void にすることも可能だがasync voidは未サポート) returnType handler-name(inputType input, ILambdaContext context) { ... }
19.
AWS Lambda C#
Project Template
20.
AWS Labmda C#
Blue Print
21.
Publish to AWS
Lambda
22.
ローカル環境でLambda C#コードのデバッグ
23.
デッドレターキュー(Dead Letter Queue,
DLQ) ✤ 信頼性の⾼いエンドツーエンドのイベン ト処理ソリューションの作成が簡単に ✤ 3回実⾏しても処理されなかったイベント をSQSのキューもしくはSNSトピックへ と送信 ✤ コードに問題が有る場合や、スロットル される場合もイベントを保存 ✤ ファンクション単位 ✤ すべての⾮同期呼び出しで利⽤可能 Amazon SQS Amazon SNS AWS Lambda
24.
Lambda Everywhere
25.
AWS Step Functions ✤信頼性⾼く複数のLambdaファンクション をオーケストレーション ✤3回以上の試⾏ ✤⾮同期なファンクションに対するコール バックの追加 ✤待ち合わせのハンドリング ✤連鎖的なファンクション実⾏ ✤ロングランニングなワークフローのサポー ト
26.
Lambda Bots and
Amazon Lex •テキストスピー チ •ビジネスロジッ クをLambdaで実 ⾏ •Facebook、 MobileHub •Slackおよび Twilio とのインテ グレーションは 近⽇中 I’d like to book a hotel
27.
AWS Snowball Edge ✤オンプレからAWSへの⾼速・シ ンプル・セキュアなデータ移⾏ ✤100TBクラスのキャパシティ ✤ローカルでLambdaファンクショ ンを実⾏可能 ✤マルチメディアコンテンツの変 換、リアルタイムな圧縮、監査
28.
AWS Greengrass(Preview) ✤AWSの処理をデバイス上でも ✤低遅延、ニアリアルタイム ✤デバイス上でLambdaファンクショ ンを実⾏ ✤AWS IoTを通じたクラウドストレー ジとコンピュート ✤必要スペック:1GHz、
128MB、 x86/ARM、Linux
29.
Lambda@Edge(Preview) ✤低レイテンシなリクエスト/レス ポンスのカスタマイズ ✤Viewerとオリジンのイベントを サポート ✤プレビューでの制限 ⎻ Node.jsのみ ⎻ 最⼤50msのタイムアウト ⎻
ヘッダのみ Sign up to join the preview!
30.
API Gatewayアップデート
31.
バイナリのサポート イメージやオー ディオなどのバイ ナリコンテンツを サポート Content-TypeとAcceptヘッダを参照してハンドリング Lambdaインテグレーションの場合は ⾃動的にbase64でエンコード
32.
APIドキュメンテーション ✤ APIをドキュメント化–コンソール上から直接編集可能 ✤ Swagger
インポート/エクスポート ✤ 独⽴した更新とパブリッシュのフローをサポート Cool feature: Inheritance!
33.
AWS Marketplaceとのインテグレーション ✤ APIのマネタイズ ✤
⾃⾝のAPIをマーケットプレイス上で販 売可能 ✤ API利⽤者のための簡単な発⾒と調達 ✤ コンシューマ/APIキーによるAPI利⽤量 のトラッキング ✤ AWSによる⾃動化された請求処理 URL Reputation APIs Speech understanding APIs
34.
Developer Portalの⽣成 ✤ API利⽤者のためのポータルサイトを⽣成 ✤
API Gatewayで作成したAPIのリストやカタログと開発者のサインアップを 実現するサーバレスなアプリケーションを⽣成 ✤ S3のStatic Web Site Hosting機能で配信可能 ✤ https://github.com/awslabs/aws-api-gateway-developer-portal
35.
Developer ecosystem MonitoringDeploymentIntegrationsCode Libraries APN Skills
36.
Developer ecosystem Chalice Framework
37.
サーバレス個別相談会やります ✤ 1⽉12⽇(⽊)にサーバレスに関する個別技術相談会を開催します ✤ サーバレスなシステムに関するアーキテクチャ相談 ✤
1スロット、45分で7スロット受け付け予定 ✤ 要事前登録 ✤ もちろん無料 https://aws-serverless.connpass.com/event/45337/
Download