投稿

2022の投稿を表示しています

php_modが非推奨になったのね

昔のバージョンのphp環境でphpバージョンを上げるという対応中。 apache + PHP8のインスタンスを構築してドキュメントルートまで到達を確認。 対応する人にドキュメントルートまで到達するからプロジェクトのファイルを置いてバージョンアップのエラーを確認してもらうため依頼しましたが HTTP 503 Service Unavailable のエラーが出ているとのこと。 HTMLファイルはアクセスできているからPHPの実行ができていないと思い調べると Apache HTTP サーバーで使用するために PHP に提供されている mod_php モジュールが非推奨になりました。 php-fpmをインストールして起動し、リクエストを流してphp-fmpでphpを実行するようにして解決。 しばらくPHPを触っていなかったのでモジュールが非推奨になったことに気づかずでした。

GitHubで違うアカウントで同じPCからSSHで接続したかった件

表題の通りで同一PCで2つのGitHubアカウントのSSHをする場合に調べた結果を記載します。 まず前提としては、Githubアカウントは個人で1つ 例えば、すでに個人で色々なリポジトリを持っていて、案件にて組織のメールアドレスでアカウントを作成した場合に、本来はすでに持っている個人のアカウントを組織に紐付けることが正しいみたいです。 こちらが大変わかりやす記載されていました。 全社的に会社用GitHubアカウントを廃止した件 今回、個人のアカウントを組織の方に紐付けてもよかったのですが、組織のリポジトリのメール通知などを受け取るとメールの管理が個人または組織のアカウントになってしまうのもいやで、組織用の個人アカウントを作ってしまいました。 名前もわかりやすいものに変えてくれとかあってちょっと抵抗があるんですよね。。 ここら辺が解決する手段がわからなかったので、方法がわかったら元々のアカウントにしたいと思います。 なのでGitHub推奨ではないことをしています。 本題です。 解決した方法は~/.ssh/config Host github.com     HostName github.com     User git     Port 22     IdentityFile ~/.ssh/id_ed25519     TCPKeepAlive yes     TCPKeepAlive yes Host github.com.sub     HostName github.com     User git     Port 22     IdentityFile ~/.ssh/github_sub_ed25519     TCPKeepAlive yes     TCPKeepAlive yes github.comで~/.ssh/id_ed25519を使用する設定と、もう一つはgithub.com.subとして~/.ssh/github_sub_ed25519を使用する設定をしてリポジトリの.git/configのremote設定を変更します。 [remote "origin"]         url = git@github.com.sub:リモート名/リポジトリ名         fetch = +refs/head

Sequel Pro でProxyCommandでawsコマンドを利用している場合

イメージ
転職して1週間ですが、一応おすすめの環境などを設定してみたところです。 しかしながらSequel ProでDBへローカルからの接続ができません。 環境的には、インスタンスへSSMを利用して接続している感じで、そのインスタンスからはMySQLへの接続はできています。 なのでSequel Proではそのインスタンスを介してMySQLの接続をする感じなのですがうまくいきませんでした。 結論は awsコマンドが利用できないから でした。 Host forward-instance     HostName i-************     User [your.profile]     Port **     IdentityFile ~/.ssh/id_rsa     ProxyCommand sh -c "aws ssm start-session --target %h --profile [your.profile] --document-name AWS-StartSSHSession --parameters 'portNumber=%p'" なのでSequel ProではSSHの設定でMySQLの情報を記載し、フォワードするインスタンスの情報(~/.ssh/configに記載しているのでホスト名だけ)を記載しています。 すると以下の表示がされます 詳細を表示を見ると、以下の記載があるのでawsのコマンドが使えないことがわかります。 なのでProxyCommandを以下のように変更しました。 ProxyCommand sh -c "PATH=$PATH:/opt/homebrew/bin && aws ssm start-session --target %h --profile [your.profile] --document-name AWS-StartSSHSession --parameters 'portNumber=%p'" PATH=$PATH:/opt/homebrew/bin については、私はhomebrewでaws cliをインストールしているからで、awsコマンドが利用できるようにそれぞれの環境に合わせPATHを

Vscode設定

前職ではintelliJを利用していましたが転職してVSCodeを利用しているよう。 基本自動保存に慣れていたのですが、週明けにメモ的に保存していたファイルを開くと。。。 真っ白 まずは自動保存ですかね。 VSCodeのPreferences->settingsで検索して、検索窓にautoと入れると auto save の項目が出てくると思います。 こちらのサイトを参考 にしました。 私はafterDelayで別途指定したミリ秒(default 1,000ミリ秒)で保存されるように設定 1秒もいらないかと思ったので2,000ミリ秒に変更しました。 設定項目名は Auto Save Delay 真っ白になったファイルに何か文字を記載 そうするとタブの未保存のポッチが指定秒数で消えるようになりました。 あー私の入社してから1週間のメモが、、、

