2022年2月25日金曜日

terraform(CodePipelineでGithubの認証でNGになる件)

事象:
以下のような、Git関連の認証エラーが出たので設定方法を探る。














provider.tfの修正:


①gIthubを追記





















CodePipeline.tf.の修正:


①fileにGituHubのシークレットファイルのパスを指定

②0AuthTokenの追記を行う



























シークレットファイル用のフォルダとファイルを作成

   ->ファイル名:aaaaの中身には、Githubから






























aaaaファイル:中身には、GithubPersomal access tokenから取得したトークンをペーストしただけ。






CodeDeploy(BlueGreen Deployment(再))

ざっくり構成図:















CodeDeploy(BlueGreen Deploymentの作成済み):

①運用中のポート番号                            :80

新リリース前(bata)のポート番号  :8080



まずは、運用中の状態(更新前のソースコード)を確認








リリース前の状態(更新予定のソースjコード)を確認

    ->修正したソースコードが変更されていることが把握できる。








3)以下の現時点の状態。

      ->運用中の環境では、修正した内容は反映されてない



4)以下の行為で、運用中の環境に反映される。

   ->元のタスクセットの終了ボタンを押す

   ->1時間後(猶予期間)に自動的に反映される。


















5)ECSを確認すると、以下、現行のバージョンとリリース予定のバージョンのタスクが

立ち上がっていることが把握できる。

















6)Deployの全てのステップが完了した。





















結果:

現環境(ポート番号:80)にアクセスすると、修正したソースコードに差し代わっていることが把握できた。





CodePipeline(artifactfileが参照できない件)

事象:
実施すると、以下のエラーがでてDeployが失敗におわ

















以下のソースコードに2点を用意:

1)taskdef.json 

     ->デプロイするタスク定義の設定を記述したファイル

2)appspec.yml

     ->ECSサービスの設定情報が記載されたファイル













BuildSpecに以下、赤枠を追記する

  ->s3に出力したのもが後にCodeDeployで使用する。
































CodePipeline(設定編)

 用途:CIサービス(例:CodeBuild)とCDサービス(CodeDeploy)を連携させるための利用。



パイプラインを作成する








2)パイライン名     :記載する。

3)既存のサービスロール :Pipeline用のIamRoleを作成済みなので、既存のサービスロールを選択する。

4)ロールのARN    :作成済みのIamRoleを選択

5)次へを押す























6)ソースプロバイダ:今回は、GitHubを選択

7)GitHubに接続を押して、認証を行う。


























8)確認を押す。












9)リポジトリ                              :対象のリポジトリを選択

10)ブランチ                             :対象のブランチを選択

11)検出オプションを変更する  :GitHubウェブフック

12)次へを押す













































13)プロバイダーを構築する :AWS CodeBuildを選択

14)プロジェクト名     :CodeBuildを作成したプロジェクトを選択

15)次へを押す。





























16)デプロイプロバイダー                       :Amazon ECS(ブルー/グリーン)を選択。

17)AWS CodeDeployアプリケーション名   :作成済みのアプリケーションを選択

18)AWS CodeDeployデプロイグループ       :作成済みのデプロイグループを選択

19)Amazon ECS タスク定義                         :BuildArtifactを選択

20)AWS CodeDeploy AppSpec ファイル     :BuildArtifactを選択

21)次へを押す。




































22)パイプラインを作成する。






CodeBuild(build問題)

参照:
https://www.docker.com/increase-rate-limits?utm_source=docker&utm_medium=web%20referral&utm_campaign=increase%20rate%20limit&utm_budget=https://dev.classmethod.jp/articles/codebuild-has-to-use-dockerhub-login-to-avoid-ip-gacha/



事象:

以下の制限エラーが出てビルドが失敗に終わる


原因:

他者とCodeBuildで利用しているグローバルIPと共有していて

Docker側で、対象のグローバルIPで利用制限に達していたのが制限をかけていたのが原因。



<エラー記載>

toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading:
















対策:


1)ECRのdocker imageの利用するして、Dockerfileの修正を行う。

2)再度、GitHubPushする














再ビルドを行なった様子:

上手くいったようだ



EFS(Dockerfile)の記載について注意

  Dockerfileにefsのマウントパス宛に、ファイルコピーを行うと ECSのサービス作成時に、コンテナのデプロイ失敗に(container run time error)になるので 別経由で、EFSにファイルをコピーした方が良い!! <Dockerfile> ...