Movatterモバイル変換


[0]ホーム

URL:


Nomura Yusuke, profile picture
Uploaded byNomura Yusuke
2,455 views

AWS SDK for Haskell開発

Haskell忘年会2012で喋った

Embed presentation

Downloaded 11 times
AWS SDK for Haskell       野村裕佑
今日の結論AWS(Amazon Web Services)を操作するためのAPIライブラリを作りました スクラッチから自作 仕事でAWSを使うので仕事だと言い張って 実際に仕事で使っている                                         2
Amazon Web Services(AWS)プログラマブルデータセンター(と誰かが言ってた)EC2:サーバ(仮想マシン)、ディスク、NIC、サブネット、IPアドレス等の資源を時間課金で利用他にもサービスは色々:Storage, LB, RDB, DNS, CDN,Cache, KVS, E-Mail, Queue, Notify, MR, ...                          Instance                                     Attach                Router                 Volume                                                3
プログラマブル全てのリソースをHTTPベースのAPIで操作可能 WebのコンソールよりAPIの方が多機能 様々な言語でAPIライブラリが開発されている      Internet         Create/Delete                                  Instance                                             Attach      Attach/Detach                         Router                Volume    Modify                                                        4
AWS APIライブラリAWSが提供 Java:全機能に即座に対応する PHP:更新停滞気味(停止してるかも) CLI:便利だけど遅い(sh→Ruby→Javaと呼び出してた り)野良(?) Python:ほぼ全機能を網羅(一部テキトウだけど) Ruby:2∼3種あり、それぞれ対応してないプロダクトが .NET, Android, iOS:(わかりません) Haskellは無い(………ことはないんだけどEC2未対応)                                   5
ある日の出来事          ∼AWSを使う開発案件を前に∼seizans       今回はJavaで行こうと思います        yunomu          なんでJavaなんですか              AWSライブラリが充実してるのが                 JavaとPythonだからです           なんでHaskellじゃないんですか          ライブラリがあればHaskellにしてました          ライブラリ書けばいいじゃないですか                                hai                                           6
作りましたhackageDB: aws-sdk初リリース:2012年9月29日実装状況  EC2: 85/141(私がよく使うAPIはだいたいできた)  他プロダクト{ELB, RDS, CloudWatch}: 少々                                     7
AWS APIの構造HTTPParameterはGETのQuery String形式(一部POST/XML)AWS AccessKey/SecretAccessKeyから生成したSignatureで認証ResponseはXML          Request: (Parameter+Signature)       Response: XML or HTTP Status Code                                                  8
aws-sdk開発方針レスポンスパーサを簡単に書けるようにする API数が多いので(EC2だけで141個)できるだけAPIマニュアル通りに実装する AWSの更新が多いので、凝ると変更への追随がつらくなる 機能よりAPI数 (ドキュメント流用できないかなぁ)リソース数が膨大すぎる時の事も考える 社内事情 (気休め)                               9
Response例(DescribeInstances)<DescribeInstancesResponse xmlns='http://ec2.amazonaws.com/doc/2012-10-01/'> <requestId>fdcdcab1-ae5c-489e-9c33-4637c5dda355</requestId>   <reservationSet>    <item>     <reservationId>r-0ece705a</reservationId>     <ownerId>053230519467</ownerId>     <groupSet/>     <instancesSet>       <item>        <instanceId>i-7a00642e</instanceId>        <imageId>ami-1cd4924e</imageId>        <instanceState>          <code>16</code>          <name>running</name>        </instanceState>        <privateDnsName/>        <dnsName/>        <reason/>        <keyName>VPCKey</keyName>        <amiLaunchIndex>0</amiLaunchIndex>        <productCodes/>        <instanceType>c1.medium</instanceType>        <launchTime>2012-06-28T17:41:48.000Z</launchTime>        <placement>          <availabilityZone>ap-southeast-1b</availabilityZone>          <groupName/>          <tenancy>default</tenancy>                                           10
XMLパーサ(xml-conduit)XMLは要素がネストしている 要素の中に子要素、子要素の中に孫要素 パーサもネストしている  パーサの引数に子要素のパーサを渡すタグの外側の改行も空白も除去してくれないAttributeの有無、子要素の有無、タグの有無...書くのがとても面倒くさい                               11
Responseパーサの例(DescribeInstances)describeInstances instances filters =  ec2QuerySource "DescribeInstances" params $    itemConduit "reservationSet" $ Reservation       <$> getT "reservationId"       <*> getT "ownerId"       <*> itemsSet "groupSet" (Group          <$> getT "groupId"          <*> getT "groupName"          )       <*> itemsSet "instancesSet" (Instance          <$> getT "instanceId"          <*> getT "imageId"          <*> element "instanceState" (codeToState             <$> getT "code"             <* getT "name"             )          <*> getT "privateDnsName"          <*> getT "dnsName"          <*> getT "reason"          <*> getT "keyName"          <*> getT "amiLaunchIndex"          <*> itemsSet "productCodes" (ProductCode             <$> getT "productCode"             <*> get "type"             )          <*> getT "instanceType"          <*> getT "launchTime"                                                     12
パーサライブラリ<amiLaunchIndex>0</amiLaunchIndex><productCodes/><instanceType>c1.medium</instanceType><launchTime>2012-06-28T17:41:48.000Z</launchTime><placement>   <availabilityZone>ap-southeast-1b</availabilityZone></placement><*> getT "amiLaunchIndex"<*> itemsSet "productCodes" (ProductCode  <$> getT "productCode"  <*> get "type"  )                           data Instance = Instance<*> getT "instanceType"           { instanceId :: Text<*> getT "launchTime"             ...<*> element "placement" (Placement instanceAmiLaunchIndex :: Int                                  ,  <$> getT "availabilityZone"     , instanceProductCodes :: [ProductCode]  <*> getT "groupName"            , instanceType :: Text  <*> getT "tenancy"              , instanceLaunchTime :: UTCTime  )                               , instancePlacement :: Placement                                                                      13
今後の展開予定無し ひと通り自分が欲しい機能は作ってしまったので… (仕事したくない時用の仕事)問題 テストをあまり書いていない     現在は課金が発生しない範囲だけ書いている     API変更に追随するために本当は書かないといけない awsパッケージの存在 ver.1.0.0.0はいつにしよう 格好わるいところが色々ある……                                 14
awsパッケージとの関係実は先行例があった:AWS library for HaskellただしEC2未対応 SES, SQS, S3, SimpleDBには対応aws-sdkをHackageに登録直後に向こうの作者から連絡 「いっしょにやろうぜ」 「ごめんちょっと待って」←イマココ統合したいような面倒くさいような                                    15
今やってること自己紹介 野村裕佑(github: yunomu) 得意分野:OS, Network, サーバ管理など 株式会社ワークスアプリケーションズ ATE本部クラウド運用研究グループ 運用管理業務のことを考えて実行する仕事システム運用管理ツール開発 AWSを利用するシステムを管理する 基盤にyesodを採用(チーム全員がHaskell使えたので)                               16
派生物いろいろお勉強・実験 Conduit勉強会 http-conduitソースコード読み パーサライブラリの整備 TemplateHaskellで遊ぶaws-sdk Author希望者向けチュートリアル @daimatz さんがやりました開発者を集める @seizans さんがやってます                             17
AWS SDK for Haskell作ってますHackageDB: aws-sdkEC2をHaskellから操作できるようになりましたELB, RDS, CloudWatchも対応予定利用者, Author, Requestなど歓迎                             18

Recommended

PDF
Ansible 入門 #01 (初心者向け)
PDF
OpenStack & Ansible で実現する自動化
PDF
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
PDF
Ansible入門
PPTX
Ansible ではじめるインフラのコード化入門
 
PPT
Using Windows Azure
PDF
Ansible 2.0 のサマライズとこれから
PDF
Ansible handson ood2016
PDF
イマドキの現場で使えるJavaライブラリ事情
PDF
[東京] JapanSharePointGroup 勉強会 #2
PDF
Ansible troubleshooting 101_2021
PDF
Ansible tower 構築方法と使い方
PDF
コンテナで作れるFaaS
PDF
Webアプリケーションの パフォーマンス向上のコツ 実践編
PDF
ZabbixによるAWS監視のコツ
PDF
Ansibleを失敗しながら学ぶ その1
PPTX
Androidで使えるJSON-Javaライブラリ
PDF
OpenStack Osloを使おう - cliff編
PDF
東京Node学園#3 Domains & Isolates
PPTX
Rancher kubernetes storages
PDF
ECS for Docker Meetup #4
PDF
Reading Anorm 2.0
PDF
Ansible meetuptokyo 2015 Dynamic Inventory
PPTX
Rancher Charts Introduction
PDF
Osdt2015 saito
PDF
Deep Dive into Modules
PDF
Ansibleで味わうHelion OpenStack
PPTX
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
PDF
Programming AWS with Perl at YAPC::Asia 2013
PDF
Windows 開発者のための Dev&Ops on AWS

More Related Content

PDF
Ansible 入門 #01 (初心者向け)
PDF
OpenStack & Ansible で実現する自動化
PDF
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
PDF
Ansible入門
PPTX
Ansible ではじめるインフラのコード化入門
 
PPT
Using Windows Azure
PDF
Ansible 2.0 のサマライズとこれから
PDF
Ansible handson ood2016
Ansible 入門 #01 (初心者向け)
OpenStack & Ansible で実現する自動化
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
Ansible入門
Ansible ではじめるインフラのコード化入門
 
Using Windows Azure
Ansible 2.0 のサマライズとこれから
Ansible handson ood2016

What's hot

PDF
イマドキの現場で使えるJavaライブラリ事情
PDF
[東京] JapanSharePointGroup 勉強会 #2
PDF
Ansible troubleshooting 101_2021
PDF
Ansible tower 構築方法と使い方
PDF
コンテナで作れるFaaS
PDF
Webアプリケーションの パフォーマンス向上のコツ 実践編
PDF
ZabbixによるAWS監視のコツ
PDF
Ansibleを失敗しながら学ぶ その1
PPTX
Androidで使えるJSON-Javaライブラリ
PDF
OpenStack Osloを使おう - cliff編
PDF
東京Node学園#3 Domains & Isolates
PPTX
Rancher kubernetes storages
PDF
ECS for Docker Meetup #4
PDF
Reading Anorm 2.0
PDF
Ansible meetuptokyo 2015 Dynamic Inventory
PPTX
Rancher Charts Introduction
PDF
Osdt2015 saito
PDF
Deep Dive into Modules
PDF
Ansibleで味わうHelion OpenStack
PPTX
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
イマドキの現場で使えるJavaライブラリ事情
[東京] JapanSharePointGroup 勉強会 #2
Ansible troubleshooting 101_2021
Ansible tower 構築方法と使い方
コンテナで作れるFaaS
Webアプリケーションの パフォーマンス向上のコツ 実践編
ZabbixによるAWS監視のコツ
Ansibleを失敗しながら学ぶ その1
Androidで使えるJSON-Javaライブラリ
OpenStack Osloを使おう - cliff編
東京Node学園#3 Domains & Isolates
Rancher kubernetes storages
ECS for Docker Meetup #4
Reading Anorm 2.0
Ansible meetuptokyo 2015 Dynamic Inventory
Rancher Charts Introduction
Osdt2015 saito
Deep Dive into Modules
Ansibleで味わうHelion OpenStack
Ansibleで始めるサーバ管理勉強会(2014年10月1日)

Similar to AWS SDK for Haskell開発

PDF
Programming AWS with Perl at YAPC::Asia 2013
PDF
Windows 開発者のための Dev&Ops on AWS
PDF
クラウド開発に役立つ OSS あれこれ
PDF
AWSマイスターシリーズReloaded -AWS SDK for .NET-
PDF
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
PDF
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
PDF
[AWSマイスターシリーズ] AWS SDK for Java / .NET
PDF
AWS SDK for Android and iOS
PDF
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
PDF
20120528 aws meister-reloaded-awssd-kforjava-public
PDF
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
PDF
Amazon ec2とは何か?
PDF
Amazon Ec2
PDF
Amazon EC2
PDF
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
PDF
20120402 aws meister-reloaded-cloud-formation
PDF
AWSマイスターシリーズReloaded(AWS Cloudformation)
PDF
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
PDF
Cloud Programing for beginner
PDF
AWS Vol.1
Programming AWS with Perl at YAPC::Asia 2013
Windows 開発者のための Dev&Ops on AWS
クラウド開発に役立つ OSS あれこれ
AWSマイスターシリーズReloaded -AWS SDK for .NET-
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
CloudFormation 詳細 -ほぼ週刊AWSマイスターシリーズ第6回-
[AWSマイスターシリーズ] AWS SDK for Java / .NET
AWS SDK for Android and iOS
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
20120528 aws meister-reloaded-awssd-kforjava-public
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
Amazon ec2とは何か?
Amazon Ec2
Amazon EC2
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
20120402 aws meister-reloaded-cloud-formation
AWSマイスターシリーズReloaded(AWS Cloudformation)
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
Cloud Programing for beginner
AWS Vol.1

AWS SDK for Haskell開発


[8]ページ先頭

©2009-2025 Movatter.jp