年中アイス

いろいろつらつら

AWS

aws-sdk-go-v2でassume roleしてAPIを呼ぶ

クロスアカウントを使うことがあったのと、そろそろv2をちゃんと使わないとなということでaws-sdk-go-v2を使ってassume roleする方法を調べました。EC2のDescribeInstancesを呼んでインスタンスリストを出すだけのサンプルを実装しています。コード全体はこ…

Fault Injectionを使ったAurora MySQLの任意のレプリケーション遅延

Aurora MySQLでReaderへの反映が遅延した場合の挙動をテストするために遅延発生方法を調べたのでメモ。Aurora 2.10.3 (MySQL5.7互換)で行いました。 Fault Injection Fault InjectionのReplica Failureを使うことで任意の時間レプリケーションを遅延させるこ…

ecscheduleにTaskDefinitionの存在チェックを追加した

最近はECS周りにecspressoを使うようになり、その流れで煩雑だったECS ScheduledTaskの管理もecscheduleを使い始めました。そして見事にオペミスをやらかしたので、冬休みの課題がてら防止策を実装してプルリク出してマージされました。 github.com 背景 先…

MySQLのレプリケーションを開始しようとしたらGot fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master;

先日、稼働中のauroraにRDS MySQLからデータをレプリケーションして切り替える*1ことでデータベースを統合するタスクを進めていました。しかし、レプリケーションを開始すると、Slave_IO_Running: No,Slave_SQL_Running: Yesの状態で止まってしまい、レプリ…

terraformのplan差分確認時の注意

本格的にterraformを使い始めて*1、速攻でやらかしたのでメモ。terraform planで差分を確認していましたが、見事に見逃して認識できてない差分を適用してしまいました。 terraform planで差分が見れるのですが、+ -の行だけを見ていて、->で表示されている同…

ECS Service Discovery DNSのTTLを変更するコマンドを作りました

前回コマンドベースで書いたこの記事の変更を行いやすくするrnsdコマンドを作りました。 reiki4040.hatenablog.com rnsd github.com 単純にリスト表示とTTL変更を行うだけのコマンドです。AWSコマンドではTTLの変更でJSON指定したり面倒なので、シンプルに変…

ECS Service Discovery DNSのTTLを変更する

ECSのServiceを作成する際に、Service Discoveryを追加することができます。これはServiceのアクセス先をELBを使わずにDNSのSRVレコードで知る仕組みです。AWSコンソールで作ると強制的にTTL300秒で作成され、Service作成後にTTLを変更しようとすると、AWSコ…

CloudWatchLogsからAthena向けにS3にデータを保存する時に改行を追加してあげないといけない

AWS

前回は、自分のミスでハマった話でしたが、その後、別の仕様にハマったのでそのメモです。以下あたりを参考に、CloudWatchLogsのログをAthenaで解析する流れを検証していました。 CloudWatchLogs -(Subscription Filter)->Firehose -(delivery stream)-> S3 …

CloudWatch LogsからKinesis Firehoseに送る時にはまったエラー

AWS

