CI/CD パイプラインを使用して Amazon EKS へ Java アプリケーションを自動的にビルドし、デプロイする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CI/CD パイプラインを使用して Amazon EKS へ Java アプリケーションを自動的にビルドし、デプロイする

作成者: MAHESH RAGHUNANDANAN (AWS)、James Radtke (AWS)、Jomcy Pappachen (AWS)

コードリポジトリ: aws-cicd-java-eks

環境:本稼働

テクノロジー: コンテナとマイクロサービス CloudNative;; DevOps; モダナイゼーション

ワークロード:その他すべてのワークロード

AWS サービス: AWS CloudFormation、AWS CodeCommit、AWS CodePipeline、Amazon EC2 Container RegistryAmazon EKS

[概要]

このパターンでは、推奨される DevSecOps プラクティスを使用して Java アプリケーションを自動的に構築し、Amazon Web Services (AWS) クラウド上の Amazon Elastic Kubernetes Service (Amazon EKS) クラスターにデプロイする継続的インテグレーションと継続的デリバリー (CI/CD) パイプラインを作成する方法について説明します。このパターンでは、Spring Boot Java フレームワークで開発され、Apache Maven を使用するグリーティングアプリケーションを使用しています。

このパターンのアプローチを使用して Java アプリケーションのコードをビルドし、アプリケーションのアーティファクトを Docker イメージとしてパッケージ化し、イメージをセキュリティスキャンし、そのイメージをワークロードコンテナとして Amazon EKS にアップロードできます。このパターンのアプローチは、緊密に結合されたモノリシックアーキテクチャからマイクロサービスアーキテクチャに移行する場合に便利です。このアプローチは、Java アプリケーションのライフサイクル全体を監視および管理する上でも役立ち、より高いレベルの自動化が可能になり、エラーまたはバグを回避できます。

前提条件と制限

前提条件

  • アクティブな AWS アカウント。

  • AWS コマンドラインインターフェイス (AWS CLI) バージョン 2 (インストールおよび設定済み)。詳細については、AWS CLI ドキュメントの「AWS CLI バージョン 2 のインストール、更新、およびアンインストール」を参照してください。

  • AWS CLI バージョン 2 は、Amazon EKS クラスターを作成するのと同じ IAM ロールで設定する必要があります。これは、そのロールのみが aws-auth ConfigMap に他の IAM ロールを追加する権限があるためです。AWS CLI の設定に関する情報と手順については、AWS CLI ドキュメントの「設定の基本」を参照してください。

  • AWS Identity and Access Management (IAM) ロールと AWS へのフルアクセス許可 CloudFormation。詳細については、AWS CloudFormation ドキュメントの「IAM によるアクセスの制御」を参照してください。

  • EKS クラスター内のワーカーノードの IAM ロール名と IAM ロールの Amazon リソースネーム (ARN) の詳細を含む既存の Amazon EKS クラスター。

  • Amazon EKS クラスターにインストールおよび設定済みの Kubernetes クラスターオートスケーラー。詳細については、Amazon EKS ドキュメントの「クラスターオートスケーラー」を参照してください。 

  • GitHub リポジトリ内のコードへのアクセス。

重要な注意事項

AWS Security Hub は、コード内の AWS CloudFormation テンプレートの一部として有効になります。デフォルトでは、Security Hub を有効にすると 30 日間の無料トライアルが提供され、その後はこの AWS サービスに関連するコストがかかります。価格設定の詳細については、「AWS Security Hub の価格設定」を参照してください。

製品バージョン

  • Helm バージョン 3.4.2 以降

  • Apache Maven バージョン 3.6.3 以降

  • BridgeCrew Checkov バージョン 2.2 以降

  • Aqua Security Trivy バージョン 0.37 以降

アーキテクチャ

テクノロジースタック

  • AWS CodeBuild

  • AWS CodeCommit

  • Amazon CodeGuru

  • AWS CodePipeline

  • Amazon Elastic Container Registry

  • Amazon Elastic Kubernetes Service

  • Amazon EventBridge

  • AWS Security Hub

  • Amazon Simple Notification Service (Amazon SNS)

ターゲットアーキテクチャ

""

