背景・目的
GitHubとAWSのCodeシリーズを接続できますが、簡単に整理し試してみました。
まとめ
下記に特徴をまとます。
特徴 | 説明 |
---|---|
Connectionとは | 接続を使用して、サードパーティープロバイダーのリソースを次のデベロッパーツールの AWS リソースと統合できる サードパーティプロバイダーに接続し、CodePipelineなどのAWSリソースとの接続ができる |
installation | サードパーティアカウント上のAWSアプリのインスタンスを指す |
connection | サードパーティのソースリポジトリを他の AWS サービスに接続するために使用される AWS リソース |
third-party repository | AWS 以外のサービスまたは企業によって提供されるリポジトリ |
provider type | 接続するサードパーティのソース リポジトリを提供するサービスまたは会社 |
host | サードパーティプロバイダーがインストールされているインフラストラクチャを表すリソース |
概要
下記を下に整理します。
接続とは?なにができるか
接続を使用して、サードパーティープロバイダーのリソースを次のデベロッパーツールの AWS リソースと統合できます。
- Bitbucket などのサードパーティープロバイダーに接続し、CodePipeline などの AWS リソースとのソース統合としてサードパーティー接続を使用します。
- CodeBuild ビルドプロジェクト、CodeDeploy アプリケーション、およびサードパーティープロバイダーの CodePipeline のパイプラインで、リソース間の接続へのアクセスを均一に管理します。
- CodeBuild ビルドプロジェクト、CodeDeploy アプリケーション、および CodePipeline のパイプライン用のスタックテンプレートで接続 ARN を使用します。保存されたシークレットやパラメーターを参照する必要はありません。
- サードパーティプロバイダーに接続し、CodePipelineなどのAWSリソースとの接続ができる
接続の概念
概念と用語を理解すれば、接続機能の設定と使用が容易になります。デベロッパーツールコンソールの接続機能を使用する際に知っておかなければならないいくつかの概念を次に示します。
installation
An instance of the AWS app on a third-party account. Installing the AWS CodeStar Connector app allows AWS to access resources within the third-party account. An installation can only be edited on the third-party provider’s website.
- サードパーティアカウント上のAWSアプリのインスタンス
- AWS CodeStar Connectorアプリをインストールすると、AWSはサードパーティアカウント内のリソースにアクセス可能
- インストールはサードパーティプロバイダーのWebでのみ編集可能
connection
An AWS resource used to connect third-party source repositories to other AWS services.
- サードパーティのソースリポジトリを他の AWS サービスに接続するために使用される AWS リソース
third-party repository
A repository that is provided by a service or company that is not part of AWS. For example, a Bitbucket repository is a third-party repository.
- AWS 以外のサービスまたは企業によって提供されるリポジトリ
- 例えば、Bitbucket リポジトリはサードパーティのリポジトリ等
provider type
A service or company that provides the third-party source repository you want to connect to. You connect your AWS resources to external provider types. A provider type where the source repository is installed on the network and infrastructure is an installed provider type. For example, GitHub Enterprise Server is an installed provider type.
- 接続するサードパーティのソース リポジトリを提供するサービスまたは会社
- AWS リソースを外部プロバイダータイプに接続する
- ソースリポジトリがネットワーク上にインストールされ、インフラストラクチャがインストール型プロバイダータイプであるプロバイダータイプ
- 例えば、GitHub Enterprise Server はインストール型プロバイダータイプ
host
A resource that represents the infrastructure where a third-party provider is installed. Connections use the host to represent the server where your third-party provider is installed, such as GitHub Enterprise Server. You create one host for all connections to that provider type.
- サードパーティ プロバイダーがインストールされているインフラストラクチャを表すリソース
- 接続では、ホストを使用して、GitHub Enterprise Server などのサードパーティプロバイダーがインストールされているサーバーを表す
- そのプロバイダー タイプへのすべての接続に対して 1 つのホストを作成する
接続はどのように機能するか
接続を作成する前に、サードパーティーアカウントで AWS 認証アプリケーションをインストールするか、そのアプリケーションへのアクセス権を提供する必要があります。接続をインストールした後、このインストールを使用するように更新できます。接続を作成すると、サードパーティーアカウントの AWS リソースへのアクセスを許可します。これにより、 接続は、 AWS リソースに代わって、サードパーティーアカウントのソースリポジトリなどのコンテンツにアクセスできます。その後、その接続を他の と共有 AWS のサービス して、リソース間で安全な OAuth 接続を提供できます。
- Connectionを作成する際に、サードパーティーアカウントで AWS 認証アプリケーションをインストールするか、そのアプリケーションへのアクセス権を提供する必要がある
- Connectionを作成すると、サードパーティーアカウントの AWS リソースへのアクセスを許可する
- Connectionは、AWSリソースに代わり、サードパーティアカウントのソースリポジトリなどの古典つにアクセスできる
クラウドベースの接続は次のように設定されていますが、ユーザーアカウントまたは組織間では違いがあります。
- ユーザアカウント、Organizationで違いがある
- ユーザーアカウント: 各クラウドベースのサードパーティーユーザーアカウントには、コネクタアプリがインストールされています。複数の接続をアプリケーションのインストールに関連付けることができます。
- サードパーティアカウントでは、複数の接続をアプリケーションのインストールに関連づけることが可能
- Organizations: 各クラウドベースのサードパーティー組織には、コネクタアプリがインストールされています。組織内の接続の場合、組織内の各 Organization アカウントへの接続マッピングは 1:1 です。複数の接続をアプリケーションのインストールに関連付けることはできません。組織が接続を操作する方法の詳細については、「」を参照してくださいAWS CodeConnections の接続が組織と連携する方法。
- 各クラウドベースのサードパーティOrgでは、Organizationアカウントへの接続マッピングは1:1
- 複数のConnectionをアプリケーションのインストールに関連付けることはできない
接続は、それらを作成する AWS アカウント によって所有されます。接続は、接続 ID を含む ARN によって識別されます。接続 ID は、変更または再マッピングできない UUID です。接続を削除して再確立すると、新しい接続 ID が作成されるため、新しい接続 ARN が作成されます。つまり、接続 ARN が再利用されることはありません。
- Connectionは、作成するAWSアカウントにより所有される
- ARNにより識別される
- 変更不可
新しく作成された接続が Pending 状態です。接続のセットアップを完了し、接続を Pending 状態から Available 状態に移行するには、サードパーティーのハンドシェイク(OAuthフロー)プロセスが必要です。これが完了すると、接続は Availableになり、CodePipeline などの AWS サービスで使用できます。
- 接続は、Pendingで始まり、サードパーティのOAuthプロセスにより、Availableになる
実践
GitHub リポジトリの作成
事前にリポジトリを作成しておきます
GitHub への接続を作成
下記を参考にConnectionを作成してみます
-
AWSにサインインします
-
デベロッパーツールに移動します
-
「接続」をクリックします
-
画面が切り替わります
-
「Only select repositories」を選択し、「install & Authorize」をクリックします
-
再び元の画面に切り替わりますので、「接続」をクリックします
GitHubでインストールを確認
-
GitHubの右上のアイコンから「Your organizations」をクリックします
-
ナビゲーションペインから、「Integrations>Applications」をクリックします
-
詳細が確認できます
別のAWSアカウントでインストール済みのAppを確認する
- 別のAWSアカウントでサインインします
- デベロッパー用ツールに移動します
- ナビゲーションペインで「接続」をクリックします
- 「接続を作成」をクリックします
- 同様にプロバイダーは「GitHub」、接続名を入力し「GitHubに接続する」をクリックします
- 「新しいアプリをインストールする」をクリックします
- GitHub画面に切り替わります
- 再びデベロッパーツールに切り替わるので「接続」をクリックします。このときアプリインストールのIDが自動で埋まっています
- 作成されました
考察
今回、GitHubとAWS Codeシリーズ(CodePipeline, CodeBuild等)を統合する「接続(Connection)」の仕組みを整理し、実際に試してみました。
次回以降は、GitHub ActionsからCodeBuildを動かしてみたいと思います。
参考