2021年4月30日金曜日

waves ESP32 ESPDuino-32 を使ってみたメモ

「 waves ESP32 ESPDuino-32 (ESP-WROOM-32) 技適取得品」をAMAZON.co.jpで買いました。1280円でした(2020年8月)。ESP32搭載でこの値段なので、お買い得だと思います。

見た目

ちょっとガタガタです。挿しにくいというか、挿してもスカスカなところがあります。通電は今のところ問題ありません。ピン番号は場所によってはかなり読みにくいです。


準備

使い方は一般的なesp32と同じです。違うのは下記のマイコンモードのやり方くらいでしょうか。

esp32のデバイスのボードをボードマネージャーからダウンロードします。

https://trac.switch-science.com/wiki/esp32_setup

書き込み

マイコンモードにするためにIO0とGNDをショートさせている状態


esp32をマイコンモードにして書き込みます。
マイコンモードにするには、『IO0とGNDをショートさせて、USB指し口のすぐ隣にあるBOOTボタンを押します』。
その後、ArduinoのIDEからアップロードします。

「ボタンは押したまま」と書いてある説明もありましたが、

  • BOOTボタンを押した後、離しても大丈夫でした。
    • 押して離してから1分後でもアップロードできました。

・・・ということで慌てなくても大丈夫です。


実行

ショートさせていたピンを外してから、BOOTボタンを押すと、実行します。

押さないと何も起こりませんので注意です。

Ubuntu20.04 キーボード英語配列に変更する

環境: ubuntu20.04,  mozc, Fictx

(言語表示は英語)

いろいろハマったのでメモ。Configure Current Input Methodの方が効くようです。

Region & Language

Region & Language でInput SourceをEnglish(US)に。

(再起動必要?Mozcの設定に上書きされている模様で、変更が効かない)

Configure Current Input Method

メニューバーにあるキーボードまたはMOZCアイコンを右クリック、Configure Current Input Methodを出す。Fictx Congif Toolが起動する。

Input MethodでMozc -> キーボードアイコン-> Default keyboard layout :JapanaseからEnglish(US)に変更。English(US)は選択肢の一番上にあります。

半角全角切替はCrtl+Spaceでやる。

表記はJapaneseのままになっている。

(再起動なし)



2021年4月28日水曜日

AWS ConfigとTrusted Advisorの比較

 ややこしいので自分なりにまとめ。

AWS Configは、事前に分かっている設定項目に対して「設定している/いない」をウォッチしていて、「変更されていないこと」をチェックする。

Trusted Advisorは、サービスの使い方/設定に対して「AWS Well-Architected Frameworkに準じているか」を確認して、NGポイントを教えてくれる。状態/状況を見ている。

両者で同じ確認もできる。例えば、セキュリティグループや、S3のパブリック・アクセス、S3バージョニングなど。その場合の違いは、Configだと変更が起こったときに即時で通知する仕組みがかんたんに作れる(EventBridgeなど)。Trusted AdvisorではRefreshしてから取得、など手数が増える(が設定は可能)。

料金について

Configは使った分だけだが、スキャン項目数で課金されるので、思わぬ課金になり得るので注意。

TrustedAdvisorは有料サポートに入らないと使える機能が少ない(最安で月29ドル)。


AWS Config

マネージドルールは186ある(2021/05) 一覧

以下は基本的な項目の抜粋。
  • encrypted-volumes 
    • EBSボリュームが暗号化されているか
  • required-tags
    • tagが設定されているか
  • s3-account-level-public-access-blocks
    • アカウントレベルでS3のパブリック・アクセスがブロックされているか
  • approved-amis-by-id 
    • 使用しているAMIは指定したものか
  • ec2-instance-no-public-ip
    • EC2インスタンスがパブリックIPを持っていないか
  • ec2-instance-managed-by-systems-manager 
    • EC2インスタンスがSSMで管理されているか
  • access-keys-rotated 
    • アクセスキーが設定日数以内にローテーションしているか
  • rds-snapshots-public-prohibited 
    • RDSのパブリックスナップショットがないか
  • rds-snapshot-encrypted 
    • RDSスナップショットは暗号化されているか
  • s3-bucket-server-side-encryption-enabled 
    • S3バケットがSSE暗号化されているか
  • s3-bucket-public-read-prohibited 
    • S3バケットがパブリックREADされないか
  • s3-bucket-public-write-prohibited 
    • S3バケットがパブリックWRITEされないか
  • vpc-flow-logs-enabled 
    • VPCフローログが有効か
  • vpc-default-security-group-closed 
    • VPCの0.0.0.0が閉じられているか