この図表は、次のワークフローを示しています:

  1. 開発者はリポジトリのベースブランチで Java アプリケーションコードを更新し CodeCommit 、プルリクエスト (PR) を作成します。

  2. PR が送信されるとすぐに、Amazon CodeGuru Reviewer は自動的にコードを確認し、Java のベストプラクティスに基づいて分析し、開発者にレコメンデーションを提供します。

  3. PR がベースブランチにマージされると、Amazon EventBridge イベントが作成されます。

  4. EventBridge イベントは CodePipeline パイプラインを開始し、パイプラインは を開始します。

  5. CodePipeline は CodeSecurity スキャンステージ (継続的なセキュリティ) を実行します。

  6. CodeBuild は、Dockerfile および Kubernetes デプロイ Helm ファイルが Checkov を使用してスキャンされ、アプリケーションのソースコードが増分コード変更に基づいてスキャンされるセキュリティスキャンプロセスを開始します。アプリケーションのソースコードスキャンは、CodeGuru レビューワーコマンドラインインターフェイス (CLI) ラッパー によって実行されます。

  7. セキュリティスキャンステージが成功すると、ビルドステージ (継続的インテグレーション) が開始されます。

  8. ビルドステージでは、 はアーティファクトを CodeBuild ビルドし、アーティファクトを Docker イメージにパッケージ化し、Aqua Security Trivy を使用してイメージをスキャンし、Amazon ECR にイメージを保存します。

  9. ステップ 8 で検出された脆弱性は Security Hub にアップロードされ、開発者またはエンジニアによってさらに分析されます。Security Hub は、脆弱性を修復するための概要と推奨事項を提供します。

  10. CodePipeline パイプライン内のさまざまなフェーズの E メール通知は、Amazon SNS を介して送信されます。

  11. 継続的インテグレーションフェーズが完了すると、 はデプロイステージ (継続的デリバリー) CodePipeline に入ります。

  12. Docker イメージは、Helm チャートを使用してコンテナワークロード (ポッド) として Amazon EKS にデプロイされます。

  13. アプリケーションポッドは、アプリケーションのプロファイリングデータ (CPU、ヒープ使用量、レイテンシー) CodeGuru を Amazon Profiler に送信する Amazon CodeGuru Profiler Agent で設定され、デベロッパーがアプリケーションの動作を理解するのに役立ちます。

ツール

AWS サービス

  • AWS CloudFormation は、AWS リソースをセットアップし、迅速かつ一貫したプロビジョニングを行い、AWS アカウントとリージョン全体のライフサイクルを通じてリソースを管理するのに役立ちます。

  • AWS CodeBuild は、ソースコードをコンパイルし、ユニットテストを実行し、すぐにデプロイできるアーティファクトを生成するのに役立つフルマネージドビルドサービスです。

  • AWS CodeCommit は、独自のソース管理システムを管理する必要なく、Git リポジトリをプライベートに保存および管理するためのバージョン管理サービスです。

  • Amazon CodeGuru Profiler は、ライブアプリケーションからランタイムパフォーマンスデータを収集し、アプリケーションのパフォーマンスを微調整するのに役立つレコメンデーションを提供します。

  • Amazon CodeGuru Reviewer は、プログラム分析と機械学習を使用して、デベロッパーが見つけるのが難しい潜在的な欠陥を検出し、Java および Python コードを改善するための提案を提供します。

  • AWS CodePipeline を使用すると、ソフトウェアリリースのさまざまな段階を迅速にモデル化して設定し、ソフトウェアの変更を継続的にリリースするために必要なステップを自動化できます。

  • Amazon Elastic Container Registry (Amazon ECR) は、セキュリティ、スケーラビリティ、信頼性を備えたマネージドコンテナイメージレジストリサービスです。

  • Amazon Elastic Kubernetes Service (Amazon EKS) は、 で Kubernetes を実行する際に役立ちます。独自の Kubernetes コントロールプレーンまたはノードをインストールおよび維持する必要はありません。

  • Amazon EventBridge は、アプリケーションをさまざまなソースからのリアルタイムデータに接続するのに役立つサーバーレスイベントバスサービスです。たとえば、AWS Lambda 関数、API 宛先を使用する HTTP 呼び出しエンドポイント、または他の AWS アカウントのイベントバスなどです。

  • AWS Identity and Access Management (IAM)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。

  • AWS Security Hub は、AWS のセキュリティ状態の包括的なビューを提供します。また、セキュリティ業界の標準とベストプラクティスに対してお使いの AWS 環境をチェックする上で役立ちます。

  • Amazon Simple Notification Service (Amazon SNS)」は、ウェブサーバーやメールアドレスなど、パブリッシャーとクライアント間のメッセージの交換を調整および管理するのに役立ちます。

  • Amazon Simple Storage Service (Amazon S3) は、任意のデータ量を保存、保護、取得する際に役立つクラウドベースのオブジェクトストレージサービスです。

