Carpe Diem

備忘録

VPN接続するとどうして別ネットワークにアクセスできるのか

概要

VPNサーバをAWSに置くことで内部ネットワークに外部からアクセスする手法がありますが、どうしてそれができるのかを知りたくなって調べてみました。

環境

VPNサーバ

  • Ubuntu v18.04
  • pritunl v1.29.1958.76

クライアント

ネットワーク環境

イメージは以下の図です。

f:id:quoll00:20190125234530p:plain

続きを読む

CircleCI 2.1 でconfigの記述をシンプルにする

概要

christina04.hatenablog.com

でCircleCIの使い方を説明しましたが、2.1からconfigの記述がよりシンプルになりましたので説明します。

環境

  • CircleCI 2.1

設定

CircleCI側

まずはAdvanced Settingsで2.1の機能が使えるようにします。

f:id:quoll00:20190125133015p:plain

古いプロジェクトだとOFFのままなのでONにしてください。新しいプロジェクトだと最初からONになっています。

続きを読む

goroutineでのpanicのハンドリング その2

概要

christina04.hatenablog.com

で書いていなかったことの追加です。

環境

recoverしたあとのエラーハンドリングをどうするか

panicをrecoverしたものはいいものの、

func f() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered in f", r)
        }
    }()

    panic("panic")
}

The Go Playground

このように単純にrecoverしてハイ終わり、としているとpanicを起こしたのに処理が正常系で進んでしまうという問題があります。

特にWebサーバとしてはpanicが起きたので500エラーとして返すべきです。
なのでpanicをerrorに変換して、後の処理にerrorを渡す必要があります。

続きを読む

ConsulでService登録をした時のACLでハマった話

概要

Consulではserviceを登録することでService Discovery機能を活用することができます。
例えば

  "service": {
    "name": "payment",
    "port": 9090,
    "tags": ["development"]
  }

のように設定をすると、

$ dig @localhost -p 8600 payment.service.consul

paymentサービスとして登録したノードのIP群を取得できます。
詳細を知りたい方は以下を参考にしてください。

christina04.hatenablog.com

今回はこのサービス登録でACLを設定しているとうまく行かずハマってしまった話です。

続きを読む

Assume Roleの用途・メリット

概要

sts:Assume Roleは三者に自分のAWSアカウントのAPI権限を委譲する仕組みです。
ここで言う第三者というのは

のように様々なモノに委譲が可能です。

sts:Assume Role

どういう用途として使える?

具体的にこの仕組みがどういったことに使えるかをざっと挙げてみます。

ポリシー
(付与する権限)
信頼関係
(誰に付与するか)
どうなるか
EC2ReadOnly EC2 EC2インスタンスから
http://169.254.169.254/latest/meta-data
にアクセスが可能
PowerUser IAMユーザ IAMユーザ自体は権限を持っていなくても、
AssumeRoleでPowerUserの
一時的な権限を取得できる
S3ReadOnly AWSアカウント AWSアカウントから自分の
S3バケットへアクセス可能
続きを読む

ConsulのACLを後から有効化する

概要

christina04.hatenablog.com

ではConsulのACLの基本的な設定方法を説明しました。その時は

"default_policy": "deny"のようにデフォルトで全リソースのアクセス禁止にしてwhitelist形式で扱っていきます。

と言いましたが、そもそもACL未設定なConsulを稼働中で、急にdefault denyにしたらサービスに影響が出てしまうというケースももちろんあります。
今回はACLを後から有効化(ACLマイグレーション?)する方法を説明します。

環境

  • Consul 1.4.0

ハンズオン

こちらのリポジトリで検証できます。

github.com

続きを読む

CloudWatch LogsのログをS3へ【Kinesis Firehose編】

概要

前回

christina04.hatenablog.com

にてCloudWatch Logsの過去ログをS3へエクスポートする方法を説明しました。
今回はリアルタイムにS3に転送する方法を紹介します。

手順

管理ポリシーではないIAMポリシーが何度も出てくるので、自動生成してくれるWebコンソールで作成します。

前提

はすでにあるとして進めます。

続きを読む