2020年7月に28個も増えたらしい。

Trusted Advisor

以下は基本的な項目。
  • (コストの最適化)
    • 使用率の低いEC2,EBS, Redshift
    • アイドル状態のRDS, LB
    • 各種リザーブド購入の最適化
    • 関連付けられていない Elastic IP アドレス
  • (セキュリティ)
    • セキュリティグループが無制限アクセスでないか(無料)、RDS、LBも
    • ルートアカウントのMFA(無料)
    • Amazon S3 バケットのアクセス許可(無料)
    • 公開されているアクセスキーがないか
    • EBS, RDS パブリックスナップショットがないか(無料)
  • (耐障害性)
    • EBSのスナップショットの確認
    • RDSのバックアップ、マルチAZか
    • ELB Connection Draining, Cross zone LBか
    • S3バケットバージョニングしているか、バケットのログがあるか
    • VPN, AWS Direct Connect 接続の冗長性
  • (パフォーマンス)
    • 高い使用率の Amazon EC2 インスタンス
    • EC2 セキュリティグループのルールが多すぎないか
    • Amazon CloudFront でS3のデータ転送を高速化できないか
  • (サービスの制限)
    • 制限の80%を超えていないかを確認する。反映に最大24hかかかる

===
以下はおまけです。

Amazon Security Hub

Security standardというベストプラクティスや経験則をまとめたもの(?)がある。

CIS AWS Foundations

Center for Internet Securityのセキュリティベンチマークをクリアしたもの。
https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-cis-controls.html

妥協してもよいもの。主にAWS Configコスト面で。
https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-cis-to-disable.html

Payment Card Industry Data Security Standard (PCI DSS)

PCIセキュリティ標準に適合するためのAWS設定。
https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-pci-controls.html

AWS Foundational Security Best Practices

https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-fsbp-controls.html

2021年4月27日火曜日

API Gatewayでcurlしたときのエラー

AWS API Gatewayでの単純なエラーのメモ

あくまで自分が出会ったエラーの理由ですので、その点はご了承ください。

その1

エラー: curl: (3) URL using bad/illegal format or missing URL

原因:

そもそもURLでなくてARNを使っていた。


その2

エラー:{"message":"Forbidden"}

原因:

/Prod/が抜けていた。

つまり

正しい:

 -X POST https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod/publish

間違い:

 -X POST https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/publish

とやっていた。

他のサイトも調べましたが、こちらに紹介されているような複雑な?原因ではありませんでした

https://stackoverflow.com/questions/40988051/getting-message-forbidden-reply-from-aws-api-gateway

https://aws.amazon.com/jp/premiumsupport/knowledge-center/api-gateway-troubleshoot-403-forbidden/

API Gatewayのエンドポイントはここに書いてある


setting の Default endpointのところです。





2021年4月25日日曜日

AWS CLIでS3バケットを作るときのリージョン設定エラー

東京リージョンでbucket_nameというS3バケットを作るときは
aws s3api create-bucket --bucket bucket_name --region ap-northeast-1 --create-bucket-configuration LocationConstraint=ap-northeast-1
とします。 --create-bucket-configuration を指定しないと、こういうエラーが出ます。
An error occurred (IllegalLocationConstraintException) when calling the CreateBucket operation: The unspecified location constraint is incompatible for the region specific endpoint this request was sent to.
https://docs.aws.amazon.com/cli/latest/reference/s3api/create-bucket.html に書いてあるとおり、N.Virginia(us-east-1)以外のリージョンの場合は指定しないといけません。
--create-bucket-configuration (structure)

The configuration information for the bucket.

LocationConstraint -> (string)

Specifies the Region where the bucket will be created. If you don't specify a Region, the bucket is created in the US East (N. Virginia) Region (us-east-1).
実は --region ap-northeast-1 の方はCLIのconfigで指定してある場合は省略しても良いですね。

