ウェビナー (Web セミナー ) へようこそ!! 参加者は 自動的にミュートになっています! 質問を投げることができます! GoToWebinar の仕組みを使って 書き込んでください ただし環境によっては 日本語の直接 入 力力ができないので お 手数ですが テキストエディタ等に打ち込んでから

Similar documents
AWS Deck Template

PowerPoint Presentation

クラウド開発者のためのCloud Design Pattern 入門

PowerPoint プレゼンテーション


<4D F736F F F696E74202D2082A282DC82B382E795B782AF82C882A FC96E CF68A4A A2E >

Startup_on_AWS_usecases_StartupDay

AWS Deck Template

AWS 認定 DevOps エンジニア - プロフェッショナルサンプル試験問題 1) あなたは Amazon EBS ボリュームを使用する Amazon EC2 上で実行されているアプリケーションサーバ ー向けに 自動データバックアップソリューションを導入する業務を担当しています 単一障害点を回避し

PowerPoint Presentation

内容についての注意点! AWS クラウドのサービスは ご利利 用いただいた時間や量量により費 用が変動する従量量課 金金です そのため 事前に料料 金金確定 見見積を作成することはできない旨はご了了承ください! 特に断りがない場合 本資料料では 2014 年年 7 月 24 日現在の東京リージョンの

re:generate AWS Billing について アマゾンデータサービスジャパン株式会社 ソリューションアーキテクト 吉荒祐 一 舟崎健治平 山毅 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not b

PowerPoint プレゼンテーション

そこが知りたい!AWSクラウドのセキュリティ

今更聞けない AWS クラウド入門

AWS Client VPN - ユーザーガイド

PowerPoint Presentation

Leveraging Cloud Computing to launch Python apps

SIOS Protection Suite for Linux v9.3.2 AWS Direct Connect 接続クイックスタートガイド 2019 年 4 月

目次! 本資料料の対象! はじめに! AWSを利利 用したスケーラブルな構成! ご利利 用料料 金金イメージ! まとめ! ご参考情報! 関連資料料

はじめてみよう AWS ~これだけでわかる、できる、AWS のコアサービスを活用した基本のシステム構成~

企業 IT を支える AWS クラウドプラットフォームとre:Invent 2015 発表 新サービス・機能 update ~ここから始めるクラウド化、ベスト・プラクティスのご紹介~

よくある問題を解決する~ 5 分でそのままつかえるソリューション by AWS ソリューションズビルダチーム

PowerPoint Presentation

Slide 1

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

storage-sdk-Java

数字で見る AWS 190 か国で 100 万を超えるアクティブなお客様日本で 2 万を超えるお客様 120 億ドルのビジネス規模 (2016 見込み ) 昨年度比で 58% の増加 16 地域に 42 のデータセンター群 2006 年のビジネス開始以降 60 回の値下げ 2016 年には約 1,0

D. Amazon EC2 のインスタンスストアボリュームへ 1 時間ごとに DB のバックアップ取得を行うと共に Amazon S3 に 5 分ごとのトランザクションログを保管する 正解 = C 会社のマーケティング担当ディレクターから " 何気ない親切 " と思われる善行を目にしたら 80 文字

PowerPoint プレゼンテーション

AWS Well-Architected フレームワークによるクラウド ベスト プラクティス

利用者

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

スライド 1

FileMaker Cloud App FileMaker Pro FileMaker Go FileMaker WebDirect App FileMaker Cloud Amazon Web Services (AWS) Marketplace AWS FileMaker Server File

スライド 1

1 ユーザ認証を受けた権限で アプリケーションを利用するために ログインプロキシにアクセスします 2 ログインプロキシにより Shibboleth SP から Shibboleth IdP の認証画面にリダイレクトされます 3 ブラウザに認証画面を表示します 4 認証画面にユーザ / パスワードを入

AWS 上でのサーバーレスアーキテクチャ 入 門 AWS Black Belt Online Seminar 2016 アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト清 水崇之 , Amazon Web Services, Inc. or its Aff

PowerPoint Presentation

Hundreds of Thousands of Customers in 190 Countries

Presentation Title Here

PowerPoint Presentation

AWSの最新テクノロジー動向 - AWS最大のユーザーカンファレンス AWS reInvent速報 -

Sinatra と MongoDB 今回は Sinatra で MongoDB の操作を体験してみます 進捗に合わせて ドライバから Ruby で使える便利な ORM の紹介をします

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

モバイルアプリを Azure で作る - データを扱う Azure Storage を利 してデータを保存する 本稿では PHP と Windows Azure を使って 画像などのファイルを扱うアプリケーションを開発する方法を説明します Windows Azure Platform では データの

スライド 1

PowerPoint プレゼンテーション

AWS の運用監視入門 (AWS CloudWatch)

JavaもJava Scriptも! コンテナ型アプリケーション開発PaaS登場

Amazon Route53

intra-mart Accel Platform — OData for SAP HANA セットアップガイド   初版  

HeartCoreインストールマニュアル(PHP版)

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

(Microsoft PowerPoint Android\202\314\211\357.pptx)