その他のサービス

  • Helm は Kubernetes 用のオープンソースのパッケージマネージャーです。

  • Apache Maven は、ソフトウェアプロジェクトを管理する包括ツールです。

  • BridgeCrew Checkov は、Infrastructure as Code (IaC) ファイルをスキャンして、セキュリティやコンプライアンスの問題につながる可能性のある設定ミスがないか確認するための静的コード分析ツールです。

  • Aqua Security Trivy は、設定の問題に加えて、コンテナイメージ、ファイルシステム、Git リポジトリの脆弱性のための包括的スキャナーです。

コード

このパターンのコードはリポジトリにあります GitHub aws-codepipeline-devsecops-amazoneks

ベストプラクティス

  • このソリューションのすべての段階で、IAM エンティティは最小特権の原則に従っています。AWS のサービスまたはサードパーティのツールを追加してソリューションを拡張する場合は、最小特権の原則に従うことをお勧めします。

  • Java アプリケーションが複数ある場合は、各アプリケーションに個別の CI/CD パイプラインを作成することをお勧めします。

  • モノリスアプリケーションがある場合は、アプリケーションをできる限りマイクロサービスに分割することをお勧めします。マイクロサービスは柔軟性が高く、アプリケーションをコンテナとして簡単にデプロイでき、アプリケーションのビルドとデプロイ全体をよりよく把握できます。

エピック

タスク説明必要なスキル

GitHub リポジトリのクローンを作成します。

リポジトリのクローンを作成するには、次のコマンドを実行します。

git clone https://github.com/aws-samples/aws-codepipeline-devsecops-amazoneks
アプリ開発者、 DevOps エンジニア

S3 バケットを作成し、コードをアップロードします。

  1. AWS マネジメントコンソールにサインインし、Amazon S3 コンソールを開いてから、このソリューションをデプロイする予定の AWS リージョンに S3 バケットを作成します。詳細については、Amazon EFS ユーザーガイドの「バケットの作成」を参照してください。

  2. S3 バケットに codeという名前のフォルダを作成します。

  3. リポジトリのクローンを作成した場所にナビゲートします。.zip 拡張子 (cicdstack.zip) でコード全体の圧縮バージョンを作成し、.zip ファイルを検証するには、以下のコマンドを順番に実行します。

    : python コマンドが失敗し、Python が見つからなかったと表示される場合は、代わりに python3 を使用します。

    cd aws-codepipeline-devsecops-amazoneks python -m zipfile -c cicdstack.zip * python -m zipfile -t cicdstack.zip
  4. S3 バケットで以前に作成したコードフォルダに cicdstack.zip ファイルをアップロードします。

AWS DevOps、 DevOps エンジニア、クラウド管理者、 DevOps