2021年4月22日木曜日

AfterShokz OpenComm(アフターショックス オープンコム)を買った

 アフターショックス オープンコムの感想です。気に入ってます。



色はライトグレーにしました。他の色はボタンがオレンジなのが嫌だったので。・・・と思ったら2021春の新作のブラックはボタンも黒いみたいです。


個人の感想

  • 用途は主にリモートワークの会議用。
    • と言いながら音楽聞くときもかなり使っています。
  • 骨伝導、普通に聞こえます。
  • 装着時の音漏れは気にならないと言われます。(ゼロではないです)
    • 外して机に置いたりするとまぁまぁ聞こえます。
  • 音量は小さめでも(会議であれば)十分聞こえます。
  • 装着感: 耳穴や耳を覆わないので、イヤホンやヘッドホンよりも快適です。ただし、つけっぱなしは疲れるので適宜外したりはしています。ちょっと汗と脂?で痒くなったりもします。
  • 音量を上げたり、重低音のある音楽を聞くとビリビリしてこそばゆい。
  • バッテリーは丸1日は大丈夫。
    • 充電時間は30分くらい?
    • 電池の残量が少なくなると警告音声が聞こえます。PCにつないで音楽を聞いている状態で、警告音声が出てから15分くらいは大丈夫のようです。
  • マイクは印象としては普通。iPhoneのイヤホンとさほど変わらないような・・・。追記。けっこういいです。通話中に聞き返される回数が減りました。家の外の雑音も拾っているようです(犬の鳴き声とか)。

自分的使い方

普通のイヤホンのように耳の穴に当てても使えます。音量が上がるので、使い分けるとけっこういい感じです。

音声は英語で使っています。そちらの方がかっこいいから。


接続できたもの

  • iPhoneSE
  • iPhone5S
  • Pixel 4a
  • Dell PC Vostro 
  • レッツノート CF-SV ←ただし、音量の調節がPC側でしかできない
古いBluetoothだと接続できないときがあるということでしたが、自分の試したものは全てできました。

使いにくいところ

  • バッテリー残量を知るには再生を停止しないといけない(※iPhone等と接続すると電池残量が表示される)
  • 電源がON/OFFなのかがボタンを押さないと分からない
  • 充電ケーブルが専用のものであること(Amazonの公式ストアでケーブルだけで売っていました。968円)
---

Amazonのレビューに対する個人の感想

Amazonのレビューは、買う前に参考にしていました。使ってみて、ポジティブな感想はおおむね同意です。ネガティブなコメントに対して自分なりに感想を書きます。

パソコン側の問題かもしれませんが、受信側(イヤホン側)の音量がやや小さく、普通のヘッドフォンやイヤホンを繋いでいるときよりも音量を上げないと聞こえにくいかもしれません。音量をMAXにすれば大丈夫なので大きな問題はありませんが。


これは確かにそうかもしれません。音は小さめと言えば小さめです。

---

頭小さめですが、何時間か使ってると耳にひっかける所がかなり痛いです。手前の付け根の部分が特に痛いです。耳の位置とか形の問題で、頭の大きさの問題ではないかも。 

長時間はさすがに痛くなると思います。個人差あると思います。1時間くらいは平気ですが、ムズムズしてきますね。

---

音質等の機能には全く問題ありませんが、定期的にペアリングが切れてしまうのが残念です。 

ペアリングが勝手に切れたことは今の所ありません。長くても2,3時間しか連続では使っていませんが。





2021年4月18日日曜日

VSCodeで、ターミナルをカレントディレクトリで開くショートカットを設定する

したいこと

  • VSCodeでターミナルを開くショートカット(Ctrl Shift @)で、記憶しているディレクトリで開いてしまうので、これをカレントディレクトリで開くようにしたい
  • ショートカットの設定で@が使えないエラーがあったので設定を探した
  • (ちなみに、1度開くと、cwdにセットされるので2回目からはC-S-@でも開けます)

keybindings.jsonに追加

{
"key": "ctrl+alt+[BracketLeft]",
"command": "workbench.action.terminal.newWithCwd",
"args": {
"cwd": "${fileDirname}"
}
}

