Rubyと筋肉とギターとわたし

筋トレが仕事です

【Ubuntu】apt upgradeでdpkg : breaks: libapt-pkg5.0 (< 1.7~b)が発生したときの対処記録

原因の推察

ubuntu 18.04でnodeのlatestが動かせず、ubuntu 20.04LTSベースのLinux Mint 20 Ulyanaにアップグレードしたのが原因だと思われる…。

nodeがうごかないでもがき苦しんでたTLが以下。

エラー内容

% sudo apt upgrade 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 dpkg : 破壊: libapt-pkg5.0 (< 1.7~b) しかし、1.6.14 はインストールされようとしています
E: 壊れたパッケージ

試したこと1

superuser.com

質問者と同じく上手くいかなかった

試したこと2

qiita.com

ほぼ同じエラー内容。ただupgrade listを確認すると…

% apt list --upgradable
一覧表示... 完了
brave-browser/stable 1.44.112 amd64 [1.44.105 からアップグレード可]
firefox-locale-en/tricia 105.0.3+linuxmint1+tricia amd64 [105.0.1+linuxmint1+tricia からアップグレード可]
firefox-locale-ja/tricia 105.0.3+linuxmint1+tricia amd64 [105.0.1+linuxmint1+tricia からアップグレード可]
firefox/tricia 105.0.3+linuxmint1+tricia amd64 [105.0.1+linuxmint1+tricia からアップグレード可]
linux-generic-hwe-18.04/bionic-updates,bionic-security 5.4.0.128.144~18.04.107 amd64 [5.4.0.126.142~18.04.106 からアップグレード可]
linux-headers-generic-hwe-18.04/bionic-updates,bionic-security 5.4.0.128.144~18.04.107 amd64 [5.4.0.126.142~18.04.106 からアップグレード可]
linux-image-generic-hwe-18.04/bionic-updates,bionic-security 5.4.0.128.144~18.04.107 amd64 [5.4.0.126.142~18.04.106 からアップグレード可]
ubuntu-advantage-tools/bionic-updates 27.11.2~18.04.1 amd64 [27.10.1~20.04.1 からアップグレード可]

アップグレード待ちが結構あるんですよね…

とりあえず、記事と同じようにubuntu-advantage-toolsだけ消してみる。

% sudo apt remove ubuntu-advantage-tools
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  distro-info python3-debconf python3-distro-info python3-distupgrade python3-update-manager ubuntu-release-upgrader-core
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
  ttf-mscorefonts-installer ubuntu-advantage-tools update-manager-core update-notifier-common
アップグレード: 0 個、新規インストール: 0 個、削除: 4 個、保留: 8 個。
この操作後に 2,199 kB のディスク容量が解放されます。
続行しますか? [Y/n] Y
(データベースを読み込んでいます ... 現在 562108 個のファイルとディレクトリがインストールされています。)
ttf-mscorefonts-installer (3.7ubuntu6) を削除しています ...
Removing the downloaded fonts...
update-notifier-common (3.192.30.11) を削除しています ...
update-manager-core (1:20.04.10.10) を削除しています ...
dpkg: 警告: update-manager-core の削除中、ディレクトリ '/var/lib/update-manager' が空でないため削除できませんでした
ubuntu-advantage-tools (27.10.1~20.04.1) を削除しています ...
man-db (2.9.1-1) のトリガを処理しています ...

~ 
% sudo apt autoremove
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
  distro-info python3-debconf python3-distro-info python3-distupgrade python3-update-manager ubuntu-release-upgrader-core
アップグレード: 0 個、新規インストール: 0 個、削除: 6 個、保留: 8 個。
この操作後に 1,378 kB のディスク容量が解放されます。
続行しますか? [Y/n] Y
(データベースを読み込んでいます ... 現在 561857 個のファイルとディレクトリがインストールされています。)
distro-info (0.23ubuntu1) を削除しています ...
python3-debconf (1.5.73) を削除しています ...
ubuntu-release-upgrader-core (1:20.04.39) を削除しています ...
python3-distupgrade (1:20.04.39) を削除しています ...
python3-update-manager (1:20.04.10.10) を削除しています ...
python3-distro-info (0.23ubuntu1) を削除しています ...
man-db (2.9.1-1) のトリガを処理しています ...

