LoginSignup
3
3

More than 3 years have passed since last update.

Terraform で CodePipeline を管理する場合の注意点

Last updated at Posted at 2019-12-19

CodePipeline を作っていてでハマったことの備忘録。

Terraform で管理する場合の注意点

  • OAuth Token の差分が plan/apply のたびに発生する
    • API get-CodePipeline が OAuth Token を取得できないため、Terraform や他のどんなツールを使っても冪等にできない
      • aws codepipeline get-codepipeline を実行すると、 **** という表示になって隠されている
      • 根本的な解決方法がなく、今も Open Issue になっている[1]
  • GitHub webhook も定義する場合は、GitHub で発行した OAuth Token の scope に admin:repo_hook も必要[2]
  • GitHub webhook は update できない
    • 一度作成したリソースを修正したい場合は、 taint してから apply する
  • Custom Action を定義できない
    • これも API の制約で、 custom action を updade/get する手段がなく、 create/delete をする手段しか提供されていないため、どんなツールを使っても冪等に保つことができない
    • ユースケース) Action Provider に Jenkins Custom を定義する場合など
    • したがってコンソールか CLI をつかって定義することになる

AWS Console or CLI で管理する場合の注意点

  • AWSコンソール上から作業できないワークフローがある
    • (GitHub など外部の CVS の) OAuth トークンの登録 [3]
  • 裏で暗黙的に作成されるリソースがある
    • GitHub webhook
      • GitHub のリポジトリに push されたときに AWS の Webhook 用エンドポイントを呼び出すためのもの
    • CodePipeline の webhook
      • GitHub => AWS CodePipeline を起動させるための Webhook エンドポイント
        • https://codepipeline.ap-northeast-1.amazonaws.com/...
      • aws codepipeline list-webhooks で確認できる。試行錯誤しているとゴミが残りがち

共通の注意点

  • CodePipeline の定義を更新すると、実行中の action はすべてキャンセルされる
  • (定義を変更せずに) CodePipeline で実行中のアクションを中止する方法はない
    • アクションを中止したい場合は CodePipeline の定義を変更する[4], [5]

参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3