Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
桂中
Uploaded by
桂一 中山
PPTX, PDF
1,322 views
Cloud Formation + Code シリーズで行うマルチアカウント・マルチリージョンデプロイ
Cloud Formationを使ってCI/CDパイプラインを構築し、AWS SAMなどを使用したリソースのデプロイを行うパイプラインの構築について
Technology
◦
Related topics:
CI/CD
•
Read more
1
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 15
2
/ 15
3
/ 15
4
/ 15
5
/ 15
6
/ 15
7
/ 15
8
/ 15
9
/ 15
10
/ 15
11
/ 15
12
/ 15
13
/ 15
14
/ 15
15
/ 15
More Related Content
PPTX
サーバレス × AWS SAM × DRにおけるTIPS
by
桂一 中山
PDF
【IVS CTO Night & Day】Networking Technology
by
Amazon Web Services Japan
PDF
今からおさえるクラウドとAWS活用のこれから2014
by
真吾 吉田
PPTX
re:Port 2017 #2 「AWS re:Invent 2017 参加レポート」
by
Mamoru Ohashi
PDF
【IVS CTO Night & Day】DevOps on AWS 2017
by
Amazon Web Services Japan
PDF
Morning Session - AWS Serverless Ways
by
akitsukada
PDF
re:port2017 hirayama
by
Tomofumi Hirayama
PDF
俺のLambda
by
Motokatsu Matsui
サーバレス × AWS SAM × DRにおけるTIPS
by
桂一 中山
【IVS CTO Night & Day】Networking Technology
by
Amazon Web Services Japan
今からおさえるクラウドとAWS活用のこれから2014
by
真吾 吉田
re:Port 2017 #2 「AWS re:Invent 2017 参加レポート」
by
Mamoru Ohashi
【IVS CTO Night & Day】DevOps on AWS 2017
by
Amazon Web Services Japan
Morning Session - AWS Serverless Ways
by
akitsukada
re:port2017 hirayama
by
Tomofumi Hirayama
俺のLambda
by
Motokatsu Matsui
What's hot
PDF
UnityとAmazon Web Servicesで生み出す新しい価値
by
Keisuke Nishitani
PDF
Serverless AWS構成でセキュアなSPAを目指す
by
Masayuki Kato
PDF
[AKIBA.AWS] VPCをネットワーク図で理解してみる
by
Shuji Kikuchi
PPTX
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
by
a kyane
PDF
【IVS CTO Night & Day】AWS Cloud Security
by
Amazon Web Services Japan
PPTX
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
by
Hyunmin Kim
PDF
AWS Introduction for Startups
by
akitsukada
PDF
G tech2016 クラウド時代に必要とされる組織と人材育成について
by
Trainocate Japan, Ltd.
PDF
Serverless Architecture on AWS(20151023版)
by
Keisuke Nishitani
PDF
クラウドネイティブ化する未来
by
Keisuke Nishitani
PPTX
成長していくサービスとAWS
by
Mitsuharu Hamba
PDF
サーバーレス・アーキテクチャ概要
by
真吾 吉田
PPTX
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
by
Ryuta Otaki
PDF
Serverless Architecture on AWS (20151201版)
by
Keisuke Nishitani
PDF
re:Growth 2021 コンピュートサービスの進化を語る
by
Shuji Kikuchi
PDF
【IVS CTO Night & Day】AWSにおけるビッグデータ活用
by
Amazon Web Services Japan
PDF
Ad Tech on AWS - IVS CTO Night and Day Spring 2016
by
Eiji Shinohara
PDF
SA プライムなう! - AWS IoT とロボットアームでお絵かき
by
崇之 清水
PPT
RecoChoku tech night #09 -reinvent2018報告会- オープニング
by
recotech
PDF
20170210 jawsug横浜(AWSタグ)
by
Toshihiro Setojima
UnityとAmazon Web Servicesで生み出す新しい価値
by
Keisuke Nishitani
Serverless AWS構成でセキュアなSPAを目指す
by
Masayuki Kato
[AKIBA.AWS] VPCをネットワーク図で理解してみる
by
Shuji Kikuchi
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
by
a kyane
【IVS CTO Night & Day】AWS Cloud Security
by
Amazon Web Services Japan
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
by
Hyunmin Kim
AWS Introduction for Startups
by
akitsukada
G tech2016 クラウド時代に必要とされる組織と人材育成について
by
Trainocate Japan, Ltd.
Serverless Architecture on AWS(20151023版)
by
Keisuke Nishitani
クラウドネイティブ化する未来
by
Keisuke Nishitani
成長していくサービスとAWS
by
Mitsuharu Hamba
サーバーレス・アーキテクチャ概要
by
真吾 吉田
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
by
Ryuta Otaki
Serverless Architecture on AWS (20151201版)
by
Keisuke Nishitani
re:Growth 2021 コンピュートサービスの進化を語る
by
Shuji Kikuchi
【IVS CTO Night & Day】AWSにおけるビッグデータ活用
by
Amazon Web Services Japan
Ad Tech on AWS - IVS CTO Night and Day Spring 2016
by
Eiji Shinohara
SA プライムなう! - AWS IoT とロボットアームでお絵かき
by
崇之 清水
RecoChoku tech night #09 -reinvent2018報告会- オープニング
by
recotech
20170210 jawsug横浜(AWSタグ)
by
Toshihiro Setojima
Similar to Cloud Formation + Code シリーズで行うマルチアカウント・マルチリージョンデプロイ
PDF
Windows 開発者のための Dev&Ops on AWS
by
Amazon Web Services Japan
PDF
[AWSマイスターシリーズ] AWS CloudFormation
by
Amazon Web Services Japan
PPTX
Cloudformation
by
靖 小田島
PDF
AWS Black Belt Online Seminar 2017 Deployment on AWS
by
Amazon Web Services Japan
PDF
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
by
Amazon Web Services Japan
PDF
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
by
Amazon Web Services Japan
PDF
AWS Black Belt Online Seminar 2016 AWS CloudFormation
by
Amazon Web Services Japan
PDF
CloudFormation Getting Started with YAML
by
Yukitaka Ohmura
PDF
CloudFormation (CFn)入門(公開用)
by
kinneko
PDF
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
by
Shuji Watanabe
PDF
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
by
Terui Masashi
PDF
Gaming cicd-pipeline gaming-technight-2
by
Amazon Web Services Japan
PDF
Cm re growth-reinvent-app304-kaji
by
Hiroyuki Kaji
PPTX
マルチリージョン・マルチアカウント対応の柔軟な構築ツールを作ってみた
by
桂一 中山
PDF
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
by
Kazuhiro Uchimura
PDF
20160720 aws development-tools-and_hybrid_cdp
by
Yukitaka Ohmura
PDF
Jaws−横浜ハンズオンーCloudFormation 1/3
by
Yasuhiro Araki, Ph.D
PDF
20170809 AWS code series
by
Atsushi Fukui
PPTX
【AWS×Deployment】TechTalk #5
by
幸夫 茅根
PDF
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
by
Katz Ueno
Windows 開発者のための Dev&Ops on AWS
by
Amazon Web Services Japan
[AWSマイスターシリーズ] AWS CloudFormation
by
Amazon Web Services Japan
Cloudformation
by
靖 小田島
AWS Black Belt Online Seminar 2017 Deployment on AWS
by
Amazon Web Services Japan
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
by
Amazon Web Services Japan
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
by
Amazon Web Services Japan
AWS Black Belt Online Seminar 2016 AWS CloudFormation
by
Amazon Web Services Japan
CloudFormation Getting Started with YAML
by
Yukitaka Ohmura
CloudFormation (CFn)入門(公開用)
by
kinneko
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
by
Shuji Watanabe
私はこれでJSONをやめました〜あるいはAWSの設定をコード化するとはどういうことか〜
by
Terui Masashi
Gaming cicd-pipeline gaming-technight-2
by
Amazon Web Services Japan
Cm re growth-reinvent-app304-kaji
by
Hiroyuki Kaji
マルチリージョン・マルチアカウント対応の柔軟な構築ツールを作ってみた
by
桂一 中山
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
by
Kazuhiro Uchimura
20160720 aws development-tools-and_hybrid_cdp
by
Yukitaka Ohmura
Jaws−横浜ハンズオンーCloudFormation 1/3
by
Yasuhiro Araki, Ph.D
20170809 AWS code series
by
Atsushi Fukui
【AWS×Deployment】TechTalk #5
by
幸夫 茅根
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
by
Katz Ueno
Cloud Formation + Code シリーズで行うマルチアカウント・マルチリージョンデプロイ
1.
クラウドパートナー 中山 桂一 nakayama@chara-web.co.jp Cloud
Formation + Codeシリーズで行う マルチアカウント・マルチリージョンデプロイ 1
2.
自己紹介 名前: 中山 桂一 @k1nakayama
k1nakayama 所属: 株式会社キャラウェブ クラウドソリューショングループ ソリューションアーキテクト 好きなAWSサービス: ・AWS Lambda ・AWS CloudFormation ・Amazon API Gateway 2
3.
Principle & GOAL
AWSサービスを活用してCI/CDパイプラインを構築する 開発環境と商用環境を分離する 商用環境へのデプロイは、必ずステージング環境へのデプロイ後に手動承認 を行った上で実行する DR対応を考慮して、複数のリージョンにデプロイする 主にモバイルバックエンド向けのサーバレスプラットフォームを対象する ※必ずしもこのケースでないと有効でないものでありません マイクロサービスアーキテクチャを採用したアプリケーションを想定 出来る限りコードベースで定義を行う 3
4.
基本的なフロー 1. Code Commitにリポジトリーを作成し、デプロイパッケージをコミットする 2.
Cloud Formationにより、S3バケット、Code Pipeline、Code Build、必要な IAM RoleなどのCI/CDパイプラインと関連リソースを構築する 3. Code Commitにプッシュをすることで、パイプラインが実行される 4. Code Buildにてユニットテスト、デプロイ用Cloud Formationテンプレートのアップ ロード、AWS SAMのパッケージ作成、DR用リージョンのCode Commitリポジトリ へのプッシュ(ミラー) 5. Cloud Formationによる変更セットの作成 6. Cloud Formationによる変更セットの実行(デプロイ) 4
5.
アカウントの考え方 全てのステージ(環境)において、ソースコードは同一(ワンソース)であるべき ステージ毎にオペレーションを行えるユーザ権限も分けるべき 管理アカウント、商用アカウント、ステージングアカウント、開発アカウントの 4アカウントに分けて運用を行う 5 管理環境 CodeCommit
CodePipeline CodeBuild S3 KMS 開発環境 CloudFormation Lambda S3 DynamoDB CloudFront API Gateway ステージング環境 CloudFormation Lambda S3 DynamoDB CloudFront API Gateway 商用環境 CloudFormation Lambda S3 DynamoDB CloudFront API Gateway 各アカウントへのアクセスは、管理環境からRoleをAssume Roleすることで権限を 付与し、アクセスを行う
6.
デプロイパッケージの中身 デプロイパッケージ(リポジトリにアップロードするファイル群)の中身 CI/CDパイプライン構築用Cloud Formationテンプレート
Cloud Formationテンプレート (サービス毎のリソースを全てデプロイするための定義が書かれたもの) Code Build用ビルド設定ファイル(buildspec.yml) Lambda用ソースコード(package.json等の依存関係ファイルも含める) ユニットテスト用テストスクリプト Cloud Formationデプロイ時用パラメータ設定ファイル API Gateway用Swagger定義ファイル ユニットテスト実行結果Slack通知用スクリプト 6
7.
CI/CDパイプライン構築用CFnテンプレート CI/CDパイプライン構築用Cloud Formationテンプレートの中身 パラメータセクション
サービス名等を識別するためのサフィックス Code Commitのリポジトリ名 コンディションセクション メインリージョンか否かを判断するための条件 リソースセクション 当該サービスのパイプライン用S3バケット Code Build 用IAM Role/ポリシー Code Pipeline 用IAM Role/ポリシー Code Pipeline Artifact用KMSキー Code Build Project (開発環境用/ステージング環境用/商用環境用それぞれ) S3 ポリシー ステージング・商用用パイプラインの承認用SNSトピック Code Pipeline Project(開発環境用/ステージング・商用用の2種類をメイン・DRリージョン それぞれ) 7
8.
CI/CDパイプライン用CFnテンプレートTips Code Build用Roleでは、ユニットテストやパッケージインストール時に必要なサービスへの アクセス権限等を忘れずに付与する
CodePipeline用Roleに各ステージ用アカウントへのデプロイ用RoleのAssume権限を付与す ること CodeBuildはbuildspec.ymlのファイルパスを指定することで、環境毎に内容を変えることが 可能です。(数ヶ月前にUpdateで可能となりました) 各環境毎、リージョン毎に処理内容が若干異なると思うので、それぞれ毎に合わせたファ イル名を指定すると楽に構築できる CodeBuildの環境変数としてS3バケットやサービス名などの情報を渡すとハードコーディン グを避けれる Code PipelineのソースとしてCode Commitを指定する際、参照ブランチを開発環境:master、 ステージング・商用環境用:stgなどのブランチを分ける デプロイを行うためのCloud Formationはステージ、CFn実行Roleの両方を開発環境・ス テージング環境のRole Arnを指定することで、それぞれの環境のCFnとして実行する ステージング環境へのデプロイ後、手動承認を挟むよう、Code Pipelineステージを構成す る 8
9.
Code Pipelineの実装結果 CI/CDパイプライン構築用CloudFormationを実行した結果下記のようなパイプラインが構築 される 9 開発環境用パイプライン ステージング・商用用パイプライン
10.
Cloud Formationテンプレート 各環境にリソースをデプロイするためのCFnテンプレートの中身は、実際の構築するアプリケー ションによって様々ですが、モバイルバックエンドのための共通するテンプレートの中身は下記の 通り パラメータセクション
現状のメイン環境となるリージョン マッピングセクション API用カスタムドメイン(各アカウントごとの設定など) コンディションセクション マスター環境か 商用環境か など リソースセクション DynamoDB オートスケーリング用Role Lambda用Role DynamoDB テーブル(アプリケーションオートスケーリングなども) Lambda Function(AWS SAM) API Gateway(AWS SAM) LambdaとAPI Gatewayとのパーミッション APIカスタムドメイン など 10
11.
Cloud FormationテンプレートTips DynamoDB
オートスケーリングを設定する場合は、1テーブル毎にネストスタックに分ける (DynamoDBオートスケーリング用設定は項目が多く、1テーブルだけで多くの容量となるた め) API Gatewayの設定はSwaggerファイルを別途定義し、 AWS::Include を使用してSwaggerを 読み込むことで各Functionとのインテグレーション設定を記述しやすい API内の1リソース(URI)毎に1Lambda Functionとして定義すると比較的処理がDRYに書け、 Function数も多すぎない SESのようなCFnで定義出来ないリソースはLambda backend Custom Resourceとして定義す る 他のサービス(他のCFnテンプレート)で共通して使用したいリソース名等の情報は、EC2 Systems Managerのパラメータストアに登録し、パラメータストアのパラメータ名をExportValue として定義することで、リソースが置き換わった際などにも対応できる構成となる 11 Api: Type: AWS::Serverless::Api Properties: StageName: v1 DefinitionBody: Fn::Transform: Name: AWS::Include Parameters: Location: !Sub s3://${bucketname}/swagger.yaml
12.
Code Build用ビルド設定ファイル Code Build用ビルド設定ファイルに記載する事項
Installセクション aws-cli のアップデート npm install 等の依存パッケージのインストール処理 pre_buildセクション Lambda用ソースのユニットテスト buildセクション ネストスタック用CFnテンプレートのS3バケットへの転送 SwaggerファイルのS3バケットへの転送 CFnテンプレートのpackage実行(AWS SAMによるソースファイル等のアップロードなど) post_buildセクション DR用リージョンのCode Commitリポジトリへミラー転送 12
13.
Code Build用ビルド設定ファイルTips ビルド設定はVer
0.2を指定して使う AWS CLIはアップデートして使う 依存パッケージ(モジュール)にCode Commitリポジトリを指定しているものがある場合、下 記のような設定を行うことでクレデンシャル設定を行う ユニットテストの結果をslackに通知するためのスクリプトをデプロイパッケージに含めてお くことで、通知を実装する CloudFormationテンプレートの容量制限に少しでも回避するため、JSONに変換し圧縮して 出力する ビルド設定ファイル内でパラメータストアのパラメータを取得することもできるようになった 13 - git config --global credential.helper '!aws --region ap-northeast-1 codecommit credential-helper $@' - git config --global credential.UseHttpPath true mocha ./dist/test/*.unit.spec.js --reporter json | node slack.js - aws cloudformation --region ${AWS_DEFAULT_REGION} package --template-file template.yaml --s3-bucket ${S3_BUCKET} --use-json | sed -e '1d' | jq -c . > outputTemplate.json
14.
パイプラインステータスをSlackへ通知 Code Pipeline上の各ステージのステータスをCloud Watch
Eventsにより監視することができ るようになりました。これを使用することで下記のようにSlackへステータスを通知することが できます。 ※mocha test result の部分は前ページで記載したユニットテスト実行時にSlack通知をするスクリプトを実装していること によるものです。 14
15.
課題・問題点 Code Pipelineの定義を行う際に、ソースリポジトリのターゲットブランチが存在している必 要あり
現状のAWS::CodeCommit::Repositoryなどではブランチの作成は行えず、パイプライン作成用テ ンプレートでCode Commit リポジトリを作成することは難しい(予めリポジトリを作成した上で、ブラ ンチを作成しておく必要あり) Code Commitのブランチ単位でIAM Roleによる権限設定を行うことはできず、今回のよう に、master: 開発環境用、stg: ステージング環境用にそれぞれデプロイを行うブランチとして 扱う場合に、ユーザにより権限を分けることができない AWS サポートに問い合わせをしたところ、ステージごとにリポジトリを分けて運用してもらう以外 に現状は解決策がないとのこと API Gatewayはカスタムドメインの割当について、アカウント内でユニークでなければならい DR対策として予め複数リージョンに同一ドメインを割り当てておくことが出来ず、場合によっては、 DR切り替えがこの部分のみ手動での対応が必要になる場合もありえる DynamoDB オートスケーリングの設定時にポリシーが適切に反映されずエラーとなること がある IAM Roleのポリシー設定は、結果整合性での読み取りとなっており、直前に設定されたポリシー 設定を正しく読み取れないことがある。ワイルドカード等を利用し解決するか、実際に利用される タイミングよりも前の段階(直前ではなく)で設定しておく必要がある。(AWSサポートより) 15
Download