翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: パッケージリポジトリからプルする
このチュートリアルでは、依存関係がCodeCatalyst パッケージリポジトリ からプルされたアプリケーションを実行するワークフローを作成する方法について説明します。アプリケーションは、「Hello World」メッセージを CodeCatalyst ログに出力するシンプルな Node.js アプリです。アプリケーションには lodashlodash
パッケージは、hello-world
文字列を に変換するために使用されますHello World
。このパッケージのバージョン 4.17.20 を使用します。
アプリケーションとワークフローを設定したら、 を設定 CodeCatalyst して、パブリック外部レジストリ (npmjs.comlodash
から CodeCatalyst パッケージリポジトリに の追加バージョンがインポートされないようにします。次に、 の追加バージョンが正常にブロックlodash
されていることをテストします。
このチュートリアルを終了すると、ワークフローが の内部と外部の両方のパッケージリポジトリとやり取り CodeCatalystしてパッケージを取得する方法がよく理解できるようになります。また、npm、パッケージリポジトリ、ワークフロー、アプリケーションの package.json
ファイルの間で発生する behind-the-scenes やり取りも理解する必要があります。
トピック
前提条件
開始する前に:
-
CodeCatalyst スペース が必要です。詳細については、「スペースの作成」を参照してください。
-
CodeCatalyst スペースには、 という名前の空のプロジェクトが必要です。
codecatalyst-package-project
このプロジェクトを作成するには、最初から開始オプションを使用します。
詳細については、「Amazon での空のプロジェクトの作成 CodeCatalyst」を参照してください。
ステップ 1: ソースリポジトリを作成する
このステップでは、 でソースリポジトリを作成します CodeCatalyst。このリポジトリには、 index.js
や ファイルなど、チュートリアルのソースpackage.json
ファイルが保存されます。
ソースリポジトリの詳細については、「」を参照してくださいソースリポジトリの作成。
ソースリポジトリを作成するには
https://codecatalyst.aws/
で CodeCatalyst コンソールを開きます。 -
プロジェクト に移動します
codecatalyst-package-project
。 -
ナビゲーションペインで [コード] を選択してから、[ソースリポジトリ] を選択します。
-
[リポジトリの追加] を選択し、[リポジトリの作成] を選択します。
-
リポジトリ名 で、次のように入力します。
hello-world-app
-
[作成] を選択します。
ステップ 2: CodeCatalyst およびゲートウェイパッケージリポジトリを作成する
このステップでは、 CodeCatalyst プロジェクトにパッケージリポジトリを作成し、それを CodeCatalyst プロジェクト内のゲートウェイリポジトリに接続します。後で、チュートリアルの依存関係 を npmjs.com lodash
から両方のリポジトリにインポートします。
ゲートウェイリポジトリは、 のパッケージリポジトリをパブリック npmjs.com に接続する「glue CodeCatalyst 」です。
パッケージリポジトリの詳細については、「」を参照してくださいでソフトウェアパッケージを公開および共有する CodeCatalyst。
注記
このチュートリアルでは、CodeCatalyst パッケージリポジトリとゲートウェイリポジトリという用語を使用して、次の手順 CodeCatalyst で で作成した 2 つのリポジトリを参照します。
CodeCatalyst パッケージリポジトリとゲートウェイリポジトリを作成するには
-
ナビゲーションペインで、[Packages (パッケージ)] を選択します。
-
パッケージリポジトリの作成 を選択します。
-
リポジトリ名 で、次のように入力します。
codecatalyst-package-repository
-
選択 + アップストリームリポジトリの選択 を選択します。
-
Gateway リポジトリ を選択します。
-
ボックスでnpm-public-registry-gateway、 の作成 を選択します。
-
[選択] を選びます。
-
[作成] を選択します。
CodeCatalyst は、ゲートウェイリポジトリに接続されている
codecatalyst-package-repository
という名前のパッケージリポジトリを作成します。ゲートウェイリポジトリは npmjs.com レジストリに接続されています。
ステップ 3: 「Hello World」アプリケーションを作成する
このステップでは、「Hello World」Node.js アプリケーションを作成し、その依存関係 (lodash
) をゲートウェイと CodeCatalyst パッケージリポジトリにインポートします。
アプリケーションを作成するには、Node.js と関連するnpm
クライアントがインストールされた開発マシンが必要です。
このチュートリアルでは、開発 CodeCatalyst 環境を開発マシンとして使用することを前提としています。 CodeCatalyst 開発環境を使用する必要はありませんが、クリーンな作業環境を提供し、Node.js と がnpm
プリインストールされており、チュートリアルが終了したら簡単に削除できるため、推奨されます。 CodeCatalyst 開発環境の詳細については、「」を参照してください開発環境の作成。
次の手順を使用して CodeCatalyst 開発環境を起動し、それを使用して「Hello World」アプリケーションを作成します。
CodeCatalyst 開発環境を起動するには
-
ナビゲーションペインで、コード を選択し、開発環境 を選択します。
-
上部近くで開発環境の作成 を選択し、AWS Cloud9 (ブラウザで) を選択します。
-
リポジトリが に設定
hello-world-app
され、既存のブランチが に設定されていることを確認しますmain
。[作成] を選択します。開発環境が新しいブラウザタブで起動し、リポジトリ (
hello-world-app
) がそこにクローンされます。 -
両方の CodeCatalyst ブラウザタブを開いたままにして、次の手順に進みます。
「Hello World」Node.js アプリケーションを作成するには
-
開発環境に移動します。
-
ターミナルプロンプトで、 を
hello-world-app
ソースリポジトリのルートディレクトリに変更します。cd hello-world-app
-
Node.js プロジェクトを初期化します。
npm init -y
初期化により、 のルートディレクトリに
package.json
ファイルが作成されますhello-world-app
。 -
開発環境の npm クライアントを CodeCatalyst パッケージリポジトリに接続します。
-
CodeCatalyst コンソールに切り替えます。
-
ナビゲーションペインで、[Packages (パッケージ)] を選択します。
-
[
codecatalyst-package-repository
] を選択します。 -
リポジトリに接続 を選択します。
-
トークンの作成 を選択します。個人用アクセストークン (PAT) が自動的に作成されます。
-
コピー を選択してコマンドをコピーします。
-
開発環境に切り替えます。
-
hello-world-app
ディレクトリにあることを確認します。 -
コマンドを貼り付けます。次のようになります。
npm set registry=https://packages.us-west-2.codecatalyst.aws/npm/ExampleCompany/codecatalyst-package-project/codecatalyst-package-repository/ --location project npm set //packages.us-west-2.codecatalyst.aws/npm/ExampleCompany/codecatalyst-package-project/hello-world-app/:_authToken=
username
:token-secret
-
-
インポート
lodash
バージョン 4.17.20:npm install lodash@v4.17.20 --save --save-exact
npm は、次の順序で次の場所で
lodash
バージョン 4.17.20 を検索します。-
開発環境で。こちらにはありません。
-
CodeCatalyst パッケージリポジトリ内。こちらにはありません。
-
ゲートウェイリポジトリ内。こちらにはありません。
-
npmjs.com で。これはここにあります。
npm は、
lodash
ゲートウェイリポジトリ、 CodeCatalyst パッケージリポジトリ、および開発環境にインポートします。注記
ステップ 4 で npm クライアントを CodeCatalyst パッケージリポジトリに接続していない場合、npm は npmjs.com
lodash
から直接プルし、パッケージをどちらのリポジトリにもインポートしませんでした。npm は依存
lodash
関係でpackage.json
ファイルを更新し、lodash
とそのすべての依存関係を含むnode_modules
ディレクトリを作成します。 -
-
開発環境に正常にインポート
lodash
された をテストします。次のように入力します。npm list
インポートが成功したことを示す次のメッセージが表示されます。
`-- lodash@4.17.20
-
(オプション) を開き
hello-world-app/package.json
、 の行を確認します。red bold
が追加されました。{ "name": "hello-world-app", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC",
dependencies": { "lodash": "4.17.20"
} } -
で
/hello-world-app
、次の内容index.js
の というファイルを作成します。ヒント
開発環境のサイドナビゲーションを使用して、このファイルを作成できます。
// Importing lodash library const _ = require('lodash'); // Input string const inputString = 'hello-world'; // Transforming the string using lodash const transformedString = _.startCase(inputString.replace('-', ' ')); // Outputting the transformed string to the console console.log(transformedString);
「lodash」がゲートウェイと CodeCatalyst パッケージリポジトリにインポートされたことをテストするには
-
CodeCatalyst コンソールに切り替えます。
-
ナビゲーションペインで、[Packages (パッケージ)] を選択します。
-
を選択しますnpm-public-registry-gateway。
-
lodash
が表示されていることを確認します。最新バージョンの列には と表示されます4.17.20
。 -
に対してこの手順を繰り返します
codecatalyst-package-repository
。インポートされたパッケージを表示するには、ブラウザウィンドウを更新する必要がある場合があります。
開発環境で「Hello World」をテストするには
-
開発環境に切り替えます。
-
hello-world-app
ディレクトリにまだあることを確認し、アプリケーションを実行します。node index.js
Hello World
メッセージが表示されます。Node.js は、前のステップで開発環境にダウンロードしたlodash
パッケージを使用してアプリケーションを実行しました。
「node_modules」ディレクトリを無視して「Hello World」をコミットするには
-
node_modules
ディレクトリを無視します。次のように入力します。echo "node_modules/" >> .gitignore
このディレクトリをコミットしないのがベストプラクティスです。また、このディレクトリをコミットすると、このチュートリアルの後のステップに干渉します。
-
追加、コミット、プッシュ:
git add . git commit -m "add the Hello World application" git push
「Hello World」アプリケーションファイルとプロジェクトファイルがソースリポジトリに追加されます。
ステップ 4: 「Hello World」を実行するワークフローを作成する
このステップでは、lodash
依存関係を使用して「Hello World」アプリケーションを実行するワークフローを作成します。ワークフローには、 という単一のアクション、またはタスクが含まれますRunHelloWorldApp
。RunHelloWorldApp
アクションには、以下の注目すべきコマンドとセクションが含まれます。
-
Packages
このセクションでは、 の実行時に アクションが接続する必要がある CodeCatalyst パッケージリポジトリの名前を示します
npm install
。 -
- Run: npm install
このコマンドは、
package.json
ファイルで指定された依存関係をインストールするように npm に指示します。package.json
ファイルで指定された唯一の依存関係は ですlodash
。npmlodash
は次の場所で を検索します。-
アクションを実行している Docker イメージ内。こちらにはありません。
-
CodeCatalyst パッケージリポジトリ内。これはここにあります。
npm は を検出すると
lodash
、 アクションを実行している Docker イメージにインポートします。 -
-
- Run: npm list
このコマンドは、 アクションを実行している Docker イメージにダウンロード
lodash
された のバージョンを出力します。 -
- Run: node index.js
このコマンドは、
package.json
ファイルで指定された依存関係を使用して「Hello World」アプリケーションを実行します。
ワークフローの上部近くにあるaws/build@v1
識別子で示されるように、 RunHelloWorldApp
アクションはビルドアクションであることに注意してください。ビルドアクションの詳細については、「」を参照してくださいワークフローによる構築。
以下の手順に従って、 CodeCatalyst パッケージリポジトリからlodash
依存関係を取得し、「Hello World」アプリケーションを実行するワークフローを作成します。
ワークフローを作成するには
-
CodeCatalyst コンソールに切り替えます。
-
ナビゲーションペインで CI/CD を選択し、ワークフロー を選択します。
-
ワークフローの作成 を選択します。
-
ソースリポジトリ で、 を選択します
hello-world-app
。 -
ブランチ で、 を選択します
main
。ワークフロー定義ファイルは、選択したソースリポジトリとブランチに作成されます。
-
[作成] を選択します。
-
上部YAML付近の を選択します。
-
YAML サンプルコードを削除します。
-
次のYAMLコードを追加します。
Name: codecatalyst-package-workflow SchemaVersion: "1.0" # Required - Define action configurations. Actions: RunHelloWorldApp: # Identifies the action. Do not modify this value. Identifier: aws/build@v1 Compute: Type: Lambda Inputs: Sources: - WorkflowSource # This specifies your source repository. Configuration: Steps: - Run: npm install - Run: npm list - Run: node index.js Container: # This specifies the Docker image that runs the action. Registry: CODECATALYST Image: CodeCatalystLinuxLambda_x86_64:2024_03 Packages: NpmConfiguration: PackageRegistries: - PackagesRepository:
codecatalyst-package-repository
上記のコードで、
codecatalyst-package-repository
で作成した CodeCatalyst パッケージリポジトリの名前ステップ 2: CodeCatalyst およびゲートウェイパッケージリポジトリを作成する。このファイルのプロパティの詳細については、「」を参照してくださいビルドおよびテストアクション YAML。
-
(オプション) 検証 を選択して、コミットする前にYAMLコードが有効であることを確認します。
-
[Commit] (コミット) を選択します。
-
コミットワークフローダイアログボックスで、次のように入力します。
-
ワークフローファイル名 の場合、デフォルト のままにします
codecatalyst-package-workflow
。 -
コミットメッセージ には、次のように入力します。
add initial workflow file
-
リポジトリ で、 を選択しますhello-world-app。
-
ブランチ名 で、メイン を選択します。
-
[Commit] (コミット) を選択します。
これでワークフローが作成されました。
-
ワークフローを実行するには
-
先ほど作成したワークフロー (
codecatalyst-package-workflow
) の横にある「アクション」を選択し、「 の実行」を選択します。ワークフロー実行が開始されます。
-
上部の緑色の通知の右側で、実行へのリンクを選択します。リンクは のようになります
View Run-1234
。ワークフロー図が表示され、実行を開始したユーザーとRunHelloWorldAppアクションが表示されます。
-
RunHelloWorldApp アクションボックスを選択して、アクションの進行状況を確認します。
-
実行が終了したら、「」に進みますステップ 5: ワークフローを検証する。
ステップ 5: ワークフローを検証する
このステップでは、ワークフローが「Hello World」アプリケーションをlodash
その依存関係で正常に実行したことを確認します。
「Hello World」アプリケーションが依存関係を使用して実行されたことを確認するには
-
ワークフロー図で、RunHelloWorldAppボックスを選択します。
ログメッセージのリストが表示されます。
-
node index.js
ログメッセージを展開します。次のメッセージが表示されます。
[Container] 2024/04/24 21:15:41.545650 Running command node index.js Hello World
Hello Word
( ではなくhello-world
) の外観は、lodash
依存関係が正常に使用されたことを示します。 -
npm list
ログを展開します。次のようなメッセージが表示されます。
└── lodash@4.17.20
このメッセージは、ワークフローアクションを実行している Docker イメージに
lodash
バージョン 4.17.20 がダウンロードされたことを示します。
ステップ 6: npmjs.com からのインポートをブロックする
lodash
バージョン 4.17.20 がゲートウェイリポジトリと CodeCatalystパッケージリポジトリに存在するようになったので、他のバージョンのインポートをブロックできます。ブロックするとlodash
、悪意のあるコードが含まれている可能性のある の後半 (または以前の) バージョンを誤ってインポートするのを防ぐことができます。詳細については、「パッケージオリジンコントロールの編集」および「依存関係置換攻撃」を参照してください。
ゲートウェイリポジトリへの のインポートをブロックlodash
するには、以下の手順に従います。ゲートウェイでパッケージをブロックすると、ダウンストリームの場所でもブロックされます。
ゲートウェイリポジトリへのインポートをブロックするには
-
ナビゲーションペインで、[Packages (パッケージ)] を選択します。
-
を選択しますnpm-publish-registry-gateway。
-
[
lodash
] を選択します。 -
上部で、オリジンコントロール を選択します。
-
アップストリーム で、ブロック を選択します。
-
[保存] を選択します。
これで、npmjs.com からゲートウェイリポジトリ (およびダウンストリームリポジトリとコンピュータ) へのインポートがブロックされました。
ステップ 7: ブロッキング機能をテストする
このセクションでは、 で設定したブロックステップ 6: npmjs.com からのインポートをブロックするが機能していることを確認します。まず、ゲートウェイリポジトリで使用可能なバージョン 4.17.20 lodash
ではなく、 のバージョン 4.17.21 をリクエストするように「Hello World」を設定します。次に、アプリケーションが nmpjs.com からバージョン 4.17.21 をプルできないことを確認します。これは、ブロックが成功したことを示します。最終テストとして、ゲートウェイリポジトリへのインポートのブロックを解除し、アプリケーションが のバージョン 4.17.21 を正常にプルできることを確認しますlodash
。
ブロッキング機能をテストするには、以下の一連の手順を使用します。
開始する前に
-
開発環境に切り替えます。
-
以前に CodeCatalyst コンソールを使用して作成した
codecatalyst-package-workflow.yaml
ファイルをプルします。git pull
「lodash」のバージョン 4.17.21 をリクエストするように「Hello World」を設定するには
-
/hello-world-app/package.json
を開きます。 -
「」に示すように、
lodash
バージョンを 4.17.21 に変更します。red bold
:{ "name": "hello-world-app", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "lodash": "
4.17.21
" } }package.json
ファイル内のバージョン (4.17.21) とゲートウェイおよび CodeCatalyst パッケージリポジトリ内のバージョン (4.17.20) が一致しなくなりました。 -
追加、コミット、プッシュ:
git add . git commit -m "update package.json to use lodash 4.17.21" git push
「Hello World」が「lodash」のバージョン 4.17.21 をプルできないことをテストするには
-
バージョンの不一致でワークフローを実行します。
-
CodeCatalyst コンソールに切り替えます。
-
ナビゲーションペインで CI/CD を選択し、ワークフロー を選択します。
-
の横にある
codecatalyst-package-workflow
「アクション」を選択し、「実行」を選択します。npm は
package.json
依存関係を検索し、 のバージョン 4.17.21lodash
が「Hello World」で必要であることがわかります。npm は、次の順序で次の場所で依存関係を検索します。-
アクションを実行している Docker イメージ内。こちらに見つかりません。
-
CodeCatalyst パッケージリポジトリ内。こちらに見つかりません。
-
ゲートウェイリポジトリ内。こちらに見つかりません。
-
npmjs.com で。こちらにあります。
npm が npmjs.com でバージョン 4.17.21 を検出した後、ゲートウェイリポジトリにインポートしようとしますが、 のインポートをブロックするようにゲートウェイを設定しているため
lodash
、インポートは行われません。インポートは行われないため、ワークフローは失敗します。
-
-
-
ワークフローが失敗したことを確認します。
-
上部の緑色の通知の右側で、実行へのリンクを選択します。リンクは のようになります
View Run-2345
。 -
ワークフロー図で、RunHelloWorldAppボックスを選択します。
-
npm install
ログメッセージを展開します。次のメッセージが表示されます。
[Container] 2024/04/25 17:20:34.995591 Running command npm install npm ERR! code ETARGET npm ERR! notarget No matching version found for lodash@4.17.21. npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! notarget a package version that doesn't exist. npm ERR! A complete log of this run can be found in: /tmp/.npm/_logs/2024-05-08T22_03_26_493Z-debug-0.log
エラーは、バージョン 4.17.21 が見つからないことを示します。これは、ブロックしたために想定されます。
-
npmjs.com からインポートのブロックを解除するには
-
ナビゲーションペインで、[Packages (パッケージ)] を選択します。
-
を選択しますnpm-publish-registry-gateway。
-
[
lodash
] を選択します。 -
上部で、オリジンコントロール を選択します。
-
アップストリーム で、許可 を選択します。
-
[保存] を選択します。
これで、 のインポートのブロックが解除されました
lodash
。ワークフローで のバージョン 4.17.21 をインポートできるようになりました
lodash
。
npmjs.com からのインポートがブロック解除されていることをテストするには
-
ワークフローを再度実行します。4.17.21 のインポートが機能するようになったため、今回はワークフローが成功します。ワークフローを再度実行するには:
-
CI/CD を選択し、ワークフロー を選択します。
-
の横にある
codecatalyst-package-workflow
「アクション」を選択し、「 の実行」を選択します。 -
上部の緑色の通知の右側で、実行へのリンクを選択します。リンクは のようになります
View Run-3456
。ワークフロー図が表示され、実行を開始したユーザーとRunHelloWorldAppアクションが表示されます。
-
RunHelloWorldApp アクションボックスを選択して、アクションの進行状況を確認します。
-
npm list
ログメッセージを展開し、次のようなメッセージが表示されます。└── lodash@4.17.21
このメッセージは、
lodash
バージョン 4.17.21 がダウンロードされたことを示します。
-
-
バージョン 4.17.21 が CodeCatalyst およびゲートウェイリポジトリにインポートされたことを確認します。
-
ナビゲーションペインで、[Packages (パッケージ)] を選択します。
-
を選択しますnpm-public-registry-gateway。
-
を見つけ
lodash
て、バージョンが であることを確認します4.17.21
。注記
このページにはバージョン 4.17.20 は表示されていませんが、上部にあるバージョンを選択して
lodash
から選択します。 -
これらのステップを繰り返して、バージョン 4.17.21 が にインポートされたことを確認します
codecatalyst-package-repository
。
-
クリーンアップ
このチュートリアルで使用するファイルとサービスをクリーンアップして、料金が発生しないようにします。
パッケージのチュートリアルをクリーンアップするには
-
を削除します
codecatalyst-package-project
。-
CodeCatalyst コンソールで、
codecatalyst-package-project
まだプロジェクトにない場合は、プロジェクトにナビゲーションします。 -
ナビゲーションペインで、プロジェクト設定 を選択します。
-
「プロジェクトの削除」を選択し、「」と入力し
delete
、「プロジェクトの削除」を選択します。CodeCatalyst は、ソース、ゲートウェイ CodeCatalyst、パッケージリポジトリを含むすべてのプロジェクトリソースを削除します。開発環境も削除されます。
-
-
PAT トークンを削除します。
-
右側のユーザー名を選択し、My settings を選択します。
-
「個人用アクセストークン」で、このチュートリアルで作成したトークンを選択し、「削除」を選択します。
-
このチュートリアルでは、 CodeCatalyst パッケージリポジトリから依存関係を取得するアプリケーションを実行するワークフローを作成する方法を学習しました。また、パッケージがゲートウェイと CodeCatalyst パッケージリポジトリに入るのをブロックおよびブロック解除する方法についても学びました。