apt remove時になんか警告出てるが…とりあえず無視したまへ。

満を持してupgrade

% sudo apt upgrade
.
.
.
なんかめっちゃアプグレされてる
.
.
.

成功!!!!!!!!!

最後に

問題なく apt updateも成功しました。

やっぱり、時代はMacよりもLinuxですね。

【Ubuntu】heroku cliでGPGエラー

どうもてぃ。

今回のエラーはいつも出るのでさすがに記事にしてあとで見返そうと思い書くことにしました。

毎回調べるのに疲れた…。

エラー内容

% sudo apt update

ヒット:1 http://ubuntutym.u-toyama.ac.jp/ubuntu bionic InRelease
ヒット:2 http://ubuntutym.u-toyama.ac.jp/ubuntu bionic-updates InRelease                                                                                                                                                          
ヒット:3 http://ubuntutym.u-toyama.ac.jp/ubuntu bionic-backports InRelease                                                                                                                                                                                                                                                   
ヒット:4 https://cli.github.com/packages stable InRelease                                                                                                                                                                                                                                                                    
ヒット:5 http://packages.microsoft.com/repos/code stable InRelease                                                                                                                                                                                                                                                           
無視:6 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages tricia InRelease                                                                                                                                                                                                                                                  
ヒット:7 https://repo.steampowered.com/steam stable InRelease                                                                                                                                                                                                                                                                
ヒット:8 http://dl.google.com/linux/chrome/deb stable InRelease                                                                                                                                                                                                                                                              
ヒット:9 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages tricia Release                                                                                                                                                                                                                                                  
ヒット:10 https://repo.nordvpn.com/deb/nordvpn/debian stable InRelease                                                                                                                                                                                                                                                       
取得:12 https://packages.cloud.google.com/apt cloud-sdk InRelease [6,751 B]                                                                                                                                                                                                                                                  
ヒット:13 http://apt.postgresql.org/pub/repos/apt bionic-pgdg InRelease                                                                                                                                                                                                                                                      
取得:14 https://packages.stripe.dev/stripe-cli-debian-local stable InRelease [3,427 B]                                                                                                                                                                     
ヒット:15 http://ppa.launchpad.net/alessandro-strada/ppa/ubuntu bionic InRelease                                                                                                                                                                             
ヒット:17 http://archive.canonical.com/ubuntu bionic InRelease                                                                                                                                                                                                              
取得:16 https://cli-assets.heroku.com/branches/stable/apt ./ InRelease [2,550 B]                                                                                                                                                              
エラー:16 https://cli-assets.heroku.com/branches/stable/apt ./ InRelease                                                                                                                                                                      
  公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 536F8F1DE80F6A35
ヒット:19 http://ppa.launchpad.net/chrdevs/figma/ubuntu bionic InRelease                                                                                                     
取得:20 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]                                                                                                                                                                           
ヒット:21 http://ppa.launchpad.net/ethereum/ethereum/ubuntu bionic InRelease                                                                                                                                                                   
ヒット:18 https://packagecloud.io/github/git-lfs/linuxmint tricia InRelease                                                                                                                                                  
ヒット:23 http://ppa.launchpad.net/linuxuprising/java/ubuntu bionic InRelease                                                        
ヒット:22 https://packagecloud.io/slacktechnologies/slack/debian jessie InRelease                                                                                
ヒット:24 http://ppa.launchpad.net/obsproject/obs-studio/ubuntu bionic InRelease                                                     
ヒット:25 http://ppa.launchpad.net/peek-developers/stable/ubuntu bionic InRelease                                                  
取得:26 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [1,224 kB]
ヒット:27 http://ppa.launchpad.net/xuzhen666/ppsspp/ubuntu bionic InRelease                                                       
取得:28 http://security.ubuntu.com/ubuntu bionic-security/universe i386 Packages [1,034 kB]                                                                                                                                                                                                                                  
取得:29 http://security.ubuntu.com/ubuntu bionic-security/universe Translation-en [282 kB]                                                                                                                                                                                                                                   
2,641 kB を 8秒 で取得しました (327 kB/s)                                                                                                                                                                                                                                                                                    
パッケージリストを読み込んでいます... 完了
W: 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: https://cli-assets.heroku.com/branches/stable/apt ./ InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 536F8F1DE80F6A35
W: https://cli-assets.heroku.com/branches/stable/apt/./InRelease の取得に失敗しました  公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 536F8F1DE80F6A35
W: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。

