本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。
最新の情報については、AWS 公式ドキュメントをご参照ください。
AWS の Code がつくサービス CodeCommit、CodeDeploy CodeBuild CodePipeline などの俗称である。
【AWS Black Belt Online Seminar】AWS CodeCommit & AWS CodeArtifact(YouTube)(55:47)
AWS CodeCommit サービス概要AWS CodeCommit ドキュメントAWS CodeCommit よくある質問AWS CodeCommit の料金
AWS CodeArtifact サービス概要AWS CodeArtifact ドキュメントAWS CodeArtifact よくある質問AWS CodeArtifact の料金
【AWS Black Belt Online Seminar】Amazon CodeGuru(YouTube)(54:41)
AWS CodeGuru サービス概要AWS CodeGuru ドキュメントAWS CodeGuru よくある質問AWS CodeGuru の料金
【AWS Black Belt Online Seminar】AWS CodeBuild(YouTube)(59:01)
AWS CodeBuild サービス概要AWS CodeBuild ドキュメントAWS CodeBuild よくある質問AWS CodeBuild の料金
【AWS Black Belt Online Seminar】AWS CodeDeploy(YouTube)(54:29)
AWS CodeDeploy サービス概要AWS CodeDeploy ドキュメントAWS CodeDeploy よくある質問AWS CodeDeploy の料金
【AWS Black Belt Online Seminar】AWS CodeStar & AWS CodePipeline(YouTube)(56:29)
Streamline Your Software Release Process Using AWS CodePipeline(YouTube)(16:33)
AWS CodePipeline サービス概要AWS CodePipeline ドキュメントAWS CodePipeline よくある質問AWS CodePipeline の料金
AWS CodeStar サービス概要AWS CodeStar ドキュメントAWS CodeStar よくある質問AWS CodeStar の料金
プライベート Git リポジトリのフルマネージド型サービスです。
作成するリポジトリ名は、大文字小文字が区別され、作成する AWS リージョンの AWS アカウント内で一意にする必要があります。
同一リージョンでも、別のアカウントでは同じ名前のリポジトリを作成することができます。
作成したリポジトリには、リージョン毎に https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/xxxxx
(東京リージョンの場合) という URL で接続できます。
アクセスする URL にはリポジトリ名以外区別する情報がありませんので、別アカウントで同じリポジトリを作成すると、OS に保存されている認証情報で誤ったリポジトリに接続する可能性があるため、同一リポジトリ名は特別な理由がない限り避けたほうがよいと思います。
リポジトリへの接続は IAM ユーザーを使用し、認証は IAM ユーザーで作成する Git 認証情報を使用します。
複数の AWS アカウントで同一リージョンのリポジトリを扱う場合は、credential.namespace
で使い分けましょう。初めて CodeCommit を利用する場合でも、今後を考えて credential.namespace
を指定しておくと、HTTP ステータスコード 403 が返ってくることを回避できます。 もし、別のアカウントの認証情報が残っていて 403 が出た場合は、OS の認証情報のキャッシュを削除しましょう。
git -c credential.namespace=hoge clone git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/xxxxx
https://aws.amazon.com/jp/codeguru/
機械学習を使用して、ソースコードの問題を検知してくれるサービスです。
2023 年 4 月現在、Java と Python に対応しています。
リポジトリを関連付けすると、プルリクエストに対して自動的に推奨事項をコメントしてくれます。
90 日間、100,000 行のコードまでは無料で利用できます。90 日経過または、100,000 行のコードを超えた場合に料金が発生します。
ソフトウェアパッケージを保存公開できるサービスです。 これを利用することで以下のメリットがあります。
自動テストやビルドを実行してくれるプライベートリポジトリサービスです。
CodeBuild を使用するには、ビルドの仕様を決めるファイルを定義する必要があります。
buildspec.yml の構成は次の通りです。
version: 0.2
env:
variables:
# ここで環境変数を定義します。
環境変数名: "値"
parameter-store:
# Systems Manager パラメータストアに保存されているカスタム環境変数
環境変数名: "パラメータストアのキー名"
secrets-manager:
# AWS Secrets Manager に保存されているカスタム環境変数
環境変数名: secret-id:json-key:version-stage:version-id
phases:
install:
# ビルド環境でのパッケージインストール
commands:
- pip install --upgrade awscli
pre_build:
# ビルド前に実行する
# 例)ECR へのサインイン、npm の依存関係インストール
commands:
- npm install
- npm install --save-dev jest-junit
build:
# ビルド
commands:
- echo Build started on `date`
- npm run build
post_build:
# ビルド後に実行する
# 例)ECR に Docker イメージを push
reports:
# テストレポート
jest_reports:
# https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/test-report-jest.html
files:
- test-results.xml
file-format: JUNITXML
base-directory: reports/results
artifacts:
# ビルド出力アーティファクトを含む場所
files:
- "**/*"
cache:
# キャッシュする場所を指定
# ビルドプロジェクトでキャッシュタイプを S3 か ローカルを選択
paths:
- './node_modules/**/*'
ビルドは次のフェーズがあります。
COMPLETED
が実行されます。FINALIZING
が実行されます。FINALIZING
が実行されます。FINALIZING
が実行されます。ビルド時間を短縮することで、ビルド時間に対する従量課金分のコストを削減することができます。 ビルド時間がかかっている場合は、ビルドのフェーズ詳細から、どのフェーズで時間がかかっているかを調査することができます。次の例では、BUILD フェーズが他に比べて時間がかかっていることが分かります。
env:
variables:
DOCKER_BUILDKIT: "1"
cache:
paths:
- "./node_modules/**/*"
https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/use-codebuild-agent.html
ローカルでビルドすることで、buildspec.yml の動作を手軽に確認することができます。また、何度も動作確認を行うことで無料利用枠を使い切ってしまうといったことを回避できます。
Amazon Virtual Private Cloud での AWS CodeBuild の使用
CodeBuild では通常 VPC 内のリソースにはアクセスできません。そのようなとき、VPC 上にビルドホストを構築することでリソースにアクセスできるようになります。
主なユースケースは次のとおりです。
デプロイを実行してくれるサービスです。 デプロイ先として下記 3 タイプのリソースがサポートされます。
appspec.yml というファイルに設定を記載します。
CodeDeploy を使用するには、デプロイの仕様を決めるファイルを定義する必要があります。
appspec.yml の構成は次の通りです。
version:
0.0
# 現在許容されている値は、0.0 のみ
Resources:
- TargetService:
# ECS 用
Type: AWS::ECS::Service
Properties:
TaskDefinition: "task-definition-ARN"
:
- name-of-function-to-deploy:
# Lambda 用
type: "AWS::Lambda::Function"
properties:
name: name-of-lambda-function-to-deploy
:
Hooks:
- BeforeInstall: "LambdaFunction名"
- AfterInstall: "LambdaFunction名"
- AfterAllowTestTraffic: "LambdaFunction名"
- BeforeAllowTraffic: "LambdaFunction名"
- AfterAllowTraffic: "LambdaFunction名"
CI / CD を構築できるサービスです。
CodeCommit、CodeBuild、CodeDeploy を組み合わせたパイプラインを作成することができます。
アプリケーションを開発および構築して AWS にデプロイするために必要なツールを備えたクラウドベースの開発サービスです。
テンプレートを使用して、「Amazon EC2、AWS Lambda、AWS Elastic Beanstalk」を使った開発プロジェクトを始めることができます。 開発に使える言語は、「Java、JavaScript、PHP、Ruby、Python」の5つがサポートされています。
これらのサービスで構築できる場合、簡単に CI/CD を構築できるようになります。
AWS Hands-on for Beginners AWS Code サービス群を活用して、CI/CD のための構成を構築しよう! https://aws.amazon.com/jp/blogs/news/aws-hands-on-for-beginners-10/ > https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-cicd-2020-reg-event-LP.html?trk=aws_blog_k