翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
GitHub Actions、Artifactory、Terraform を使用して、マルチリポジトリ設定で AWS Supply Chain データレイクのデプロイを自動化する
Keshav Ganesh、Amazon Web Services
概要
このパターンは、マルチリポジトリの継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインを使用して AWS Supply Chain データレイクをデプロイおよび管理するための自動化されたアプローチを提供します。これは、GitHub Actions ワークフローを使用した自動デプロイと、Terraform を使用した手動デプロイの 2 つのデプロイ方法を示しています。どちらのアプローチもInfrastructure as Code (IaC) に Terraform を使用し、自動化された方法で GitHub Actions と JFrog Artifactory を追加して CI/CD 機能を強化します。
このソリューションは AWS Supply Chain、 AWS Lambdaと Amazon Simple Storage Service (Amazon S3) を活用してデータレイクインフラストラクチャを確立し、いずれかのデプロイ方法を使用して設定とリソースの作成を自動化します。この自動化により、手動の設定手順がなくなり、環境間で一貫したデプロイが保証されます。さらに、 は抽出、変換、ロード (ETL) に関する深い専門知識の必要性 AWS Supply Chain を排除し、Amazon Quick Sight を活用したインサイトと分析を提供できます。
このパターンを実装することで、組織はバージョン管理された自動化されたプロセスを通じて、デプロイ時間を短縮し、Infrastructure as Code を維持し、サプライチェーンのデータレイクを管理できます。マルチリポジトリアプローチは、きめ細かなアクセスコントロールを提供し、さまざまなコンポーネントの独立したデプロイをサポートします。チームは、既存のツールやプロセスに最適なデプロイ方法を選択できます。
前提条件と制限
前提条件
ローカルマシンに以下がインストールされていることを確認します。
デプロイする前に、以下が設定されていることを確認します。
アクティブ AWS アカウント。
AWS アカウント AWS リージョン 選択した の に 2 つのプライベートサブネットを持つ Virtual Private Cloud (VPC)。
次のサービスへのデプロイに使用される AWS Identity and Access Management (IAM) ロールの十分なアクセス許可。
AWS Supply Chain – データセットや統合フローなどのコンポーネントをデプロイし、 からアクセスする場合は、フルアクセスが推奨されます AWS マネジメントコンソール。
Amazon CloudWatch Logs – CloudWatch ロググループの作成と管理用。
Amazon Elastic Compute Cloud (Amazon EC2) – Amazon EC2 セキュリティグループと Amazon Virtual Private Cloud (Amazon VPC) エンドポイント用。
Amazon EventBridge – が使用します AWS Supply Chain。
IAM – AWS Lambda サービスロールの作成用。
AWS Key Management Service (AWS KMS) – Amazon S3 アーティファクトバケットと Amazon S3 AWS Supply Chain ステージングバケット AWS KMS keys に使用される へのアクセス用。
AWS Lambda – AWS Supply Chain コンポーネントをデプロイする Lambda 関数を作成する場合。
Amazon S3 – Amazon S3 アーティファクトバケット、サーバーアクセスログバケット、 AWS Supply Chain ステージングバケットへのアクセス用。手動デプロイを使用している場合は、Amazon S3 Terraform アーティファクトバケットのアクセス許可も必要です。
Amazon VPC – VPC の作成と管理用。
デプロイに GitHub Actions ワークフローを使用する場合は、以下を実行します。
前述のアクセス許可を使用して、IAM ロールの OpenID Connect (OIDC)
を設定します。 にアクセスするための同様のアクセス許可を持つ IAM ロールを作成します AWS マネジメントコンソール。詳細については、IAM ドキュメントの「IAM ユーザーにアクセス許可を付与するロールを作成する」を参照してください。
手動デプロイを行う場合は、以下を実行します。
前述のアクセス許可を持つ IAM ロールを引き受ける IAM ユーザーを作成します。詳細については、IAM ドキュメントの「IAM ユーザーにアクセス許可を付与するロールを作成する」を参照してください。
ローカルターミナルで ロールを引き受けます。
デプロイに GitHub Actions ワークフローを使用する場合は、以下を設定します。
ホスト名、ログインユーザー名、ログインアクセストークンを取得する JFrog Artifactory アカウント
。 アーティファクトを保存するための JFrog プロジェクトキーとリポジトリ
。
制限事項
AWS Supply Chain インスタンスは、複雑なデータ変換手法をサポートしていません。
AWS Supply Chain は、組み込みの分析とインサイトを提供するため、サプライチェーンドメインに最適です。他のドメインの場合、 AWS Supply Chain はデータレイクアーキテクチャの一部としてデータストアとして使用できます。
このソリューションで使用される Lambda 関数は、本番環境のデプロイで API の再試行とメモリ管理を処理するために拡張する必要がある場合があります。
一部の AWS のサービス は では使用できません AWS リージョン。利用可能なリージョンについては、「AWS サービス (リージョン別)
」を参照してください。特定のエンドポイントについては、「サービスエンドポイントとクォータ」を参照して、サービスのリンクを選択してください。
アーキテクチャ
このソリューションは、自動化された GitHub Actions ワークフローを使用するか、Terraform を使用して手動でデプロイできます。
GitHub Actions を使用した自動デプロイ
次の図は、GitHub Actions ワークフローを使用する自動デプロイオプションを示しています。JFrog Artifactory はアーティファクトの管理に使用されます。マルチリポジトリデプロイで使用するリソース情報と出力を保存します。

