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

Weitere ähnliche Inhalte

Was ist angesagt?

[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic BeanstalkAmazon Web Services Japan
 
Awsでword pressを作ってみよう(ハンズオン)
Awsでword pressを作ってみよう(ハンズオン)Awsでword pressを作ってみよう(ハンズオン)
Awsでword pressを作ってみよう(ハンズオン)Shingo Sasaki
 
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。Daigou Harada
 
社内システム on AWS
社内システム on AWS 社内システム on AWS
社内システム on AWS kudo-jun
 
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic BeanstalkAWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic BeanstalkAmazon Web Services Japan
 
ドキュメント週末趣味のAWS Elastic Beanstalk 編
ドキュメント週末趣味のAWS Elastic Beanstalk 編ドキュメント週末趣味のAWS Elastic Beanstalk 編
ドキュメント週末趣味のAWS Elastic Beanstalk 編Namba Kazuo
 
Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~
Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~
Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~Masaru Tomonaga
 
【改訂版】Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~
【改訂版】Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~【改訂版】Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~
【改訂版】Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~Masaru Tomonaga
 
ElasticBeanstalkでのRailsアプリ運用
ElasticBeanstalkでのRailsアプリ運用ElasticBeanstalkでのRailsアプリ運用
ElasticBeanstalkでのRailsアプリ運用Masaya Konishi
 
re:Invent 2021のS3アップデート紹介 & Glacier Instant Retrieval試してみた
re:Invent 2021のS3アップデート紹介 & Glacier Instant Retrieval試してみたre:Invent 2021のS3アップデート紹介 & Glacier Instant Retrieval試してみた
re:Invent 2021のS3アップデート紹介 & Glacier Instant Retrieval試してみたHideaki Aoyagi
 
JAWS-UG CLI #19 LT - VM Import by AWS CLI
JAWS-UG CLI #19 LT - VM Import by AWS CLIJAWS-UG CLI #19 LT - VM Import by AWS CLI
JAWS-UG CLI #19 LT - VM Import by AWS CLINobuhiro Nakayama
 
Movable type for AWS Starter Guide
Movable type for AWS Starter GuideMovable type for AWS Starter Guide
Movable type for AWS Starter GuideSix Apart KK
 
AWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニング
AWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニングAWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニング
AWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニング聡 大久保
 
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdevio
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdevioAWS勉強会 in 北海道札幌 at smokeymonkey #cmdevio
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdeviosmokey monkey
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)Akio Katayama
 
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch LogsAWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch LogsAmazon Web Services Japan
 

Was ist angesagt? (20)

