Open4

CodeCatalyst or GitLab / Terraform CICD パイプライン

ひやんが / hiyangerひやんが / hiyanger

CodeCommit代替案

CodeCatalyst(あとGitLab/EC2も)を検討中

https://repost.aws/selections/KPRqbk9RhNRi29VlzbJNnH5g/why-am-i-unable-to-create-a-repository-in-codecommit

CodeCommit の代わりに、Amazon CodeCatalyst、GitLab、GitHub、またはお好みのサードパーティソースプロバイダーの使用を検討してください。

https://dev.classmethod.jp/articles/try-amazon-codecatalyst/
https://dev.classmethod.jp/articles/amazon-codecatalyst-terraform-action/

単にCodeCommitはAWS内の代替になるものだとおもってたけど、Builders IDから使う感じで、CodePipelineとかBuildも不要で動かせるっぽい。AWSアカウント内のリソースじゃないと絶対だめだよっていうならGitLab/EC2になりそう。

ひやんが / hiyangerひやんが / hiyanger

CodeCatalyst

https://codecatalyst.aws/explore

※東京リージョンにないけど、リソースのデプロイは問題なく東京にできる どう影響するか

planまで完了(planに5分くらいかかった) GitHub/GItHubActionsのAWS版という感じ

もうこっちに移行するという意図でCodeCommitが使えなくなった理由がわかった気がした。ただAWSアカウント外になるので、企業によって導入のハードルはあがるかもしれない。その場合のは前述の通りGitLab/EC2になると思う。

※一応applyも確認しておく。実用性までみたいので、プルリクでplan、マージでapplyまでやりたい。

プルリクでplan / マージでapply

動作確認OK

  • Pull request で plan
  • pushでapply(トリガーにmergeのみは存在しない)


https://docs.aws.amazon.com/ja_jp/codecatalyst/latest/userguide/workflows-add-trigger-examples.html

クロスアカウント

未検証だけど、アカウントと環境の項目があるのでそこいれれば普通に実現できそう。時間とれればやる。

ひやんが / hiyangerひやんが / hiyanger

GitLab

EC2かECS(EKS)かとおもってたらEC2でやるのが一般的なもよう。EC2でやってみる。
https://gitlab-docs.creationline.com/ee/install/aws/
https://qiita.com/yushikmr/items/902436a64ccc213947fe
https://zenn.dev/yone5/articles/8f4197316f4651
https://zenn.dev/yone5/articles/24bf904e3c5e4c

構築

  • ディスクサイズ8GBだとたりなかった。20GBにしておくとよい。

Codepipelineへの接続(証明書とか)

接続するにあたってドメインとって正しい証明書の設定が必要だった(IPだけでは不可)

①ドメインとってElasticIPと紐付け→GitlabのURLにhttpsとして書き込む
https://zenn.dev/yone5/articles/24bf904e3c5e4c

②Codeシリーズの画面からいける設定→接続→ホスト作成/接続のホスト作成でURLを登録後、Gitlabのaccess tokensを取得して登録→その後「接続」の設定を行いようやくCodePipelineで利用可能(利用可能の表示が2つでること)
https://dev.classmethod.jp/articles/codepipeline-gitlab-self-managed/

pipeline applyまでいけた

※その他参考
https://dev.classmethod.jp/articles/amazon-linux-2023-gitlab-ce/
https://dev.classmethod.jp/articles/codepipeline-gitlab-self-managed/
https://dev.classmethod.jp/articles/self-managed-gitlab-codepipeline-vpc/
https://dev.classmethod.jp/articles/codeconnections_gitlab-self-managed_error/
https://qiita.com/neruneruo/items/1535776e5cab5df115bd#gitlabのhttps化
https://techblog.cartaholdings.co.jp/entry/codepipeline-source-provider-gitlab-self-managed#-CodeConnections-設定-AWS
https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/connections-gitlab-managed.html

AWS内部通信だけでいけないか確認

無理だった(ちょっとおしかった)

SGでインバウンドをhttps/自分のIPに制限
git push→gitlab→codepipelineで検知 まではいけたものの、そこから先にはいけず

つまり以下のような通信がされていることが想定される
① CodePipelineからGitLabへのポーリングだけの通信はAWS内部で通信
② その先のコード取り込みは外部経路を使った通信になる

フローログとったらCodeConnectionsからの接続に使われるIPリスト、52.196.132.231, 54.95.133.227, 18.181.13.91 からアクセスがあった
https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-ip-address.html

VPC経由の接続使ったら内部通信だけ完結するのだろうか?

→やってみたけど、経由用VPCたてるとこまでで一旦じかんぎれ

これやらないとだめだった
https://stackoverflow.com/questions/76363228/unable-to-create-codestar-host

NS 解決の有効化と DNS ホスト名の有効化が true

ひやんが / hiyangerひやんが / hiyanger

登壇してきた

2024/11/14 HashiTalks: Japan
https://events.hashicorp.com/hashitalksjapan

資料
https://speakerdeck.com/hiyanger/cd-paipurainniokeru-aws-codecommit-nodai-ti-shou-duan

※メモ 録画されるなんてあんまりないから見返したけど、みんなより声のボリュームが小さかった オンライン(会議とかも)だといつもこんな感じだから、オンラインのときもスイッチいれてオフラインのときみたいに話そう