AWS認定資格 WEB問題集&徹底解説

機械学習エンジニア–アソシエイト

AWS CodeArtifact の概要と試験出題ポイントは?

AWSサービスの一つであるAWS CodeArtifactはどんな内容なのでしょうか?また、AWS認定資格の機械学習エンジニア-アソシエイト(MLA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

AWS CodeArtifact 徹底解説 | AWS認定試験の頻出ポイントまとめ

1. サービス概要

AWS CodeArtifactは、アプリケーション開発で使うソフトウェアパッケージを保存、共有、取得するためのマネージド型アーティファクトリポジトリサービスです。 npm、yarn、Maven、Gradle、pip、twine、NuGet CLIなど一般的なパッケージマネージャーやビルドツールから利用できます。

試験では、社内ライブラリの共有、外部OSS依存関係のキャッシュ、ビルドの再現性向上、CI/CDでの安全な依存取得という文脈で出ます。 コンテナイメージの保存はAmazon ECR、デプロイ成果物の一時保管はS3、アプリケーション配布はCodeDeploy/CodePipelineと切り分けます。

2. 主な特徴と機能

2.1 ドメインとリポジトリ

CodeArtifactのパッケージはリポジトリに保存され、リポジトリはドメインに所属します。 1つの本番ドメインを組織単位で作り、チームや用途ごとに複数リポジトリを分ける構成が基本です。

2.2 マルチフォーマット対応

1つのリポジトリで複数形式のパッケージを扱えるポリグロットリポジトリです。 npm、Maven、PyPI、NuGetなどの依存関係を、開発者とCI/CDが同じ管理面から利用できます。

2.3 外部接続とアップストリーム

npmjs.com、Maven Central、PyPI、NuGet Galleryなどの外部公開リポジトリへ接続し、要求されたパッケージをオンデマンドで取得・保存できます。 また、上流リポジトリを設定すると、下流リポジトリから上流のパッケージも参照できます。

2.4 認証トークン

CodeArtifactのパッケージは公開配布できず、利用者はAWS認証情報から認可トークンを取得してパッケージをpublish/consumeします。 `aws codeartifact login` や `get-authorization-token` を使い、npm、pip、mvnなどのクライアント設定に反映します。

2.5 CI/CD統合

CodeBuild、CodePipeline、GitHub Actions、Jenkinsなどのビルド環境からCodeArtifactへログインし、依存パッケージを取得したり、社内パッケージを公開したりできます。 ビルドロールには必要なリポジトリ読み取り/書き込み権限だけを付与します。

2.6 パッケージ制御

IAM、リソースポリシー、パッケージの公開元制御、バージョン管理により、許可された依存関係だけを利用する運用を作れます。 OSS依存関係の可用性を高める一方、脆弱なパッケージの利用制限や監査も重要です。

3. アーキテクチャおよび技術要素

  1. 組織またはアカウント単位でCodeArtifactドメインを作成する。
  2. チーム、環境、用途に合わせて複数のリポジトリを作成する。
  3. 必要に応じてnpmjs、Maven Central、PyPI、NuGet Galleryなどの外部接続を設定する。
  4. 共通リポジトリをアップストリームにし、チーム別リポジトリから参照できるようにする。
  5. 開発者やCodeBuildが認証トークンを取得し、パッケージマネージャーから取得または公開する。
  6. CloudTrail、CloudWatch、IAM Access Analyzerなどでアクセスと操作を監査する。

CodeArtifactはパッケージ保存基盤をマネージド化しますが、依存関係の承認、脆弱性管理、バージョン固定、リポジトリ分割、権限設計はユーザー側の責任です。

4. セキュリティと認証・認可

  • IAM最小権限: 読み取り、publish、削除、管理操作をロールごとに分離する。
  • 認証トークン: 一時的なトークンでパッケージマネージャーを認証し、長期固定認証情報の埋め込みを避ける。
  • リソースポリシー: ドメインやリポジトリ単位で、クロスアカウント共有やアクセス制御を定義する。
  • KMS暗号化: 保存データの暗号化とキー管理を要件に合わせて確認する。
  • 外部依存の統制: 外部接続やアップストリームを制御し、未承認パッケージや依存関係混入を抑える。
  • 監査: CloudTrailでpublish、delete、認可トークン取得などのAPI操作を追跡する。

5. 料金形態

CodeArtifactは、保存容量、リクエスト数、外部へのデータ転送、関連サービス利用量を中心に課金を考えます。

  • ストレージ: リポジトリに保存されるパッケージ量に応じて課金される。
  • リクエスト: パッケージ取得、公開、メタデータ取得などのAPI/パッケージマネージャー操作がコストに影響する。
  • データ転送: リージョン外やインターネット向け転送がある場合は転送料金を確認する。
  • CI/CD: CodeBuild、CodePipeline、CloudWatch Logsなど、利用する周辺サービスの料金も発生する。
  • 最適化: 不要バージョンの削除、キャッシュ活用、ビルド回数削減、依存関係固定でコストと安定性を改善する。

6. よくあるアーキテクチャ・設計パターン

  • 社内パッケージ共有: 共通ライブラリをCodeArtifactにpublishし、複数アプリケーションから利用する。
  • OSS依存キャッシュ: 外部公開リポジトリを外部接続し、ビルド時の可用性と再現性を高める。
  • チーム別リポジトリ: チームごとにリポジトリを分け、上流リポジトリで共通依存を共有する。
  • CI/CDパッケージ管理: CodeBuildで認証トークンを取得し、依存取得、テスト、publishを自動化する。
  • クロスアカウント共有: 中央アカウントにドメインを置き、開発/本番アカウントから必要なパッケージのみ参照する。
  • 依存関係ガバナンス: 承認済みパッケージのみに経路を限定し、CloudTrailとセキュリティツールで監査する。

7. 設定・デプロイ手順(ハンズオン例)

  1. CodeArtifactドメインを作成し、チーム用リポジトリを作成する。
  2. 必要に応じてnpmjs、Maven Central、PyPI、NuGet Galleryなどの外部接続を設定する。
  3. 共通リポジトリをアップストリームとして設定し、依存関係の参照順序を決める。
  4. 開発者やCodeBuildロールに、読み取りまたはpublishに必要なIAM権限を付与する。
  5. `aws codeartifact login` でパッケージマネージャーを設定する。
  6. npm/pip/mvn/nugetなどでパッケージを取得し、必要に応じて社内パッケージをpublishする。
  7. CloudTrail、ビルドログ、リポジトリ内パッケージを確認し、不要なバージョンを整理する。

8. 試験で問われやすいポイント

8.1 サービス選択

  • Q: AWS CodeArtifactの主な用途は?
    A: ソフトウェアパッケージを安全に保存・共有し、開発者やCI/CDから取得できるようにすること。
  • Q: コンテナイメージを保存するサービスはCodeArtifact?
    A: いいえ。コンテナイメージはAmazon ECR、CodeArtifactはnpm/Maven/PyPI/NuGetなどのパッケージ管理。
  • Q: 社内ライブラリを複数チームで共有する代表サービスは?
    A: AWS CodeArtifact。

8.2 リポジトリ構成

  • Q: CodeArtifactの最上位の論理単位は?
    A: ドメイン。リポジトリは1つのドメインに所属する。
  • Q: 外部公開リポジトリのパッケージをオンデマンドで取得・保存する機能は?
    A: 外部接続とアップストリームリポジトリ。
  • Q: CodeArtifactリポジトリは単一パッケージ形式専用?
    A: いいえ。1つのリポジトリで複数のサポート形式を扱える。

8.3 認証と料金

  • Q: CodeArtifactへアクセスするには何が必要?
    A: AWS認証情報から発行した認証トークンと、適切なIAM/リソースポリシー権限。
  • Q: CodeArtifactのパッケージを一般公開できる?
    A: できない。利用者は認証してリポジトリへアクセスする。
  • Q: CodeArtifactの主な課金要素は?
    A: 保存容量、リクエスト、データ転送、CodeBuildなど周辺サービスの利用量。