本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。

最新の情報については、AWS 公式ドキュメントをご参照ください。

AWS の Code がつくサービス CodeCommit、CodeDeploy CodeBuild CodePipeline などの俗称である。

code-family

AWS CodeCommit

【AWS Black Belt Online Seminar】AWS CodeCommit & AWS CodeArtifact(YouTube)(55:47)

CodeCommit

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)

CodeGuru

AWS CodeGuru サービス概要AWS CodeGuru ドキュメントAWS CodeGuru よくある質問AWS CodeGuru の料金

AWS CodeBuild

【AWS Black Belt Online Seminar】AWS CodeBuild(YouTube)(59:01)

CodeBuild

AWS CodeBuild サービス概要AWS CodeBuild ドキュメントAWS CodeBuild よくある質問AWS CodeBuild の料金

AWS CodeDeploy

【AWS Black Belt Online Seminar】AWS CodeDeploy(YouTube)(54:29)

CodeDeploy

AWS CodeDeploy サービス概要AWS CodeDeploy ドキュメントAWS CodeDeploy よくある質問AWS CodeDeploy の料金

AWS CodePipeline

【AWS Black Belt Online Seminar】AWS CodeStar & AWS CodePipeline(YouTube)(56:29)

CodePipeline

Streamline Your Software Release Process Using AWS CodePipeline(YouTube)(16:33)

AWS CodePipeline サービス概要AWS CodePipeline ドキュメントAWS CodePipeline よくある質問AWS CodePipeline の料金

NEW LAUNCH! AWS CodeStar: The Central Experience to Quickly Start Developing Applications on AWS(YouTube)(30:55)

codestar-awssummit

AWS CodeStar サービス概要AWS CodeStar ドキュメントAWS CodeStar よくある質問AWS CodeStar の料金

codecommit-overview

プライベート Git リポジトリのフルマネージド型サービスです。

作成するリポジトリ名は、大文字小文字が区別され、作成する AWS リージョンの AWS アカウント内で一意にする必要があります。

同一リージョンでも、別のアカウントでは同じ名前のリポジトリを作成することができます。

same-repository

作成したリポジトリには、リージョン毎に 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

Amazon CodeGuru Reviewer との連携

https://aws.amazon.com/jp/codeguru/

機械学習を使用して、ソースコードの問題を検知してくれるサービスです。

2023 年 4 月現在、Java と Python に対応しています。

リポジトリを関連付けすると、プルリクエストに対して自動的に推奨事項をコメントしてくれます。

codeguru-reviewer

coreguru-reviewer-result

90 日間、100,000 行のコードまでは無料で利用できます。90 日経過または、100,000 行のコードを超えた場合に料金が発生します。

AWS CodeArtifact

codeartifact-overview

ソフトウェアパッケージを保存公開できるサービスです。 これを利用することで以下のメリットがあります。

codebuild-overview

自動テストやビルドを実行してくれるプライベートリポジトリサービスです。

buildspec.yml

CodeBuild のビルド仕様に関するリファレンス

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/**/*'

ビルド環境で利用できる環境変数

ビルド環境の環境変数

ビルドのフェーズ

AWS CodeBuild におけるビルドの詳細の表示

ビルドは次のフェーズがあります。

ビルドを高速化する方法

ビルド時間を短縮することで、ビルド時間に対する従量課金分のコストを削減することができます。 ビルド時間がかかっている場合は、ビルドのフェーズ詳細から、どのフェーズで時間がかかっているかを調査することができます。次の例では、BUILD フェーズが他に比べて時間がかかっていることが分かります。

codebuild-phase

ローカルでビルド

https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/use-codebuild-agent.html

ローカルでビルドすることで、buildspec.yml の動作を手軽に確認することができます。また、何度も動作確認を行うことで無料利用枠を使い切ってしまうといったことを回避できます。

VPC での利用

Amazon Virtual Private Cloud での AWS CodeBuild の使用

CodeBuild では通常 VPC 内のリソースにはアクセスできません。そのようなとき、VPC 上にビルドホストを構築することでリソースにアクセスできるようになります。

主なユースケースは次のとおりです。

デプロイを実行してくれるサービスです。 デプロイ先として下記 3 タイプのリソースがサポートされます。

appspec.yml というファイルに設定を記載します。

appspec.yml

CodeDeploy AppSpec ファイルリファレンス

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名"

AppSpec ファイル例

CI / CD を構築できるサービスです。

CodeCommit、CodeBuild、CodeDeploy を組み合わせたパイプラインを作成することができます。

codepipeline-overview

アプリケーションを開発および構築して AWS にデプロイするために必要なツールを備えたクラウドベースの開発サービスです。

テンプレートを使用して、「Amazon EC2、AWS Lambda、AWS Elastic Beanstalk」を使った開発プロジェクトを始めることができます。 開発に使える言語は、「Java、JavaScript、PHP、Ruby、Python」の5つがサポートされています。

これらのサービスで構築できる場合、簡単に CI/CD を構築できるようになります。

codestar

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

h4b-codexx.png