チュートリアル: パッケージリポジトリからプルする - Amazon CodeCatalyst

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

チュートリアル: パッケージリポジトリからプルする

このチュートリアルでは、依存関係がCodeCatalyst パッケージリポジトリ からプルされたアプリケーションを実行するワークフローを作成する方法について説明します。アプリケーションは、「Hello World」メッセージを CodeCatalyst ログに出力するシンプルな Node.js アプリです。アプリケーションには lodash npm パッケージという 1 つの依存関係があります。lodash パッケージは、hello-world文字列を に変換するために使用されますHello World。このパッケージのバージョン 4.17.20 を使用します。

アプリケーションとワークフローを設定したら、 を設定 CodeCatalyst して、パブリック外部レジストリ (npmjs.com) lodash から CodeCatalyst パッケージリポジトリに の追加バージョンがインポートされないようにします。次に、 の追加バージョンが正常にブロックlodashされていることをテストします。

このチュートリアルを終了すると、ワークフローが の内部と外部の両方のパッケージリポジトリとやり取り CodeCatalystしてパッケージを取得する方法がよく理解できるようになります。また、npm、パッケージリポジトリ、ワークフロー、アプリケーションの package.json ファイルの間で発生する behind-the-scenes やり取りも理解する必要があります。

前提条件

開始する前に:

  • CodeCatalyst スペース が必要です。詳細については、「スペースの作成」を参照してください。

  • CodeCatalyst スペースには、 という名前の空のプロジェクトが必要です。

    codecatalyst-package-project

    このプロジェクトを作成するには、最初から開始オプションを使用します。

    詳細については、「Amazon での空のプロジェクトの作成 CodeCatalyst」を参照してください。

ステップ 1: ソースリポジトリを作成する

このステップでは、 でソースリポジトリを作成します CodeCatalyst。このリポジトリには、 index.jsや ファイルなど、チュートリアルのソースpackage.jsonファイルが保存されます。

ソースリポジトリの詳細については、「」を参照してくださいソースリポジトリの作成

ソースリポジトリを作成するには
  1. https://codecatalyst.aws/ で CodeCatalyst コンソールを開きます。

  2. プロジェクト に移動しますcodecatalyst-package-project

  3. ナビゲーションペインで [コード] を選択してから、[ソースリポジトリ] を選択します。

  4. [リポジトリの追加] を選択し、[リポジトリの作成] を選択します。

  5. リポジトリ名 で、次のように入力します。

    hello-world-app
  6. [作成] を選択します。

ステップ 2: CodeCatalyst およびゲートウェイパッケージリポジトリを作成する

このステップでは、 CodeCatalyst プロジェクトにパッケージリポジトリを作成し、それを CodeCatalyst プロジェクト内のゲートウェイリポジトリに接続します。後で、チュートリアルの依存関係 を npmjs.com lodashから両方のリポジトリにインポートします。

ゲートウェイリポジトリは、 のパッケージリポジトリをパブリック npmjs.com に接続する「glue CodeCatalyst 」です。

パッケージリポジトリの詳細については、「」を参照してくださいでソフトウェアパッケージを公開および共有する CodeCatalyst

注記

このチュートリアルでは、CodeCatalyst パッケージリポジトリゲートウェイリポジトリという用語を使用して、次の手順 CodeCatalyst で で作成した 2 つのリポジトリを参照します。

CodeCatalyst パッケージリポジトリとゲートウェイリポジトリを作成するには
  1. ナビゲーションペインで、[Packages (パッケージ)] を選択します。

  2. パッケージリポジトリの作成 を選択します。

  3. リポジトリ名 で、次のように入力します。

    codecatalyst-package-repository
  4. 選択 + アップストリームリポジトリの選択 を選択します

  5. Gateway リポジトリ を選択します。

  6. ボックスでnpm-public-registry-gatewayの作成 を選択します。

  7. [選択] を選びます。

  8. [作成] を選択します。

    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 開発環境を起動するには
  1. ナビゲーションペインで、コード を選択し、開発環境 を選択します。

  2. 上部近くで開発環境の作成 を選択しAWS Cloud9 (ブラウザで) を選択します。

  3. リポジトリが に設定hello-world-appされ、既存のブランチが に設定されていることを確認しますmain[作成] を選択します。

    開発環境が新しいブラウザタブで起動し、リポジトリ (hello-world-app) がそこにクローンされます。

  4. 両方の CodeCatalyst ブラウザタブを開いたままにして、次の手順に進みます。