Terraform を使用した手動デプロイ
次の図は、Terraform による手動デプロイオプションを示しています。JFrog Artifactory の代わりに、Amazon S3 がアーティファクト管理に使用されます。

デプロイのワークフロー
図は次のワークフローを示しています。
次のいずれかのデプロイ方法を使用して、 AWS Supply Chain サービスデータセットのインフラストラクチャとデータベースをデプロイします。
自動デプロイ – GitHub Actions ワークフローを使用してすべてのデプロイステップを調整し、JFrog Artifactory を使用してアーティファクトを管理します。
手動デプロイ – デプロイステップごとに Terraform コマンドを直接実行し、Amazon S3 を使用してアーティファクトを管理します。
AWS Supply Chain サービスオペレーションに必要なサポート AWS リソースを作成します。
Amazon VPC エンドポイントとセキュリティグループ
AWS KMS keys
CloudWatch Logs ロググループ
次のインフラストラクチャリソースを作成してデプロイします。
AWS Supply Chain サービスインスタンス、名前空間、データセットを管理 (作成、更新、削除する) する Lambda 関数。
AWS Supply Chain データインジェスト用の Amazon S3 バケットのステージング
ステージングバケットと AWS Supply Chain データセット間の統合フローを管理する Lambda 関数をデプロイします。デプロイが完了すると、残りのワークフローステップでデータの取り込みと分析を管理します。
AWS Supply Chain ステージング Amazon S3 バケットへのソースデータの取り込みを設定します。
AWS Supply Chain ステージング Amazon S3 バケットにデータが追加されると、サービスは自動的に AWS Supply Chain データセットへの統合フローをトリガーします。
AWS Supply Chain は Quick Sight Analytics と統合して、取り込まれたデータに基づいてダッシュボードを生成します。
ツール
AWS のサービス
Amazon CloudWatch Logs を使用すると、すべてのシステム、アプリケーション、および からのログを一元化 AWS のサービス できるため、ログをモニタリングして安全にアーカイブできます。
AWS Command Line Interface (AWS CLI) は、コマンドラインシェルのコマンド AWS のサービス を通じて を操作するのに役立つオープンソースツールです。
Amazon Elastic Compute Cloud (Amazon EC2) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
Amazon EventBridge は、アプリケーションをさまざまなソースのリアルタイムデータに接続できるようにするサーバーレスイベントバスサービスです。例えば、 AWS Lambda 関数、API 送信先を使用する HTTP 呼び出しエンドポイント、その他のイベントバスなどです AWS アカウント。
AWS Identity and Access Management (IAM) は、誰を認証し、誰に使用を承認するかを制御することで、 AWS リソースへのアクセスを安全に管理できます。
AWS IAM アイデンティティセンター を使用すると、すべての AWS アカウント およびクラウドアプリケーションへのシングルサインオン (SSO) アクセスを一元管理できます。
AWS Key Management Service (AWS KMS) は、データの保護に役立つ暗号化キーの作成と制御に役立ちます。
AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
Amazon Q in AWS Supply Chain は、 AWS Supply Chain データレイク内のデータを分析することでサプライチェーンをより効率的に運用するのに役立つインタラクティブな生成 AI アシスタントです。
Amazon QuickSight は、視覚化、分析、レポート生成に使用できるクラウドスケールのビジネスインテリジェンス (BI) サービスです。
Amazon Simple Storage Service (Amazon S3) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
AWS Supply Chain は、サプライチェーンドメインのデータストアとして組織で使用できるクラウドベースのマネージドアプリケーションです。これは、インサイトを生成し、取り込まれたデータに対して分析を実行するために使用できます。
Amazon Virtual Private Cloud (Amazon VPC) は、定義した仮想ネットワークに AWS リソースを起動するのに役立ちます。この仮想ネットワークは、ユーザー自身のデータセンターで運用されていた従来のネットワークと似ていますが、 AWSのスケーラブルなインフラストラクチャを使用できるという利点があります。Amazon VPC エンドポイントは、インターネットゲートウェイ、NAT デバイス、VPN 接続、または AWS Direct Connect 接続を必要と AWS のサービス せずに、サポートされている に VPC をプライベートに接続するのに役立つ仮想デバイスです。
その他のツール
GitHub アクション
は、GitHub リポジトリと緊密に統合された継続的インテグレーションおよび継続的デリバリー (CI/CD) プラットフォームです。GitHub Actions を使用して、生成、テスト、デプロイのパイプラインを自動化できます。 HashiCorp Terraform
は、Infrastructure as Code (IaC) ツールで、クラウドとオンプレミスのリソースの作成と管理を支援します。 JFrog Artifactory
は、アプリケーション配信プロセスを通じてバイナリとアーティファクトのend-to-endの自動化と管理を提供します。 「Python
」は汎用のコンピュータプログラミング言語です。このパターンでは、 AWS 関数のコードが とやり取りするために Python を使用します。 AWS Supply Chain .
ベストプラクティス
このパターンを実装する場合、可能な限り高レベルのセキュリティを維持します。「前提条件」で説明されているように、2 つのプライベートサブネットを持つ Virtual Private Cloud (VPC) が、 AWS リージョン 選択した AWS アカウント の にあることを確認します。 https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html
可能な限り AWS KMS カスタマーマネージドキーを使用し、制限付きアクセス許可を付与します。
このパターンのデータを取り込むために必要な最小限のアクセスを持つ IAM ロールを設定するには、このパターンのリポジトリの「ソースシステムから Amazon S3 への安全なデータ取り込み
」を参照してください。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
リポジトリのクローン作成 | このパターンのリポジトリのクローンを作成するには、ローカルワークステーションで次のコマンドを実行します。
| AWS DevOps |
(自動オプション) デプロイの前提条件を確認します。 | 自動デプロイの前提条件が完了していることを確認します。 | アプリ所有者 |
(手動オプション) AWS Supply Chain データセットのデプロイを準備します。 | の
前提条件で作成されたロール ARN を引き受けるには、次のコマンドを実行します。
環境変数を設定してエクスポートするには、次のコマンドを実行します。
| AWS DevOps |
(手動オプション) デプロイで AWS Supply Chain 統合フローを管理する準備をします。 | の
以前に作成したロール ARN を引き受けるには、次のコマンドを実行します。
環境変数を設定してエクスポートするには、次のコマンドを実行します。
| アプリ所有者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
|
| AWS DevOps |
| を組織内のスタンドアロンリポジトリ
| AWS DevOps |
.github ワークフローファイルでブランチ名を設定します。 | 次の例に示すように、デプロイ
| アプリ所有者 |
GitHub 環境をセットアップし、環境値を設定します。 | GitHub 組織で GitHub 環境を設定するには、このパターンのリポジトリにある GitHub 環境のセットアップ ワークフローファイルで環境値 | アプリ所有者 |
ワークフローをトリガーします。 | 変更を GitHub 組織にプッシュし、デプロイワークフローをトリガーするには、次のコマンドを実行します。
| AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
|
| AWS DevOps |
|
| AWS DevOps |
.github ワークフローファイルでブランチ名を設定します。 | 次の例に示すように、デプロイ
| アプリ所有者 |
GitHub 環境をセットアップし、環境値を設定します。 | GitHub 組織で GitHub 環境を設定するには、このパターンのリポジトリにある GitHub 環境のセットアップ ワークフローファイルで環境値 | アプリ所有者 |
ワークフローをトリガーします。 | 変更を GitHub 組織にプッシュし、デプロイワークフローをトリガーするには、次のコマンドを実行します。
| AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
| の
| AWS DevOps |
Terraform 状態 Amazon S3 バケットを設定します。 | Terraform 状態 Amazon S3 バケットを設定するには、次のスクリプトを使用します。
| AWS DevOps |
Terraform アーティファクト Amazon S3 バケットを設定します。 | Terraform アーティファクト Amazon S3 バケットを設定するには、次のスクリプトを使用します。
| AWS DevOps |
Terraform バックエンドとプロバイダーの設定をセットアップします。 | Terraform バックエンドとプロバイダーの設定を設定するには、次のスクリプトを使用します。
| AWS DevOps |
デプロイプランを生成します。 | デプロイプランを生成するには、次のコマンドを実行します。
| AWS DevOps |
設定をデプロイします。 | 設定をデプロイするには、次のコマンドを実行します。
| AWS DevOps |
他の設定を更新し、出力を保存します。 | AWS KMS キーポリシーを更新し、適用された設定出力を Terraform アーティファクト Amazon S3 バケットに保存するには、次のコマンドを実行します。
| AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
| の
| AWS DevOps |
Terraform バックエンドとプロバイダーの設定をセットアップします。 | Terraform バックエンドとプロバイダーの設定を設定するには、次のスクリプトを使用します。
| AWS DevOps |
デプロイプランを生成します。 | デプロイプランを生成するには、次のコマンドを実行します。これらのコマンドは、Terraform 環境を初期化し、 の設定変数を既存の Terraform 設定
| AWS DevOps |
設定をデプロイします。 | 設定をデプロイするには、次のコマンドを実行します。
| AWS DevOps |
他の設定を更新します。 | AWS KMS キーポリシーを更新し、適用された設定出力を Terraform アーティファクト Amazon S3 バケットに保存するには、次のコマンドを実行します。
| AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
サンプル CSV ファイルをアップロードします。 | データセットのサンプル CSV ファイルをアップロードするには、次の手順を実行します。
| データエンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
AWS Supply Chain アクセスを設定します。 | からの AWS Supply Chain アクセスを設定するには AWS マネジメントコンソール、次の手順を実行します。
| アプリ所有者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
| の
| AWS DevOps |
Terraform バックエンドとプロバイダーの設定をセットアップします。 | Terraform バックエンドとプロバイダーの設定を設定するには、次のスクリプトを使用します。
| AWS DevOps |
インフラストラクチャ破壊計画を作成します。 | 詳細なティアダウンプランを生成して AWS インフラストラクチャの制御された破壊に備えるには、次のコマンドを実行します。このプロセスでは、Terraform を初期化し、 AWS Supply Chain データセット設定を組み込み、実行前に確認できる破棄計画を作成します。
| AWS DevOps |
インフラストラクチャ破壊計画を実行します。 | インフラストラクチャの計画された破棄を実行するには、次のコマンドを実行します。
| AWS DevOps |
Amazon S3 バケットから Terraform 出力を削除します。 | のデプロイ中にアップロードされた出力ファイルを削除するには
| AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
| の
| AWS DevOps |
Terraform バックエンドとプロバイダーの設定をセットアップします。 | Terraform バックエンドとプロバイダーの設定を設定するには、次のスクリプトを使用します。
| AWS DevOps |
インフラストラクチャ破壊計画を作成します。 | AWS Supply Chain データセットリソースを破棄する計画を作成するには、次のコマンドを実行します。
| AWS DevOps |
Amazon S3 バケットを空にします。 | すべての Amazon S3 バケット ( 用に設定されたサーバーアクセスログ記録バケットを除く
| AWS DevOps |
インフラストラクチャ破壊計画を実行します。 | 生成されたプランを使用して AWS Supply Chain データセットインフラストラクチャの計画された破壊を実行するには、次のコマンドを実行します。
| AWS DevOps |
Amazon S3 Terraform アーティファクトバケットから Terraform 出力を削除します。 | クリーンアッププロセスを完了するには、次のコマンド
| AWS DevOps |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
AWS Supply Chain 内部エラーまたはサービスロールの IAM アクセス許可が不十分であるため、 AWS Supply Chain データセットまたは統合フローが正しくデプロイされませんでした。 | まず、すべてのリソースをクリーンアップします。次に、 AWS Supply Chain データセットリソース |
AWS Supply Chain 統合フローは、 AWS Supply Chain データセットにアップロードされた新しいデータファイルを取得しません。 |
|
関連リソース
AWS ドキュメント
その他のリソース
GitHub Actions ワークフローについて
(GitHub ドキュメント)
追加情報
このソリューションは、 で提供される構築済みのダッシュボード AWS Supply Chain または Amazon Quick Sight とのカスタム統合を通じて、より多くのデータセットにレプリケートでき、さらなる分析のためにクエリを実行できます。さらに、Amazon Q を使用して、 AWS Supply Chain インスタンスに関連する質問をすることができます。
Analytics でデータを分析する AWS Supply Chain
AWS Supply Chain 分析を設定する手順については、 AWS Supply Chain ドキュメントのAWS Supply Chain 「分析の設定」を参照してください。
このパターンは、カレンダーデータセットと Outbound_Order_Line データセットの作成を示しています。これらのデータセットを使用する分析を作成するには、次の手順を実行します。
データセットを分析するには、季節性分析ダッシュボードを使用します。ダッシュボードを追加するには、 AWS Supply Chain ドキュメントの「構築済みダッシュボード」のステップに従います。
ダッシュボードを選択すると、カレンダーデータとアウトバウンド注文明細データのサンプル CSV ファイルに基づく分析が表示されます。
ダッシュボードは、データセットの取り込まれたデータに基づいて、長年にわたってオンデマンドでインサイトを提供します。ProductID、CustomerID、年、およびその他のパラメータをさらに指定して分析できます。
Amazon Q を使用して AWS Supply Chain インスタンスに関連する質問をする
Amazon Q in AWS Supply Chain は、サプライチェーンをより効率的に運用するのに役立つインタラクティブな生成 AI アシスタントです。Amazon Q は以下を実行できます。
AWS Supply Chain データレイク内のデータを分析します。
運用上および財務上のインサイトを提供します。
サプライチェーンに関する即時の質問に回答します。
Amazon Q の使用の詳細については、 AWS Supply Chain ドキュメントの「 での Amazon Q の有効化 AWS Supply Chain」と「 での Amazon Q の使用 AWS Supply Chain」を参照してください。