NO_PUBKEY 536F8F1DE80F6A35

これ。システム側にGPGエラーで出てきたキーがないとのこと。なので追加してあげます。

解決方法

% sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 536F8F1DE80F6A35

Executing: /tmp/apt-key-gpghome.a9Y6s4DyNb/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 536F8F1DE80F6A35
gpg: 鍵536F8F1DE80F6A35: 公開鍵"Heroku Inc. <support@heroku.com>"をインポートしました
gpg: 処理数の合計: 1
gpg:               インポート: 1

問題なくシステム側にpublic keyがインポートできました。

終わり

% sudo apt update
ヒット:1 http://ubuntutym.u-toyama.ac.jp/ubuntu bionic InRelease
ヒット:2 http://ubuntutym.u-toyama.ac.jp/ubuntu bionic-updates InRelease                                                                                                                                                                                                                                                     
ヒット:3 http://ubuntutym.u-toyama.ac.jp/ubuntu bionic-backports InRelease                                                                                                                                                                                                                                                   
無視:4 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages tricia InRelease                                                                                                                                                                                                                                                  
ヒット:5 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages tricia Release                                                                                                                                                                                                                                                  
ヒット:6 https://cli.github.com/packages stable InRelease                                                                                                                                                                                                                                                                    
取得:7 https://cli-assets.heroku.com/branches/stable/apt ./ InRelease [2,550 B]                                                                                                                                                                                                                                              
ヒット:8 http://dl.google.com/linux/chrome/deb stable InRelease                                                                                                                                                                                                                                                              
ヒット:9 https://repo.nordvpn.com/deb/nordvpn/debian stable InRelease                                                                                                                                                                                                                                                        
ヒット:10 https://packages.cloud.google.com/apt cloud-sdk InRelease                                                                                                                                                                                                                                                          
ヒット:12 https://repo.steampowered.com/steam stable InRelease                                                                                                                                                                                                                                                               
ヒット:13 http://security.ubuntu.com/ubuntu bionic-security InRelease                                                                                                                                                                                                                                                        
取得:14 https://cli-assets.heroku.com/branches/stable/apt ./ Packages [608 B]                                                                                                                                                                                                            
ヒット:16 http://archive.canonical.com/ubuntu bionic InRelease                                                                                                                                                                                                                                                               
ヒット:17 http://ppa.launchpad.net/alessandro-strada/ppa/ubuntu bionic InRelease                                                                                                                                                                                                                                             
ヒット:18 http://packages.microsoft.com/repos/code stable InRelease                                                                                                                                                                                                                                                          
ヒット:19 http://apt.postgresql.org/pub/repos/apt bionic-pgdg InRelease                                                                                                                                                                                                                                                      
ヒット:15 https://packagecloud.io/github/git-lfs/linuxmint tricia InRelease                                                                                                                                                         
ヒット:21 http://ppa.launchpad.net/chrdevs/figma/ubuntu bionic InRelease                                                                                  
ヒット:20 https://packagecloud.io/slacktechnologies/slack/debian jessie InRelease                                                                                                             
ヒット:22 http://ppa.launchpad.net/ethereum/ethereum/ubuntu bionic InRelease                                                                                                                  
取得:23 https://packages.stripe.dev/stripe-cli-debian-local stable InRelease [3,427 B]                                        
ヒット:24 http://ppa.launchpad.net/linuxuprising/java/ubuntu bionic InRelease                     
ヒット:25 http://ppa.launchpad.net/obsproject/obs-studio/ubuntu bionic InRelease                
ヒット:26 http://ppa.launchpad.net/peek-developers/stable/ubuntu bionic InRelease               
ヒット:27 http://ppa.launchpad.net/xuzhen666/ppsspp/ubuntu bionic InRelease                                                                                                                                                                                                                                                  
6,585 B を 6秒 で取得しました (1,058 B/s)                                                                                                                                                                                                                                                                                    
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています       
状態情報を読み取っています... 完了
パッケージはすべて最新です。