args.cwd の部分に アクティブなファイルのフォルダ(fileDirname)を指定。

key設定で「@」 は使えなくて、代わりに[BracketLeft]と入れるとアットマークとして設定できました。(英字配置のときの場所ですね)




2021年4月17日土曜日

DMMブックスのアプリをUbuntuで起動できなかった話

DMMブックスが70%割引のとき、いろいろ買ったのですが、ブラウザだと毎回のダウンロードが面倒なので、アプリを使えないかと試しましたができませんでした。

Ubuntu 20.04

DMMアプリ6.3.0

Wine 6.0.1

結論

Ubuntu20.04+Wineの設定でDMMbookviewerは起動できませんでした。

(自分の環境だけかもしれないですが。ただし、同じ環境でKindleとKoboはWineとexeファイルで使えています)

やったこと

32bit版のファイルをインストールして、できているようなのですが、いざプログラムを起動すると「DRM機能を初期化中・・・」という表示が出てそこから進みません。




こういうときはWindowsを再起動するとよい、という別の話題があって、winebootで再起動してみたりしましたが、効果ありません。

ちなみにWineのディレクトリでexeファイルは下記にあります。(ショートカットも作成されていますが)

~/.wine/drive_c/Program Files/DMM/DMMbookviewer/DMMbookviewer.exe


エラーの番号で検索すると、DMMのQAが出てきます。

https://help.dmm.com/-/detail/=/qid=46863/

■ライセンスの確認でエラーが発生しました。(E_AP_000999) / (E_CW_000999)

下記ツールをダウンロードいただき、ライセンスの修復を行ってください。


■ライセンス修復ツール


修復ツールをダウンロードされた後に、ファイルの解凍を行ってください。

 

DMMブックスを起動している場合は、ビューアを終了させてください。

dmmbooklicrst.exeを実行します。

ライセンス修復ツールの画面で「サービス全体のライセンス情報を削除します。」が選ばれている状態で「続行」ボタンをクリックします。

修復完了のメッセージが表示されましたら「OK」ボタンで閉じます。

DMMブックスで書籍ファイルを開き、認証処理を行ってください。


・・・dmmbooklicrst.exeは実行できませんでした。ライセンスの書いてあるファイルがどれか分かればいいのだろうか、と思って探したけれど分かりませんでした。

こちらに情報がありますが、Windows機のようなので駄目そうです。

License Information ACL Repair Toolなるものをダウンロードして、 LicInfoAclTool.exe を管理者として実行。そして再起動。


結果、直った…

https://arimasou16.com/blog/2018/04/14/00251/


とりあえず

ブラウザで見ます。

AWSの認定試験に行ったら会場が開いていなくて受検できなかった話

先に結論

2021年の1月4日に大阪駅前テストセンターにAWSの認定試験(PSI)を受けに行ったら会場が閉まっていました。

申し込みはできても、年末年始はそういうエラーがあり得るので(?)気をつけましょう。


もう少し詳しく

  • 2021年の1月4日10時の受検予定で、大阪駅前テストセンターに行ったら閉まっていました
  • 申し込みを直前(1月2日)にしたからかな、と思ったらもう一人来られて受検できない状況で、聞いてみると「12月25日くらいに申し込んだ」とのこと
  • 開いていないときはココに電話、という番号(新宿のテストセンター)も繋がらない
  • 結局、そのまま帰りました
  • 予約ページを12月に見たときは、年末は12月30日まで、年始は1月2日から受検可能でした。「冬休み対応で年末年始もけっこう開いているんだな」としか思いませんでした(これがよくなかったのかも?でも、普通はそこまで疑いませんよね)

PSIに連絡


PSIから来ていた確認メールにあった連絡先examschedule@xxxx に申立て。
直後に確認メールが来ました。

We have received your message. 
Given the current volume of support requests, 
please allow 5-7 days for response to email queries.

5-7日で応答・・・。

返事がくる

結局、1/4午前に連絡して、2日後の1/6午前に返信が来ました。

平素はAWSトレーニングならびにAWS認定をご愛顧いただきありがとうございます。

大変ご迷惑をおかけまして誠に申し訳ございませんでしたが, 試験当日にて試験会場が閉館されましたため、試験再予約お願い申し上げます。深くお詫び申し上げます

