SlideShare a Scribd company logo
AWS CodeBuildを身近にするための
はじめの一歩
自己紹介
会社:クラスメソッド株式会社AWS事業部
名前:千葉 淳
好きなこと:仲間と家族とAmazon
はまっていること:自転車(ツール・ド・ちば参戦。2日で200km走
った)
2
今日伝えたいこと
CodeBuildを身近に!
さくっと使える!
覚えること少ない!
3
CodeBuildの位置付け
4
CodeBuild3行まとめ
GitHub/CodeCommit/Bitbucket/S3から ファイルを取得 し
指定した コマンド を
好きな Dockerコンテナ上で実行 する
5
気になること
いろいろ
6
CodeBuild対応言語は?
Dockerコンテナ上で動くものすべて
AWSドキュメントでサンプルが用意されているもは
C++、Go、Slaca、Java/Maven
Node.js、Python、Ruby
.Net Core in Linux
Docker
サンプルはこちらから
7
利用ケースサンプル
Dockerコンテナイメージを作成しECRへプッシュ
GitHubのプルリクをトリガーにビルド
AWS Con gを利用してCodeBuildの変更をトラッキング
ビルドの完了通知
ビルド後にCodeDeployを使ってEC2へデプロイ
SAMを使ったデプロイ
EBへのデプロイ
サンプルはこちらから
8
コマンド指定方法は?
buildspec.ymlを書く
ソースのトップに置く
以上、それだけ!
9
buildspec.ymlの書き方は①?
version: 0.2
env:
variables:
key: "value" # 環境変数を指定
parameter-store:
key: "value" #Systems Managerから取得し、値は暗号化できる
phases:
install: # パッケージインストール
commands:
- command
pre_build: # ビルド前処理
commands:
- command
10
buildspec.ymlの書き方は②?
build: # ビルド/テスト
commands:
- command
post_build: # アーカイブ化(ZipやJarなど)、ECRへのプッシュ
commands:
- command
artifacts:
files: # S3へアップするファイルを指定
- location
11
環境変数の指定方法3つ
buildspec.ymlのvariables
システム共通の環境変数を指定
buildspec.ymlのparameter-store
暗号化したいパラメータを指定(キーなど)
CodeBuildプロジェクトの設定
環境別の環境変数を指定(test/stg/prdとか)
12
指定できるコンテナは?
AWSで用意されているもの
OS:Ubuntu、Amazon Linux
対応:Android/Docker/Golang/Java/Node.js/Python Ruby/.Net
Core
詳細はこちら
カスタマイズしたコンテナも利用できる
DockerHub
ECR
13
CodeBuild内でプロセス起動できる?
例えば、Apache起動してcrulでlocalhost:80アクセス
答え: できる
テストが捗りそう
14
apache起動してcurlでリクエスト取得できた
phases:
install:
commands:
- echo install httpd
- apt-get update -y
- apt-get install -y apache2 curl
pre_build:
commands:
- echo start httpd
- /etc/init.d/apache2 restart
build:
commands:
- echo curl localhost
- curl localhost:80
15
コンテナからインターネット接続でき
る?
例えば、RSS取得して表示するとか
答え: できる
実はビルド以外にも使える!?
16
取得結果
17
buildspec.yml
version: 0.2
phases:
install:
commands:
- echo install
- pip install feedparser
build:
commands:
- echo start get-devio-rss.py
- python get-devio-rss.py
18
get-devio-rss.py
import feedparser
RSS_URL = "https://feed.classmethod.jp/blog/daily.rss"
result = feedparser.parse(RSS_URL)
for entry in result['entries']:
print("title:", entry.title)
print("link: ", entry.link)
19
実行トリガーは何指定できる?
CloudWatch Events
時間やAWSサービスのAPIをトリガーに実行
ただしLambdaやCodePipeline経由で実行
CodePipeline
ビルド以外のデプロイプロセスまでのフローを定義
GitHub
pushやプルリクをトリガーにビルド実行
即時実行
20
指定できるソースは?
GitHub
CodeCommit
Bitbucket※注意:CodePipeline利用時は未対応
S3
21
ブランチも指定できるの?
答え: できる
ビルド開始時にブランチ名とバージョンを指定
22
実行ログはどうやってみる?
Codebuildの画面(最後の10000行を表示)
CloudWatch Logs(全行のログ)
23
Build完了後に通知できる?
答え: できる
1. buildspec.yml内でSNSへpublishする行を追加
version: 0.1
environment_variables:
plaintext:
AWS_DEFAULT_REGION: "region-ID"
SNS_TOPIC_ARN: "arn:aws:sns:region-ID:account-ID:topic-name"
phases:
post_build:
commands:
- echo Build completed on `date`
- aws sns publish --topic-arn $SNS_TOPIC_ARN --subject 'AWS CodeBuild - Build Co
24
2. CodeBuildで利用するIAMロールに権限を追加
### BEGIN ADDING STATEMENT HERE ###
{
"Effect": "Allow",
"Resource": [
"*"
],
"Action": [
"sns:SendMessage",
"sns:Publish"
]
},
### END ADDING STATEMENT HERE ###
参考
25
ビルド環境のスペックと料金
以下の3タイプから選択。料金は分単位。
タイプ
メモ
リ
(GB)
vCPU
ディスク
容量(GB)
ビルド1分あたり
の料金(USD)
build.general1.small 3 2 64 0.005
build.general1.medium 7 4 128 0.010
build.general1.large 15 8 128 0.020
参考
26
料金例
build.general1.small
1ヶ月100回のビルド
1ビルド5分
ビルド時間(分) = 100 回のビルド* 5 分= 500 分
ビルドの月額= 500 分* $0.005 = $2.5
参考
27
制限事項
主なデフォルトの制限
ビルドタイムアウト時間:5~480分(8 時間)
同時ビルド実行数:20
詳細はこちら
28
デモ
29
デモ
1. Apacheを起動して、curlでアクセス(ブランチ名:master)
2. Developers.IOのRSSを取得する(ブランチ名:get-rss)
30
まとめ
31
まとめ
CodeBuildでは
任意のDockerコンテナで
任意のコマンドを実行し
処理を行うことができる
技術的ハードルは低く、簡単に利用できる
もっと身近に!
32
おしまい
33