ksocket Documentation

PowerPoint Presentation

AWS からのメール配信の選択肢 1. EC2 上に Mail Transfer Agent (MTA) を構築して配信 2. Amazon Simple Service (SES) の利利 用 3. 外部 配信サービスの利利 用 3. については AWS 特有の 手順はない

HeartCore(PHP 版 ) インストール手順について説明いたします なお 本資料は 例として下記内容を前提として説明しております 環境情報 対象 OS: Linux ( ディストリビューション : Red Hat Enterprise Linux Server) APサーバ : Apache

AWS Black Belt Tech Webinar 2016 AWSJのTechメンバがAWSのプロダクトを 深堀りして解説するWebセミナー サービスの概要 使いどころの説明 アップデートのキャッチアップ 毎週水曜 18 19時 申し込みサイト

PowerPoint Presentation

PowerPoint Presentation

IBM 次世代クラウド・プラットフォーム コードネーム “BlueMix”ご紹介

Alibaba Cloud [ ナレッジドキュメント ] AWS EC2 から Alibaba Cloud ECS へのマイグレーション手順 (Linux 版 ) AWS EC2 から Alibaba Cloud ECS への マイグレーション手順 (Linux 版 ) Ver

Alibaba Cloud [ ナレッジドキュメント ] AWS EC2 から Alibaba Cloud ECS へのマイグレーション手順 (Linux 版 ) AWS EC2 から Alibaba Cloud ECS へのマイグレーション手順 (Linux 版 ) Ver SB

DragonDisk

3 top#index 1 web router.ex web/router.ex 12 scope "/", NanoPlanner do 13 pipe_through browser get "/", TopController, index 16 end URL / to

SmartBrowser_document_build30_update.pptx

AWS Deck Template

2014 QBR: Campaign Marketing

IBM Sametime 9 構成とアプリ開発 - テクてく Lotus 技術者夜会 年年 7 月 25 日 東京ソフトウェア開発研究所第 一 ECM 製品開発 小野充志 日本アイ ビー エム株式会社 ICS 事業部 ICS 第 一テクニカルセールス 別当類 2014 IBM Corp

6 (1) app.html.eex 28 lib/nano_planner_web/templates/layout/app.html.eex 27 <footer> Oiax Inc <%= this_year() %> Oiax Inc. 29 </footer>

WebEx を使用したリモート調査とは お客様のデスクトップ画面を共有し 障害調査を共同で実施するサービスです リモート調査は 精度の高い調査により 障害の早期解決を図るために実施します 対象の機器にアクセスできる中継端末をご用意頂く必要があります インターネット接続が可能な中継端末を経由して調査を

Alibaba Cloud [ ナレッジドキュメント ] AWS S3 から AlibabaCloud OSS へのマイグレーション手順 AWS S3 からAlibaba Cloud OSS への マイグレーション手順 Ver SB Cloud Corp Al

デモで理解する Facebook アプリ開発のポイント シグマコンサルティング ( 株 ) 菅原英治

Microsoft Word - AWSBlueprint final.docx

今更聞けない AWS クラウド入門

クラウドネイティブサービスのご紹介 〜高い可用性と拡張性をリーズナブルに今すぐ実現〜

Microsoft PowerPoint - グリッド協議会GT4演習資料_2007_配布用

+ Octopress + GitHubPages でブログを作成 Name: さりんじゃー

2

Agenda! ストレージサービス概要! Instance Store (Ephemeral Disk)! Elastic Block Store! 使い分けの実践編 2

スライド 0

IBM Bluemix で WordPress 無料の WordPress 環境を構築する 1

FUJITSU Cloud Service for OSS CF サービス仕様書

PowerPoint Presentation

Slide 1

Microsoft Word - tutorial3-dbreverse.docx

(GitHub, Twitter) 由来 :m.yokoyama 発音例 :myokoyamaa ソフトウェア開発者将棋指し ( アマ三段 )

PacnetでAPACをカバーする アマゾンのクラウドサービス

AWS で実現するセキュリティ・オートメーション

lifedesign_contest_No3

Agenda! Amazon Web Services (AWS)の 概 要! 大 規 模 分 散 システム AWS の 使 い 方 Asynchronous IO Retries with Exponential Backoff Idempotency Eventual Consistency!

Android Layout SDK プログラミング マニュアル

Lightweight LanguageのIPv6対応PHP5編

JEB Plugin 開発チュートリアル 第4回

TALON Tips < 親子関係のある構成データを TALON で表示する > 株式会社 HOIPOI 第 1.1 版 p. 1

Webhard_Users manual

intra-mart Accel Platform

TestDesign for Web

Transcription:

re:generate AWS マイスターシリーズ AWS SDK for PHP & AWS SDK for Ruby & boto(python) & JavaScript in Node.js 2013.12.20 アマゾンデータサービスジャパン株式会社 ソリューションアーキテクト 今井榎並蒋 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc.