下記のバウチャーをご利用の上、次回のAWS試験をお申込みください。

・・・ということで、原因も開示されていませんが次回無料で受検できるバウチャーをもらって終了しました。いまいち釈然としませんが、聞いた話では、こういうケースでは受験者が損害を受けても利用規約によって交通費等々も補償範囲外になっているそうです。

結局、この直後に緊急事態宣言が出たので3月まで持ち越したのでした(DAS受かりました)。

そもそも会場がビルごと休みなのに、PSI側のエラーで「申し込めてしまう」状況だったと思われます。ちなみに、その場に来たのは自分ともう1人の方のAWS受検予定者だけでした。(Webの情報によると、東京も同様に申し込めたのに会場が閉まっていた事例があったそうです)

教訓

年末年始に 受検できると思うな テストセンター


受検できなかった当日のテストセンターの玄関のお正月っぽい飾り

VSCode cSpellでユーザー辞書を別ファイルにする

 VSCodeでスペルチェッカーとしてcSpellを使っています。新wordの辞書登録をすると、setting.jsonに書き込まれていきます。(Userとして登録。Workspaceではなく)

そうすると、setting.jsonが肥大化してきたのでファイルを分けて保存することにしました。

辞書ファイルを作る

txtファイルを作ります。登録する単語は改行のみで書きます。

aaa
bbb
ccc
ddd
eee

という感じ。クォーテーションは不要です。これをcustomUserDictionary.txt というファイル名(任意)で保存します。

setting.jsonで設定する

setting.json側の設定は以下のようになります。

addWords: true にすると、追加の単語登録をこのファイルで行います。ちなみにアルファベット順で追加してくれます。pathはフルパスにしないとエラーになりました。(エラー表示はでないが、動かない)


"cSpell.customUserDictionaries": [
{
"name": "Custom",
"description": "My custom user dictionary",
"path": "/full/path/to/.../dict/customUserDictionary.txt",
"addWords": true
}
]

2021年4月15日木曜日

オライリーの「PythonとJavaScriptではじめるデータビジュアライゼーション」のメモ

オライリーの「PythonとJavaScriptではじめるデータビジュアライゼーション( Data Visualization with Python and JavaScript)」という本があって、発売後(2016)すぐに買ったもののなかなかコードを動かせずにいました。翻訳がいまいちでやる気が出ないというのもありましたが、自分の理解度が全体的に低かったのも原因かなと。

無理やり感ありますが、動くようになったのでメモ。この本の最終的な目的であるWEBアプリケーションの動作確認用です。なお、コードは著者のgithubにあります。

(Ubuntu20.04)

MongoDBの準備

MongoDBをインストール]して、起動する。

$ sudo systemctl start mongod

これで起動する。別のターミナルを開く必要あり。下は他のコマンド。

$ sudo systemctl status mongod

$ sudo systemctl stop mongod

$ sudo systemctl restart mongod

起動していないと動かないはずだが、stopしても動いていて不明。TODO

PyMongoをインストール

$ python -m pip install pymongo

env作成

virtual envを作成

使っているモジュールが古いので現行で最も古いPython3.5にした。condaは最近使いにくくなってpipをよく使っていますが、venvにはcondaが便利だと思っています。

$ conda create -n pyjsviz python=3.5

envを削除するときは

$ conda env remove -n pyjsviz

pyjsvizのアクティベイト、ディアクティベート

$ conda activate pyjsviz

$ conda deactivate


作者のレポジトリからcloneする

$ git clone https://github.com/Kyrand/dataviz-with-python-and-js.git

$ cd dataviz-with-python-and-js/

Dependencyをインストールする。バージョンの問題などでインストールできないものがあり、停止してしまう。

リポジトリにあるrequirement.txtをコメントアウトして、個別にインストールしたり、飛ばしたりした。個人的にはここが一番探りつつだったので、けっこう面倒でした。

$ pip install -r requirements.txt

例えば、clickがないということで、追加でインストールしたり。

$ pip install click


作者のリポジトリのREADME説明のとおりに進めていく

$ python3 run.py seed-db

でdbのdataset seedを作成する。seed_dbと書いてあるが、seed-db(ハイフン)でないと動かなかった。