More Related Content

PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
PDF
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
PDF
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PDF
20190806 AWS Black Belt Online Seminar AWS Glue
PDF
20200826 AWS Black Belt Online Seminar AWS CloudFormation
PDF
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
PDF
20200630 AWS Black Belt Online Seminar Amazon Cognito
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
20190806 AWS Black Belt Online Seminar AWS Glue
20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200630 AWS Black Belt Online Seminar Amazon Cognito

What's hot (20)

PDF
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
PDF
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
PDF
Infrastructure as Code (IaC) 談義 2022
PPTX
Containers + EC2 Spot: AWS Batch による大規模バッチ処理でのスポットインスタンス活用
PDF
20210526 AWS Expert Online マルチアカウント管理の基本
PPTX
DeNA の AWS アカウント管理とセキュリティ監査自動化
PPTX
CloudFront経由でのCORS利用
PDF
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
PDF
AWS Black Belt Online Seminar 2017 AWS Shield
PDF
AWS Well-Architected Security とベストプラクティス
PDF
AWS Black Belt Online Seminar - Amazon Lightsail
PDF
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
PDF
20200617 AWS Black Belt Online Seminar Amazon Athena
PDF
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
PDF
ここから始めるAWSセキュリティ
PDF
20190319 AWS Black Belt Online Seminar Amazon FSx for Windows Server
PDF
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
PDF
20190320 AWS Black Belt Online Seminar Amazon EBS
PDF
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
PDF
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
Infrastructure as Code (IaC) 談義 2022
Containers + EC2 Spot: AWS Batch による大規模バッチ処理でのスポットインスタンス活用
20210526 AWS Expert Online マルチアカウント管理の基本
DeNA の AWS アカウント管理とセキュリティ監査自動化
CloudFront経由でのCORS利用
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
AWS Black Belt Online Seminar 2017 AWS Shield
AWS Well-Architected Security とベストプラクティス
AWS Black Belt Online Seminar - Amazon Lightsail
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20200617 AWS Black Belt Online Seminar Amazon Athena
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
ここから始めるAWSセキュリティ
20190319 AWS Black Belt Online Seminar Amazon FSx for Windows Server
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20190320 AWS Black Belt Online Seminar Amazon EBS
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
Ad

Viewers also liked (12)