よいUbuntuライフを。

【Prisma】upsertがうまく動かないときに確認すること

おひさしどうもてぃです。

最近は個人開発で自分のshopだったりhomeブログだったり作っていて、あまり記事をアウトプットできてなかったので書きます。

いつも通り解決シリーズです。

環境

  • NestJS 8.0.0
  • Prisma client 4.0.0

NestJS × Prisma × GraphQLの構成です。

問題

Prismaのupsertで要求されるwhereの型にidしか表示されず、他の条件(たとえばemailとか)を入れたとしてもエラーを返されていました。

該当のコードはこちら。

import { Injectable } from '@nestjs/common'
import { Prisma, User } from '@prisma/client'
import { PrismaService } from '~/prisma/prisma.service'

@Injectable()
export class UsersService {
  constructor(private readonly prisma: PrismaService) {}

  // auth validateで使用
  async findOrCreateBy(email: string): Promise<User> {
    return await this.prisma.user.upsert({
      where: { email: email },
      update: { email: email },
      create: { email: email, name: 'test user' },
    })
  }
}

ちな、Prisma公式を参考にしました。

www.prisma.io

上のままだと型のエラーが出ていたのでupsertの定義元の型を確認してみました。

すると…

  /**
   * User upsert
   */
  export type UserUpsertArgs = {
    /**
     * Select specific fields to fetch from the User
     * 
    **/
    select?: UserSelect | null
    /**
     * Choose, which related nodes to fetch as well.
     * 
    **/
    include?: UserInclude | null
    /**
     * The filter to search for the User to update in case it exists.
     * 
    **/
    where: UserWhereUniqueInput
    /**
     * In case the User found by the `where` argument doesn't exist, create a new User with this data.
     * 
    **/
    create: XOR<UserCreateInput, UserUncheckedCreateInput>
    /**
     * In case the User was found with the provided `where` argument, update it with this data.
     * 
    **/
    update: XOR<UserUpdateInput, UserUncheckedUpdateInput>
  }
  .
  .
  .

  export type UserWhereUniqueInput = {
    id?: string
  }

upsertのwhereに使われているのは UserWhereUniqueInputで、この子を確認してみるとidしか型にない…

どういうこと!?

公式をもっとちゃんと見ましょう

そういうこと。

Upsertのところをもっとちゃんと見てみましょう。

www.prisma.io

↑のwhereのところに注目。

Wraps all unique fields of a model so that individual records can be selected

unique field、これだわ。

もっとわかりやっすく書いてほしい…(切実)、せめて大文字とか。

解決

ということで、prisma.schemaにunique制約をかけて…

// User(ユーザー)
model User {
  id             String     @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
  email          String?    @unique() @default("")
  phoneNumber    String?    @unique() @default("") @map("phone_number")
  companyName    String?    @default("") @map("company_name")
  address String?    @default("")

  createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
  updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz(6)
}

マイグレーションをかければ

$ npx prisma migrate dev --name add_unique --skip-seed

UserWhereUniqueInputがこんな感じになりました。

  export type UserWhereUniqueInput = {
    id?: string
    email?: string
    phoneNumber?: string
  }

ちゃんとUnique制約つけたカラムが追加されてました。

【docker】dockerコマンドにサブコマンドのcomposeを導入する

どうもてぃ。

もてぃ家に新たに家族が増えました。可愛らしい男の子です。

そして新居も引き渡され、やっと落ち着いてきた次第。

環境

