1Copylight © Classmethod, Inc.
使ってわかる
クラウドプログラミング
AWS勉強会 in 北海道
Developers.IO Meetup 05(LT)
2014/06/28
クラスメソッド株式会社
石川 覚
2Copylight © Classmethod, Inc.
自己紹介
石川 覚 (いしかわ さとる)
• SIer、IP電話開発会社を経て
• CMに2014/06 join
• 札幌出身、東京に8年
• Linux, Java, MySQL...
3Copylight © Classmethod, Inc.
概要
• クラウドプログラミングとは
• AWS SDKの紹介
• AWS SDK for Java の開発環境
• アプリ用のアカウント作成
• EC2〜起動してみよう!
• S3...
4Copylight © Classmethod, Inc.
クラウドプログラミングとは
• “Programmable Infrastructure”
クラウドが提供するサービスやマシーンリソースの制御
や監視ができる。
• 自社のサービスに...
5Copylight © Classmethod, Inc.
AWS SDKの紹介(1)
• AWS SDKとは
– AWSの様々なサービスを操作できるSDK
– 各サービスの各操作にAPIが定義
– 細かい制御や自動化が魅力
• 対応言語
•...
6Copylight © Classmethod, Inc.
AWS SDKの紹介(2)
• AWS SDKの動作イメージ
以下、PCからAWSの通信の例
(EC2の場合はIAMRole)
通信/HTTPS
起動・停止
Put、Get
DB起動...
7Copylight © Classmethod, Inc.
AWS SDK for Java の開発環境
• Eclipse IDE for Java EE Developers
– http://www.eclipse.org/downlo...
8Copylight © Classmethod, Inc.
アプリ用のアカウント作成(1)
• プログラミングその前に...IAMユーザ
普段Management Consoleに接続しているアカウント
は、Unixの世界の”root”ユーザ...
9Copylight © Classmethod, Inc.
アプリ用のアカウント作成(2)
• アカウントの作成
Management Consoleで”IAM”の画面を開き、
“Users”をクリックします。
[Create New Use...
10Copylight © Classmethod, Inc.
アプリ用のアカウント作成(3)
• Credential ファイルの取得と設定
アカウントを作成すると、上記のダイアログが表示されます。
[Download Credentials...
11Copylight © Classmethod, Inc.
アプリ用のアカウント作成(4)
• 権限の付与
“hokkaido”アカウントをチェック、
“Permissions”タブを選択して、
[Attched User Policy]ボ...
12Copylight © Classmethod, Inc.
EC2~起動してみよう!(1)
• AMIからEC2インスタンスを起動させる
– EC2Clientインスタンスの生成
– AMIからEC2インスタンスを生成
– EC2インスタン...
13Copylight © Classmethod, Inc.
EC2~起動してみよう!(2)
• EC2Clientインスタンスの生成
※リージョンを指定しないとインスタンスの情報取得に失敗する。
// EC2 Clientインスタンスの生成...
14Copylight © Classmethod, Inc.
EC2~起動してみよう!(3)
• AMIからEC2インスタンスを生成
• EC2インスタンスを起動
// EC2インスタンス起動
RunInstancesResult resul...
15Copylight © Classmethod, Inc.
S3〜DropBoxを垣間見る (1)
• バケットにディレクトリ、ファイルを順に保存
– S3Clientインスタンスの生成
– Bucketの作成
– ファイルの保存
– ファ...
16Copylight © Classmethod, Inc.
S3〜DropBoxを垣間見る (2)
• S3Clientインスタンスの生成
• バケットの作成
• ファイルの保存
※リージョンを指定しないとインスタンスの情報取得に失敗する。...
17Copylight © Classmethod, Inc.
S3〜DropBoxを垣間見る (3)
• ファイルの取得
S3Object object = s3.getObject(new GetObjectRequest(bucketNa...
18Copylight © Classmethod, Inc.
S3〜DropBoxを垣間見る (4)
• 期限付きURLによるファイル公開
Calendar cal = Calendar.getInstance();
cal.add(Cale...
19Copylight © Classmethod, Inc.
EC2上で動作させる時の違い(1)
• IAMロールの利用
– IAMロールとはAWSのサービスやアクセスコント
ロール基盤。
– EC2に対してアクセス権限を割り当てることでイン...
20Copylight © Classmethod, Inc.
EC2上で動作させる時の違い(2)
• IAMロールに作成と権限の付与
• EC2の起動設定時にIAMロールの指定
EC2をLaunchの”Step 3: Configure In...
21Copylight © Classmethod, Inc.
他のAWSサービスとの比較
• 他のAWSの制御や自動化との相違点
– AWS CLI
Amazon Linuxではインストール済みなので、shellコマンドと
容易に組み合わせる...
22Copylight © Classmethod, Inc.
最後に
• SDKのAPIに触れることでAWSの仕組みを理解
• IAMユーザ/IAMロールを使いこなして安心・
安全なAWSの利用
• Management Console以上に...
23Copylight © Classmethod, Inc.
ご清聴ありがとうございました。
Upcoming SlideShare
Loading in...5
×

Cloud Programing for beginner

600

Published on

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
600
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cloud Programing for beginner

  1. 1. 1Copylight © Classmethod, Inc. 使ってわかる クラウドプログラミング AWS勉強会 in 北海道 Developers.IO Meetup 05(LT) 2014/06/28 クラスメソッド株式会社 石川 覚
  2. 2. 2Copylight © Classmethod, Inc. 自己紹介 石川 覚 (いしかわ さとる) • SIer、IP電話開発会社を経て • CMに2014/06 join • 札幌出身、東京に8年 • Linux, Java, MySQL • 自称 何でも屋 • 当然 AWS好き クラスメソッド株式会社 ソリューションアーキテクト
  3. 3. 3Copylight © Classmethod, Inc. 概要 • クラウドプログラミングとは • AWS SDKの紹介 • AWS SDK for Java の開発環境 • アプリ用のアカウント作成 • EC2〜起動してみよう! • S3〜DropBoxを垣間見る • EC2上で動作させる時の違い • 他のAWSサービスとの比較 • 最後に
  4. 4. 4Copylight © Classmethod, Inc. クラウドプログラミングとは • “Programmable Infrastructure” クラウドが提供するサービスやマシーンリソースの制御 や監視ができる。 • 自社のサービスにクラウドサービスを取り込む S3をストレージサービスのバックエンドとして取り込 んだり、SaaS/PaaS/IaaSのバックエンドのインフラと して取り込む。 AWS SDK
  5. 5. 5Copylight © Classmethod, Inc. AWS SDKの紹介(1) • AWS SDKとは – AWSの様々なサービスを操作できるSDK – 各サービスの各操作にAPIが定義 – 細かい制御や自動化が魅力 • 対応言語 • AWS SDK for Java • AWS SDK for .Net • AWS SDK for Ruby • AWS SDK for PHP • AWS SDK for Node.js • AWS SDK for Android • AWS SDK for iOS • AWS SDK for Python(boto) • AWS SDK for Javascript(Browser) ※ 正式なSDK以外にもあります
  6. 6. 6Copylight © Classmethod, Inc. AWS SDKの紹介(2) • AWS SDKの動作イメージ 以下、PCからAWSの通信の例 (EC2の場合はIAMRole) 通信/HTTPS 起動・停止 Put、Get DB起動 バックアップ 情報取得 REST/SOAP AWS SDK Credential APIロギング
  7. 7. 7Copylight © Classmethod, Inc. AWS SDK for Java の開発環境 • Eclipse IDE for Java EE Developers – http://www.eclipse.org/downloads/ • AWS SDK & AWS Toolkit for Eclipse – 導入手順 [Help] > [Install New Software...] [Work with]に http://aws.amazon.com/jp/eclipse と入力して [return]を押す。 「AWS Toolkit for Eclipse」を 選択してインストールする。
  8. 8. 8Copylight © Classmethod, Inc. アプリ用のアカウント作成(1) • プログラミングその前に...IAMユーザ 普段Management Consoleに接続しているアカウント は、Unixの世界の”root”ユーザのようなもので、セ キュリティリスクが高く、公開された場合に回避する すべがありません。そのためユーザ権限でアプリを動 作させてはいけません。 以降、IAMユーザアカウントを登録します。 ※IAMとは IAM(Identity and Access Management)により、AWSサービス およびリソースへのアクセスを安全にコントロールすることができ ます。IAM を使用すると、AWS のユーザーとグループを作成およ び管理し、アクセス権を使用して AWSリソースへのアクセスを許可 および拒否できます。
  9. 9. 9Copylight © Classmethod, Inc. アプリ用のアカウント作成(2) • アカウントの作成 Management Consoleで”IAM”の画面を開き、 “Users”をクリックします。 [Create New Users]ボタンを押す と、ダイアログが表示されるので、 ユーザ名を入力する。 今回は「hokkaido」。
  10. 10. 10Copylight © Classmethod, Inc. アプリ用のアカウント作成(3) • Credential ファイルの取得と設定 アカウントを作成すると、上記のダイアログが表示されます。 [Download Credentials] ボタンを押し、Credentialsファイルをダウ ンロードしてください。ホームディレクトリの.aws/credentialsファ イルに “Access Key Id”と“Secret Access Key”を以下の形式で書いて ください。 [default] aws_access_key_id = AAAAAAAAAAAAAAAAAAA aws_secret_access_key = abCDEfghIJKlMNopqRSVwxyZ01234567890 ※Eclipseはプロパティファイルを生成するが上記のファイルを参照。
  11. 11. 11Copylight © Classmethod, Inc. アプリ用のアカウント作成(4) • 権限の付与 “hokkaido”アカウントをチェック、 “Permissions”タブを選択して、 [Attched User Policy]ボタンを押す。 今回は”Power User Access” 権限を付与、[Select]ボタンを押す。ダ イアログが表示された後、[Apply Policy]ボタン押すと適用されます。
  12. 12. 12Copylight © Classmethod, Inc. EC2~起動してみよう!(1) • AMIからEC2インスタンスを起動させる – EC2Clientインスタンスの生成 – AMIからEC2インスタンスを生成 – EC2インスタンスを起動 実行した回数分インスタンスが起動される。
  13. 13. 13Copylight © Classmethod, Inc. EC2~起動してみよう!(2) • EC2Clientインスタンスの生成 ※リージョンを指定しないとインスタンスの情報取得に失敗する。 // EC2 Clientインスタンスの生成 ec2 = new AmazonEC2Client(); ec2.setRegion("ap-northeast-1"); “Access Key Id”と“Secret Access Key”をコードやプ ロパティに書かない! String accessKey = "AAAAAAAAAAAAAAAAAAA"; String secretKey = "abCDEfghIJKlMNopqRSVwxyZ01234567890"; credentials = new BasicAWSCredentials(accessKey, secretKey); // EC2 Clientインスタンスの生成 ec2 = new AmazonEC2Client(credential); ec2.setRegion(NORTHEAST_1);
  14. 14. 14Copylight © Classmethod, Inc. EC2~起動してみよう!(3) • AMIからEC2インスタンスを生成 • EC2インスタンスを起動 // EC2インスタンス起動 RunInstancesResult result = ec2.runInstances(rir); // AMIからEC2インスタンス生成 RunInstancesRequest rir = new RunInstancesRequest(); rir.withSubnetId("subnet-549756926"); rir.withSecurityGroupIds("sg-37968362"); rir.withImageId(“ami-a3d23745"); rir.withKeyName(“key.pem"); rir.withInstanceType("t1.micro"); rir.withMonitoring(true); rir.withMinCount(1); rir.withMaxCount(1); … サブネット … セキュリティグループ … AMIのID … keypairのkey … インスタンスタイプ … モニタリング(CloudWatch)
  15. 15. 15Copylight © Classmethod, Inc. S3〜DropBoxを垣間見る (1) • バケットにディレクトリ、ファイルを順に保存 – S3Clientインスタンスの生成 – Bucketの作成 – ファイルの保存 – ファイルの取得 – 期限付きURLによるファイル公開
  16. 16. 16Copylight © Classmethod, Inc. S3〜DropBoxを垣間見る (2) • S3Clientインスタンスの生成 • バケットの作成 • ファイルの保存 ※リージョンを指定しないとインスタンスの情報取得に失敗する。 // S3 Clientインスタンスの生成 s3 = new AmazonS3Client(); s3.setRegion("ap-northeast-1"); // S3 Clientインスタンスの生成 String bucketName = "hokkaido-" + UUID.randomUUID(); s3.createBucket(bucketName); // ファイルの保存 s3.putObject(new PutObjectRequest(bucketName, "data/hoge", new File("/data/hoge.txt")));
  17. 17. 17Copylight © Classmethod, Inc. S3〜DropBoxを垣間見る (3) • ファイルの取得 S3Object object = s3.getObject(new GetObjectRequest(bucketName, "data/hoge")); InputStream is = null; FileOutputStream fos = null; try { is = object.getObjectContent(); fos = new FileOutputStream("/tmp/hoge.bin"); byte[] buffer = new byte[1024*1024]; int readSize = -1; while( (readSize = is.read(buffer, 0, buffer.length)) != -1) { fos.write(buffer, 0, readSize); } fos.flush(); } finally { if (is != null) is.close(); if (fos != null) fos.close(); } データ受信中はS3Clientの インスタンスがGCされない ようにスコープに注意する
  18. 18. 18Copylight © Classmethod, Inc. S3〜DropBoxを垣間見る (4) • 期限付きURLによるファイル公開 Calendar cal = Calendar.getInstance(); cal.add(Calendar.SECOND, 30); Date expiration = cal.getTime(); URL url = s3.generatePresignedUrl(bucketName, "data/hoge", expiration); 制限付きURLの例 https://hokkaido-123456a71-f2c2-468a-be84-3bb9911ce123.s3-ap- northeast- 1.amazonaws.com/data/aaa?AWSAccessKeyId=ABDEFGHHJKLMNOPSQ &Expires=1403919669&Signature=ejejfqfqjfMP669IfcuHEz%2BduniFs %3D 30秒経過後は“AccessDenied”と なります。
  19. 19. 19Copylight © Classmethod, Inc. EC2上で動作させる時の違い(1) • IAMロールの利用 – IAMロールとはAWSのサービスやアクセスコント ロール基盤。 – EC2に対してアクセス権限を割り当てることでインス タンスのファイルシステム上にCredentialsファイル を持たない。 – 侵入されCredentials奪われた場合に悪用されるリス クが回避できる他に、EC2のAMIのポータビリティが 向上する。
  20. 20. 20Copylight © Classmethod, Inc. EC2上で動作させる時の違い(2) • IAMロールに作成と権限の付与 • EC2の起動設定時にIAMロールの指定 EC2をLaunchの”Step 3: Configure Instance Details” に て、作成したIAMロールを指定する。 • Credentialファイルは不要 ホームディレクトリの.aws/credentialファイルは不要 Management Consoleで”IAM”の画面を開き、 “Roles”をクリックします。 以降は、IAMユーザを作成した方法で作成する。
  21. 21. 21Copylight © Classmethod, Inc. 他のAWSサービスとの比較 • 他のAWSの制御や自動化との相違点 – AWS CLI Amazon Linuxではインストール済みなので、shellコマンドと 容易に組み合わせることができる。AWS SDKのような細かな 制御には向かない。 – CloudFormation 構成をテンプレート化により、一発で環境構築ができる。構築 後の変更に対応していないので、使い捨ての環境や基本的な構 成の構築に向いている。 – OptWorks(ベータ) AWS版のchef。今後の改善を期待する。
  22. 22. 22Copylight © Classmethod, Inc. 最後に • SDKのAPIに触れることでAWSの仕組みを理解 • IAMユーザ/IAMロールを使いこなして安心・ 安全なAWSの利用 • Management Console以上にAWSを制御する 手段 • これまで以上にAWSのサービスを効果的に活用
  23. 23. 23Copylight © Classmethod, Inc. ご清聴ありがとうございました。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×