$ cd nobel_viz

でディレクトリ移動、起動する。

$ python -m http.server

http://127.0.0.1:8000/

でブラウザを開くと、下のようなビジュアルが表示されて、完成です。



(eveは起動したが表示されなかった。おそらくvenvのPATHの問題が解決できなかったと思われる。)


上記で準備できたあとの2回目以降のやりかた

(開始)

$ sudo systemctl status mongod

(ターミナル2個めを開く)

$ conda activate pyjsviz

$ cd path/to/nobel_viz/

$ python -m http.server

http://127.0.0.1:8000/ をブラウザで表示。

(終了)

$ sudo systemctl stop mongod

$ conda deactivate 

2021年4月8日木曜日

Amazon Transcribeのテストをしてみた

Amazon Transcribeの練習ということで、youtubeのAWS blackbelt CodeBuildの冒頭部分で試してみました(ちょうどこの動画を見ていたので)。

数十秒切り出してmp3に保存します。 (mp3の切り出しは、Chromeのextension Chrome Audio Captureを使いました)

mp3をS3にアップロードしてからTranscribeで読み出します。チュートリアル通りで簡単。

結果、冒頭約30秒の中で書き起こしが間違っているのは

  • AWS - > 永田 ブレス
  • CodeBuild  -> コード フィールド
  • コードシリーズ -> 好投 市立

という語でした。逆空耳みたいでちょっと面白いですね。

Vocabularyを設定登録

設定ファイルの書き方がよくわからず、ちょっと嵌りました。IPAの発音記号は使わず、SoundLikeの部分をローマ字読みにします。

My_vocabulary.txtというファイルを作ってアップロードします。IPAの部分はTAB空白で飛ばします。

  • txtは LF改行で、UTF-8に
  • 空白はタブで
  • 日本語のカスタム語彙は、リストではなくテーブルで入れる。S3経由でしか読み込めない。
  • 最後に空白行があるのは問題なかった
  • pendingになってけっこう待たされてからFailになったりする
  • 使える文字を気をつけること。公式Githubに情報がある。

https://github.com/awsdocs/amazon-transcribe-developer-guide/blob/master/doc_source/japanese-character-set.txt

https://dev.classmethod.jp/articles/amazon-transcribe-japanese-custom-vocabulary/

https://docs.aws.amazon.com/ja_jp/transcribe/latest/dg/how-vocabulary.html#create-vocabulary-list


Vocabulary登録結果

語彙を登録した部分は修正することができました。連続した語の1つだけ直してみた場合は片方だけ直りました(「好投 市立」は「コード 市立」になりました。)当たり前ですが・・・。


感想

文字起こしとして使うには、まだまだ精度が足りないかもしれない、と思います。

一般名称はまぁまぁ正確ですが、固有名詞は「AWS」すら読めないことで、難しいのでしょう。さすがにAWSの日本語チームとしてもはがゆいところなのではないでしょうか。かつてGoogle日本語入力が出てきたときのような固有名詞への革命的強化が必要なのかも。しかし日本語はマイナ言語だから扱いがショボいような。Lexが日本語化されたので何か進むといいですが。今後に期待です。



2021年4月7日水曜日

CodePipelineとCloudFormationでスタックが削除できなくなるときに同名でIAMロールを作り直す

 https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-basic-walkthrough.html

このチュートリアルで、先にパイプラインを削除してしまうと、Wordpress(Cfn)スタックを削除するために必要なサービスロールも一緒に消してしまうことになるそうです。

重要

パイプラインのスタックを削除する前に、テストおよび本稼働の WordPress スタックを削除します。パイプラインのスタックには、WordPress スタックを削除するために必要なサービスロールが含まれています。先にパイプラインのスタックを削除する場合は、WordPress スタックに別のサービスロールの Amazon リソースネーム (ARN) を関連付けてから、それらを削除できます。


別のサービスロールのARNを関連付けてから、と書いてあるのですが意味が解らず。 

こちらの方が丁寧で、

5.    ロールが存在しない場合は、エラーに記載されているロールと同じ名前の新しい IAM ロールを作成します。

