たそらぼ

日頃思ったこととかメモとか。

クラウド

(小ネタ)別ファイルにしたSQLをAthenaで投げたい

Athenaに投げるSQLを別ファイルにしておきたい。 こうしておくと、管理もしやすくなり、SQLFluffでCIしたりできるようになる。 ディレクトリ構造 同じ階層にathena.pyという名前でpythonスニペットと、sample.sqlという名前のDMLを置いておくとする。 C:. at…

Athenaでjson文字列から値を取り出したい

入れ子のjsonになっていると見せかけて、json文字列が入っている場合に、どのようにすればAthenaでデータを取り出すことができるか確認した。 データを見てみる 以下のようなデータを考える。 {"key1": 1, "key2": "{\"key21\":2, \"key22\":3}"} {"key1": 4…

S3イベント→SNS→SQSの構成を試した。

S3イベント→SNS→SQSの構成を試した。 SQSの先にはLambdaが繋がっているようなイメージ。 意外と設定をズバリ書いてくれいてる文献がなかったのでまとめる。 設定手順 S3バケットの作成 イベントを起こすS3バケットがなければ、バケットを作成する。 SNSの設…

CloudTrailの証跡機能にだいぶ詳しくなったのでまとめる

CloudTrailの証跡機能にだいぶ詳しくなったので、個人的なまとめです。 CloudTrailの概要 CloudTrailはアカウントの操作ログを記録し、ログを Amazon S3 バケットに送信することができます。 90日分の管理イベントを無料で保存、検索することが可能です。証…

ロググループから特定ログを抽出するフィルターのパターンについて考える

複数種のログが混ざって格納されるロググループにサブスクリプションフィルタを設定して、特定種類のログのみ取り出したいのですが、パースとフィルターをする方法に癖があったのでまとめました。 やりたいこと docs.aws.amazon.comCloudWatch Logsでは、収…

create-export-taskで特定のログストリームだけエクスポートしたい

create-export-task APIで特定のログストリームだけエクスポートする方法を調べました。 docs.aws.amazon.com モチベーション AWS CLIからcreate-export-task APIを叩くと、CloudWatch Logsの特定のログストリームのログ を取ることができる記事を書きました…

FargateでCloudWatch Logsからログをエクスポートするアイデア

fargateからAWS CLIでcreate-export-task APIを叩き、CloudWatch Logsからログをエクスポートする方法を考えてみました。 モチベーション CloudWatch Logsに格納されたログを取り出して、別のシステムに移したいような要件があると思います。 例えば、複数シ…

CloudWatch Logsのサブスクリプションフィルタの上限数問題と対応策

記事執筆現在、CloudWatch Logsのサブスクリプションフィルタ数には上限がありますが、どこに書いてあるか分かりにくかったのでメモです。 サブスクリプションフィルタについて CloudWatch Logsに流れ込んでくるログデータを、フィルタリングして、リアルタ…

AWSサービスが代理で行うリクエストは、aws:SourceIp キーを適用しないIAMポリシー設定

aws:ViaAWSService キーで、AWSサービスが代理で行うリクエストは、IP制限を適用しないIAMポリシー設定にする設定です。 aws:SourceIp キーの注意点 aws:SourceIp キーは特に企業などで、社内ネットワーク外から操作ができないような設定をするために、よく…

CloudWatchLogsからクロスアカウントでS3にエクスポートする

別のアカウントのCloudWatch Logsに格納されたログデータを、別のアカウントのS3に持ってくる場合です。 自分のアカウント内の記事はよくありますが、クロスアカウントでやってみた報告がないので書きました。 やりたいこと 以下のような構成を実現したいで…

CloudWatchアラームのアラーム名を日本語にすると、SNSの通知メールがおかしくなる

CloudWatchアラームのアラーム名を日本語にすると、SNSの通知メールがおかしくなる件について調査しました。 背景 システム監視でCloudWatchアラームを使い、問題があった時にSNS経由でアラートメールを飛ばしています。 基本的に英語でメールしていますが、…

CloudTrailの証跡配信エラーを検知する

CloudTrailの証跡配信エラーを検知する方法を調べました。 CloudTrailの証跡は配信失敗する可能性がある AWS上で発生したイベントを記録してくれるCloudTrailは非常に便利なサービスで、証跡を作るだけでAWSで行ったログをS3などに出力することができます。 …

EFSをIPアドレスでマウントする

AWS FESをIPアドレスでマウントする方法です。AWS公式でもガイドがあるのですが、調べても意外と出てこなかったのでメモ書きです。 https://docs.aws.amazon.com/ja_jp/efs/latest/ug/mounting-fs-mount-cmd-ip-addr.html IP アドレスを使ってマウントする E…

C#でAWS Lambdaの開発を始めるのにハマったこと

C#でAWS Lambdaの開発を始めるのにハマったことまとめです。 (2019年11月時点の記録です) はじめに .NETでAWS Lambda用のコードを開発する用事があったのですが、C#は右も左も分からない所からのスタートで、とにかくハマりまくりました! 普段からC#を使わ…

CloudWatch エージェントから送るログのログストリーム名にインスタンスIDを入れる

CloudWatch エージェントから送るログのログストリーム名にインスタンスIDを入れる方法のメモです。 公式ドキュメントに記載があるのですが、結構深いところにあり、見つけるのに苦労しました。 公式の記載 CloudWatch エージェント設定ファイル: logs セク…

統合 CloudWatch エージェントの設定方法

CloudWatch Agentの設定方法をまとめました。 統合 CloudWatch エージェントとは CloudWatch エージェントで、いわゆるカスタムメトリクスの収集とログの収集が可能です。 統合 CloudWatch エージェントを使用すると、以下のことを実行できます。 オペレーテ…

CloudWatch エージェントとCloudWatch Logs エージェントの違い

CloudWatch新座者のため、統合CloudWatch エージェントとCloudWatch Logs エージェントの違いがまったく分からずハマりかけたのでメモです。 統合CloudWatch エージェントとCloudWatch Logs エージェント どっちもCloudWatch Logsにログを送信するためのエー…

ECRに自作イメージをpushする

AWS ECR概要と利用手順をまとめました。 ECRとは Amazon Elastic Container Registry (ECR) は、完全マネージド型の Docker コンテナレジストリです。 Amazon ECR(Docker イメージの保存と取得)| AWS 料金 下図はAWS公式ページ(料金 - Amazon ECR | AWS)…

DesignOne Go #5に参加してきた

9/25のDesignOne Go #5で登壇してきたので記録です。 なにをしたの AWSでGo言語を使う方法を紹介してきました。 あと、Go言語でDockerコンテナを作ってFargateで動かしてみたので、ざっくりですが説明しました。speakerdeck.com 感想 FaaSでGoがサポートされ…

Lambda無限ループでクラウド破産しないために

Lambda無限ループでクラウド破産しないためにどうしたらいいか考えました。 Lambda無限ループ AWSのFaaSであるLambdaはサービスへのなんらかのアクションをトリガーにサーバーレスで稼働してくれます。 ...が、一定の条件を満たすと「無限ループ」になってし…

GoでS3に格納したファイルにバッチ処理するDockerイメージを作りたい。

S3に格納されたファイルがあって、バッチ処理するためのdockerコンテナが作りたかったのでやって見ました。 言語はGolangです。 バッチ処理のやりたいこと 今回はS3に格納されたファイルをダウンロードしてきて、違う名前で再アップロードするバッチ処理です…

AWS IoTと Kinesis Analyticsを使ったニアリアルタイムデータ収集と加工

Kinesis Analyticsを使ってみたので、使い方をまとめる。センサーからIoTでデータを受信し、ニアリアルタイムで処理して、DynamoDBに格納するところまで。 システム概要 Kinesis Data Streamの作成 ストリーム名の決定 シャード数の決定 AWS IoTの設定 エッ…

sbtを使ってScalaコードを、Lambda用のオールインワンのjarにする

ScalaでAWS Lambda用のjarファイルを作りました。ScalaでLambdaのようなPaaSを利用したいと思い、jarファイルを作ることにしました。今回は@yoshiyoshifujiiさんのqiita記事(Amazon LambdaでScala - Qiita)を参考に、Lambdaで動かすことを目標にしています…

初めてのGKE~jupyter notebookサーバーを立てる~

GKEのクイックスタートをやってみた記録と、派生してjupyter notebookのイメージを立てた記録。これからはkubernetesの時代だ!と思ってはや数か月...。ぜんぜん自分で手を動かす気配がないので、一念発起して立ててみた。 GKEのクイックスタート 今回はGCP…

EFSをLinuxにマウントする

AWSでEFSを使う用事があったので、Linuxでの設定方法を調査した。 Amazon Elastic File Systemとは Linux向けのファイルシステム。 特徴は以下のような感じ、 ・EC2およびオンプレでマウント可能 ・フルマネージド ・スケーラブル ・汎用/最大 I/O の二つの…

lambda(Python)からlambda(Javascript)にデータを渡す

lambdaからlambdaを呼びたい! でも調べるとJavaScriptの例しかなかった...。 Pythonで呼びたいのに!ということでやってみた。 lambdaからlambdaを呼ぶとどんないいことがあるの? lambdaからlambdaを呼べると、例えばこんなことができるようになる。 あと…

S3にPUTしたテキストから、LambdaでHTMLを生成する

AWSでは可視化に関するサービスが充実している。 例えば、センサーデータなどをモニタリングしたい場合はKibanaやQuickSightなどで可視化すれば良い。 一方で、もっと泥臭いこと、例えば収集したデータから算出したデータを使って、独自のレポートやHTMLなど…

(新)AWSソリューションアーキテクトアソシエイトを受けた

AWSソリューションアーキテクトアソシエイトレベルを受けることにしたので、1月半ほど勉強して取得した。 新テストの受験記が少なく困ったので、どんな感じで勉強したかだけ記録しておく。 AWSソリューションアーキテクト - アソシエイトとは aws.amazon.com…

node.jsでAWS IoTにクライアント証明書でHTTPS送信する

AWS IoTにHTTPでPOSTしたいが、極力今ある環境をいじりたくないので、 既にインストールしてあったjavascriptで頑張ってみた。 HTTPでPOSTする方法の調査 基本的にMQTTでpublishするものなので、HTTPで送信する方法は情報が少なかった。 でも、必ずしもMQTT…

pythonでS3にメタデータをつけてファイルをアップする

S3へのファイルのアップロードを自動化したかったので、pythonからboto3を使って行う方法を調べた。要件としては、 ・ファイル(オブジェクト)を上げたい ・CacheControlなどメタデータをつけたい。s3.Bucket("bucket_name").put_object()を使ってアップし…