% cat /etc/os-release 
NAME="Linux Mint"
VERSION="19.3 (Tricia)"
ID=linuxmint
ID_LIKE=ubuntu
PRETTY_NAME="Linux Mint 19.3"
VERSION_ID="19.3"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=tricia
UBUNTU_CODENAME=bionic

% docker -v
Docker version 20.10.7, build 20.10.7-0ubuntu5~18.04.3

github公式のインストールコマンドを実行

こちらを参考。

github.com

ま、結論から言えば失敗です。

% docker compose version
docker: 'compose' is not a docker command.
See 'docker --help'

docker V2公式ドキュメントを見る

自分はubuntuを使っているので、ここを参照。

docs.docker.com

まんまここに書いてる通りで上手く行きました。公式 is best.

% docker compose version
Docker Compose version v2.2.3

【docker】コンテナの再起動を通知したい

どうもてぃです。

Herokuのようにインスタンスを定期的に再起動したい。そんなことを思ったことはありませんか?僕だけですか?

自社サービスをコンテナで動かしているのですが、原因不明でVMにアクセスできなくなり、VMを再起動しコンテナも同じく再起動する…といったかなり良くない運用方法で進めていたので、コンテナを定期的に再起動して対応してみました(主な原因としては、workerのコンテナでredisと突然接続できなくなるものでした)。

環境

  • GCE (VM: CentOS)
  • docker
  • docker-compose(アプリケーション側の構成用)

slack-dockerを使用する

当初はcronでコンテナを再起動したあと、slack通知用にスクリプトを組もうと考えていて、cron実行ユーザー用に環境を作ろうか…と思いましたがめんどくさくなり、

「え、これもコンテナでよくね?なんかimageあるやろ」

と思いしらべたらすぐに見つかりました。

github.com

slack-dockerコンテナにホスト側のdockerプロセスを同期し、更に通知したいwebhook urlを渡してあげるだけで通知が完了します。

slackのincoming webhookのURLは↓

https://my.slack.com/services/new/incoming-webhook

URLが出てきたら以下のコマンドを実行する。

$ docker run -d -e webhook="上で作ったincoming webhook url" -h "$(hostname)" -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/int128/slack-docker

設定がうまくいくとchannelに通知が行きます

f:id:rdwbocungelt5:20211116100001p:plain

すばらしい...

IaaSでdockerを使う場合はこれを採用すると幸せになりますね(IaaSでコンテナ立てるのは微妙なんですがね)

【aws】vpcネットワークを作っていくメモ

VPCネットワーク

デフォルトVPC

設定名 設定内容 設定の割当最小単位
VPC デフォルトVPC全体のネットワークアドレス。範囲 172.31.0.0/16 リージョン
サブネット 各AZに1つずつ設置。 [/20]のネットワークアドレスが割り当てられる。 AZ
ルートテーブル VPCネットワークアドレス範囲内の通信はVPC内部へルーティング。それ以外はインターネットに向けたルーティング。 サブネット
インターネットゲートウェイ インターネットへの接続用ゲートウェイが作成され、ルートテーブルに割り当てられている。 VPC
ネットワークACL インバウンド・アウトバウンドともに全ての通信を許可 サブネット
セキュリティグループ インバウンドは全ての通信を拒否、アウトバウンドは全ての通信を許可 インスタンス
  • VPCネットワークアドレスは一度設定すると後から変更できないので注意

カスタムVPC

VPC → VPCを作成で新規に作成する。

  • テナンシーを専用にすると利用料が割高に
  • 新規作成時、自動でルートテーブル・ネットワークACL・セキュリティグループが作成される
  • EC2インスタンスでパブリックDNSを使用する場合は、DNSホスト名を有効化する

aws cli経由で作成

$ aws ec2 create-vpc --cidr-block 10.0.0.0/16

# Nameをつけたい場合 *******はVPC ID
$ aws ec2 create-tags --resources vpc-*********** --tags Key=Name,Value=awscli

# hostname 有効化
aws ec2 modify-vpc-attribute --vpc-id vpc-********* --enable-dns-hostnames

サブネット

