翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
このチュートリアルでは、CodeCatalyst パッケージリポジトリから依存関係をプルするアプリケーションを実行するワークフローの作成手順を説明します。アプリケーションは、CodeCatalyst ログに「Hello World」メッセージを出力するシンプルな Node.js アプリケーションです。アプリケーションには lodashlodash
パッケージは、hello-world
文字列を Hello World
に変換するために使用されます。このパッケージのバージョン 4.17.20 を使用します。
アプリケーションとワークフローを準備したら、CodeCatalyst を設定して lodash
の他のバージョンをブロックし、外部のパブリックレジストリ (npmjs.comlodash
の他のバージョンが正常にブロックされているかどうかテストします。
このチュートリアルを完了すると、ワークフローが CodeCatalyst 内外のパッケージリポジトリとどのようにやりとりし、パッケージを取得するのかを十分に理解できます。また、npm、パッケージリポジトリ、ワークフロー、アプリケーションの package.json
ファイルの間で発生する裏側のやりとりについても理解することができます。
トピック
前提条件
開始する前に:
-
CodeCatalyst スペースが必要です。詳細については、「スペースを作成する」を参照してください。
-
CodeCatalyst スペースに、次の名前を持つ空のプロジェクトが必要です。
codecatalyst-package-project
このプロジェクトを作成するには、[ゼロから開始] オプションを使用します。
詳細については、「Amazon CodeCatalyst での空のプロジェクトの作成」を参照してください。
ステップ 1: ソースレポジトリを作成する
このステップでは、CodeCatalyst に空のソースリポジトリを作成します。このリポジトリには、index.js
や package.json
など、チュートリアルのソースファイルが保存されます。
ソースリポジトリの詳細については、「ソースリポジトリを作成する」を参照してください。
ソースリポジトリを作成するには
https://codecatalyst.aws/
で CodeCatalyst コンソールを開きます。 -
プロジェクト「
codecatalyst-package-project
」に移動します。 -
ナビゲーションペインで [コード] を選択してから、[ソースリポジトリ] を選択します。
-
[リポジトリの追加] を選択し、[リポジトリの作成] を選択します。
-
[リポジトリ名] に次のように入力します。
hello-world-app
-
[Create] (作成) を選択します。
ステップ 2: CodeCatalyst パッケージリポジトリとゲートウェイパッケージリポジトリを作成する
このステップでは、CodeCatalyst プロジェクトにパッケージリポジトリを作成します。また、CodeCatalyst プロジェクトでゲートウェイリポジトリにも接続します。その後、チュートリアルの依存関係 lodash
を npmjs.com から両方のリポジトリにインポートします。
ゲートウェイリポジトリとは、CodeCatalyst のパッケージリポジトリをパブリック npmjs.com に接続する接着剤のようなものです。
パッケージリポジトリの作成方法については、「CodeCatalyst でソフトウェアパッケージを公開および共有する」を参照してください。
注記
このチュートリアルでは、以下の手順で CodeCatalyst で作成する 2 つのリポジトリを指す用語として、CodeCatalyst パッケージリポジトリとゲートウェイリポジトリを使用します。
CodeCatalyst パッケージリポジトリとゲートウェイリポジトリを作成するには
-
ナビゲーションペインで、[Packages (パッケージ)] を選択します。
-
[パッケージリポジトリの作成] を選択します。
-
[リポジトリ名] に次のように入力します。
codecatalyst-package-repository
-
[+アップストリームリポジトリを選択] を選択します。
-
[ゲートウェイリポジトリ] を選択します。
-
[npm-public-registry-gateway] ボックスで、[作成] を選択します。
-
[選択] を選びます。
-
[Create] (作成) を選択します。
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
に設定されていることを確認します。[Create] (作成) を選択します。開発環境が新しいブラウザタブで起動し、リポジトリ (
hello-world-app
) のクローンがそこに作成されます。 -
両方の CodeCatalyst ブラウザタブを開いたままにして、次の手順に進みます。
「Hello World」Node.js アプリケーションを作成するには
-
開発環境に移動します。
-
ターミナルプロンプトで、
hello-world-app
ソースリポジトリのルートディレクトリに変更します。cd hello-world-app
-
Node.js プロジェクトを初期化します。
npm init -y
初期化により、
hello-world-app
のルートディレクトリにpackage.json
ファイルが作成されます。 -
開発環境の 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 は
lodash
を npmjs.com から直接プルし、パッケージはどちらのリポジトリにもインポートされることはありませんnpm は、
lodash
依存関係を使用してpackage.json
ファイルも更新し、lodash
とそのすべての依存関係を含むnode_modules
ディレクトリを作成します。 -
-
lodash
が開発環境に正常にインポートされたことを確認します。次のとおりに入力します。npm list
インポートが成功したことを示す次のメッセージが表示されます。
`-- lodash@4.17.20
-
(オプション)
hello-world-app/package.json
を開き、赤い太字
の行が追加されていることを確認します。{ "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
と呼ばれる 1 つのアクション、またはタスクが含まれています。RunHelloWorldApp
アクションに含まれる主なコマンドとセクション:
-
Packages
このセクションには、
npm install
の実行時にアクションが接続する必要がある CodeCatalyst パッケージリポジトリの名前が示されています。 -
- Run: npm install
このコマンドは、
package.json
ファイルで指定された依存関係をインストールするように npm に指示します。package.json
ファイルで指定されている依存関係はlodash
のみです。npm は、次の場所でlodash
を検索します。-
アクションを実行している Docker イメージ。ここにはありません。
-
CodeCatalyst パッケージリポジトリ。ここにあります。
npm が
lodash
を検出すると、アクションを実行している Docker イメージにインポートされます。 -
-
- Run: npm list
このコマンドは、アクションを実行している Docker イメージにダウンロードされた
lodash
のバージョンを出力します。 -
- Run: node index.js
このコマンドは、
package.json
ファイルで指定された依存関係を使用して「Hello World」アプリケーションを実行します。
RunHelloWorldApp
アクションはビルドアクションであることに注目してください。これは、ワークフローの上部にある aws/build@v1
識別子でわかります。うに、ビルドアクションの詳細については、「ワークフローを使用したビルド」を参照してください。
次の手順を使用して、CodeCatalyst パッケージリポジトリから lodash
依存関係をプルし、「Hello World」アプリケーションを実行するワークフローを作成します。
ワークフローを作成するには
-
CodeCatalyst コンソールに切り替えます。
-
ナビゲーションペインで [CI/CD]、[ワークフロー] の順に選択します。
-
[ワークフローを作成] を選択します。
-
[ソースリポジトリ] で、
hello-world-app
を選択します。 -
[ブランチ] で、
main
を選択します。ワークフロー定義ファイルは、選択したソースリポジトリとブランチに作成されます。
-
[Create] (作成) を選択します。
-
上部付近の [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
を、「ステップ 2: CodeCatalyst パッケージリポジトリとゲートウェイパッケージリポジトリを作成する」で作成した CodeCatalyst パッケージリポジトリの名前に置き換えます。このファイルのプロパティの詳細については、「ビルドおよびテストアクション YAML」を参照してください。
-
(任意) [検証] を選択して、コミットする前に YAML コードが有効であることを確認します。
-
[コミット] を選択します。
-
[ワークフローをコミット] ダイアログボックスで、次のように入力します。
-
[ワークフローファイル名] は、デフォルトの「
codecatalyst-package-workflow
」のままにします。 -
[コミットメッセージ] には、次のように入力します。
add initial workflow file
-
[リポジトリ] で、[hello-world-app] を選択します。
-
[ブランチ名] で、[main] を選択します。
-
[コミット] を選択します。
これでワークフローが作成されました。
-
ワークフローを実行するには
-
先ほど作成したワークフロー (
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-world
ではなくHello Word
と表示されていることから、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
を選択してください。 -
上部付近で、[オリジンコントロール] を選択します。
-
[アップストリーム] で、[ブロック] を選択します。
-
[Save] を選択します。
これで、npmjs.com からゲートウェイリポジトリ (およびダウンストリームリポジトリとコンピュータ) へのインポートがブロックされました。
ステップ 7: ブロック機能をテストする
このセクションでは、「ステップ 6: npmjs.com からのインポートをブロックする」で設定したブロックが機能していることを確認します。まず、「Hello World」を、ゲートウェイリポジトリで使用可能な lodash
のバージョン 4.17.20 ではなく、バージョン 4.17.21 をリクエストするように設定します。次に、アプリケーションが nmpjs.com からバージョン 4.17.21 をプルできないことを確認します。これは、ブロックが成功したことを意味します。最後のテストとして、ゲートウェイリポジトリへのインポートのブロックを解除し、アプリケーションが lodash
のバージョン 4.17.21 を正常にプルできることを確認します。
ブロック機能をテストするには、以下の手順を使用します。
[開始する前に]
-
開発環境に切り替えます。
-
CodeCatalyst コンソールを使用して以前に作成した
codecatalyst-package-workflow.yaml
ファイルをプルします。git pull
「lodash」のバージョン 4.17.21 をリクエストするように「Hello World」を設定するには
-
/hello-world-app/package.json
を開きます。 -
赤の太字
で示されているように、lodash
のバージョンを 4.17.21 に変更します。{ "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
で依存関係をチェックし、lodash
のバージョン 4.17.21 が「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
を選択してください。 -
上部付近で、[オリジンコントロール] を選択します。
-
[アップストリーム] で、[許可] を選択します。
-
[Save] を選択します。
これで、
lodash
のインポートのブロックが解除されました。ワークフローで
lodash
のバージョン 4.17.21 をインポートできるようになりました。
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 トークンを削除する:
-
右側のユーザー名を選択し、[マイ設定] を選択します。
-
[個人用アクセストークン] で、このチュートリアルで作成したトークンを選択し、[削除] を選択します。
-
このチュートリアルでは、CodeCatalyst パッケージリポジトリから依存関係をプルするアプリケーションを実行するワークフローの作成手順を学びました。また、パッケージがゲートウェイリポジトリや CodeCatalyst パッケージリポジトリに入るのをブロックする方法や、そのブロックを解除する方法も学びました。