Submit Search
Upload
AWS SDK for Haskell開発
•
4 likes
•
2,440 views
Nomura Yusuke
Follow
Haskell忘年会2012で喋った
Read less
Read more
Technology
Report
Share
Report
Share
1 of 18
Download now
Download to read offline
Recommended
Ansible handson ood2016
Ansible handson ood2016
Hideki Saito
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
Using Windows Azure
Using Windows Azure
Shinji Tanaka
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
Hideki Saito
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
Takeshi Kuramochi
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
Ansible入門
Ansible入門
Daiki Hayakawa
Recommended
Ansible handson ood2016
Ansible handson ood2016
Hideki Saito
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
Using Windows Azure
Using Windows Azure
Shinji Tanaka
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
Hideki Saito
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
Takeshi Kuramochi
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
Ansible入門
Ansible入門
Daiki Hayakawa
Rancher kubernetes storages
Rancher kubernetes storages
Tetsurou Yano
Rancher Charts Introduction
Rancher Charts Introduction
Tetsurou Yano
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
CLARA ONLINE, Inc.
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
koichik
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
ShinsukeYokota
ECS for Docker Meetup #4
ECS for Docker Meetup #4
Shinpei Ohtani
Deep Dive into Modules
Deep Dive into Modules
Hideki Saito
Osdt2015 saito
Osdt2015 saito
Hideki Saito
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
Hideki Saito
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
takezoe
Ansible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic Inventory
Hideki Saito
コンテナで作れるFaaS
コンテナで作れるFaaS
真吾 吉田
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
Yukiya Nakagawa
Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStack
Masataka Tsukamoto
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
Hideki Saito
Ansibleを失敗しながら学ぶ その1
Ansibleを失敗しながら学ぶ その1
Kazuyuki Ichikawa
Reading Anorm 2.0
Reading Anorm 2.0
Kazuhiro Sera
Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方
Hiroshi Okano
Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編
Masahiro Nagano
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public
Amazon Web Services Japan
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
崇之 清水
More Related Content
What's hot
Rancher kubernetes storages
Rancher kubernetes storages
Tetsurou Yano
Rancher Charts Introduction
Rancher Charts Introduction
Tetsurou Yano
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
CLARA ONLINE, Inc.
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
koichik
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
ShinsukeYokota
ECS for Docker Meetup #4
ECS for Docker Meetup #4
Shinpei Ohtani
Deep Dive into Modules
Deep Dive into Modules
Hideki Saito
Osdt2015 saito
Osdt2015 saito
Hideki Saito
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
Hideki Saito
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
takezoe
Ansible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic Inventory
Hideki Saito
コンテナで作れるFaaS
コンテナで作れるFaaS
真吾 吉田
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
Yukiya Nakagawa
Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStack
Masataka Tsukamoto
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
Hideki Saito
Ansibleを失敗しながら学ぶ その1
Ansibleを失敗しながら学ぶ その1
Kazuyuki Ichikawa
Reading Anorm 2.0
Reading Anorm 2.0
Kazuhiro Sera
Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方
Hiroshi Okano
Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編
Masahiro Nagano
What's hot
(20)
Rancher kubernetes storages
Rancher kubernetes storages
Rancher Charts Introduction
Rancher Charts Introduction
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
ECS for Docker Meetup #4
ECS for Docker Meetup #4
Deep Dive into Modules
Deep Dive into Modules
Osdt2015 saito
Osdt2015 saito
Ansible troubleshooting 101_2021
Ansible troubleshooting 101_2021
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
Ansible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic Inventory
コンテナで作れるFaaS
コンテナで作れるFaaS
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStack
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
Ansibleを失敗しながら学ぶ その1
Ansibleを失敗しながら学ぶ その1
Reading Anorm 2.0
Reading Anorm 2.0
Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方
Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編
Similar to AWS SDK for Haskell開発
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public
Amazon Web Services Japan
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
崇之 清水
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
seiichi arai
20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなし
Takayoshi Tanaka
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
PHP on Cloud
PHP on Cloud
Akio Katayama
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
Genta Watanabe
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
Daisuke Ikeda
OpenStack API
OpenStack API
Akira Yoshiyama
当社のawsへの取組
当社のawsへの取組
Mercari Inc.
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
TerraformでECS+ECRする話
TerraformでECS+ECRする話
Satoshi Hirayama
Inside mobage platform
Inside mobage platform
Toru Yamaguchi
Leap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみる
Tsuyoshi Seino
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
Naotaka Jay HOTTA
2010 04クラウド技術講座
2010 04クラウド技術講座
sisawa
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
Amazon Web Services Japan
沢山のスマホサービス環境を カジュアルにセキュアに運用する
沢山のスマホサービス環境を カジュアルにセキュアに運用する
Hirotomo Oi
Similar to AWS SDK for Haskell開発
(20)
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなし
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
PHP on Cloud
PHP on Cloud
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
OpenStack API
OpenStack API
当社のawsへの取組
当社のawsへの取組
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
TerraformでECS+ECRする話
TerraformでECS+ECRする話
Inside mobage platform
Inside mobage platform
Leap MotionとLambdaで「第九」を鳴らしてみる
Leap MotionとLambdaで「第九」を鳴らしてみる
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
2010 04クラウド技術講座
2010 04クラウド技術講座
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
沢山のスマホサービス環境を カジュアルにセキュアに運用する
沢山のスマホサービス環境を カジュアルにセキュアに運用する
Recently uploaded
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
Recently uploaded
(9)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS SDK for Haskell開発
1.
AWS SDK for
Haskell 野村裕佑
2.
今日の結論 AWS(Amazon Web Services)を操作するためのAPIライブ ラリを作りました
スクラッチから自作 仕事でAWSを使うので仕事だと言い張って 実際に仕事で使っている 2
3.
Amazon Web Services(AWS) プログラマブルデータセンター(と誰かが言ってた) EC2:サーバ(仮想マシン)、ディスク、NIC、サ ブネット、IPアドレス等の資源を時間課金で利用 他にもサービスは色々:Storage,
LB, RDB, DNS, CDN, Cache, KVS, E-Mail, Queue, Notify, MR, ... Instance Attach Router Volume 3
4.
プログラマブル 全てのリソースをHTTPベースのAPIで操作可能 WebのコンソールよりAPIの方が多機能 様々な言語でAPIライブラリが開発されている
Internet Create/Delete Instance Attach Attach/Detach Router Volume Modify 4
5.
AWS APIライブラリ AWSが提供 Java:全機能に即座に対応する
PHP:更新停滞気味(停止してるかも) CLI:便利だけど遅い(sh→Ruby→Javaと呼び出してた り) 野良(?) Python:ほぼ全機能を網羅(一部テキトウだけど) Ruby:2∼3種あり、それぞれ対応してないプロダクトが .NET, Android, iOS:(わかりません) Haskellは無い(………ことはないんだけどEC2未対応) 5
6.
ある日の出来事
∼AWSを使う開発案件を前に∼ seizans 今回はJavaで行こうと思います yunomu なんでJavaなんですか AWSライブラリが充実してるのが JavaとPythonだからです なんでHaskellじゃないんですか ライブラリがあればHaskellにしてました ライブラリ書けばいいじゃないですか hai 6
7.
作りました hackageDB: aws-sdk 初リリース:2012年9月29日 実装状況
EC2: 85/141(私がよく使うAPIはだいたいできた) 他プロダクト{ELB, RDS, CloudWatch}: 少々 7
8.
AWS APIの構造 HTTP ParameterはGETのQuery String形式(一部POST/XML) AWS
AccessKey/SecretAccessKeyから生成したSignatureで認証 ResponseはXML Request: (Parameter+Signature) Response: XML or HTTP Status Code 8
9.
aws-sdk開発方針 レスポンスパーサを簡単に書けるようにする API数が多いので(EC2だけで141個) できるだけAPIマニュアル通りに実装する AWSの更新が多いので、凝ると変更への追随がつらくなる
機能よりAPI数 (ドキュメント流用できないかなぁ) リソース数が膨大すぎる時の事も考える 社内事情 (気休め) 9
10.
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
11.
XMLパーサ(xml-conduit) XMLは要素がネストしている 要素の中に子要素、子要素の中に孫要素 パーサもネストしている
パーサの引数に子要素のパーサを渡す タグの外側の改行も空白も除去してくれない Attributeの有無、子要素の有無、タグの有無... 書くのがとても面倒くさい 11
12.
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
13.
パーサライブラリ <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
14.
今後の展開 予定無し ひと通り自分が欲しい機能は作ってしまったので… (仕事したくない時用の仕事) 問題
テストをあまり書いていない 現在は課金が発生しない範囲だけ書いている API変更に追随するために本当は書かないといけない awsパッケージの存在 ver.1.0.0.0はいつにしよう 格好わるいところが色々ある…… 14
15.
awsパッケージとの関係 実は先行例があった:AWS library for
Haskell ただしEC2未対応 SES, SQS, S3, SimpleDBには対応 aws-sdkをHackageに登録直後に向こうの作者から連絡 「いっしょにやろうぜ」 「ごめんちょっと待って」←イマココ 統合したいような面倒くさいような 15
16.
今やってること 自己紹介 野村裕佑(github: yunomu)
得意分野:OS, Network, サーバ管理など 株式会社ワークスアプリケーションズ ATE本部クラウド運用研究グループ 運用管理業務のことを考えて実行する仕事 システム運用管理ツール開発 AWSを利用するシステムを管理する 基盤にyesodを採用(チーム全員がHaskell使えたので) 16
17.
派生物いろいろ お勉強・実験 Conduit勉強会 http-conduitソースコード読み
パーサライブラリの整備 TemplateHaskellで遊ぶ aws-sdk Author希望者向けチュートリアル @daimatz さんがやりました 開発者を集める @seizans さんがやってます 17
18.
AWS SDK for
Haskell 作ってますHackageDB: aws-sdk EC2をHaskellから操作できるようになりました ELB, RDS, CloudWatchも対応予定 利用者, Author, Requestなど歓迎 18
Download now