localstack を aws-sdk-java-v2 で利用する
AWSを活用しているときに、localやCIではAWSのmockとしてlocalstackを利用することがある。 特にS3 / Kinesis / SQS / ...のように複数のAWS Resourceを使う場合にはlocalstackはとても便利だ。 localstackはdocker imageも公式配布されているので本当に便利。
それとは別に、最近ではaws-sdk-javaはv2が主流となりつつある。 こちらはv1と比べてコード生成されたり、非同期APIが提供されたりしている。
aws-sdk-java-v2でlocalstackを利用する際には、以下の点に気をつける必要がある。
- aws-sdk-java-v2はhttp2でつなぎに行こうとするが、localstackはhttp1.1しか喋れない
- aws-sdk-java-v2はCBORでやり取りしようとするが、localstackはJSONしか処理出来ない
- localstackも何も認証情報が取れない環境だとsdkが例外を吐いて通信できないので、どのような環境でも動かせるように、適当なaws key/secretを入れておく
- USE_SSLでssl接続にする際は、awscliにある
--no-verify-ssl
と同じようにflagを立ててスキップさせる
// disable CBOR System.setProperty(SdkSystemSetting.CBOR_ENABLED.property(), "false") // use http1.1 not http2 val sdkAsyncHttpClient = NettyNioAsyncHttpClient .builder() .protocol(Protocol.HTTP1_1) .build() // localstackでUSE_SSLしている際には、以下のように変更 // .buildWithDefaults( // AttributeMap.builder().put(SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES, java.lang.Boolean.TRUE).build() // ) // set static credentials val credentialsProvider = StaticCredentialsProvider.create( AwsBasicCredentials.create("unused", "unused") ) val client = SqsAsyncClient.builder() .region(Region.AP_NORTHEAST_1) .credentialsProvider(credentialsProvider) .endpointOverride(new URI(s"http://localhost:4576")) .httpClient(sdkAsyncHttpClient) .build() client.listQueues( ListQueuesRequest .builder() .build() )
社会人4年目振り返り
年度末振り返り
- 昨年度の振り返り
仕事面
今の会社に入って1年と数ヶ月
取り組み
- AWS移行
- terraform / ansible
- AWS Certified Solutions Architect Professional - decadence
- 監視環境整備
- datadog / terraform
- LINE連携 / 負荷対策
- EMS
気持ち
偶然にも証券システムらしい機能開発にも取り組んだりしており、そっち関連の学びがある。他金融業界出身の人の話を聞くのも面白い。At Least Onceで読んだりするのはまだ楽なんだけど、スケールする順序保証を担保したシステムにムズみを感じている。
ユーザにサービスを早く届けたい気持ちと、自分が手を動かした方が早く届けられるという思いから、大体手を動かしている。サービスに直結しなくても他の開発者が便利に思えるものなどを、勝手に作ってシェアしたりしている。マイクロサービスでやっていく中で、各開発者の運用・監視に対する思いが足りなく感じたので、整備してworkshopを開いたりもしている。
人それぞれ働き方・得意分野/苦手分野などは違ってるわけだし、皆が皆模索しながらやっている様子は面白い。ユーザに良いサービスを早く届けたいという自分の中での最も高い優先度に向けて、自分は自分なりに今度もやっていけたらと思う。
副業
副業をやっていたが、やめて、また募集したりもしてる。平日夜・土日のみの稼働でエンジニア足りないと感じてる人は、CVを参考にしつつ、Contactにある連絡先に連絡を下さい。JVM関連のサーバサイド、AWS周りのインフラ、型のある言語によるフロント(firebase etc)などは対応出来る。
https://www.krrrr38.com/#/cv/ja
日常面
- 引っ越した
- ルンバ買った
- ウォーターサーバゲットした
- 軽井沢・台湾など行った
- 金融業界には5連休を取らなくてはならないって仕組みがあってだな
- 将来に向けて何をしようかというのを悩んでいたりする
- 悩んでる時間ももったいないから副業したりもしている
その他
3月は誕生日