Vue.jsをはじめてみます⑤ 〜computed

Vue.jsをはじめて勉強中です。 前回 はVue定義のオプションでfiltersについて触った感じです。 今回はcomputedに触れていきサンプルコードと説明をもとにまた記事にしていきたいと思います。 ちなみに参考にする購入した書籍は こちら 。 computedというオプションはデータを処理して表示するなどをするときに使う。 例えば、 var items = [   {     name: '商品1',     price: 300,     quantity: 1   },   {     name: '商品2',     price: 400,     quantity: 2   } ] var vm = new Vue({   el: '#app',   data: {     items: items   },   filters: {     numberWithDelimiter: function (value) {       if (!value) {         return '0'       }       return value.toString().replace(/(\d)(?=(\d{3})+$)/g, '$1,')     }   },   computed: { // 算出プロパティ     totalPrice: function () {       return this.items.reduce(function (sum, item) {         return sum + (item.price * item.quantity)       }, 0)     },     totalPriceWithTax: function () {       // 算出プロパティに依存した算出プロパティも定義できる       return Math.floor(this.totalPrice * 1.08)     },   } }) itemsをこんな感じで定義して、computedを合計金額と税込金額を算出する関数を定義します。 表示は以下です。 <script src="http

Vue.jsをはじめてみます④ 〜filters

イメージ
Vue.jsをはじめて勉強中です。 前回 はVue定義のオプションでel/dataについて触った感じです。 今回はサンプルコードと説明をもとにまた進めていきます。 購入した書籍は こちら 。 filterというオプション これはdataオブジェクトに対して処理したい場合に記述します。 例えばdataに対して、金額表示を3桁のカンマで区切りたい時などです。 jsfiddle.netで実行しました。 (パイプで繋げて利用するところがsmartyを使っていたときの自前関数見たいな使い方だなと感じました。古くてすみません。。) <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <div id="app">   <p>表示金額: {{ price | numberWithDelimiter }}円</p> </div> var vm = new Vue({   el: '#app',   data: {     price: 1000000   },   filters: {     numberWithDelimiter: function (value) {       if (!value) {         return '0'       }       return value.toString().replace(/(\d)(?=(\d{3})+$)/g, '$1,')     }   } }) window.vm = vm dataのpriceに対して処理をする場合にパイプ(|)で繋げてフィルター名を書いてあげると、関数のパイプの左側を引数として処理するということみたいです。 正規表現の部分は数字3回の繰り返しで、マッチした数字3回分とカンマで繋げていって文字列を返すというもの。 ちなみにfiltersは連結して複数適用できる。 value | filterA | filterB データに対しての処理を今回は学びました。

Vue.jsをはじめてみます③

Vue.jsをはじめて勉強中です。 前回 はVueが定義されるところを理解しました。 今回はサンプルコードと説明をもとにまた進めていきます。 購入した書籍は こちら 。 <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <div id="app"> <p>{{message}}</p> </div> <script>   new Vue({      el: '#app',      data: {           message: 'こんにちは!'     }   }) </script> Vueを定義する際にオプションが指定できて、上のコードだとel/dataがオプション指定されています。 elプロパティは、DOM要素のオブジェクトかCSSセレクタの文字列が使える #app の要素をマウントしてその要素と子要素を置き換える DOM要素のオブジェクトの場合はこんな感じで確認できました。 el: document.getElementById('app') マウントはメソッドによるマウントもできる new Vue({...}).$mount('cssセレクタ/DOM要素オブジェクト') インスタンス生成後の任意のタイミングでマウント実行できる dataプロパティはUIの状態になりリアクティブシステムにのります。 例えば同じコードでjsfiddle.netで、jsfiddle.netのconsoleから vm.message='hello!' と入力して実行すると画面はhello!に変わります。 <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <div id="app"> <p>{{message}}</p> </div&g

Vue.jsをはじめてみます②

イメージ
Vue.jsをはじめて2日目 前回はこちら( Vue.jsをはじめてみます① ) いよいよ手を動かしていく感じです。 Vue.jsを使うには <script src="https://unpkg.com/vue@2.5.17"></script> 書籍ではバージョンを指定していますが、Vue.jsのドキュメントでは <!-- 開発バージョン、便利なコンソールの警告が含まれています --> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> となっています。どちらもCDNでライブラリ配信みたいですね。 書籍にはバージョン指定しているけど、独自に取得したファイルを用いても差し支えないという記載があるのでVueのドキュメントに記載の通りにしてみます。 こちらをscriptタグで読み込むことにより、グローバル変数のVueが定義されるようです。 <script>     console.assert(typeof Vue !== 'undefined'); </script> console.assert は検証でVueが定義されているかを確認し、定義されていたら何もしないというもののようです。 jsfiddle.netで実行したところ 真っ白で何も起きていない⇨Vueが定義されているようです。

Vue.jsをはじめてみます①

イメージ
私この度転職をするのですが、転職先がどうやらほぼ私が触ったことのないVue.jsを使っているようで、(他触れたことがないAWSのサービスとか)入社前にちょっと経験しておこうかなと思いさわり始めました。 取り急ぎ書籍を購入 購入した書籍は以下になります。   Vue.js入門 基礎から実践アプリケーション開発まで (amazonへリンク) とりあえず1章を読みましたが、多少WEBに関する知識がある方がよい本だと思いました。 1章はWEBの歴史からVue.jsに触れるまで(お決まりhello world!) 最近は環境作らなくてもお気軽にブラウザで試せるのもいいですね。 そもそもテキスト表示だけならHTMLファイルでブラウザ表示でいいですし。 https://jsfiddle.net/ 簡単にコードを実行できるこちらで進められそうです。 早速 <div id="app"></div> にVueで#appをマウントして hello world! を表示するところまで出来ました。 明日も進めていこうと思います。

今更ながらLaravelを試してみる⑦

イメージ
前回 は、公式コンテナからの構築を諦めてmac OSでsailコマンドを使えるようにしてLaravelで用意されていたdocker コンテナの利用することにして、sailのエイリアスまで作成したところです。 今回は認証を再度チャレンジ ドキュメントの認証 のところをすすめてみるだけです。 マイグレーションを実行します。 sail php artisan migrate スターターキットをインストールします。 sail composer require laravel/breeze --dev php artisan breeze:install sail npm install && sail npm run dev これでログインページなど認証関連のページが表示されるようになりました。 アカウントの登録を行うとDBのusersテーブルへの登録と共にログイン後の画面が表示されることを確認しました。 cssなどのファイルは http://0.0.0.0:5173/resources/css/app.css になっており、公式のdockerイメージphp8/mysql8で自分で構築した時は、localhost:5173になっていたので、フロントのホストの設定か何かをする必要があるのかなと思いました。

今更ながらLaravelを試してみる⑥ 〜諦めてsailでの構築へ

前回 までは、dockerのphp8の公式イメージとmysql8の公式イメージでLaravelの認証を実装しようとしていましたが、CSS・JSが参照できていないらしくレイアウト崩れが起き、ちょっとわからなかったので、ローカルにLaravelのSailを利用してdockerを始めてみることにしまた。。 macにはcomposerをインストールしていなかったのでそこから始めました。 composerについては 公式 からインストール手順でインストールしました。 次にLaravelの ドキュメント の通り curl -s "https://laravel.build/example-app" | bash cd example-app ./vendor/bin/sail up これでアクセスの確認までできました。 sailをエイリアスにするために alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail' 開発するときはバックグラウンドで実行したいので sail up -d コンテナの停止は sail stop ここから認証を再開します。

今更ながらLaravelを試してみる⑤

イメージ
前回 は、データベースのコンテナを作成しましたがLaravel9でmigration時にエラーが出て止まったところでした。 今回はこれを解消したいと思います。 原因は私の場合は、公式のphp8のイメージでLaravelをインストールして利用していたためだと思います。おかげで色々解りました。。 phpのpdo_mysqlが有効になっていないためだったのですが、有効にするのもphp.iniでextensionを追加すればいいのかと思っていたらそうではなく(それでもいいと思うんですがファイルの命名規則とか考えると)、コマンド実行でconf.dディレクトリにiniを追加して有効にしてくれました。 docker-php-ext-install pdo_mysql こちらのコマンドでiniが追加されてpdo_mysqlが有効になるので、 php artisan migrate こちらで作成したデータベースに無事にテーブルが作成されていました。 docker-php-ext-installはphpの拡張モジュールをインストールするコマンドみたいですね。 さてちょっと続きをやっていますが、画面は表示されるんですがどうもCSS/JSが読み込まれず パスワード忘れはこんな画面になっているんですよね。。 css/jsの参照がうまくいっていないのか…。 ちょっとどはまり中です。。 一旦、sailで構築に切り替えて早く触れて学習できることをメイン考えようかな。。

今更ながらLaravelを試してみる④

最近awsのcopilotを試しているんですが、たまたまバックエンドにLaravelを使ってみたので、1年半前にLaravelに触れてみようと思ったのを思い出しまた試行錯誤をしてみたいと思い立ちました。 以前に試した時はLaravel8だったんですが、Laravel9になっているんですね。。 Laravelのインストールは同じだったので前回途中だったログイン認証あたりから始めてみようかなと思います。 Laravel9の 認証のページ を参照すると Laravelアプリケーションスターターキット をインストールしてくださいとあります。 そしてデータベースをマイグレーションした後に…とあるのでDBも準備する必要があるのかな? こちらの件の作業はローカルでdockerコンテナを使うのでphp8/mysql8で環境を準備してみたいと思います。 ※ちなみにどちらも使ったことがありません。。。特に理由はないですがせっかくなんでmysql8は新しい方をって理由くらいです。 Laravelアプリケーションスターターキットのページを見るとどうやら新規Laravelアプリケーションの作成(済)、データベースの設定(未完)、データベースマイグレーション(未完)を実行してください。ってあるのでDBコンテナから準備します。 試しに使ってみるのでDockerfileで手を加えず公式イメージをdocker runします。 M1チップなのでarm64のイメージを使います。 docker run --name {container name} -e MYSQL_ROOT_PASSWORD={root password} -d arm64v8/mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci あとはコンテナにログインしてmysqlにログイン CREATE DATABASE laravel; CREATE USER 'laravel'@'%' IDENTIFIED BY 'laravel'; GRANT ALL ON laravel.* TO 'laravel'; データベースとユーザーを作ってみました。 データベ

ターミナルの設定メモ

自分のためのターミナルの設定メモになります 転職や配置換え、またPCを買い換えたりすると意外と設定の変更って面倒なものです しかも、、、 あれ?どうやるんだっけ??? なんてもう一度調べ直したり。。。 まぁ現代はネットですぐヒットするのでいいのですが、いざ直面するとそういえばあの設定やってたは!! なんてことがあったりします と言うことで自分の設定を残そうと思ったわけであります ちなみに私の環境は MacBook Pro 2017 になります bashのTab保管時に、大文字と小文字を区別しない方が早いので(正確なファイルやディレクトリを保管したいならやらない方がいいんですがそもそも大文字小文字が関係なく重複している名前はあまりよろしくないと思っているので。。)設定は嫌いでは無いので設定をしたいです ※会社ではWindowsなんですが、使っているターミナルソフトが何もしなくても大文字・小文字を無視して保管してくれるものがあります Tab保管時に大文字・小文字を区別しないで保管する # vim ~/.inputrc こちらを追記します set completion-ignore-case on 作業のディレクトリはaliasにして簡単移動! # vim ~/.bash_profile こんな感じで追記をしておきます alias cdProjectName='cd /projectPath' GItもエイリアスを設定しておく [alias]         st = status         b  = branch GITのブランチ名を出しておく ~/.bash_profile source /usr/local/etc/bash_completion.d/git-prompt.sh source /usr/local/etc/bash_completion.d/git-completion.bash GIT_PS1_SHOWDIRTYSTATE=true export PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\0

aws copilotを試しに使う⑦ 〜サイドカーパターンでサービスを実行する

イメージ
前回 で、copilot svc deployを実行したときにサービスの起動で失敗してエラーになっていた点を解消しました。 解消したので今回はサイドカーを設定して、ロードバランサーからnginxへ流してphp8-Laravelへ流して、結果レスポンスを表示する(Laravelデフォルト画面)をやっていきたいと思います。 まずサイドカーでnginxを利用してメインコンテナに流すように設定します。 サービスのmanifestに以下を記載しました。 nginxと言うコンテナ名で、80番で待ち受け、指定イメージ(あらかじめメインコンテナに流すようにconfを配置してコンテナイメージをビルドとコミット・プッシュしたもの)でサイドカーを利用すると言う記載です。variablesは環境変数で今回は利用していないので設定しなくていいのですが今後の私の利用用途で使うことがあるので設定しています。 sidecars:   nginx:     port: 80     image: *********.dkr.ecr.ap-northeast-1.amazonaws.com/my-nginx:latest     variables:       NGINX_PORT: 80 imageではなくDockerfileを使いたいところでもあるのですがawsのドキュメントによると今後アップデートしていく予定はあるみたいですね。 それともう一つサービスのmanifestに設定するのが http.target_container 前回メインのphp8/Larabelの8000番で待ち受けしているコンテナがロードバランサーからのリクエストを受け付けていましたが、このメインのコンテナの代わりにサイドカーで立ち上げたコンテナがロードバランサーからのリクエストを受け付けるようにするための記述になります。 http:   target_container: nginx 私の場合ですとこんな感じで記載してあります。 すでにdeployしていますのでmanifestの変更は copilot svc deploy --name laravel-server --env test でアップデートされます。 デプロイを実行すると以下になります。 アクセスの確認とヘッダー情報にnginxの情報を確認

今更ながらLaravelを試してみる③

イメージ
レイアウト崩れで挫折したところから。。 ※こちらの記事は以前の2021年前半に書いて下書きだったものを公開しています。自分のメモのために公開しました。 はじめになんですが公式サイト見てたら sailコマンド なる記載がありました。 デフォルトのdocker環境を操作するコマンドとあるんで、こっち使おっかななんて考えていますが、通常通りLaravelのプロジェクト作成し他場合のレイアウトの問題も気になるので今回はここを解決しようかと思います。 まずはcss/jsがないことがわかります 前回は気づきませんでしたがこのメッセージが出ているんですね # php artisan ui vue --auth Vue scaffolding installed successfully. Please run "npm install && npm run dev" to compile your fresh scaffolding. Authentication scaffolding generated successfully. npm install && npm run dev を実行してねというので実行 # npm install && npm run dev bash: npm: command not found npmをインストールしていないんですね。。。。 npmをインストールします。 # apt-get install npm すると nodejs/npm がインストールされています。 # npm --version 5.8.0 # node --version v10.24.0 インストールされたところで先程のコマンドを再度実行してみます。 # npm install && npm run dev そうするとエラーがでます。。。 Error: You are using an unsupported version of Node. Please update to at least Node v12.14     at assertSupportedNodeVersion (/var/www/html/laravel/node_modules/laravel-mix/sr

aws copilotを試しに使う⑦ 〜svc実行で起きたエラー

イメージ
前回 は、Laravel/nginxでcopilotを実行するためにローカルでの動作確認を行い、いざcopilotでサービスのデプロイをまずはphp8/Laravelのサービスだけ単体で行ったのですが、エラーが発生してやめたところでした。 今回はエラーを確認していきたいと思います。 まずcopilot svc deployを実行すると以下のような画面で失敗し続けて、おそらく10回失敗するとスタックがロールバックしてcleanupされる挙動になるかと思います。 前回にも載せましたがコマンドを実行したターミナルで表示されていたのは以下になります。 10回失敗した後に以下のエラー出力もありました。 Cloudformationにも同じエラーがでています。 CREATE_FAILED Resource handler returned message: "Error occurred during operation 'ECS Deployment Circuit Breaker was triggered'." (RequestToken: Token, HandlerErrorCode: GeneralServiceException) ROLLBACK_IN_PROGRESS The following resource(s) failed to create: [Service]. Rollback requested by user. ぱっと見何が原因かわからなかったんですが、何回かやっていて、おおよそコンテナが起動できないとか、サービスのmanifestでミスっていることで起きていた感じでした。 今回で言うと原因はちょっと初めからわかっていたのですが、、 私の環境はM1チップのmacbook airなので、Laravelをインストールするphpの公式イメージはarm64v8/phpのイメージを使っていたんですね、しかし実際にcopilotで起動する場合はintelのイメージじゃないとダメだ!って気付きました。 と言うことで FROM amd64/php:latest こちらに変更して再度実行しました。 ※ここですがサービスのmanifestで platform: linux/arm64にすればarm64v8/phpでも

aws copilotを試しに使う⑥ 〜サイドカーでより利用想定に近いと思われるものを試していく①

イメージ
前回 はcopilot-cliのアップデートで少しserviceのデプロイまでが変わっていたので記事にしました。 今回ですが、より実際に使うであろう構造に近いものを試してみます。 WEBサービスの場合におおよそですが、HTTPクライアントが要求を受け取り、バックエンドが処理してHTTPクライアントがレスポンスをするという構成が私の経験してきているところなのでこれを試してみます。 今回はローカルであらかじめコンテナを立ち上げて、さらにコンテナ間通信まで確認したものでcopilotでのデプロイとHTTPでのアクセスを確認するまでを目標とします。 まずはLaravel(composerで特に指定していなくインストールされたもの Laravel Framework 9.21.6)をインストールして、php artisan serveで開発サーバーをポート8000で立ち上げてたコンテナに、nginxのコンテナがユーザーからの要求を80番ポートで受け取りLaravelのコンテナに8000番に流してLaravelの初期画面を表示されるまでを確認しました。 続いてそれをAWSのcopilotでデプロイできるようにしたいと思います。 サイドカーで実行して80番ポートでリクエストを受け取り8000番で起動しているLaravelに流すというものを作成したいと思います。 ちなみにDockerfileはこんなものを用意しました。 php8/laravel FROM arm64v8/php:latest RUN cd /usr/local/src \     && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \     && php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo

長く放置していたGitHubアカウントを久々に使ったらいろいろ変わっていた。。

4年前に転職して多忙となりGitHubのアカウント放置していたら色々変わっているんですね。 メインブランチがmasterからmainに変わっていたり、メールとパスワード認証でpushしていたのが廃止になっているんですね。。 最近また使ってみようかと思いファイルをコミットしてプッシュしたらエラーが出てプッシュできない。。パーソナルアクセストークンを利用することになっていることに気づいたわけです。 2021年8月13日でパスワードによる認証は終わっているということで、どれだけ使っていなかったの?私は…。 ということでまたpublic/private含めて色々利用していきたいのでリポジトリにプッシュできるようにしたい! ということで 右上のアイコンから settings→Developer settings→Personal access tokens と進んでいき Generate new token で新しいトークンを発行して % git push origin branch Username for 'https://github.com': myUserName Password for 'https://myUserName@github.com': *************** そしてパスワードのところで発行されたトークンを入力したらプッシュできました。 ついでに、リポジトリの公開設定もアラートのようになっていたので公開と非公開をリポジトリごとに設定。 ※もともと非公開なものはなかったのですが一応古くて恥ずかしいので非公開に。 デフォルトブランチをmasterからmainにリネームして、プルリクエストのマージでブランチを削除するように変更などちょこちょこ設定を変えてみました。 さてまだまだやることはたくさんあるけど、少しは進めていけそうになったかな?

aws copilotを試しに使う⑥ 〜実行するcopilot コマンドがアップデートされて増えた。

いよいよcopilot で環境を作成へ copilot-cliの実行ユーザーに対するポリシーで四苦八苦していた今までですが、既存のポリシーアタッチで進めることを決意して進めております。 ただしcopilot-cliをアップデートする前と少し変更があったようなので記載します。 私は先にcopilot app initを実行します。 おすすめのアクションとして copilot init がいいと勧められるんですが、どうもminimumの環境がデプロイされてからmanifest.ymlを更新して再デプロイという動作がちょっと苦手でそうしています。 ですので copilot app init copilot env init copilot svc init copilot svc deploy --env test といった手順を踏んでデプロイしていたんです。 これで正常にECSでサービスを開始して利用できたのですが、copilot-cliをアップデートしたらどうも同じ手順ではサービスのデプロイができなくなりました。 落雷で停電したためエラーのコピペはできていないのですが、、 エラーはサービスをテスト環境にデプロイしようとしたら失敗しましたというようなもので、何がないから失敗したといった詳細なエラーはコンソールの出力を見ても、CloudFormationのスタック詳細を見てもわかりませんでした。 そこで一度 copilot app delete で全てを削除して、 copilot init で実行してみると成功! そこでサービスを開始するために不足時していた実行コマンドに気づきました。 copilot app init copilot env init copilot env deploy --name test copilot svc init copilot svc deploy --env test copilot env deploy が追加されていたんですね。 copilot-cli v1.20.0 にアップデートされて、環境ごとのmanifestが用意されて、環境の変更もcopilot env deleteをしなくても更新が可能になったことから環境のデプロイが用意されたのだと思います。 ネットワーク構成などあらかじめ決まっていたら、

aws copilotを試しに使う⑤ 〜エラーの確認をして思ったこと

前回 と 前々回 でcopilotの実行awsユーザーの権限が最適なものを模索していて断念ということになったんですが、目的はクリアできませんでしたがわかったことがいくつかあって、今回はそれを記載したいと思います。 copilot実行時のエラーの確認について コンソールから実行時に権限不足とかで % copilot app init Your workspace is registered to application demo. ✘ Failed to create the infrastructure to manage services under application demo. ✘ wait until stack demo-infrastructure-roles create is complete: ResourceNotReady: failed waiting for successful resource state API: iam:GetRole User: arn:aws:iam::**********:user/copilot-user is not authorized to perform: iam:GetRole on resource: role demo-adminrole because no identity-based policy allows the iam:GetRole action こんな感じ出るんで iam:GetRole が必要なんだなと追加していけるんですがコンソールに明確に出ない場合もあり(リソースを削除できなかったというようなだけのエラー)、その場合はCloudFormationよりスタックの詳細で何のイベントで失敗しているのかを調べて、削除に必要な権限などを付与していました。 copilot cli のアップデートでの変更 私がcopilotに触れはじめたのが4月頃なのですが、その当時はcopilot initを実行すると以下ができました。 copilot ディレクトリ copilot/.workspace copilot/demo ディレクトリ(アプリケーション名のディレクトリ) copilot/demo/manifest.yaml という構成だったのですが

aws copilotを試しに使う④

今回からタイトルのM1を削除しています。 手元のintelがなくなったので基本M1チップでの作業です。 (ローカルで作成したdockerイメージがもしかすると何かあるかも) さて、今回は copilot env init/delete を実行していき不足の権限をつけてみます。 今回copilotで作成する環境は Load Balanced Web Service になります。 ではまずは前回実行できるようにした copilot app init をしていきます。 ちなみに copilot app init を実行するとcopilotディレクトリが実行環境に作成されますので管理するのに都合のいい場所で実行するのがいいと思います。 copilot app init を実行すると以下のようになります。 userName demo % copilot app init Application name: demo ✔ Created the infrastructure to manage services under application demo. ✔ The directory copilot will hold service manifests for application demo. Recommended follow-up actions: - Run `copilot init` to add a new service to your application. 順調!順調! applicationができたところで環境の作成をするためにcopilot env initを実行していきます。 そうするとやはり不足した権限が出てきました。 iam:getRolePolicy ecs:DescribeClusters ecs:DeleteCluster ec2:CreateInternetGateway elasticloadbalancing:* servicediscovery:CreatePrivateDnsNamespace servicediscovery:TagResource servicediscovery:DeleteNamespace cloudformation:DescribeStackSet cloudf

aws copilotをM1で使う③

前回は、xcode 13が必要ということでインストールしてるところで、intelでも試してみたというところでした。xcode 13をインストールしてcopilot cliを利用できるようになりました。 おそらくここからはM1チップ固有はないと思いますので、copilotの試した内容で記載してきます。 前回と前々回は以下です。 aws copilotをM1で使う① aws copilotをM1で使う② intelでもやってみた では続きを進めていきます。 まずは、copilot cli実行して環境を作成するためのユーザーをIAMで作成しました。 AWSのドキュメントを見るとカスタムポリシーを作成するときは最小から始めて、必要なものを付与していくってあったので、一回すでにある既存のポリシーをアタッチして実行していたのですが、何もないところから必要なものだけだったらどうなるのか気になり、実行と付与を繰り返し最終的には、copilot app init を実行し copilot app deleteを実行できるところまで出来ました。 結果はこちらになります。 {     "Version": "2012-10-17",     "Statement": [         {             "Sid": "Copilot init1",             "Effect": "Allow",             "Action": [                 "iam:GetRole",                 "iam:CreateRole",                 "iam:DeleteRole",                 "iam:PutRolePolicy",                 "iam:DeleteRolePolicy",                 "iam:PassRole",                 &q

mac osXでUSキーボードで日本語入力ソースの切り替えストレスを改善

イメージ
M1 MacBook Air にてkarabiner Elementsを使い日本語入力を楽にしたいと思います。 一番わかりやすく説明してくれていたサイトは こちら 。 こちらを参考にして私もこちらの Karabiner-Elements のサイトからダウンロード ダウンロードしたファイルをダブルクリックしてインストールします。 アプリケーションに追加されたKarabiner-Elementsを起動します。 セキュリティーで入力監視を許可しなくてはならないので許可します。 ※karabiner_grabber/karabiner_observer にチェックを入れて許可します。 次にKarabiner-Elements Preferences を開き、 Complex Modifications の add rule を選択します。 import more rules from the internet(open a web browser) を選択するとブラウザーが開きます。 International (Language Specific) を選択すると For Japanese(日本語環境向けの設定) (rev6)  というのがあるのでimportします。(rev6とかは現時点ではということになるかと思います。) コマンドキーを単体で押したときに、英数・かなキーを送信する。(左コマンドキーは英数、右コマンドキーはかな) (rev 3) これがやりたい設定ですね。インポートするとKarabiner Elementsに戻りますので、先ほどの設定をEnableで有効にすると。 こんな感じで設定が増えますので、左commandと右commandを押してみてください。 それぞれで入力ソースが割り当てられていると思います。 以前に外付けキーボードでやったことあったんですけどね。 忘れちゃいまして、参考サイトを見ながら設定してまた忘れた時用にメモとして自分の記事も残させていただきました!

aws-cli でconfigureのprofileを追加したりする

仕事でaws-cliを利用するときにプロジェクトやサービスごとにアカウント情報がもちろん違うので切り替えたいのですが、今までそんなにプロジェクトを跨いで対応したことがなく、profileの追加(これはやったことある)、削除や切り替えがやったことがないのでメモを残すことにします。 追加 aws configure --profile [名前]   AWS Access Key ID [None]:****** AWS Secret Access Key [None]: ******** Default region name [None]: ******* Default output format [None]: ******    *****をIAMで作成したユーザーの認証情報とリージョンなどを入力すれば新規作成されています。 vim ~/.aws/configure vim ~/.aws/credentials   などで確認する。   削除 これに関しては vim ~/.aws/configure vim ~/.aws/credentials で開いて該当部分を削除するしかなさそう。。   変更 aws configure --profile [名前] これですでに入力された値が一部マスクされた状態で表示されています。 変更する場合は新しい情報を入力します。(変更しない場合はenterで進める。)   切り替え さて一番やりたかったことですが、複数のプロジェクトにまたがって作業をしていると、アカウント情報も複数設定されていて誤って実行してしまう可能性もあります。   ①defaultは削除する ②export AWS_PROFILE=[名前] で切り替える defaultを削除するのは誤って違うアカウントで実行しないため。 ※実際に誤ってcopilotを実行してしまった。。

aws copilotをM1で使う② intelでもやってみた

前回のxcode12が古いとhomebrew経由でcopilotがインストールできなかった件 前回は こちら 本日の実行メモ 前回のxcode12が古いとhomebrew経由でcopilotがインストールできなかったですが、本日別のPC(macbook pro/intel)でインストール作業をしたら普通にできました。 違いM1かintelかのプロセッサーの違いかなと思っています。 なので今日はintelで作業しています。 先日はcopilot init でtest環境作成がエラーでできなかったんですが、一旦cliユーザーにアクセス権を結構持たせたらできたのでここから絞り込んでミニマム見つけていこうと思います。 ssm:PutParameter action cloudformation:DescribeStacks action ここら辺が必要だと表示されていたので関連するアクセス権をフルで追加して再びcopilot initを実行すると最後まで完了し、表示された。 https://aws.amazon.com/jp/blogs/news/introducing-aws-copilot/  ここに記載しているとおりに、nginxのDockerfileを配置して、index.htmlを置いたんですが、 index.htmlは表示されず、nginxのデフォルトが表示されていました。 おそらくDockerfileはdockerのフォルダに配置して、index.htmlはその上の階層にしてしまったのでかな。 前進したので、M1含めて色々試していきたいと思います。

aws copilotをM1で使う①

業務で使うことになったaws copilot 一旦自分のmacbook air(M1)で試してみることに。 まずcopilot-cliをインストールする。 AWSのドキュメント https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/AWS_Copilot.html こちらに書いてある通りで https://github.com/aws/copilot-cli 私はbrewでインストールしようとしたんですがそもそもbrewがインストールされていない。 ということでこちらからコマンドをコピペして実行します。 https://brew.sh/index_ja 実行が終わって brew を実行するがコマンドがないと言われてしまいます。 インストール時のメッセージを辿っていくと警告が出ています。 /opt/homebrew/bin にパスが通っていないということです。 echo $SHELL  でシェルの種類を確認すると zsh とのことなのでホームディレクトリに.zshrc を作成します。 typeset -U path PATH path=(      /opt/homebrew/bin(N-/)      /opt/homebrew/sbin(N-/)      /usr/bin      /usr/sbin      /bin      /sbin      /usr/local/bin(N-/)      /usr/local/sbin(N-/)      /Library/Apple/usr/bin ) 優先して通す順で記載するようです。 /opt/homebrew/bin だけ$PATHに追記するような記載で.zshrcに記載したんですが、rmも使えなくなり焦りました。 これでbrewでインストールできるようになりました。 brew install aws/tap/copilot-cli インストールしてみると以下のエラーが、、、 Error: Your Xcode (12.5.1) is too outdated. Please update to Xcode 13.3 (or delete it). Xcode can be updated fr