[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
 
Awsでword pressを作ってみよう(ハンズオン)
Awsでword pressを作ってみよう(ハンズオン)Awsでword pressを作ってみよう(ハンズオン)
Awsでword pressを作ってみよう(ハンズオン)
 
AWS SDK for Java
AWS SDK for JavaAWS SDK for Java
AWS SDK for Java
 
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
 
社内システム on AWS
社内システム on AWS 社内システム on AWS
社内システム on AWS
 
はじめての Elastic Beanstalk
はじめての Elastic Beanstalkはじめての Elastic Beanstalk
はじめての Elastic Beanstalk
 
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic BeanstalkAWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
 
ドキュメント週末趣味のAWS Elastic Beanstalk 編
ドキュメント週末趣味のAWS Elastic Beanstalk 編ドキュメント週末趣味のAWS Elastic Beanstalk 編
ドキュメント週末趣味のAWS Elastic Beanstalk 編
 
Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~
Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~
Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~
 
【改訂版】Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~
【改訂版】Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~【改訂版】Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~
【改訂版】Amazon Web Service 基本の「き」 ~Amazon EC2でWebサーバを公開してみよう!~
 
ElasticBeanstalkでのRailsアプリ運用
ElasticBeanstalkでのRailsアプリ運用ElasticBeanstalkでのRailsアプリ運用
ElasticBeanstalkでのRailsアプリ運用
 
AWS Systems manager 入門
AWS Systems manager 入門AWS Systems manager 入門
AWS Systems manager 入門
 
re:Invent 2021のS3アップデート紹介 & Glacier Instant Retrieval試してみた
re:Invent 2021のS3アップデート紹介 & Glacier Instant Retrieval試してみたre:Invent 2021のS3アップデート紹介 & Glacier Instant Retrieval試してみた
re:Invent 2021のS3アップデート紹介 & Glacier Instant Retrieval試してみた
 
JAWS-UG CLI #19 LT - VM Import by AWS CLI
JAWS-UG CLI #19 LT - VM Import by AWS CLIJAWS-UG CLI #19 LT - VM Import by AWS CLI
JAWS-UG CLI #19 LT - VM Import by AWS CLI
 
Movable type for AWS Starter Guide
Movable type for AWS Starter GuideMovable type for AWS Starter Guide
Movable type for AWS Starter Guide
 
AWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニング
AWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニングAWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニング
AWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニング
 
Amazon ECS事始め
Amazon ECS事始めAmazon ECS事始め
Amazon ECS事始め
 
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdevio
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdevioAWS勉強会 in 北海道札幌 at smokeymonkey #cmdevio
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdevio
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
 
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch LogsAWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
 

Ähnlich wie Cloud Programing for beginner

Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうGenta Watanabe
 
当社のawsへの取組
当社のawsへの取組当社のawsへの取組
当社のawsへの取組Mercari Inc.
 
JAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run Commnadのいいところ
JAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run CommnadのいいところJAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run Commnadのいいところ
JAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run CommnadのいいところNobuhiro Nakayama
 
同じサービスを ECSとOpsWorksで 運用してみた
同じサービスをECSとOpsWorksで運用してみた同じサービスをECSとOpsWorksで運用してみた
同じサービスを ECSとOpsWorksで 運用してみたJun Ichikawa
 
[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NETAmazon Web Services Japan
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係Hiraku Komuro
 
AWS Startup Use Cases 2015
AWS Startup Use Cases 2015AWS Startup Use Cases 2015
AWS Startup Use Cases 2015Eiji Shinohara
 
Osc fukuoka xAI Meetup
Osc fukuoka xAI MeetupOsc fukuoka xAI Meetup
Osc fukuoka xAI Meetupru pic
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSAmazon Web Services Japan
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発lalha
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようNTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようMidori Oge
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Preferred Networks
 
AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現
AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現
AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現TIS Inc.
 
EC2でマルチキャスト
EC2でマルチキャストEC2でマルチキャスト
EC2でマルチキャストKenta Yasukawa
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境Katsutoshi Nagaoka
 
Cm re growth-reinvent-app304-kaji
Cm re growth-reinvent-app304-kajiCm re growth-reinvent-app304-kaji
Cm re growth-reinvent-app304-kajiHiroyuki Kaji
 

Ähnlich wie Cloud Programing for beginner (20)

Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
 
AWS運用自動化への第一歩 
AWS運用自動化への第一歩 AWS運用自動化への第一歩 
AWS運用自動化への第一歩 
 
当社のawsへの取組
当社のawsへの取組当社のawsへの取組
当社のawsへの取組
 
JAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run Commnadのいいところ
JAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run CommnadのいいところJAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run Commnadのいいところ
JAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run Commnadのいいところ
 
同じサービスを ECSとOpsWorksで 運用してみた
同じサービスをECSとOpsWorksで運用してみた同じサービスをECSとOpsWorksで運用してみた
同じサービスを ECSとOpsWorksで 運用してみた
 
[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
 
AWS Startup Use Cases 2015
AWS Startup Use Cases 2015AWS Startup Use Cases 2015
AWS Startup Use Cases 2015
 
Open Source x AI
Open Source x AIOpen Source x AI
Open Source x AI
 
Osc fukuoka xAI Meetup
Osc fukuoka xAI MeetupOsc fukuoka xAI Meetup
Osc fukuoka xAI Meetup
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
 
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
 
Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようNTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現
AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現
AWSマネージドサービスとOSSによるミッションクリティカルなシステムの実現
 
EC2でマルチキャスト
EC2でマルチキャストEC2でマルチキャスト
EC2でマルチキャスト
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
 
Cm re growth-reinvent-app304-kaji
Cm re growth-reinvent-app304-kajiCm re growth-reinvent-app304-kaji
Cm re growth-reinvent-app304-kaji
 

Mehr von Satoru Ishikawa

データ分析を支える技術 データ分析基盤再入門
データ分析を支える技術 データ分析基盤再入門データ分析を支える技術 データ分析基盤再入門
データ分析を支える技術 データ分析基盤再入門Satoru Ishikawa
 
BigData-JAWS#16 Lake House Architecture
BigData-JAWS#16 Lake House ArchitectureBigData-JAWS#16 Lake House Architecture
BigData-JAWS#16 Lake House ArchitectureSatoru Ishikawa
 
データ分析を支える技術 DWH再入門
データ分析を支える技術 DWH再入門データ分析を支える技術 DWH再入門
データ分析を支える技術 DWH再入門Satoru Ishikawa
 
re:Growth2019 Analytics Updates
re:Growth2019 Analytics Updatesre:Growth2019 Analytics Updates
re:Growth2019 Analytics UpdatesSatoru Ishikawa
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeSatoru Ishikawa
 
re:invent 2018 analytics関連アップデート
re:invent 2018 analytics関連アップデートre:invent 2018 analytics関連アップデート
re:invent 2018 analytics関連アップデートSatoru Ishikawa
 
Re invent 2017 データベースサービス総復習!
Re invent 2017 データベースサービス総復習!Re invent 2017 データベースサービス総復習!
Re invent 2017 データベースサービス総復習!Satoru Ishikawa
 
20161214 re growth-sapporo
20161214 re growth-sapporo20161214 re growth-sapporo
20161214 re growth-sapporoSatoru Ishikawa
 
Classmethod awsstudy ec2rds20160114
Classmethod awsstudy ec2rds20160114Classmethod awsstudy ec2rds20160114
Classmethod awsstudy ec2rds20160114Satoru Ishikawa
 
re:Growth ビッグデータ観点で見た AWS re:Invent 2015
re:Growth ビッグデータ観点で見た AWS re:Invent 2015re:Growth ビッグデータ観点で見た AWS re:Invent 2015
re:Growth ビッグデータ観点で見た AWS re:Invent 2015Satoru Ishikawa
 
db-tech-showcase-sapporo-b24-20150911p
db-tech-showcase-sapporo-b24-20150911pdb-tech-showcase-sapporo-b24-20150911p
db-tech-showcase-sapporo-b24-20150911pSatoru Ishikawa
 
Cm re growth-devio-mtup11-sapporo-004
Cm re growth-devio-mtup11-sapporo-004Cm re growth-devio-mtup11-sapporo-004
Cm re growth-devio-mtup11-sapporo-004Satoru Ishikawa
 
Running Amazon S3 Encryption
Running Amazon S3 EncryptionRunning Amazon S3 Encryption
Running Amazon S3 EncryptionSatoru Ishikawa
 

Mehr von Satoru Ishikawa (14)

データ分析を支える技術 データ分析基盤再入門
データ分析を支える技術 データ分析基盤再入門データ分析を支える技術 データ分析基盤再入門
データ分析を支える技術 データ分析基盤再入門
 
BigData-JAWS#16 Lake House Architecture
BigData-JAWS#16 Lake House ArchitectureBigData-JAWS#16 Lake House Architecture
BigData-JAWS#16 Lake House Architecture
 
データ分析を支える技術 DWH再入門
データ分析を支える技術 DWH再入門データ分析を支える技術 DWH再入門
データ分析を支える技術 DWH再入門
 
re:Growth2019 Analytics Updates
re:Growth2019 Analytics Updatesre:Growth2019 Analytics Updates
re:Growth2019 Analytics Updates
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
 
re:invent 2018 analytics関連アップデート
re:invent 2018 analytics関連アップデートre:invent 2018 analytics関連アップデート
re:invent 2018 analytics関連アップデート
 
Re invent 2017 データベースサービス総復習!
Re invent 2017 データベースサービス総復習!Re invent 2017 データベースサービス総復習!
Re invent 2017 データベースサービス総復習!
 
20161214 re growth-sapporo
20161214 re growth-sapporo20161214 re growth-sapporo
20161214 re growth-sapporo
 
Classmethod awsstudy ec2rds20160114
Classmethod awsstudy ec2rds20160114Classmethod awsstudy ec2rds20160114
Classmethod awsstudy ec2rds20160114
 
re:Growth ビッグデータ観点で見た AWS re:Invent 2015
re:Growth ビッグデータ観点で見た AWS re:Invent 2015re:Growth ビッグデータ観点で見た AWS re:Invent 2015
re:Growth ビッグデータ観点で見た AWS re:Invent 2015
 
db-tech-showcase-sapporo-b24-20150911p
db-tech-showcase-sapporo-b24-20150911pdb-tech-showcase-sapporo-b24-20150911p
db-tech-showcase-sapporo-b24-20150911p
 
Cmdevio2015 devday-g-3
Cmdevio2015 devday-g-3Cmdevio2015 devday-g-3
Cmdevio2015 devday-g-3
 
Cm re growth-devio-mtup11-sapporo-004
Cm re growth-devio-mtup11-sapporo-004Cm re growth-devio-mtup11-sapporo-004
Cm re growth-devio-mtup11-sapporo-004
 
Running Amazon S3 Encryption
Running Amazon S3 EncryptionRunning Amazon S3 Encryption
Running Amazon S3 Encryption
 

Cloud Programing for beginner

  • 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. ご清聴ありがとうございました。