コマンドラインから雑に、指定したIPアドレスの国情報を取得する

運用しているサーバにDoS攻撃っぽいリクエストが飛んでくることがまれによくある。

同じIPアドレスから多数のリクエストが飛んでくる場合、どこの国のお客さんか把握したいのが人情だ。特に国内向けのサービスを運営してるのに、国外からのトラフィックが大量に来てたらフツーはおかしい。そんなときは↓を叩く。

curl -s ipinfo.io/X.X.X.X

たとえば、8.8.8.8を叩くと、下記のようになる。

$ curl -s ipinfo.io/8.8.8.8
{
  "ip": "8.8.8.8",
  "hostname": "google-public-dns-a.google.com",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.3860,-122.0840",
  "postal": "94035",
  "phone": "650",
  "org": "AS15169 Google LLC"
}

これで意図しない国からのリクエストであることを確認できれば、安心してBANできる。

ベンリ。

「markdownlint」を使ってメンテナブルなMarkdownを目指してみる

markdownlintとは

markdownlintは、Markdownファイル用のLinterだ。そして、markdownlint-cliは、markdownlintをCLIで使うためのラッパーである。

たとえば、README.md という下記のMarkdownファイルがあるとしよう。

プログラミング、完全に理解した。

これをmarkdownlintでチェックすると、こんな警告を出してくれる。

README.md: 1: MD041/first-line-h1 First line in file should be a top level heading [Context: "プログラミング、完全に理解した。"]

この例は、一行目はh1属性を書けという警告である。

続きを読む

よく使う「AWS Organizations」のAWS CLIチートシート

アカウント確認

最初にマスターアカウントかどうか確認する。本記事では 999999999999 をマスターアカウントとする。

$ aws sts get-caller-identity
{
    "Account": "999999999999",
    "UserId": "AIDAIBIY7OM4E3EXAMPLE",
    "Arn": "arn:aws:iam::999999999999:user/GiornoGiovanna"
}

Organizationの確認

Organizationリソースが作られていることを確認。Organizationが存在しない場合、エラーになる。

$ aws organizations describe-organization
{
    "Organization": {
        "AvailablePolicyTypes": [
            {
                "Status": "ENABLED",
                "Type": "SERVICE_CONTROL_POLICY"
            }
        ],
        "MasterAccountId": "999999999999",
        "MasterAccountArn": "arn:aws:organizations::999999999999:account/o-lt1example/999999999999",
        "FeatureSet": "ALL",
        "MasterAccountEmail": "aws+master@example.com",
        "Id": "o-lt1example",
        "Arn": "arn:aws:organizations::999999999999:organization/o-lt1example"
    }
}
続きを読む

Docker HubとGitHubを自動連携させる「Automated Build」が楽チンすぎる件

Automated Buildとは

Docker Hubの「Automated Build」は、GitHubでの変更を検知して、Dockerイメージのビルドを自動的に行う機能である。

Docker Hubへイメージをpushするのに、ローカル環境やCI環境でいちいちdocker build・docker pushするというルーチン作業から完全に開放してくれる。

詳細は公式ドキュメントを参照してほしい。

「Automated Build」を使用するには、GitHubとの連携を事前に許可しておく必要がある。ここからその手順を説明する。

続きを読む

コマンドラインから雑に、自分のグローバルIPアドレスを取得する

開発しているときに、自分のマシンのグローバルIPアドレスを知りたくなるときがまれによくある。そんなときは↓を叩く。

curl -s ifconfig.io

ifconfig.io は自分のIPアドレスを返してくれるだけのシンプルなWebサービスで、フツーにブラウザからも見れる。

ベンリ。

「hadolint」にシバかれながら美しいDockerfileを書き上げる

hadolintとは

hadolintはDockerfile用のLintツールだ。

たとえば、下記のようなDockerfileを作って、チェックしてみる。

FROM alpine

RUN cd /tmp && echo 'hello'

すると、次のような警告をしてくれるようになる。

/dev/stdin:1 DL3006 Always tag the version of an image explicitly
/dev/stdin:3 DL3003 Use WORKDIR to switch to a directory
続きを読む

「ECS Fargate」をAWSマネジメントコンソールで構築すると何が起きるか

ECS Fargate

Dockerコンテナを管理してくれる君。Fargate起動タイプを選択すると、クラスタのEC2の管理が不要になる。ひゃっほーい。詳細は、公式ドキュメントを参照する。

AWSマネジメントコンソールによる構築

とりあえず、動かしてみるぐらいだったら、ポチポチしていくだけでOK。VPCなど、ECSに必要なコンポーネントはCloudFormationでついでに構築してくれる。

続きを読む