AWS認定資格 WEB問題集&徹底解説
機械学習エンジニア–アソシエイト
AWSサービスの一つであるAWS CodeArtifactはどんな内容なのでしょうか?また、AWS認定資格の機械学習エンジニア-アソシエイト(MLA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
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. アーキテクチャおよび技術要素
- 組織またはアカウント単位でCodeArtifactドメインを作成する。
- チーム、環境、用途に合わせて複数のリポジトリを作成する。
- 必要に応じてnpmjs、Maven Central、PyPI、NuGet Galleryなどの外部接続を設定する。
- 共通リポジトリをアップストリームにし、チーム別リポジトリから参照できるようにする。
- 開発者やCodeBuildが認証トークンを取得し、パッケージマネージャーから取得または公開する。
- 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. 設定・デプロイ手順(ハンズオン例)
- CodeArtifactドメインを作成し、チーム用リポジトリを作成する。
- 必要に応じてnpmjs、Maven Central、PyPI、NuGet Galleryなどの外部接続を設定する。
- 共通リポジトリをアップストリームとして設定し、依存関係の参照順序を決める。
- 開発者やCodeBuildロールに、読み取りまたはpublishに必要なIAM権限を付与する。
- `aws codeartifact login` でパッケージマネージャーを設定する。
- npm/pip/mvn/nugetなどでパッケージを取得し、必要に応じて社内パッケージをpublishする。
- 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など周辺サービスの利用量。