大きなネットワークを複数の小さなネットワークに分割して管理する際の管理単位となるネットワークのこと。

VPC -> サブネット -> サブネット作成 で新規に作成する。

  • ELBを作成する予定があるサブネットは余裕をもって/24以上のネットワーク範囲で作成すること

aws cli経由で作成

$ aws ec2 create-subnet --vpc-id vpc-*********** --availability-zone ap-northeast-1a --cidr-block 10.0.0.0/24

# tag Name作成(resource idは上記実行時に返ってくるsubnet-***********)
$ aws ec2 create-tags --resources subnet-************ --tags Key=Name,Value=awscli

ルートテーブル

サブネット単位で設定することが出来る、サブネット内で稼働するEC2インスタンスのネットワークルーティングを制御する。

VPCネットワークを作成すると、自動的にルートテーブルも作成される。

VPC -> ルートテーブル -> ルートテーブルの作成で新規に作成する。

aws cli経由で作成

$ aws ec2 create-route-table --vpc-id vpc-****************

# tag name
$ aws ec2 create-tags --resources rtb-************* --tags Key=Name,Value=awscli

作成したサブネットとルートテーブルの関連付け

ルートテーブル -> 作成したルートテーブルを選択 -> サブネットの関連付け -> 編集 -> サブネットにチェックでおk

作成したサブネットはVPC内の1つのルートテーブルに関連付ける必要がある。

  • メインルートテーブルに自動的に関連付けされたサブネットはそのままにせず、明示的にルートテーブルと関連付けるようにする。
  • メインルートテーブルを他のルートテーブルに変更した場合、明示的に関連付けていないサブネットは新たに設定したメインルートテーブルに関連付けられてしまい、それまで出来ていた通信ができなくなったり不要な通信が出来るようになったりする等の問題が発生するため。
  • メインルートテーブルはできるだけ必要最低限のルーティング設定にしておく、VPCの内部通信のみ可能な設定から変更しないようにする

aws cli経由で作成

$ aws ec2 associate-route-table --route-table-id rtb-***************** --subnet-id subnet-******************

インターネットゲートウェイ

VPC内で稼働するEC2インスタンスがインターネットを通じて外部と通信する際に必要。EC2以外のリソースも同様で通信する際に必要。VPCごとに1つだけ紐付けが可能。

ルートテーブルのターゲットとして使用する。

VPC -> インターネットゲートウェイ -> インターネットゲートウェイの作成で新規に作成する。

VPCと関連付ける

アクション -> VPCにアタッチで作成したVPCと関連付けられる。

aws cli経由で作成

$ aws ec2 create-internet-gateway

# tag name(igw-******は上記実行時に取得)
$ aws ec2 create-tags --resources igw-************ --tags Key=Name,Value=awscli-gateway

# VPCへアタッチ
$ aws ec2 attach-internet-gateway --internet-gateway-id igw-*********** --vpc-id vpc-**********

インターネットゲートウェイをルーティング先に指定する

  1. VPC -> ルートテーブル
  2. 作成したルートテーブル選択
  3. 編集
  4. ルートを追加
  5. 送信先 0.0.0.0/0にし、ターゲットをインターネットゲートウェイにし作成した igw idを選択
  6. 変更を保存

aws cli経由で作成

# igw-*******/rtb-*********は先程作成したもの
$ aws ec2 create-route --route-table-id rtb-*************** --destination-cidr-block 0.0.0.0/0 --gateway-id igw-*****************
````

【CSS】tips inputにフォーカスしたときborderの色を変える

どうもてぃ。

CSS力向上を願ってtips記事を書いていきたいと思います。

TL;DR

input:focus-visible {
  outline: 1px solid #ddd;
}

// もしくは
input:focus {
  outline: 1px solid #ddd;
}

inputを装飾している場合…

focus時にoutlineで強調すると、inputにborder-radiusを使っていた場合outlineがradius化してくれず若干違和感を感じる挙動になります。

そんなときは outline: none;にしてbox-shadowで装飾しましょう。

See the Pen by motty (@motty93) on CodePen.

以上。