ウェビナー (Web セミナー ) へようこそ!! 参加者は 自動的にミュートになっています! 質問を投げることができます! GoToWebinar の仕組みを使って 書き込んでください ただし環境によっては 日本語の直接 入 力力ができないので お 手数ですが テキストエディタ等に打ち込んでから コピペしてください 最後の Q&A の時間で できるだけ回答させて頂きます 書き込んだ質問は 主催者にしか 見見えません! Twitter のハッシュタグは #jawsug でどうぞ 2 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc.

Web セミナー 週刊 AWS マイスターシリーズ re:generate!! AWS マイスターシリーズ 12 月4 日 AWS re:invent アップデート振り返り 12 月11 日 AWS SDK for Java/.Net 申し込みサイト http://aws.amazon.com/jp/event_ schedule/ 過去資料料集 http://aws.amazon.com/jp/aws- meister/ 3

Agenda! AWS SDK 概要! AWS SDK for PHP! boto(python)! AWS SDK for Ruby! AWS SDK for JavaScript in Node.js! まとめ 4

AWS SDK 概要

AWS SDK の重要性! AWS はプログラマブルなインフラ プログラムから扱うためには SDK が必要 ほぼすべてのサービスはマネジメントコンソールから利利 用できるが 自動化しようと思ったらプログラムから扱うのが必須 自動化すると AWS は何倍も便便利利になる! 代表的な 用途 インフラ構築 / 運 用の 自動化 EC2 や RDS を上げたり下げたり CloudFormation でスタックをデプロイしたり アプリケーション的なサービスの利利 用 S3 にデータをアップしたり DynamoDB や SQS にデータ 入れたり出したり

AWS SDK! AWS のサービスは HTTP/HTTPS で REST/SOAP 形式の API をサポート 例例えば EC2 : Start/Stop/Terminate S3 : GetObject/PutObject DynamoDB : Get/Put! SDK はこれらの API を抽象化し 各 言語からの利利 用を 非常に簡単にしてくれる Your code AWS SDK API 7 EC2 S3 その他サービス

AWS SDK! 下記の 言語 / 環境で提供中 Java Python PHP.NET Ruby JavaScript in nodejs JavaScript in the Browser ios Android

AWS SDK! 今回は下記についてお話します Java Python PHP.NET Ruby JavaScript in Node.js JavaScript in the Browser ios Android

AWS SDK の使い 方! 必要な 言語の SDK をインストール 言語ごとにインストール 方法が異異なります このあとの章で 言語ごとに解説します! Credential(AWS API の認証情報 ) を 用意する! ファクトリーメソッドを利利 用してサービス ( 例例えば S3) のクライアントオブジェクトを 生成 このときに Credential を渡す! クライアントオブジェクトのメソッドを使ってオペレーション ( 例例えば PutObject)! 言語によってはより 高度度に抽象化されている SDK もあります

