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

What's hot (20)

PDF
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
 
PDF
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
 
PDF
OAuth 2.0のResource Serverの作り方
Hitachi, Ltd. OSS Solution Center.
 
PDF
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
都元ダイスケ Miyamoto
 
PDF
20200811 AWS Black Belt Online Seminar CloudEndure
Amazon Web Services Japan
 
PDF
20180717 AWS Black Belt Online Seminar AWS大阪ローカルリージョンの活用とAWSで実現するDisaster Rec...
Amazon Web Services Japan
 
PDF
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
Amazon Web Services Japan
 
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
PDF
AWS Black Belt Online Seminar AWS CloudFormation アップデート
Amazon Web Services Japan
 
PDF
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
Amazon Web Services Japan
 
PDF
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Amazon Web Services Japan
 
PDF
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
Amazon Web Services Japan
 
PDF
20191023 AWS Black Belt Online Seminar Amazon EMR
Amazon Web Services Japan
 
PDF
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
Amazon Web Services Japan
 
PDF
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
 
PDF
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
Amazon Web Services Japan
 
PDF
20200826 AWS Black Belt Online Seminar AWS CloudFormation
Amazon Web Services Japan
 
PDF
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
Amazon Web Services Japan
 
PPTX
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
 
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
 
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
 
OAuth 2.0のResource Serverの作り方
Hitachi, Ltd. OSS Solution Center.
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
都元ダイスケ Miyamoto
 
20200811 AWS Black Belt Online Seminar CloudEndure
Amazon Web Services Japan
 
20180717 AWS Black Belt Online Seminar AWS大阪ローカルリージョンの活用とAWSで実現するDisaster Rec...
Amazon Web Services Japan
 
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
Amazon Web Services Japan
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
AWS Black Belt Online Seminar AWS CloudFormation アップデート
Amazon Web Services Japan
 
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
Amazon Web Services Japan
 
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Amazon Web Services Japan
 
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
Amazon Web Services Japan
 
20191023 AWS Black Belt Online Seminar Amazon EMR
Amazon Web Services Japan
 
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
Amazon Web Services Japan
 
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
 
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
Amazon Web Services Japan
 
20200826 AWS Black Belt Online Seminar AWS CloudFormation
Amazon Web Services Japan
 
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
Amazon Web Services Japan
 
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
 

Viewers also liked (12)

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

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

PDF
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Kazumi OHIRA
 
PPTX
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
Saki Homma
 
PPTX
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
Saki Homma
 
PPTX
Goで作って配布するAzureコマンドラインユーティリティ
yaegashi
 
PDF
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
 
PDF
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Kazumi OHIRA
 
PDF
パフォーマンス計測Ciサービスを作って得た知見を共有したい
zaru sakuraba
 
PDF
捕鯨!詳解docker
雄哉 吉田
 
PDF
Lambda EdgeとALB認証を導入した話
淳 千葉
 
PDF
プログラマブルクラウドの薦め
Shinpei Ohtani
 
PPTX
Newcomer2020 Docker研修
Suguru Yazawa
 
PDF
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
Kazumi OHIRA
 
PDF
試して学べるクラウド技術! OpenShift
Etsuji Nakai
 
PDF
Amazon CodeWhispererで生産性を爆上げする
Ryo Ishii
 
PDF
DevOps on Azure Kubernetes
Issei Hiraoka
 
PDF
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
Akira Inoue
 
PDF
Cocos2d-x ver.3 開発の効率化
Akihiro Matsuura
 
PDF
Cocos2dx 8hour
Tomohiko Okita
 
PDF
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Samir Hammoudi
 
PDF
Cocos2d-x Console @Cocos Talks #3
Akihiro Matsuura
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Kazumi OHIRA
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
Saki Homma
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
Saki Homma
 
Goで作って配布するAzureコマンドラインユーティリティ
yaegashi
 
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
 
Azure Cosmos DB Emulator on Docker を GitHub Codespaces で動かす!
Kazumi OHIRA
 
パフォーマンス計測Ciサービスを作って得た知見を共有したい
zaru sakuraba
 
捕鯨!詳解docker
雄哉 吉田
 
Lambda EdgeとALB認証を導入した話
淳 千葉
 
プログラマブルクラウドの薦め
Shinpei Ohtani
 
Newcomer2020 Docker研修
Suguru Yazawa
 
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
Kazumi OHIRA
 
試して学べるクラウド技術! OpenShift
Etsuji Nakai
 
Amazon CodeWhispererで生産性を爆上げする
Ryo Ishii
 
DevOps on Azure Kubernetes
Issei Hiraoka
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
Akira Inoue
 
Cocos2d-x ver.3 開発の効率化
Akihiro Matsuura
 
Cocos2dx 8hour
Tomohiko Okita
 
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Samir Hammoudi
 
Cocos2d-x Console @Cocos Talks #3
Akihiro Matsuura
 
Ad

More from 淳 千葉 (10)

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

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