zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

CodePipelineを経由した場合にtaskdefinitionに含まれる環境変数のマルチバイト値がエラー判定される

【結論】

2020年12月末現在、CodePipelineを経由した場合にtaskdefinitionに含まれる環境変数のマルチバイト値がエラー判定される問題は回避できない。

AWSへの問い合わせ】

現在ecsのタスク定義ファイルを手動で作成しておりますが、以下のように環境変数に全角文字を使用したいと考えております。

"environment": [
{
"name": "HOGE_USE_FUGA",
"value": "日本語API"
}, (略)

この状態のtaskdef.jsonをartifactとした場合に、
CodePipelineでは

無効なアクション設定
Failed to validate the task definition. Check the task definition in the
"TaskDefinitionTemplateArtifact" parameter for your pipeline action
and verify the configuration details for the ECS service.

の様なエラーとなってタスク定義が登録されません。

"environment": [
{
"name": "HOGE_USE_FUGA",
"value": "hogefuga"
}, (略)

のように半角英数にした場合はPipelineでのチェックは通っているのですが、
taskdefinitionjsonでは全角文字列が利用できないのでしょうか?
(WebUIからタスク定義を作成する際にJSONを直接編集する分には通っています)

AWSからの回答抜粋】

現時点において CodeDeployToECS アクションにはタスク定義中のコンテナ定義において環境変数にマルチバイト文字を使用するとエラーとなる問題が確認されております。
問題が修正されるまでの間は環境変数にはシングルバイト文字を使用するか、または CodeDeployToECS アクション以外の方法でタスク定義を更新いただけますようお願い申し上げます。

とのこと。残念。

AppleWatch Series3 watchOSアップデート方法

【問題と対応概要】

Apple Watch Series3 で watchOS のアップデートをインストールするには空き容量が不足していると表示される(watchOS7あたりから……)場合、Apple Watch のペアリングを解除してアップデートする。今後もOSアップデートのたびにやることになると思うのでメモ

【手順メモ】

1)iPhoneの[Watch]App-[マイウォッチ]で解除したいApple Watch の[i]ボタンをタップ
2)[Apple Watch とのペアリングを解除]をタップ
(ここでApple ID のパスワードを入力して、アクティベーションロックを無効にする必要あり)
→リンゴの周りのリングが完成してペアリング開始画面が出るまで待つ(20分くらい)
3)ペアリング可能になったらiPhoneの[Watch]Appで再度ペアリングします。
この時、新しいデバイスとして設定するか、バックアップから復元するかの選択画面が出ますが、新しいデバイスとして設定する選択肢を選んでください。
4)画面の案内に従って設定を進めていくと、WatchOSを最新の状態にすることができます。この時、カード情報やアプリの設定は後で[Watch]Appから設定できるので、ひとまずOSを最新化します。
→リンゴの周りのリングが完成するまで待つ(10分くらい)
5)リングが完成したらiPhoneの[Watch]Appでカード情報やアプリ回りを再設定して完了

【WLS2+Ubuintu】WSL2上での挙動(gitとかdockerとか)がとにかく遅い

【参考】

https://www.tamaosa.com/2020/wsl2/
Windows ファイルシステム上(/mnt/c配下)で作業していたのが原因と思われた

【移動してみた】

元の作業領域:c:\git/hogehoge(/mnt/c/git/hogehoge)

pwd
/mnt/c/Git/hogehoge

# Linuxファイルシステム側に移動する
cd ~
mv /mnt/c/Git/hogehoge ./

これで激早になった。

【WSL2+Ubuintu】ターミナル開けるたびにresolv.conf書き変わっちゃうの止めたい

★2022年現在、ほとんどの環境ではデフォルトのままで問題ないはずです。以下は何らかの理由でローカルIPをnameserverとしたときに名前解決ができない場合の対応メモでした。

【問題】

wsl2のUbuntuから外に行こうとするとき、nameserverがローカルIPになってて名前解決できない環境があった。
ググると/etc/resolv.confの値を

nameserver 8.8.8.8

ってしてGoogle Public DNS使えばOK、っていうことだったのだけど、
このままだとターミナルを開くたびにresolv.confを書き変える必要があった。