Credential の取り扱い! Credential の取り扱いについてはいくつかのやり 方がありますが IAM Role もしくは環境変数を使うのがオススメです PHP を例例にそれぞれの実装 方法をご案内します! コード内に直接埋め込むパターン ( コード内に Credential が 入り込んでしまうのでやっちゃダメなパターン ) <?php $s3client = S3Client::factory(array( 'key' => 'your- aws- access- key- id', 'secretʻ => 'your- aws- secret- access- key', ));

Credential の取り扱い! config ファイルで Credential を設定するパターン PHP と boto ではこの 方法が提供されている これも Credential がファイル化されるので良良くないパターン $ vim aws- config.php <?php return array( 'includes' => array('_ aws'), 'services' => array( 'default_ settings' => array( 'params' => array( 'key' => 'your- access- key- id', 'secret' => 'your- secret- access- key',) ) ) ); $ vim sample.php <?php $aws = Aws::factory(ʻ aws- config.php'); $s3client = $aws- >get('s3');

Credential の取り扱い! 環境変数で Credential を設定するパターン AWS_ ACCESS_ KEY_ ID, AWS_ SECRET_ KEY という環境変数を実 行行ユーザーで設定しておくことによってコードから Credential を追い出せる $ export AWS_ ACCESS_ KEY_ ID="your- aws- access- key- id" $ export AWS_ SECRET_ KEY="your- aws- secret- access- key $vim sample.php <?php $s3client = S3Client::factory();

Credential の取り扱い! IAM Role で Credential を設定するパターン コードが動くのが EC2 上であれば IAM Role を使うことによって EC2 自体に AWS API へのアクセス権限を付与できる よってコードや環境変数に Credential を持たせずに済む 例例えば S3 フルアクセスの権限を持った IAM Role を作成して EC2 にその Role を 割り当てると

Credential の取り扱い! IAM Role で Credential を設定するパターン 前のページのように S3 アクセス権限を持った Role を EC2 に割り当てると 下記を書くだけで利利 用可能 $vim sample.php <?php $s3client = S3Client::factory(); これは SDK が内部で STS(Security Token Service) を利利 用しており AccessKey,SecretAccessKey,Token を 自動的に

AWS SDK for PHP

AWS SDK for PHP! Amazon 提供の AWS 開発 用の PHP 向け SDK! 現在は Version2! http://aws.amazon.com/jp/sdkforphp/! 環境 :PHP5.3.3 以降降! Guzzle HTTP Client framework 上で構築されている! 依存 Extension curl

操作可能サービス Direct Connect Elasticache IAM EC2 SimpleDB OpsWorks ELB S3 Elastic Transcoder Auto Scaling Glacier SQS EMR CloudFront SNS Route53 Storage Gateway SES VPC Import/Export SWF DynamoDB Elastic Beanstalk CloudSearch RDS Cloud Formation Redshift Cloud Watch

利利 用 方法! Composer によるインストール ( 推奨 ) http://docs.aws.amazon.com/aws- sdk- php/guide/latest/ installation.html#installing- via- composer! Phar よるインストール http://docs.aws.amazon.com/aws- sdk- php/guide/latest/ installation.html#installing- via- phar! Zip ファイルからインストール http://docs.aws.amazon.com/aws- sdk- php/guide/latest/ installation.html#installing- via- zip! PEAR によるインストール http://docs.aws.amazon.com/aws- sdk- php/guide/latest/ installation.html#installing- via- pear

初期設定! インストール 方法により以下のとおり異異なります インストール方法 Composer Phar Zip PEAR インクルード require '/path/to/vendor/autoload.php'; require '/path/to/aws.phar'; require '/path/to/aws-autoloader.php'; 'AWSSDKforPHP/aws.phar';! コンフィグレーションファイルの設定 クレデンシャル情報などを設定可能 factory() の引数として指定することも可能 ʻ src/aws/common/resources/aws- config.phpʼ を参考に追加

サンプル :S3 - putobject API 仕様 : http://docs.aws.amazon.com/aws- sdk- php/latest/class- Aws.S3.S3Client.html#_ putobject <?php require '/path/to/vendor/autoload.php'; use Aws\Common\Aws; use Aws\S3\Exception\S3Exception; try { $client = S3Client::factory; $bucket = ʼ your_ bucket'; $file = 'test.txt'; 1 $result = $client- >putobject(array( 'Bucket' => $bucket, 'Key' => $file, 'Body' => fopen($file, 'r'), )); // 結果表 示 var_ dump($result); } catch (S3Exception $e) { echo '*** Error ***'. "\n"; echo $e- >getmessage(); } 2 1 S3 クライアント作成 2 putobject 実 行行 Bucket を指定 Key は ファイル名 Body にアップロードするファイルストリームを指定 (*) 事前に Bucket が作成されている必要があります

サンプル :S3 - getobject API 仕様 : http://docs.aws.amazon.com/aws- sdk- php/latest/class- Aws.S3.S3Client.html#_ getobject <?php require '/path/to/vendor/autoload.php'; use Aws\Common\Aws; use Aws\S3\Exception\S3Exception; try { $client = S3Client::factory;1 $bucket = ʼ your_ bucket'; $file = 'test.txt'; $result = $client- >getobject(array( 'Bucket' => $bucket, 'Key' => $file, )); // 結果表 示 3 echo $result['body']; } catch (S3Exception $e) { echo '*** Error ***'. "\n"; echo $e- >getmessage(); } 2 1 S3 クライアント作成 2 getobject 実 行行 Bucket を指定 Key は ファイル名 3 取得したコンテンツを表 示 (*) 事前に Bucket が作成されている必要があります

サンプル :SQS - sendmessage API 仕様 : http://docs.aws.amazon.com/aws- sdk- php/latest/class- Aws.Sqs.SqsClient.html#_ sendmessage <?php require '/path/to/vendor/autoload.php'; use Aws\Common\Aws; use Aws\Sqs\Exception\SqsException; try { $client = SqsClient::factory; 1 $queueurl = 'https://yourqueue'; $result = $client- >sendmessage(array( 2 'QueueUrl' => $queueurl, 'MessageBody' => 'Send Message!', )); // 結果表 示 var_ dump($result); } catch (SqsException $e) { echo '*** Error ***'. "\n"; echo $e- >getmessage(); } 1 SQS クライアント作成 2 sendmessage 実 行行 QueueURL を指定 送りたいメッセージを指定 (*) 事前に Queue が作成されている必要があります

サンプル :SQS - receivemessage API 仕様 : http://docs.aws.amazon.com/aws- sdk- php/latest/class- Aws.Sqs.SqsClient.html#_ receivemessage <?php require '/path/to/vendor/autoload.php'; use Aws\Common\Aws; use Aws\Sqs\Exception\SqsException; try { $client = SqsClient::factory; 1 $queueurl = 'https://yourqueue'; $result = $client- >receivemessage(array( 'QueueUrl' => $queueurl, )); // 結果表 示 var_ dump($result); } catch (SqsException $e) { echo '*** Error ***'. "\n"; echo $e- >getmessage(); } 2 1 コンフィグを指定してインスタンス作成 2 SQS クライアント作成 3 receivemessage 実 行行 QueueURL を指定 (*) 事前に Queue が作成されている必要があります

サンプル :DynamoDB - putitem API 仕様 : http://docs.aws.amazon.com/aws- sdk- php/latest/class- Aws.DynamoDb.DynamoDbClient.html#_ putitem <?php require '/path/to/vendor/autoload.php'; use Aws\Common\Aws; use Aws\DynamoDb\Exception\DynamoDbException; try { $client = DynamoDbClient::factory; 1 $result = $client- >putitem(array( 'TableName' => ʼ table_ name', 'Item' => $client- >formatattributes(array( 2 ʼ id' => 100, 'timestamp' => 130699342, 'message' => 'Good Morning.', )), )); // 結果表 示 var_ dump($result); } catch (DynamoDbException $e) { echo '*** Error ***'. "\n"; echo $e- >getmessage(); } 1 DynamoDB クライアント作成 2 putitem 実 行行 - TableName: テーブル名 - Item: Putするアイテムを指定 ( 例例 ) id : Hash Key timestamp : Range Key message : Attribute (*) 事前に Table が作成されている必要があります

サンプル :DynamoDB - getitem API 仕様 : http://docs.aws.amazon.com/aws- sdk- php/latest/class- Aws.DynamoDb.DynamoDbClient.html#_ getitem <?php require '/path/to/vendor/autoload.php'; use Aws\Common\Aws; use Aws\DynamoDb\Exception\DynamoDbException; try { $client = DynamoDbClient::factory; $result = $client- >getitem(array( 'ConsistentRead' => true, 'TableName' => 'table_ name', 'Key' => array( ʼ id' => array('n' => '100'), 'timestamp' => array('n' => '130699342') ) )); // 結果表 示 var_ dump($result); } catch (DynamoDbException $e) { echo '*** Error ***'. "\n"; echo $e- >getmessage(); } 1 2 1 DynamoDB クライアント作成 2 getitem 実 行行 - TableName: テーブル名 - Key:GetするアイテムのKey を指定 ( 例例 ) id : Hash Key timestamp : Range Key (*) 事前に Table が作成されている必要があります

活 用法! PHP アプリのバックエンドストレージ呼び出し DynamoDB,SQS,S3 を簡単に呼び出し可能! PHP ベースのアプリケーションの拡張 Wordpress や EC- Cube などの PHP ベースのアプリケーションと AWS の連携! 独 自の管理理 用 Web インターフェースの作成 定型作業を簡略略化したり 管理理を容易易にするための独 自 Web インターフェースの作成

PHP 版 SDK の便便利利なクラス! DynamoDBSessionHandler! DynamoDB を使った HTTP のセッション共有が可能 EC2 DynamoDB ELB EC2 EC2 速い消えない管理不要

DynamoDBSessionHandler の利利 用 <?php require '/home/ec2- user/vendor/autoload.php'; use Aws\Common\Aws; use Aws\DynamoDb\Exception\DynamoDbException; use Aws\DynamoDb\DynamoDbClient; use Aws\DynamoDb\Session\SessionHandler; $aws = Aws::factory(ʼ aws- config.php'); $client = $aws- >get('dynamodb'); try { $sessionhandler = SessionHandler::factory(array( 'dynamodb_ client' => $client, 'table_ name' => 'sessions', )); $sessionhandler- >register(); } catch (DynamoDbException $e) { echo '*** Error ***'. "\n"; echo $e- >getmessage(); } session_ start(); // セッションにデータ登録 $_ SESSION['username'] = 'jeremy'; $_ SESSION['role'] = 'admin'; session_ commit();

boto(python)

boto とは! Python 用の AWS SDK のデファクトスタンダード! 最新版は 2.19.0 (2013 年年 12 月現在 )! Python 2.6.6, 2.7.3 on Mac OSX and Ubuntu Maverick で動作確認している! Python 2.5 での互換性もなるべく考慮しているが保証外! Python 3.x 版は Developer Preview 中

操作可能サービス Direct Connect Elasticache IAM EC2 SimpleDB OpsWorks ELB S3 Elastic Transcoder Auto Scaling Glacier SQS EMR CloudFront SNS Route53 Storage Gateway SES VPC Import/Export SWF DynamoDB Elastic Beanstalk CloudSearch RDS Cloud Formation Data Pipeline Redshift Cloud Watch CloudTrail FPS EBS

boto に関するリソース! ソースコードリポジトリ https://github.com/boto/boto! PyPI http://pypi.python.org/pypi/boto! オンラインドキュメント http://docs.pythonboto.org/! IRC http://webchat.freenode.net/?channels=boto 2012 2013 Amazon.com, Inc. and its affiliates. All All rights rights reserved. reserved. May May not be not copied, be copied, modified modified or distributed or distributed in whole or in in whole part without or in part the express without consent the express of Amazon.com, consent of Inc. Amazon.com, Inc.

インストール $ pip install boto 2012 2013 Amazon.com, Inc. and its affiliates. All All rights rights reserved. reserved. May May not be not copied, be copied, modified modified or distributed or distributed in whole or in in whole part without or in part the express without consent the express of Amazon.com, consent of Inc. Amazon.com, Inc.

初期設定! 設定ファイルの作成! /etc/boto.cfg - グローバルな設定を記述! ~ /.boto ユーザー毎の設定を記述 [Boto] debug = 0 num_ retries = 10 [DynamoDB] region = ap- northeast- 1 2012 2013 Amazon.com, Inc. and its affiliates. All All rights rights reserved. reserved. May May not be not copied, be copied, modified modified or distributed or distributed in whole or in in whole part without or in part the express without consent the express of Amazon.com, consent of Inc. Amazon.com, Inc.

サンプル :S3 set_ contents_ from_ string >>> from boto.s3.connection import S3Connection >>> conn = S3Connection() >>> bucket_ name = yourbucket" >>> bucket = conn.get_ bucket(bucket_ name) >>> from boto.s3.key import Key >>> k = Key(bucket) >>> k.key = "test.txt" >>> k.set_ contents_ from_ string("hello World!") (*) 事前に Bucket が作成されている必要があります

サンプル :S3 get_ contents_ as_ string >>> from boto.s3.connection import S3Connection >>> conn = S3Connection() >>> bucket_ name = "yourbucket" >>> bucket = conn.get_ bucket(bucket_ name) >>> from boto.s3.key import Key >>> k = Key(bucket) >>> k.key = "test.txt" >>> k.get_ contents_ as_ string() (*) 事前に Bucket が作成されている必要があります

サンプル :SQS write >>> import boto.sqs >>> conn = boto.sqs.connect_ to_ region("ap- northeast- 1") >>> q = conn.get_ queue('yourqueue') >>> from boto.sqs.message import Message >>> m = Message() >>> m.set_ body('hello World!!') >>> q.write(m) (*) 事前に Queue が作成されている必要があります

サンプル :SQS get_ messages >>> import boto.sqs >>> conn = boto.sqs.connect_ to_ region("ap- northeast- 1") >>> q = conn.get_ queue('yourqueue') >>> rs = q.get_ messages() >>> m = rs[0] >>> m.get_ body() 'Hello World!!' (*) 事前に Queue が作成されている必要があります

サンプル :DynamoDB putitem >>> from boto.dynamodb2.items import Item >>> from boto.dynamodb2.table import Table >>> table = Table('table_ name') >>> item = Item(table, data={... ʼ id': 100,... 'timestamp': 130699342,... 'message' : 'Good Morning.',... }) >>> item.save() True (*) 事前に Table が作成されている必要があります

サンプル :DynamoDB getitem >>> from boto.dynamodb2.table import Table >>> table= Table('table_ name') >>> item = table.get_ item(id=100,timestamp=130699342) >>> print item['message'] Good Morning. (*) 事前に Table が作成されている必要があります

その他 Tips! AWS コマンドラインインタフェース (CLI) も boto を 一部利利 用している

AWS SDK for Ruby

AWS SDK for Ruby とは! Amazon 提供の AWS 開発 用の Ruby 向け SDK! 現在のバージョン Version 1 (stable) Version 2 (developer preview)! http://aws.amazon.com/sdkforruby/! 環境 :Ruby 1.8.7 以降降

操作可能サービス Direct Connect Elasticache IAM EC2 SimpleDB OpsWorks ELB S3 Elastic Transcoder Auto Scaling Glacier SQS EMR CloudFront SNS Route53 Storage Gateway SES VPC Import/Export SWF DynamoDB Elastic Beanstalk CloudSearch RDS Cloud Formation Data Pipeline Redshift Cloud Watch

! Ruby 環境のセットアップ Rbenv を利利 用する 利利 用 方法 https://github.com/sstephenson/rbenv RVM を利利 用する https://rvm.io/! aws- sdk gem をインストール $ gem install aws- sdk

設定の初期化! デフォルトのリージョンをセッティング require 'awsʼ AWS.config({ :region => ʻ YOUR_ DEFAULT_ REGIONʼ })

サンプル :S3 - write API 仕様 : http://docs.aws.amazon.com/awsrubysdk/latest/aws/s3/s3object.html#write- instance_ method #!/usr/bin/env ruby require 'aws' 1 AWS.config({ :access_ key_ id => ENV['AWS_ ACCESS_ KEY_ ID'], :secret_ access_ key => ENV['AWS_ SECRET_ ACCESS_ KEY'], :region => ENV['AWS_ REGION'] }) 2 s3 = AWS::S3.new bucket = s3.buckets['your- bucket'] obj = bucket.objects['key'] obj.write(pathname.new('/path/to/file.txt')) 3 1 コンフィグを指定 2 S3 クライアント作成し bucket や key を指定 3 put する file 名を指定し s3 に put (*) 事前に Bucket が作成されている必要があります

サンプル :S3 - read API 仕様 : http://docs.aws.amazon.com/awsrubysdk/latest/aws/s3/s3object.html#read- instance_ method #!/usr/bin/env ruby require 'aws' AWS.config({ :access_ key_ id => ENV['AWS_ ACCESS_ KEY_ ID'], :secret_ access_ key => ENV['AWS_ SECRET_ ACCESS_ KEY'], :region => ENV['AWS_ REGION'] }) s3 = AWS::S3.new bucket = s3.buckets['your- bucket'] obj = bucket.objects['key'] obj.read do chunk puts chunk #=> data of s3://your- bucket/key end 1 2 3 1 コンフィグを指定 2 S3 クライアント作成し bucket や key を指定 3 s3 にある object のデータを取得 (*) 事前に Bucket が作成されている必要があります

サンプル :SQS send_ message API 仕様 : http://docs.aws.amazon.com/awsrubysdk/latest/aws/sqs/ Client.html#send_ message- instance_ method #!/usr/bin/env ruby require 'aws' require 'pp' AWS.config({ :access_ key_ id => ENV['AWS_ ACCESS_ KEY_ ID'], :secret_ access_ key => ENV['AWS_ SECRET_ ACCESS_ KEY'], :region => ENV['AWS_ REGION'] }) sqs = AWS::SQS.new queue_ url = 'https://your_ queue' result = sqs.client.send_ message({ :queue_ url => queue_ url, :message_ body => 'Send Message!' }) pp result 1 2 3 1 コンフィグを指定 2 SQS クライアント作成 3 send_ message 実 行行 queue_ url を指定 送りたいメッセージを指定 (*) 事前に Queue が作成されている必要があります

サンプル :SQS receive_ message API 仕様 : http://docs.aws.amazon.com/awsrubysdk/latest/aws/sqs/ Client.html#receive_ message- instance_ method #!/usr/bin/env ruby require 'aws' require 'pp' AWS.config({ :access_ key_ id => ENV['AWS_ ACCESS_ KEY_ ID'], :secret_ access_ key => ENV['AWS_ SECRET_ ACCESS_ KEY'], :region => ENV['AWS_ REGION'] }) sqs = AWS::SQS.new queue_ url = 'https://your_ queue' result = sqs.client.receive_ message({ :queue_ url => queue_ url }) pp result 1 2 3 1 コンフィグを指定 2 SQS クライアント作成 3 receive_ message 実 行行 queue_ url を指定 (*) 事前に Queue が作成されている必要があります

サンプル :DynamoDB put_ item API 仕様 : http://docs.aws.amazon.com/awsrubysdk/latest/aws/dynamodb/client.html#put_ item- instance_ method #!/usr/bin/env ruby require 'aws' require 'pp' AWS.config({ :access_ key_ id => ENV['AWS_ ACCESS_ KEY_ ID'], :secret_ access_ key => ENV['AWS_ SECRET_ ACCESS_ KEY'], :region => ENV['AWS_ REGION'] }) client = AWS::DynamoDB::Client.new result = client.put_ item({ :table_ name => 'table_ nameʼ, :item => { 'id' => {:n => '100'}, 'timestamp' => {:n => '130699342'}, 'message' => {:s => 'Good Morning'} } }) pp result #=> {"ConsumedCapacityUnits"=>1.0} 1 2 3 1 コンフィグを指定 2 DynamoDB クライアント作成 3 put_ item 実 行行 - :table_ name: テーブル名 - :item: Putするアイテムを指定 ( 例例 ) id : Hash Key timestamp : Range Key message : Attribute (*) 事前に Table が作成されている必要があります

サンプル :DynamoDB get_ item API 仕様 : http://docs.aws.amazon.com/awsrubysdk/latest/aws/dynamodb/client.html#get_ item- instance_ method #!/usr/bin/env ruby require 'aws' require 'pp' AWS.config({ :access_ key_ id => ENV['AWS_ ACCESS_ KEY_ ID'], :secret_ access_ key => ENV['AWS_ SECRET_ ACCESS_ KEY'], :region => ENV['AWS_ REGION'] }) client = AWS::DynamoDB::Client.new result = client.get_ item({ :consistent_ read => true, :table_ name => 'table_ name', :key => { :hash_ key_ element => {:n => '100'}, :range_ key_ element => {:n => '130699342'} } }) pp result #=> {"Item"=>{"id"=>{"N"=>"100"}, "message"=>{"s"=>"good Morning"}, "timestamp"=>{"n"=>"130699342"}}, "ConsumedCapacityUnits"=>1.0} 1 2 3 1 コンフィグを指定 2 DynamoDB クライアント作成 3 get_ item 実 行行 - :table_ name テーブル名 - :consistent_ read 一貫性 - :key GutするKeyを指定 ( 例例 ) id : Hash Key timestamp : Range Key (*) 事前に Table が作成されている必要があります

その他 Tips! 新しい Ruby SDK (version 2) Developer Preview バリデーション ドキュメント 拡張性など改善 プラグイン 方式をとっている Ruby 1.9 以降降が必須! 以下のように利利 用可能 $ gem install aws- sdk- core AWS::DynamoDB.new(api_ version: ʻ 2012-08- 10ʼ ) Re:Invent で発表された新 Ruby SDK のスライドはおすすめ

その他 Tips! Rails のセッションを DynamoDB に保存 スケーラブルかつ耐障害に優れたセッションストア Rails 3.x か 4.x から利利 用可能 Rack ベースのアプリも利利 用可能! 以下の 手順で利利 用可能 gem ʻ aws- sessionstore- dynamodbʼ $ bundle install 参考 :https://github.com/aws/aws- sessionstore- dynamodb- ruby

AWS SDK for JavaScript in Node.js

AWS SDK for JavaScript in Node.js とは! Amazon 提供の AWS 開発 用の node.js 環境で動く JavaScript 向け SDK http://aws.amazon.com/sdkfornodejs/

操作可能サービス Direct Connect Elasticache IAM EC2 SimpleDB OpsWorks ELB S3 Elastic Transcoder Auto Scaling Glacier SQS EMR CloudFront SNS Route53 Storage Gateway SES VPC Import/Export SWF DynamoDB Elastic Beanstalk CloudSearch RDS Cloud Formation Data Pipeline Redshift Cloud Watch

利利 用 方法! Node.js 環境のセットアップ OS のパッケージマネージャーで npm をインストール Mac の場合 : $ brew install npm! aws- sdk package をインストール $ npm install aws- sdk

サンプル :S3 - putobject var AWS = require('aws- sdk'); var fs = require('fs'); var s3 = new AWS.S3(); 1 var bodystream = fs.createreadstream( '/path/ 2 to/file.txt' ); var params = { Bucket: 'your- bucket', Key: 'key', Body: bodystream }; s3.putobject(params, function(err, data) { 3 if (err) console.log(err); else console.log("successfully uploaded."); }); 1 S3 クライアント作成 2 put 時の引数 Bucket: s3 bucket Key: s3 key Body: 実際のデータ 3 S3 へ PUT (*) 事前に Bucket が作成されている必要があります

サンプル :S3 - getobject var AWS = require('aws- sdk'); var fs = require('fs'); var s3 = new AWS.S3(); var params = { Bucket: ʼ your- bucket', Key: ʼ key' }; s3.getobject(params, function(err, data) { if (err) console.log(err); else console.log(data.body.tostring()); }); 1 2 3 1 S3 クライアント作成 2 gut 時の引数 Bucket: s3 bucket Key: s3 key 3 S3 からデータ取得 (*) 事前に Bucket が作成されている必要があります

サンプル :SQS - sendmessage var AWS = require('aws- sdk'); var fs = require('fs'); var s3 = new AWS.SQS(); 1 var params = { 2 QueueUrl: 'https://your_ queue', MessageBody: 'Send Message!' } sqs.sendmessage(params, function(err, data) { if (err) console.log(err); else console.log("successfully sent."); }) 1 SQS クライアント作成 2 queue_ url を指定 送りたいメッセージを指定 3 sendmessage 実 行行 (*) 事前に Queue が作成されている必要があります

サンプル :SQS - receivemessage var AWS = require('aws- sdk'); var fs = require('fs'); var s3 = new AWS.SQS(); 1 var params = { QueueUrl: 'https://your_ queueʼ 2 } sqs.receivemessage(params, function(err, data) { 3 if (err) console.log(err); else console.log(data); }) 1 SQS クライアント作成 2 queue_ url を指定 3 receivemessage 実 行行 (*) 事前に Queue が作成されている必要があります

サンプル :DynamoDB putitem var AWS = require('aws- sdk'); var fs = require('fs'); var ddb = new AWS.DynamoDB(); var params = { TableName: 'my_ table', Item: { 'id': {N: ʻ 100'}, 'timestamp': {N: '130699342'}, 'message': {S: 'Good Morning'} } }; ddb.putitem(params, function(err, data) { if (err) console.log(err); else console.log(data); }); 1 2 3 1 DynamoDB クライアント作成 2 パラメータ指定 - :TableName: テーブル名 - :Item: Putするアイテムを指定 ( 例例 ) id : Hash Key timestamp : Range Key message : Attribute 3 Put 実 行行 (*) 事前に Table が作成されている必要があります

サンプル :DynamoDB getitem var AWS = require('aws- sdk'); var fs = require('fs'); var ddb = new AWS.DynamoDB(); var params = { TableName: 'my_ table', Key: { 'id': {N: ʻ 100'}, 'timestamp': {N: '130699342'} } }; ddb.getitem(params, function(err, data) { if (err) console.log(err); else console.log(data); }); 1 2 3 1 DynamoDB クライアント作成 2 パラメータ指定 - :TableName: テーブル名 - :Item: Putするアイテムを指定 ( 例例 ) id : Hash Key timestamp : Range Key message : Attribute 3 Get 実 行行 (*) 事前に Table が作成されている必要があります

まとめ

今回のまとめ! AWS はプログラマブルなインフラ ほぼすべてのサービスはマネジメントコンソールから利利 用できるが 自動化しようと思ったらプログラムから扱うのが必須 自動化すると AWS は何倍も便便利利になる! AWS のサービスは HTTP/HTTPS で REST/SOAP 形式の API をサポート 例例えば EC2 : Start/Stop/Terminate S3 : GetObject/PutObject DynamoDB : Get/Put! SDK はこれらの API を抽象化し 各 言語からの利利 用を 非常に簡単にしてくれる

Q&A 68 2012 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc.