cdk deployでサービスリンクロールのエラーが発生したとき

cdk deployを実行した際に、サービスリンクロールのエラーが発生しました。

Resource handler returned message: “Invalid request provided: CreateCluster Invalid Request: Unable to assume the service linked role.”。

このエラーは、AWS ECSクラスターの作成時にサービスリンクロールを引き受けることができなかったことが原因です。
具体的には、サービスリンクロール (Service-Linked Role) が存在しないため、クラスターの作成に失敗しています。

Amazon ECS のサービスリンクロールの使用 – Amazon Elastic Container Serviceによると、

ほとんどの場合、サービスにリンクされたロールを手動で作成する必要はありません。AWS Management Console、AWS CLI、または AWS API でクラスターを作成したり、サービスを作成または更新したりすると、Amazon ECS によってサービスにリンクされたロールが自動的に作成されます。

とあるように、通常はサービスリンクロールは自動的に作成されます。

しかし、今回のように初回のcdk deploy時にエラーが発生する場合があります。
これは、おそらくサービスリンクロールの作成に時間がかかるためです。

この場合、以下の手順で対処できます。

  1. エラーが発生したら、一度デプロイを中止します。
  2. 数分待ってから、再度cdk deployを実行します。

試しにもう一度cdk deployを実行すると、今度は成功しました。

初回のデプロイ時にのみエラーが発生することがあるため、この現象に遭遇した場合は、少し待ってから再度デプロイを試みると良いでしょう。

この方法でエラーを回避できることを確認しましたので、同じ問題に直面した場合の参考にしてください。

Play ConsoleでAndroidアプリを非公開にできないとき

Play Consoleのアプリの詳細設定画面で、アプリの公開状況を「非公開」に変更できない問題が発生しました。

アプリの公開状況を「非公開」に変更するには、Play Console ヘルプの「アプリを非公開にする」に記載されている条件を満たす必要があります。

  • 最新のデベロッパー販売/配布契約に同意していること。
  • 対応が必要なエラー(コンテンツのレーティング質問票に回答していない、アプリのターゲットユーザーとコンテンツに関する詳細情報を提供していない、など)がアプリにないこと。
  • 非公開にするアプリで管理対象の公開が有効になっていないこと。

今回は、管理対象の公開が有効になっていたため、「非公開」に変更できませんでした。

以下の手順で管理対象の公開をオフにすることで、アプリを非公開に変更できるようになります。

  1. 「公開の概要」の「管理対象の公開をオフにする」をクリックします。
  2. 「管理対象の公開:オフ」を選択し、「保存」をクリックします。

これで、詳細設定画面でアプリの公開状況を「非公開」に変更できるようになります。

macOSにaws_completerを導入してAWS CLIのコマンド補完を有効にする

macOSにaws_completerを導入し、AWS CLIのコマンド補完を有効にする手順を紹介します。

手順

(1) AWS CLIのインストール

まず、Homebrewを使用してAWS CLIをインストールします。

% brew install awscli

(2) aws_completerのパスを確認する

まず、aws_completerのパスを確認します。

% which aws_completer
/opt/homebrew/bin/aws_completer

(3) シェルを識別する

現在使用しているシェルを確認します。

% echo $SHELL
/bin/zsh

(4) コマンド補完を有効にする

次に、コマンド補完を有効にするために、~/.zshrcファイルに以下の設定を追加します。

autoload bashcompinit && bashcompinit
autoload -Uz compinit && compinit
complete -C '/opt/homebrew/bin/aws_completer' aws

(5) 変更を反映する

設定を反映するために、プロファイルを現在のセッションに再ロードします。

% source ~/.zshrc

(6) コマンド補完の確認する

最後に、AWS CLIのコマンド補完が有効になっていることを確認します。

% aws s<TAB>
s3                              sesv2
s3api                           shield
s3control                       signer

参考

MySQL 8.4ではmysql_native_password認証プラグインが無効になった

最近、DockerでMySQLが起動しなくなる問題が発生しました。
以下のエラーメッセージが表示されました。

[ERROR] [MY-000067] [Server] unknown variable 'default-authentication-plugin=mysql_native_password'.

このエラーは、efault-authentication-plugin=mysql_native_passwordという変数が不明であるために、MySQLサーバが起動に失敗していることを示しています。

原因は、DockerのMySQLバージョンがlatestになっていたため、自動的にMySQL 8.4に更新されたことです。

MySQL 8.4の変更点

MySQL 8.4では mysql_native_password 認証プラグインがデフォルトで無効になりました。

この変更により、古い認証方式を利用している場合には、MySQLサーバの起動に失敗する可能性があります。

解決策

MySQL 8.4では mysql_native_password 認証プラグインがデフォルトで無効になりましたが、削除されたわけではありません。

mysql_native_passwordを引き続き使用するためには、MySQLの設定ファイルに以下の設定を追加する必要があります。

[mysqld]
default_authentication_plugin=mysql_native_password

または、MySQLサーバを起動する際に以下のオプションを指定します。

--default-authentication-plugin=mysql_native_password

推奨される移行方法

長期的には、mysql_native_passwordから caching_sha2_password への移行が推奨されます。

caching_sha2_passwordはセキュリティが強化されており、MySQLの最新バージョンでデフォルトの認証プラグインとなっています。