AWS CloudFormation スタックを作成します。

  1. AWS CloudFormation コンソールを開き、スタックの作成 を選択します。

  2. [Specify Template(テンプレートを指定)] で、[Upload a template file(テンプレートファイルをアップロード)] を選択し、cf_templates/codecommit_ecr.yaml ファイルをアップロードしてから、[Next(次へ)] を選択します。

  3. Specify stack details(スタック詳細を指定)に、スタック名を入力してから、次の入力パラメータ値を指定します。

    • CodeCommitRepositoryBranchName: コードが存在するブランチ名 (デフォルトはメイン

    • CodeCommitRepositoryName: 作成する CodeCommit リポジトリの名前。

    • CodeCommitRepositoryS3Bucket : コードフォルダを作成した S3 バケットの名前

    • CodeCommitRepositoryS3BucketObjKey: code/cicdstack.zip

    • ECR RepositoryName: 作成する Amazon ECR リポジトリの名前

  4. [Next(次へ)] を選択し、スタックの設定オプションのデフォルト設定を使用してから、[Next(次へ)] を選択します。

  5. 確認セクションで、テンプレートとスタック詳細を確認してから、[Create stack(スタックを作成)] を選択します。その後、 CodeCommit および Amazon ECR リポジトリを含むスタックが作成されます。

  6. Java CI/CD パイプラインのセットアップに必要な CodeCommit および Amazon ECR リポジトリの名前を書き留めます。

AWS DevOps、 DevOps

CloudFormation スタックのデプロイを検証します。

  1. CloudFormation コンソールの スタックで、デプロイした CloudFormation スタックのステータスを確認します。スタックのステータスは作成完了になっているはずです。

  2. さらに、コンソールから、 CodeCommit と Amazon ECR がプロビジョニングされ、準備が整っていることを確認します。

DevOps エンジニア

S3 バケットを削除します。

以前に作成した S3 バケットを空にして削除します。詳細については、Amazon EFS ユーザーガイドの「バケットの削除」を参照してください。

AWS DevOps、 DevOps
タスク説明必要なスキル

Java アプリケーションの Helm チャートを設定します。

  1. GitHub リポジトリをクローンした場所で、フォルダ に移動しますhelm_charts/aws-proserve-java-greeting。このフォルダの values.dev.yaml ファイルには、Amazon EKS へのコンテナデプロイ用に変更できる Kubernetes リソース設定に関する情報が含まれています。AWS アカウント ID、AWS リージョン、Amazon ECR リポジトリ名を指定して Docker リポジトリパラメータを更新します。

    image: repository: <account-id>.dkr.ecr.<region>.amazonaws.com/<app-ecr-repo-name>
  2. Java ポッドのサービスタイプは LoadBalancer に設定されます。

    service: type: LoadBalancer port: 80 targetPort: 8080 path: /hello initialDelaySeconds: 60 periodSeconds: 30

    別のサービス (例、NodePort) を使用するには、パラメータを変更できます。詳細については、Kubernetes ドキュメントを参照してください。

  3. autoscaling パラメータを enabled: true に変更することで、「Kubernetes 水平ポッドオートスケーラー」を有効化できます。

    autoscaling: enabled: true minReplicas: 1 maxReplicas: 100 targetCPUUtilizationPercentage: 80 # targetMemoryUtilizationPercentage: 80

Kubernetes ワークロードのさまざまな機能を有効にするには、 values.<ENV>.yaml ファイルの値を変更します。ここで、 <ENV>は開発、本番稼働、UAT、または QA 環境です。

DevOps

Helm チャートの構文エラーを検証します。

  1. ターミナルから、次のコマンドを実行して、ローカルワークステーションに Helm v3 がインストールされていることを確認します。

    helm --version

    Helm v3 がインストールされていない場合は、インストールします

  2. ターミナルで、Helm チャートディレクトリ (helm_charts/aws-proserve-java-greeting) にナビゲートし、次のコマンドを実行します。

    helm lint . -f values.dev.yaml

    これで、Helm チャートの構文エラーがチェックされます。

DevOps エンジニア
タスク説明必要なスキル

CI/CD パイプラインを作成します。

  1. AWS CloudFormation コンソールを開き、スタックの作成 を選択します。

  2. テンプレートを指定で、[Upload a template file(テンプレートファイルをアップロード)] を選択し、cf_templates/build_deployment.yaml テンプレートをアップロードしてから、[Next(次へ)] を選択します。

  3. スタック詳細を指定で、スタック名を指定し、入力パラメータに次の値を指定します。

    • CodeBranchName: コードが存在する CodeCommit リポジトリのブランチ名

    • EKS ClusterName: EKS クラスターの名前 (EKSClusterID ではない)

    • EKS CodeBuildAppName: アプリ Helm チャートの名前 (aws-proserve-java-greeting

    • EKS WorkerNodeRoleARN: Amazon EKS ワーカーノード IAM ロールの ARN

    • EKS WorkerNodeRoleName: Amazon EKS ワーカーノードに割り当てられた IAM ロールの名前

    • EcrDockerRepository: コードの Docker イメージが保存される Amazon ECR リポジトリの名前

    • EmailRecipient: ビルド通知を送信する必要がある E メールアドレス

    • EnvType: 環境 (開発、テスト、製品など)

    • SourceRepoName: コードが存在する CodeCommit リポジトリの名前

  4. [次へ] をクリックします。スタックオプションの設定のデフォルト設定を使用してから、[Next(次へ)] を選択します。

  5. レビューセクションで、AWS CloudFormation テンプレートとスタックの詳細を確認し、次へ を選択します。

  6. [スタックの作成] を選択します。 

  7. CloudFormation スタックのデプロイ中、パラメータで指定した E メールアドレスの所有者は、SNS トピックをサブスクライブするメッセージを受け取ります。Amazon SNS をサブスクライブするには、所有者はメッセージ内のリンクを選択する必要があります。

  8. スタックが作成されたら、スタックの[Outputs(出力)] タブを開いてから、EksCodeBuildkubeRoleARN 出力キーの ARN 値を記録します。この IAM ARN 値は、後で Amazon EKS クラスターにワークロードをデプロイするアクセス許可を CodeBuild IAM ロールに提供するために必要です。

AWS DevOps
タスク説明必要なスキル

Aqua Security の統合をオンにします。

このステップは、Trivy が報告した Docker イメージの脆弱性検出結果を Security Hub にアップロードするために必要です。AWS CloudFormation は Security Hub 統合をサポートしていないため、このプロセスは手動で実行する必要があります。

  1. AWS Security Hub コンソールを開き、統合へナビゲートします。

  2. Aqua Security を検索し、[Aqua Security: Aqua Security] を選択します。

  3. [Accept findings(検出結果を受け入れる)] を選択します。

AWS 管理者、 DevOps エンジニア
タスク説明必要なスキル

CodeBuild が Amazon EKS クラスターで Helm または kubectl コマンドを実行できるようにします。

CodeBuild が EKS クラスターで Helm または kubectl コマンドを使用するために認証されるようにするには、IAM ロールを aws-auth に追加する必要がありますConfigMapこの場合、IAM ロール の ARN を追加します。これはEksCodeBuildkubeRoleARN、 CodeBuild サービスが EKS クラスターにアクセスしてワークロードをデプロイするために作成された IAM ロールです。このアクティビティは 1 回限りです。

重要: のデプロイ承認ステージの前に、次の手順を完了する必要があります CodePipeline。

  1. Amazon Linux または macOS 環境で cf_templates/kube_aws_auth_configmap_patch.sh シェルスクリプトを開きます。

  2. 次のコマンドを実行して Amazon EKS クラスターを認証します。

    aws eks --region <aws-region> update-kubeconfig --name <eks-cluster-name>
  3. 次のコマンドを使用してシェルスクリプトを実行し、<rolearn-eks-codebuild-kubectl> を以前記録した EksCodeBuildkubeRoleARN のARN 値に置き換えます。

    bash cf_templates/kube_aws_auth_configmap_patch.sh <rolearn-eks-codebuild-kubectl> 

aws_auth ConfigMap が設定され、アクセスが付与されます。

DevOps
タスク説明必要なスキル

CI/CD パイプラインが自動的に開始されることを確認します。

  1. Checkov が Dockerfile または Helm チャートの脆弱性を検出すると、パイプラインの CodeSecurity スキャンステージは通常失敗します。ただし、この例の目的は、CI/CD パイプライン、通常はプロセスを通じて修正するのではなく、潜在的なセキュリティの脆弱性を特定する DevSecOps プロセスを確立することです。buildspec/buildspec_secscan.yaml ファイルでは、checkov コマンドは --soft-fail フラグを使用してパイプラインの障害を回避します。

    - echo -e "\n Running Dockerfile Scan" - checkov -f code/app/Dockerfile --framework dockerfile --soft-fail --summary-position bottom - echo -e "\n Running Scan of Helm Chart files" - cp -pv helm_charts/$EKS_CODEBUILD_APP_NAME/values.dev.yaml helm_charts/$EKS_CODEBUILD_APP_NAME/values.yaml - checkov -d helm_charts/$EKS_CODEBUILD_APP_NAME --framework helm --soft-fail --summary-position bottom - rm -rfv helm_charts/$EKS_CODEBUILD_APP_NAME/values.yaml

    Dockerfile と Helm チャートの脆弱性が報告されたときにパイプラインが機能しなくなるようにするには、checkov コマンドから --soft-fail オプションを削除する必要があります。その後、開発者またはエンジニアは脆弱性を修正し、変更を CodeCommit ソースコードリポジトリにコミットできます。

  2. CodeSecurity スキャンと同様に、ビルドステージでは、アプリケーションを Amazon ECR にプッシュする前に、Aqua Security Trivy を使用して、高およびクリティカルな Docker イメージの脆弱性を特定します。この例では、Docker イメージの脆弱性のためにパイプラインに障害が発生するようにしているわけではありません。buildspec/buildspec.yml ファイルには、trivy コマンドに値 0 が付いたフラグ --exit-code が含まれているため、Docker イメージの脆弱性が高または クリティカルであることが報告されてもパイプラインは失敗しません。

    - AWS_REGION=$AWS_DEFAULT_REGION AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID trivy -d image --no-progress --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL --format template --template "@securityhub/asff.tpl" -o securityhub/report.asff $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$CODEBUILD_RESOLVED_SOURCE_VERSION

    HIGH, CRTICAL 脆弱性が報告されたときにパイプラインが失敗するようにするには、--exit-code の値を 1 に変更します。

    その後、開発者またはエンジニアは脆弱性を修正し、変更を CodeCommit ソースコードリポジトリにコミットできます。

  3. Aqua Security Trivy によって報告された Docker イメージの脆弱性は、Security Hub にアップロードされます。AWS Security Hub コンソールで、検出結果にナビゲートします。レコード状態 = アクティブ製品 = Aqua Security で結果をフィルタリングします。これで、Security Hub の Docker イメージの脆弱性が一覧表示されます。脆弱性がSecurity Hub に表示されるまでに 15 分から 1 時間かかる場合があります。

を使用してパイプラインを開始する方法の詳細については CodePipeline、AWS CodePipeline ドキュメントの「 でパイプラインを開始する CodePipeline」、「パイプラインを手動で開始する」、および「スケジュールに従ってパイプラインを開始する」を参照してください。

DevOps

デプロイを承認します。

  1. ビルドフェーズが完了すると、デプロイ承認ゲートが表示されます。レビュー担当者またはリリースマネージャーはビルドを検査し、すべての要件が満たされていれば承認する必要があります。これは、アプリケーションのデプロイに継続的デリバリーを使用するチームに推奨されるアプローチです。

  2. 承認後、パイプラインは Deploy ステージを開始します。

  3. デプロイステージが成功すると、このステージの CodeBuild ログにアプリケーションの URL が表示されます。URL を使用してアプリケーションの準備が整っていることを確認します。

DevOps

アプリケーションプロファイリングを検証します。

デプロイが完了し、アプリケーションポッドが Amazon EKS にデプロイされると、アプリケーションで設定された Amazon CodeGuru Profiler エージェントは、アプリケーションのプロファイリングデータ (CPU、ヒープサマリー、レイテンシー、ボトルネック) を Amazon CodeGuru Profiler に送信しようとします。

アプリケーションの初期デプロイでは、Amazon CodeGuru Profiler がプロファイリングデータを視覚化するのに約 15 分かかります。

AWS DevOps

関連リソース

追加情報

CodeGuru Profiler は、機能の観点から AWS X-Ray サービスと混同しないでください。 CodeGuru Profiler は、ボトルネックやセキュリティ問題を引き起こす可能性のある最も高価なコード行を特定し、潜在的なリスクになる前に修正することをお勧めします。AWS X-Ray サービスは、アプリケーションのパフォーマンスをモニタリングするものです。

このパターンでは、イベントルールはデフォルトのイベントバスに関連付けられます。必要に応じて、カスタムイベントバスを使用するようにパターンを拡張できます。

このパターンでは、アプリケーションコードの静的アプリケーションセキュリティテスト (SAST) ツールとして CodeGuru Reviewer を使用します。このパイプラインは、 SonarQube や Checkmarx などの他のツールにも使用できます。これらのツールの対応するスキャンセットアップ手順は、 のスキャン手順の代わりに buildspec/buildspec_secscan.yamlに追加できます CodeGuru。