PDF
AWS サービスアップデートまとめ re:Invent 2017 直前編
PPTX
Docker study for beginner in My Company 2017/10/19
PDF
会社に Github導入した話
PDF
AWSクラウドデータストレージ総論
PPTX
【Sgt2016】Agile人材の評価とキャリアプラン
PPTX
Sql server 2017 からはじめる graph データベース
PDF
AWS運用における最適パターンの徹底活用
PDF
はじめてのコンテナーDocker & Windows & Linux
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PPTX
Redmine4時代のプラグイン開発 redmine.tokyo #13
PDF
AWS AI Solutions
PPTX
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AWS サービスアップデートまとめ re:Invent 2017 直前編
Docker study for beginner in My Company 2017/10/19
会社に Github導入した話
AWSクラウドデータストレージ総論
【Sgt2016】Agile人材の評価とキャリアプラン
Sql server 2017 からはじめる graph データベース
AWS運用における最適パターンの徹底活用
はじめてのコンテナーDocker & Windows & Linux
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Redmine4時代のプラグイン開発 redmine.tokyo #13
AWS AI Solutions
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
Ad

Similar to CodeBuildを身近にするためのはじめの一歩 (20)

PDF
20170809 AWS code series
PDF
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
PDF
CodePipeline入門
PDF
JAWS-UG Meets Windows (JAWS Days 2017)
PDF
Application Deployment on AWS
PDF
Gaming cicd-pipeline gaming-technight-2
PDF
ECS-CLI in Action
PDF
オンプレを少しずつコンテナ化する
PDF
Introduction of aws-cli
PDF
AWS Black Belt Techシリーズ AWS Command Line Interface
PDF
Windows 開発者のための Dev&Ops on AWS
PPTX
【AWS×Deployment】TechTalk #5
PDF
AWS CLI and CLOUDIAN HyperStore
PPTX
CodeCommit/CodeDeploy/CodePipeline サービスアップデート(2016年10月)
PDF
AWS as code_and_test
PDF
CloudFormation Getting Started with YAML
PDF
20130310 jaws tokai2013
PDF
当社のawsへの取組
PDF
Programming AWS with Perl at YAPC::Asia 2013
PDF
Jaws−横浜ハンズオンーCloudFormation 1/3
20170809 AWS code series
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
CodePipeline入門
JAWS-UG Meets Windows (JAWS Days 2017)
Application Deployment on AWS
Gaming cicd-pipeline gaming-technight-2
ECS-CLI in Action
オンプレを少しずつコンテナ化する
Introduction of aws-cli
AWS Black Belt Techシリーズ AWS Command Line Interface
Windows 開発者のための Dev&Ops on AWS
【AWS×Deployment】TechTalk #5
AWS CLI and CLOUDIAN HyperStore
CodeCommit/CodeDeploy/CodePipeline サービスアップデート(2016年10月)
AWS as code_and_test
CloudFormation Getting Started with YAML
20130310 jaws tokai2013
当社のawsへの取組
Programming AWS with Perl at YAPC::Asia 2013
Jaws−横浜ハンズオンーCloudFormation 1/3

More from 淳 千葉 (11)

PDF
devio2020_ユーザー体験向上するためにAWSサポートチームでやってる10のことの
PDF
Well-Architected フレームワーク概要
PDF
AWS Resource Access Manager(RAM)によるマルチアカウン戦略
PDF
Lambda EdgeとALB認証を導入した話
PDF
ECSの大型アップデートが来たよ!
PDF
GitHubとクラスメソッド勉強会資料_DevOpsとAWS
PPTX
Premier night3 devopsことはじめ
PPTX
re:Growth athena
PPTX
CloudWatch Eventを使ったamiの削除
PPTX
CloudWatch Eventsを使った ECSのAutoScaling
PPTX
短期間で大規模なシンクラ環境を用意した話
devio2020_ユーザー体験向上するためにAWSサポートチームでやってる10のことの
Well-Architected フレームワーク概要
AWS Resource Access Manager(RAM)によるマルチアカウン戦略
Lambda EdgeとALB認証を導入した話
ECSの大型アップデートが来たよ!
GitHubとクラスメソッド勉強会資料_DevOpsとAWS
Premier night3 devopsことはじめ
re:Growth athena
CloudWatch Eventを使ったamiの削除
CloudWatch Eventsを使った ECSのAutoScaling
短期間で大規模なシンクラ環境を用意した話

CodeBuildを身近にするためのはじめの一歩