「Hello World」Node.js アプリケーションを作成するには
  1. 開発環境に移動します。

  2. ターミナルプロンプトで、 をhello-world-appソースリポジトリのルートディレクトリに変更します。

    cd hello-world-app
  3. Node.js プロジェクトを初期化します。

    npm init -y

    初期化により、 のルートディレクトリに package.json ファイルが作成されますhello-world-app

  4. 開発環境の npm クライアントを CodeCatalyst パッケージリポジトリに接続します。

    1. CodeCatalyst コンソールに切り替えます。

    2. ナビゲーションペインで、[Packages (パッケージ)] を選択します。

    3. [codecatalyst-package-repository] を選択します。

    4. リポジトリに接続 を選択します。

    5. トークンの作成 を選択します。個人用アクセストークン (PAT) が自動的に作成されます。

    6. コピー を選択してコマンドをコピーします。

    7. 開発環境に切り替えます。

    8. hello-world-app ディレクトリにあることを確認します。

    9. コマンドを貼り付けます。次のようになります。

      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
  5. インポート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ディレクトリを作成します。

  6. 開発環境に正常にインポートlodashされた をテストします。次のように入力します。

    npm list

    インポートが成功したことを示す次のメッセージが表示されます。

    `-- lodash@4.17.20
  7. (オプション) を開き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" } }
  8. /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 パッケージリポジトリにインポートされたことをテストするには
  1. CodeCatalyst コンソールに切り替えます。

  2. ナビゲーションペインで、[Packages (パッケージ)] を選択します。

  3. を選択しますnpm-public-registry-gateway

  4. lodash が表示されていることを確認します。最新バージョンの列には と表示されます4.17.20

  5. に対してこの手順を繰り返しますcodecatalyst-package-repository。インポートされたパッケージを表示するには、ブラウザウィンドウを更新する必要がある場合があります。

開発環境で「Hello World」をテストするには
  1. 開発環境に切り替えます。

  2. hello-world-app ディレクトリにまだあることを確認し、アプリケーションを実行します。

    node index.js

    Hello World メッセージが表示されます。Node.js は、前のステップで開発環境にダウンロードしたlodashパッケージを使用してアプリケーションを実行しました。

「node_modules」ディレクトリを無視して「Hello World」をコミットするには
  1. node_modules ディレクトリを無視します。次のように入力します。

    echo "node_modules/" >> .gitignore

    このディレクトリをコミットしないのがベストプラクティスです。また、このディレクトリをコミットすると、このチュートリアルの後のステップに干渉します。

  2. 追加、コミット、プッシュ:

    git add . git commit -m "add the Hello World application" git push

    「Hello World」アプリケーションファイルとプロジェクトファイルがソースリポジトリに追加されます。

ステップ 4: 「Hello World」を実行するワークフローを作成する

このステップでは、lodash依存関係を使用して「Hello World」アプリケーションを実行するワークフローを作成します。ワークフローには、 という単一のアクション、またはタスクが含まれますRunHelloWorldAppRunHelloWorldApp アクションには、以下の注目すべきコマンドとセクションが含まれます。

  • Packages

    このセクションでは、 の実行時に アクションが接続する必要がある CodeCatalyst パッケージリポジトリの名前を示しますnpm install

  • - 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」アプリケーションを実行します。

ワークフローの上部近くにあるaws/build@v1識別子で示されるように、 RunHelloWorldApp アクションはビルドアクションであることに注意してください。ビルドアクションの詳細については、「」を参照してくださいワークフローを使用した構築

以下の手順に従って、 CodeCatalyst パッケージリポジトリからlodash依存関係を取得し、「Hello World」アプリケーションを実行するワークフローを作成します。

ワークフローを作成するには
  1. CodeCatalyst コンソールに切り替えます。

  2. ナビゲーションペインで CI/CD を選択し、ワークフロー を選択します。

  3. ワークフローの作成 を選択します。

  4. ソースリポジトリ で、 を選択しますhello-world-app

  5. ブランチ で、 を選択しますmain

    ワークフロー定義ファイルは、選択したソースリポジトリとブランチに作成されます。

  6. [作成] を選択します。

  7. 上部YAML付近の を選択します。

  8. YAML サンプルコードを削除します。

  9. 次の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

  10. (オプション) 検証 を選択して、コミットする前にYAMLコードが有効であることを確認します。

  11. [Commit] (コミット) を選択します。

  12. コミットワークフローダイアログボックスで、次のように入力します。

    1. ワークフローファイル名 の場合、デフォルト のままにしますcodecatalyst-package-workflow

    2. コミットメッセージ には、次のように入力します。

      add initial workflow file
    3. リポジトリ で、 を選択しますhello-world-app

    4. ブランチ名 でメイン を選択します。

    5. [Commit] (コミット) を選択します。

    これでワークフローが作成されました。

ワークフローを実行するには
  1. 先ほど作成したワークフロー (codecatalyst-package-workflow) の横にある「アクション」を選択し、「 の実行」を選択します。

    ワークフロー実行が開始されます。

  2. 上部の緑色の通知の右側で、実行へのリンクを選択します。リンクは のようになりますView Run-1234

    ワークフロー図が表示され、実行を開始したユーザーとRunHelloWorldAppアクションが表示されます。

  3. RunHelloWorldApp アクションボックスを選択して、アクションの進行状況を確認します。

  4. 実行が終了したら、「」に進みますステップ 5: ワークフローを検証する

ステップ 5: ワークフローを検証する

このステップでは、ワークフローが「Hello World」アプリケーションをlodashその依存関係で正常に実行したことを確認します。

「Hello World」アプリケーションが依存関係を使用して実行されたことを確認するには
  1. ワークフロー図で、RunHelloWorldAppボックスを選択します。

    ログメッセージのリストが表示されます。

  2. node index.js ログメッセージを展開します。

    次のメッセージが表示されます。

    [Container] 2024/04/24 21:15:41.545650 Running command node index.js Hello World

    Hello Word ( ではなくhello-world) の外観は、lodash依存関係が正常に使用されたことを示します。

  3. npm list ログを展開します。

    次のようなメッセージが表示されます。

    └── lodash@4.17.20

    このメッセージは、ワークフローアクションを実行している Docker イメージにlodashバージョン 4.17.20 がダウンロードされたことを示します。

ステップ 6: npmjs.com からのインポートをブロックする

lodash バージョン 4.17.20 がゲートウェイリポジトリと CodeCatalystパッケージリポジトリに存在するようになったので、他のバージョンのインポートをブロックできます。ブロックするとlodash、悪意のあるコードが含まれている可能性のある の後半 (または以前の) バージョンを誤ってインポートするのを防ぐことができます。詳細については、「パッケージオリジンコントロールの編集」および「依存関係置換攻撃」を参照してください。

ゲートウェイリポジトリへの のインポートをブロックlodashするには、以下の手順に従います。ゲートウェイでパッケージをブロックすると、ダウンストリームの場所でもブロックされます。

ゲートウェイリポジトリへのインポートをブロックするには
  1. ナビゲーションペインで、[Packages (パッケージ)] を選択します。

  2. を選択しますnpm-publish-registry-gateway

  3. [lodash] を選択します。

  4. 上部で、オリジンコントロール を選択します。

  5. アップストリーム でブロック を選択します。

  6. [保存] を選択します。

    これで、npmjs.com からゲートウェイリポジトリ (およびダウンストリームリポジトリとコンピュータ) へのインポートがブロックされました。

ステップ 7: ブロッキング機能をテストする

このセクションでは、 で設定したブロックステップ 6: npmjs.com からのインポートをブロックするが機能していることを確認します。まず、ゲートウェイリポジトリで使用可能なバージョン 4.17.20 lodashではなく、 のバージョン 4.17.21 をリクエストするように「Hello World」を設定します。次に、アプリケーションが nmpjs.com からバージョン 4.17.21 をプルできないことを確認します。これは、ブロックが成功したことを示します。最終テストとして、ゲートウェイリポジトリへのインポートのブロックを解除し、アプリケーションが のバージョン 4.17.21 を正常にプルできることを確認しますlodash

ブロッキング機能をテストするには、以下の一連の手順を使用します。

開始する前に
  1. 開発環境に切り替えます。

  2. 以前に CodeCatalyst コンソールを使用して作成したcodecatalyst-package-workflow.yamlファイルをプルします。

    git pull
「lodash」のバージョン 4.17.21 をリクエストするように「Hello World」を設定するには
  1. /hello-world-app/package.json を開きます。

  2. 「」に示すように、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) が一致しなくなりました。

  3. 追加、コミット、プッシュ:

    git add . git commit -m "update package.json to use lodash 4.17.21" git push
「Hello World」が「lodash」のバージョン 4.17.21 をプルできないことをテストするには
  1. バージョンの不一致でワークフローを実行します。

    1. CodeCatalyst コンソールに切り替えます。

    2. ナビゲーションペインで CI/CD を選択し、ワークフロー を選択します。

    3. の横にあるcodecatalyst-package-workflow「アクション」を選択し、「実行」を選択します。

      npm はpackage.json依存関係を検索し、 のバージョン 4.17.21 lodashが「Hello World」で必要であることがわかります。npm は、次の順序で次の場所で依存関係を検索します。

      • アクションを実行している Docker イメージ内。こちらに見つかりません。

      • CodeCatalyst パッケージリポジトリ内。こちらに見つかりません。

      • ゲートウェイリポジトリ内。こちらに見つかりません。

      • npmjs.com で。こちらにあります。

      npm が npmjs.com でバージョン 4.17.21 を検出した後、ゲートウェイリポジトリにインポートしようとしますが、 のインポートをブロックするようにゲートウェイを設定しているためlodash、インポートは行われません。

      インポートは行われないため、ワークフローは失敗します。

  2. ワークフローが失敗したことを確認します。

    1. 上部の緑色の通知の右側で、実行へのリンクを選択します。リンクは のようになりますView Run-2345

    2. ワークフロー図で、RunHelloWorldAppボックスを選択します。

    3. 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 からインポートのブロックを解除するには
  1. ナビゲーションペインで、[Packages (パッケージ)] を選択します。

  2. を選択しますnpm-publish-registry-gateway

  3. [lodash] を選択します。

  4. 上部で、オリジンコントロール を選択します。

  5. アップストリーム で、許可 を選択します。

  6. [保存] を選択します。

    これで、 のインポートのブロックが解除されましたlodash

    ワークフローで のバージョン 4.17.21 をインポートできるようになりましたlodash

npmjs.com からのインポートがブロック解除されていることをテストするには
  1. ワークフローを再度実行します。4.17.21 のインポートが機能するようになったため、今回はワークフローが成功します。ワークフローを再度実行するには:

    1. CI/CD を選択し、ワークフロー を選択します。

    2. の横にあるcodecatalyst-package-workflow「アクション」を選択し、「 の実行」を選択します。

    3. 上部の緑色の通知の右側で、実行へのリンクを選択します。リンクは のようになりますView Run-3456

      ワークフロー図が表示され、実行を開始したユーザーとRunHelloWorldAppアクションが表示されます。

    4. RunHelloWorldApp アクションボックスを選択して、アクションの進行状況を確認します。

    5. npm list ログメッセージを展開し、次のようなメッセージが表示されます。

      └── lodash@4.17.21

      このメッセージは、lodashバージョン 4.17.21 がダウンロードされたことを示します。

  2. バージョン 4.17.21 が CodeCatalyst およびゲートウェイリポジトリにインポートされたことを確認します。

    1. ナビゲーションペインで、[Packages (パッケージ)] を選択します。

    2. を選択しますnpm-public-registry-gateway

    3. を見つけlodashて、バージョンが であることを確認します4.17.21

      注記

      このページにはバージョン 4.17.20 は表示されていませんが、上部にあるバージョンを選択してlodashから選択します。

    4. これらのステップを繰り返して、バージョン 4.17.21 が にインポートされたことを確認しますcodecatalyst-package-repository

クリーンアップ

このチュートリアルで使用するファイルとサービスをクリーンアップして、料金が発生しないようにします。

パッケージのチュートリアルをクリーンアップするには
  1. を削除しますcodecatalyst-package-project

    1. CodeCatalyst コンソールで、codecatalyst-package-projectまだプロジェクトにない場合は、プロジェクトにナビゲーションします。

    2. ナビゲーションペインで、プロジェクト設定 を選択します。

    3. 「プロジェクトの削除」を選択し、「」と入力しdelete「プロジェクトの削除」を選択します。

      CodeCatalyst は、ソース、ゲートウェイ CodeCatalyst、パッケージリポジトリを含むすべてのプロジェクトリソースを削除します。開発環境も削除されます。

  2. PAT トークンを削除します。

    1. 右側のユーザー名を選択し、My settings を選択します。

    2. 「個人用アクセストークン」で、このチュートリアルで作成したトークンを選択し、「削除」を選択します。

このチュートリアルでは、 CodeCatalyst パッケージリポジトリから依存関係を取得するアプリケーションを実行するワークフローを作成する方法を学習しました。また、パッケージがゲートウェイと CodeCatalyst パッケージリポジトリに入るのをブロックおよびブロック解除する方法についても学びました。