6.    新しい IAM ロールに、AWS CloudFormation がスタック内のリソースに対して作成、更新、または削除のオペレーションを実行するために必要なすべてのアクセス許可があることを確認します。

7.    ロールが作成されたら、スタックを再度作成、更新、または削除します。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/cloudformation-role-arn-error/ 



ということで、同じ名前でロールを作り直せばよいということでした。このエラーに出ているRole名です。


Roleのuse case はCloudFormationにして、EC2のアクセス権をFullAccsesでつけて作成。スタック削除後にロールも削除しました。


2021年4月4日日曜日

CloudFormationのチュートリアルでPHPのバージョンが古くてWordPressが起動できない

AWS CloudFormationのチュートリアルをしていてWordPressを起動してとしたらバージョンエラーになりました。チュートリアルなのに上手く行かないのは話題が古いからかもしれません。

Your server is running PHP version 5.3.29 but WordPress 5.7 requires at least 5.6.20.

と出ていました。WordPressではPHPは5.6以降でないと使えないようです。

ちなみに使ったインスタンスはus-east-1のAMIでami-60b6c60a です。


そもそも公式のアップデートは終わっているそうです。

https://aws.amazon.com/amazon-linux-ami/

Amazon Linux AMI 2018.03 Packagesの対応バージョンはこちらにあってphp-5.3.29となっています。

https://aws.amazon.com/amazon-linux-ami/2018-03-packages/

・・とこちらに書いてありました。

https://stackoverflow.com/questions/56544396/specify-version-for-yum-in-cloud-formation-template


EC2の中でPHPをアップデートする

手動でアップデートする方法です。

EC2にSSHして、確認します。

$ php -v

PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)  


こちらを参考にしてPHP5.6に上げました。

https://stackoverflow.com/questions/29206795/how-to-install-php5-6-in-amazon-linux

バージョンを確認すると、確かに上がっています。

$ php -v

PHP 5.6.40 (cli) (built: Oct 31 2019 20:35:16) 

ec2のウェブページを再読込すると、WordPressのインストール設定画面になりました。


Cfnテンプレートを編集する

元のMetadataの部分。configSetsでwordpress_installという変数から3つのコマンド群を呼んでいます。

Metadata:
AWS::CloudFormation::Init:
configSets:
wordpress_install:
- install_cfn
- install_wordpress
- configure_wordpress


これに、update_phpというコマンド群と付け足しました。stackoverflowに載っていたphp5.6に上げているコードです。https://stackoverflow.com/questions/29206795/how-to-install-php5-6-in-amazon-linux

Metadata:
AWS::CloudFormation::Init:
configSets:
wordpress_install:
- install_cfn
- install_wordpress
- configure_wordpress
- update_php
update_php:
commands:
01_Remove_OLD_Apache:
command: sudo service httpd stop && sudo yum -y erase httpd httpd-tools apr apr-util
02_Remove_OLD_PHP:
command: sudo yum -y remove php-*
03_Install_PHP56:
command: sudo yum -y install php56
04_add_php_sup:
command: sudo yum -y install php56-xml php56-xmlrpc php56-soap php56-gd
05_install_mysql:
command: sudo yum -y install php56-mysqlnd
06_start:
command: sudo service httpd start
07_restart:
command: sudo service httpd restart    

最終的には、WebserverのPropertiesのUserDataの中から呼び出されるんでしょうか。

Properties:
ImageId: !FindInMap [AWSRegionArch2AMI, !Ref 'AWS::Region', !FindInMap [AWSInstanceType2Arch, !Ref InstanceType, Arch]]
InstanceType:
Ref: InstanceType
KeyName:
Ref: KeyName
SecurityGroups:
- Ref: WebServerSecurityGroup
UserData:
Fn::Base64: !Sub |
#!/bin/bash -xe
yum update -y aws-cfn-bootstrap
/opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource WebServer --configsets wordpress_install --region ${AWS::Region}
/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource WebServer --region ${AWS::Region}

更新中に間違えたところ

yum -y の -y を入れていなかったのでyes/noが入力されずに途中で止まっていた。
止まっていても何が原因か出力できなかった。

name:
    commands:
        hoge:
            command:
        hoge2:
            commnad:

という書き方がよく分かっておらず、適当につないでしまっていた。