Your SlideShare is downloading. ×
0
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Cloud Programing for beginner
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cloud Programing for beginner

538

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
538
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 1Copylight © Classmethod, Inc. 使ってわかる クラウドプログラミング AWS勉強会 in 北海道 Developers.IO Meetup 05(LT) 2014/06/28 クラスメソッド株式会社 石川 覚
  • 2. 2Copylight © Classmethod, Inc. 自己紹介 石川 覚 (いしかわ さとる) • SIer、IP電話開発会社を経て • CMに2014/06 join • 札幌出身、東京に8年 • Linux, Java, MySQL • 自称 何でも屋 • 当然 AWS好き クラスメソッド株式会社 ソリューションアーキテクト
  • 3. 3Copylight © Classmethod, Inc. 概要 • クラウドプログラミングとは • AWS SDKの紹介 • AWS SDK for Java の開発環境 • アプリ用のアカウント作成 • EC2〜起動してみよう! • S3〜DropBoxを垣間見る • EC2上で動作させる時の違い • 他のAWSサービスとの比較 • 最後に
  • 4. 4Copylight © Classmethod, Inc. クラウドプログラミングとは • “Programmable Infrastructure” クラウドが提供するサービスやマシーンリソースの制御 や監視ができる。 • 自社のサービスにクラウドサービスを取り込む S3をストレージサービスのバックエンドとして取り込 んだり、SaaS/PaaS/IaaSのバックエンドのインフラと して取り込む。 AWS SDK
  • 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. 6Copylight © Classmethod, Inc. AWS SDKの紹介(2) • AWS SDKの動作イメージ 以下、PCからAWSの通信の例 (EC2の場合はIAMRole) 通信/HTTPS 起動・停止 Put、Get DB起動 バックアップ 情報取得 REST/SOAP AWS SDK Credential APIロギング
  • 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. 8Copylight © Classmethod, Inc. アプリ用のアカウント作成(1) • プログラミングその前に...IAMユーザ 普段Management Consoleに接続しているアカウント は、Unixの世界の”root”ユーザのようなもので、セ キュリティリスクが高く、公開された場合に回避する すべがありません。そのためユーザ権限でアプリを動 作させてはいけません。 以降、IAMユーザアカウントを登録します。 ※IAMとは IAM(Identity and Access Management)により、AWSサービス およびリソースへのアクセスを安全にコントロールすることができ ます。IAM を使用すると、AWS のユーザーとグループを作成およ び管理し、アクセス権を使用して AWSリソースへのアクセスを許可 および拒否できます。
  • 9. 9Copylight © Classmethod, Inc. アプリ用のアカウント作成(2) • アカウントの作成 Management Consoleで”IAM”の画面を開き、 “Users”をクリックします。 [Create New Users]ボタンを押す と、ダイアログが表示されるので、 ユーザ名を入力する。 今回は「hokkaido」。
  • 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. 11Copylight © Classmethod, Inc. アプリ用のアカウント作成(4) • 権限の付与 “hokkaido”アカウントをチェック、 “Permissions”タブを選択して、 [Attched User Policy]ボタンを押す。 今回は”Power User Access” 権限を付与、[Select]ボタンを押す。ダ イアログが表示された後、[Apply Policy]ボタン押すと適用されます。
  • 12. 12Copylight © Classmethod, Inc. EC2~起動してみよう!(1) • AMIからEC2インスタンスを起動させる – EC2Clientインスタンスの生成 – AMIからEC2インスタンスを生成 – EC2インスタンスを起動 実行した回数分インスタンスが起動される。
  • 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. 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. 15Copylight © Classmethod, Inc. S3〜DropBoxを垣間見る (1) • バケットにディレクトリ、ファイルを順に保存 – S3Clientインスタンスの生成 – Bucketの作成 – ファイルの保存 – ファイルの取得 – 期限付きURLによるファイル公開
  • 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. 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. 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. 19Copylight © Classmethod, Inc. EC2上で動作させる時の違い(1) • IAMロールの利用 – IAMロールとはAWSのサービスやアクセスコント ロール基盤。 – EC2に対してアクセス権限を割り当てることでインス タンスのファイルシステム上にCredentialsファイル を持たない。 – 侵入されCredentials奪われた場合に悪用されるリス クが回避できる他に、EC2のAMIのポータビリティが 向上する。
  • 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. 21Copylight © Classmethod, Inc. 他のAWSサービスとの比較 • 他のAWSの制御や自動化との相違点 – AWS CLI Amazon Linuxではインストール済みなので、shellコマンドと 容易に組み合わせることができる。AWS SDKのような細かな 制御には向かない。 – CloudFormation 構成をテンプレート化により、一発で環境構築ができる。構築 後の変更に対応していないので、使い捨ての環境や基本的な構 成の構築に向いている。 – OptWorks(ベータ) AWS版のchef。今後の改善を期待する。
  • 22. 22Copylight © Classmethod, Inc. 最後に • SDKのAPIに触れることでAWSの仕組みを理解 • IAMユーザ/IAMロールを使いこなして安心・ 安全なAWSの利用 • Management Console以上にAWSを制御する 手段 • これまで以上にAWSのサービスを効果的に活用
  • 23. 23Copylight © Classmethod, Inc. ご清聴ありがとうございました。

×