ECSコンテナのログをCloudWatch Logsに出力しており、そこからS3に保存しようとした時に、Kinesis Firehoseを使って行える例があったので試してみました。その時にしょうもないミスではまったのでメモです。 この例をもとに試していましたが、Firehose --(de…

RDSの証明書を更新したら、Lambda(node.js)から接続できなくなった

AWS

2020/02/05までに、RDS系の証明書を2015から2019に更新するようにアナウンスが出ています。*1 そんな中、RDSの証明書更新してから、Lambda(node.js)から接続できなくなったと相談を受けました。確実にクライアント側の証明書を更新してないからと思いました…

t3.smallとt3.mediumのCPU creditが同じだった

AWS

t3インスタンスのCPU creditを使い切ってしまうことがあり、そういやt2より良くなったようなと思って、再度調べてみたら驚きの仕様が! ※2020/02/20 少し文章の構成を直しました。 インスタンスタイプ、サイズごとのCPU creditの回復量と蓄積可能量 https://…

ローカルとAWS ECS上のマイクロサービスをSSH経由でつなぐmogura

マイクロサービス開発向けに、moguraというツールを開発しています。Twitterではちょいちょいリリースを呟いて、細かいバージョンアップを行っています。一旦落ち着いたので、moguraが何を解決するためのツールで、何をしてくれるのか紹介します。 背景と課…

ECSのコンテナ間でNLBを経由した通信がつながらないことがある

gRPCで作った複数のサービスを、同じECS Cluster上で動かし、他のサービスを呼び出している時に、通信できなくなったことがあったので、その原因のメモです。 直接的な原因は、「NLBは、接続元と接続先が同一のIPへの通信ができない」という仕様に意図せず該…

hakoへのプルリク その2

前回に引き続きcontainer health checkの対応をプルリクしました。 github.com 設定追加するだけだし、簡単だーと思ってましたが、何箇所か指摘頂いたので、備忘録。 簡単かなーと思ってましたが、危うく変な挙動を仕込むところでした。 設定値はオプション…

hakoに機能追加

ECSを本格利用し始め、デプロイの管理にhakoを使うことにしました。最近ECSに機能追加があり、hako未対応のものを使いたくなったこともあり、hakoに追加してみることにしました。 作った機能 いくつか機能を追加して、プルリク投げてマージされたもの、プル…

API Gateway+LambdaのSlack通知APIをCloudFormationで作る

以前、三編に分けて、SlackへPostするWebAPIを、API Gateway+Lambda+node.jsで作りました。 AWS API Gateway+LambdaでSlackにメッセージをPOSTする(前編) - 年中アイス AWS API Gateway+LambdaでSlackにメッセージをPOSTする(中編) - 年中アイス AWS API Gat…

Apexでlambda slack POSTにGoを使う

以前のエントリで、Lambda Node.js 4.3を使ってSlackにPostしていました。 reiki4040.hatenablog.com 普段Javascriptは書かないので、Goで書いてApexでデプロイする版を試しました。 ApexはLambdaのコードを管理(?)、デプロイするツールで、PythonやNode.js…

AWS CodeBuildでGoプロジェクトをビルドする

AWS TokyoリージョンにもCodeBuild等のCodeシリーズ(?)一式揃い、使ってみようということで、まずはCodeBuildを試してみました。 公式にGoのサンプルはあるんですが、他のライブラリ使ってないhello worldなので、CodeBuildの説明だけという感じでした。vend…

AWS API Gateway+LambdaでSlackにメッセージをPOSTする(後編)

前編、中編にて、AWS API Gateway + Lambdaを使って、post-slack WebAPIを作り、テスト実行まで行いました。後編では、API keyの設定と実際に使えるようにデプロイをしていきます。 Slack Webhook URLは、それを知っていれば誰でも使うことができます。せっ…

AWS API Gateway+LambdaでSlackにメッセージをPOSTする(中編)

前回、Slack Incoming Webhookの作成と、それを使うLambdaを作成したので、続いてAWS API GatewayとLambdaを繋いでいきます。書いていたら思ったより長くなったので、API Gatewayのテスト実行までを中編にして、後編で、API keyの設定とデプロイを行います。…

AWS API Gateway+LambdaでSlackにメッセージをPOSTする(前編)

Slackはincoming webhooksがあり、POSTするだけで、簡単にメッセージを送ることができます。 スクリプトで直接Incoming Webhook使ってもいいんですが、これ自体は別に認証も何もないので、誰かが知ってしまうと、好き放題投稿できます。そんな時に入れ替えた…

Roadworkerを使ってRoute53 Private DNSを管理する

AWS

Roadworkerとは Route53の設定を、DSLで管理するruby製のツールです。ドメイン設定をコード化できるので、gitで管理することができます。 winebarrel/roadworker · GitHub Route53 private DNSとは 2014年の11月ごろから使えるようになった機能です。 特定の…

rnzoo 0.2.0をリリースしました。

golangで書き直した新しいrnzoo version 0.2.0をリリースしました。(ssh呼び出しが有るので、rnsshはshell) Release version 0.2.0 · reiki4040/rnzoo · GitHub今回のバージョンの目的は、導入のハードルを下げるために、boto(Python)からgolangにしたことで…

AWSの利用料金が一定金額を超えたら通知させる (Billing alarm)

AWS

AWSから、個人で使っているアカウントに、先月の料金$18ぐらいです。とメールが来たので、インスタンス止めてたはずだけどなーと思ってみてみたら、見事にt2.microが1台と、なぜかElasticIPが停止しているインスタンスについている状態でした。(ElasticIPは…

rnzoo/ec2sshを作った。

---- 2014/10/19 追記 ec2sshは、rnsshに名称変更して、homebrewでのインストールにも対応しました。 rnzooがhomebrewで入れられるようになりました。 - 年中アイス rnzoo 0.2.0をリリースしました。 - 年中アイス ----前回のエントリでec2listを作りました…

ec2listというコマンドを作った。

2014/9/7追記 そのままec2sshも作って、導入の手間を考えてリポジトリもreiki4040/rnzoo · GitHubに移動しました。rnzoo/ec2sshを作った。 - 年中アイス rnzoo/ec2sshを作った。 - 年中アイス ---以下元エントリ ec2のインスタンス情報を表示するec2listとい…

awscliを使って、VPC向けsecurity groupを作成する

AWS

以下が完了していること前提になっています。 awscliのインストール(確認環境は、aws-cli/1.4.2 Python/2.7.5 Darwin/13.3.0です) AccessKeyのセットアップ VPCの作成(例として、10.0.0.0/16を用います) 手順としては、以下になります。 SecurityGroup(以下S…

Route53のヘルスチェックに403を返してるはずなのに、なぜかFailしない

AWS

ちょっとはまったのでメモ。 Route53には、エンドポイントをチェックして、フェイルオーバーしたり、DNSの振り分けを止めたりする機能がついています。これを有効に使うには、何が成功で、何が失敗になる(する)のかをコントロールすることが重要です。 AWS…