【解決】

wsl.conf(下記に貼り付けます)を/etc/wsl.confとして配置したうえでPCを再起動します

/etc/wsl.conf

[automount]
enabled = true
root = /mnt/
options = ""
mountFsTab = true

[network]
generateHosts = true
generateResolvConf = false

[interop]
enabled = true
appendWindowsPath = true

その後

generateResolvConf = false

の設定によりresolv.conf(のリンク先)が生成されなくなるので、シンボリックリンク解除

sudo unlink /etc/resolv.conf

改めて/etc/resolv.confを作成して配置

sudo vi /etc/resolv.conf

→中身は「nameserver 8.8.8.8」などでよい

/etc/resolv.confが消されちゃわないように属性を変える。

sudo chattr +i /etc/resolv.conf

再起動



【参考】
https://qiita.com/rubytomato@github/items/fdfc0a76e848442f374e
https://docs.microsoft.com/en-us/windows/wsl/wsl-config

【Windows 10 May 2020 Update 】BootCamp環境でIMEが正常に動作しない

【現象】

MacBook上でBootCampによりWindows10Proを動かしているのですが、
Windows 10 バージョン 2004 (正式名称 Windows 10 May 2020 Update)
を適用してからIMEのON/OFFを[かな]/[英数]キーで切り替えられなくなった。

【解決策】

[以前のバージョンの Microsoft IME を使う] をオンにすることで解決した。

以下MSのサイトより抜粋
[スタート] を選択し、「設定」 と入力して選択するか、Enter キーを押します。
[設定] 内の検索ボックスに「IME 設定」 と入力し、日本語の IME 設定など、言語に適した IME 設定を選択します。
[全般] を選択します。
[以前のバージョンの Microsoft IME を使う] をオンにします。

【RDS】スナップショットからの戻しメモ

【概要】

DDLを伴うようなデプロイの場合にスナップショットを取って、万が一のリストアに備えます

■手順

a)スナップショット
  • メンテイン後にスナップショットを取得する
1.アプリケーションをメンテIN
2.RDSのスナップショットを取得する
	RDS -> インスタンス -> インスタンス名 -> アクション -> スナップショットの取得
3.デプロイ/テスト
4.成功したらメンテOUT

上記のデプロイに失敗した場合に以下の手順で戻す

b)リストア

★メンテは継続中のイメージ

1.現在のRDSインスタンスの識別子を変更する(アプリケーションからのDB接続ができなくなる)
	RDS -> インスタンス -> インスタンス名 -> 変更 -> 設定 - [DBインスタンス識別子」を変更
	例)インスタンス名 → インスタンス名-yyyymmdd

2.スナップショットから復元する。復元時に元のインスタンスの識別子を指定する
	RDS -> スナップショット -> (直前に保存したスナップショットを選択) -> アクション -> スナップショットの復元

[設定]
	DBインスタンス識別子:インスタンス名
	Virtual Private Cloud (VPC):事前にメモしとく
	DBインスタンスサイズ:事前にメモしとく

3.インスタンスが起動する
    インスタンスのパラメータグループとセキュリティグループを変更する
	VPC セキュリティグループ:事前にメモしとく
	パラメータグループ:事前にメモしとく

4.復元したRDSを再起動する
5.メンテOUT

EFSをFargateからマウントする(Terraformによる記述)際のメモ

【参照】
https://dev.classmethod.jp/articles/efs-fargate/
https://beyondjapan.com/blog/2020/04/fargate-supported-efs/

【ハマった点】
terraform apply したら以下のエラー。

Error: Unsupported block type
  on aws_fargate.tf line xx, in resource "aws_ecs_task_definition" "example":
  xx:     efs_volume_configuration {

一日ハマってたけど

provider "aws" {
  version = "2.20.0"
  region = "ap-northeast-1"
}

これが問題だった。
terraform-provider-awsの2.64以降で動作する。
それ以前にはバグがあり上記が動作しない
https://github.com/terraform-providers/terraform-provider-aws/tree/v2.64.0

providerには環境構築中はできるだけ最新のものを使ったほうがよさそうだ。