- 1. Amazon Athenaについてまとめてみた
- 2. 結婚式でスピーチを依頼された方のためにNGワードのチェックサイトを作成しました。
- 3. AmazonLinux2設定用Ansibleサンプル
- 4. 社内日報を内製化しよう(構成編)
- 5. Amplify にデプロイしたアプリケーションをサブドメインで運用する
- 6. リモートアクセスで困った話 (2)
- 7. PHPを使ってOpenSearchServiceで日本語全文検索する(Official PHP Client for OpenSearchを用いて)
- 8. AWS認定クラウドプラクティショナー合格に向けて Day16
- 9. AWS CopilotでAWS App Runnerプライベートアクセスのデプロイを試す!
- 10. 【AWS初心者向け】AWS Certificate Manager (ACM) 証明書の手動更新方法
- 11. AWSにストリーミングデータ収集システムの構築をした話
- 12. LambdaでS3の最終更新日時を取得する(Python)
- 13. S3+Athenaで作る低コスト時系列データレイク
- 14. Amazon Athena から Snowflake にフェデレーテッドクエリ
- 15. LocalStackをローカル環境で起動して、Amazon DynamoDB の操作を試せるようにする。
- 16. NginxリバースプロキシでALBやS3などへのルーティング設定をした際に499エラーが発生した件について
- 17. AWS WAFを有効化したCloudFrontやAPI Gatewayに対する8KBを超えるリクエストに失敗した件について
- 18. Azure Virtual DesktopからAWSのCloudFrontやAPI Gatewayへのアクセスがブロックされた件について
- 19. Terraformで管理するAWSリソースへタグ情報を付与する際の小ネタ紹介
- 20. TerraformでAWS WAFを構築するサンプルコードを書いてみた
Amazon Athenaについてまとめてみた
この記事は[うるるAdvent Calendar 2022の16日目の記事](https://qiita.com/advent-calendar/2022/uluru)です。
# はじめに
2022年4月にうるるに入社した新卒エンジニアです。
実務では基本Laravelでバックエンド周りの開発をメインで行なっており、最近ちょこちょこインフラ領域にも手を伸ばしています。今回の記事は、Amazon Athenaについて簡単にまとめていきます。
以前手探りでAthenaによるデータ抽出を行なった際、初めて知った構文があり、今後業務で触る機会が増えそうなので、この機会にAthenaについてまとめました。
※間違っている記載があるかもしれませんが、ご了承ください# この記事の目標
– Amazon Athenaについて学ぶ
– Athenaとはなんぞや?となっている同士エンジニアの助けとなる(記憶を飛ばすであろう未来の自分も含みますw)# Amazon Athenaについて
Amazon Athena(以降、Athenaと表記)に関連する情報についてまとめていきます。## At
結婚式でスピーチを依頼された方のためにNGワードのチェックサイトを作成しました。
# 今回ご紹介したいサイト
https://wedding-speech-check.net/# サイトを作成する至った背景
昨年(2021年)、友人の結婚式があり、祝辞を頼まれました。
祝辞のスピーチ原稿をメモでまとめていたときにNGワードがないかをチェックしていましたが、自動でチェックするツールがあれば便利だと思い作成しました。祝辞や友人スピーチを行う時は結構緊張すると思いますので、そういった方々を少しでも手助け出来れば嬉しいなと感じています。# このサイトで出来ること
– 結婚式スピーチ(祝辞や友人スピーチ等)でNGワードと呼ばれる単語をチェックすることが出来ます。チェックできる単語については、サイトにも記載しております。
– おおよそのスピーチ時間の計測が出来ます。
– おおよそのスピーチ時間が5分を超えると警告メッセージを表示してくれます。# 利用技術
サイトのシステム構成図は以下のようになります。
直線で通信の流れを示し、点線で資材の流れを示しています。
![wedding-sppech-check.drawio.png](https://qiita-image
AmazonLinux2設定用Ansibleサンプル
# 内容
Amazon Linux 2の初期設定サンプルのPlayBookです。Ansibleの学習用に。# ディレクトリ構成
“`shell
.
|– inventory
| |– group_vars
| | `– all.yml
| `– hosts
|– roles
| `– setup
| |– files
| |– tasks
| | `– main.yml
| `– templates
| `– snmpd.conf.j2
`– site.yml
“`# ファイル説明
|フォルダ名|説明|
|:—|:—|
|site.yml|このファイルを最初に呼び出す。ここからrole配下が実行|
|inventory/group_vars/all.yml|変数を格納|
|inventory/hosts|実行対象を記載|
|roles/setup/tasks/main.yml|メインの処理を記述|
|roles/setup/templates/sn
社内日報を内製化しよう(構成編)
社内の日報アプリを作ることになりましたので、どのように作っていくかを記事にしていきます。
今回は経緯とどういった構成にするかを記載します。## 経緯
ざっくりというと日報の入力を楽にすることが目的です。弊社での日報はフリーフォーマットでの入力です。
作業時間の入力も大変ですし、スマホから日報を出すことがとても面倒なため日報アプリを使うことを検討していました。4個ほど既成の日報アプリを試しましたが、効果が実感できませんでした。
今回重要視していたポイントは以下になります。
– 入力要件(現在の日報と同じものが入力可能か)
– 提出状況の統計
– 料金
– 通知機能
– リマインダー機能
– ファイル添付機能一応Kintoneが上記に合致していたのですが、細かいカスタマイズをするのに料金が跳ね上がってしまいます。
「これなら自分らで日報アプリを作った方が良いのでは??」というのが今回の経緯です。## 構成
スマホからも日報を送りや
Amplify にデプロイしたアプリケーションをサブドメインで運用する
# まえがき
こちらは [GAOGAO Advent Calendar 2022 ことしもGAOGAOまつりです](https://qiita.com/advent-calendar/2022/gaogao) の 17 日目の記事として公開されています。今回は Next.js で作成した静的サイトを AWS Amplify 上にデプロイを行い。サブドメインにアクセスした際に表示されるようにしました。
ドメインは Xserver domain で取得しており、ルートドメイン上には wordpress が乗っかっております。https://aburasoba.org/ → wordpress, Xserver で動いている。
https://tech.aburasoba.org/ → Next.js, Amplify で動いている。上記のような構成を目指しました!
# 前提
– ドメインは取得済み。今回は Xserver Domain で取得している
– Next.js で静的なページを作成済みで、GitHub に push 済# 手順
## Next.js アプリケ
リモートアクセスで困った話 (2)
謎のアドベントカレンダー、第 17 話です。
前日の、
– **[リモートアクセスで困った話 (1)](https://qiita.com/hmatsu47/items/84f23351fb21e89bae70)**
https://qiita.com/hmatsu47/items/84f23351fb21e89bae70
に続き、今度は割と最近の話です。
AWS の Client VPN エンドポイントを 2 回削除して 3 回作った話です。
(テストを含めるとそれぞれ +1 回かな?)
## 1 回目 : 手作業で作成
筆者の職場では、AWS 上の開発環境のマシンがあります。
そして、(当初は)ここに、障害対応時に自宅などから接続することを考えました。
(というか、AWS に引っ越す前のオンプレ時代にも似たような構成で運用していて、AWS に引っ越すのを機に接続方法を考えた、という流れです)
もちろんここに SSH なり RDP なりで接続しても良いのですが(いまなら「ブラウザから接続」もありますね。Windows だと日本語入力が不自由ですけど)、パブリック
PHPを使ってOpenSearchServiceで日本語全文検索する(Official PHP Client for OpenSearchを用いて)
この記事は朝日新聞社 [Advent Calendar 2022](https://qiita.com/advent-calendar/2022/asahi)の17日目の記事です?
朝日新聞のエンジニアがバラエティに富んだテック記事をお届けしております!
***PHPとOpenSearchの公式PHPクライアントであるOfficial PHP Client for OpenSearchを使って、AWSが提供しているフルマネージドのAmazon OpenSearch Serviceにアクセスし、データを取得するための方法を**初心者でも分かるように**解説します。
# 環境
・Amazon OpenSearch Service
・EC2 (Amazon Linux 2)
・PHP 8.0 (インストール済み)
・Apache/2.4.54 (インストール済み)
・Official PHP Client for OpenSearch https://github.com/opensearch-project/opensearch-phpPHPとOfficial PHP Clien
AWS認定クラウドプラクティショナー合格に向けて Day16
# 前回の内容
[AWS認定クラウドプラクティショナー合格に向けて Day15](https://qiita.com/Ayako_0224/private/c583390b8c99df544c1a)# DNSサーバー
Domain Name Systemの略
URLとIPアドレスの対応関係を管理し、変換する# Route53
DNSレコードというIPアドレスとURLを紐づけた表を確認して処理する
ドメイン登録、DNSルーティング、ヘルスチェックを主に行うことができる
ポリシーによってルーティング設定を行う1. ドメイン設定
2. ドメイン名と同じホストゾーンを自動生成
3. ホストゾーンにルーティング方法となるDNSレコードを作成
4. トラフィックルーティングを設定## ホストゾーン
ドメインとそのサブドメインのトラフィックのルーティングをする方法についての情報を保持するコンテナ
### パブリックホストゾーン
インターネット上に公開されたDNSドメインレコードを管理するコンテナ### プライベートホストゾーン
VPCに閉じたプライベートネットワーク内のDNSド
AWS CopilotでAWS App Runnerプライベートアクセスのデプロイを試す!
# 背景
最近のAWSアップデートにて、AWS App RunnerでVPC内からのアクセスのみ受け入れる設定ができるようになりました!
これによりPrivate用途での利用が可能になり、App Runnerの幅が広がりました。https://aws.amazon.com/jp/about-aws/whats-new/2022/11/aws-app-runner-supports-privately-accessible-services-amazon-vpc/
こちらのアップデートに追随する形で、AWS Copilotでもプライベートに対応したデプロイができるようになりました。
https://aws.amazon.com/jp/about-aws/whats-new/2022/11/aws-copilot-aws-app-runners-privately-services/
# 試してみる
AWS CopilotからApp Runnerのプライベートアクセスのデプロイを試してみます。## 前提
Copilotのインストールは以下を参考に実施。https://aw
【AWS初心者向け】AWS Certificate Manager (ACM) 証明書の手動更新方法
この記事は[レコチョク Advent Calendar 2022](https://qiita.com/advent-calendar/2022/recochoku)の17日目の記事となります。
はじめまして。中途採用2年目でバックエンドエンジニアをしている徐と申します。
私たちのサービスであるTOWER CLOUD(タワークラウド)は、2020年5月にリリースされて以来、たくさんのユーザーが楽曲を配信しています。TOWER CLOUDでは、楽曲を登録するだけで、Apple Music、Spotify、LINE MUSIC、レコチョクなど、世界中の音楽配信ストアで楽曲を販売することができます。
これにより、アーティストは販売や再生に応じて収益を得ることができます。今後も、たくさんの機能を追加する予定ですので、ぜひご注目ください。
さらに詳しく知りたい方は、以下のリンクをご確認ください。# はじめに
本記事は、「SSL証明書とは」、「SSL証明書を使うメリットは何か」、「AWS Certificate Ma
AWSにストリーミングデータ収集システムの構築をした話
この記事はアイスタイル [Advent Calendar 2022](https://qiita.com/advent-calendar/2022/istyle)の17日目の記事です。
はじめまして、アイスタイルのデータ分析システム部でデータエンジニアをしている新卒三年目の[shirakih](https://qiita.com/shirakih)です。
普段は、SaaS 型マーケティング支援サービス【[ブランドオフィシャル](https://business.cosme.net/service/brandofficial)】のデータ基盤の開発、保守運用に携わっています。今回は、@grassyさんが9日目の記事で書いていた、データ基盤のクラウド移行に関連したストリーミングデータ収集システムをAWSに移行したお話をしようと思います。 構築するにあたってデータの欠損が無い構成にするために実際に行ったことをいくつかご紹介します。
ブランドオフィシャルの詳細やデータ基盤のクラウド移行について気になる方は、@grassyさんの下記記事に詳しく記載されてるので御覧ください〜ht
LambdaでS3の最終更新日時を取得する(Python)
# 概要
S3の最終更新日時を取得するLambdaをPythonで書いてみた記事です。# 前提条件
– S3が用意されていること
– Lambdaに必要なIAM権限が付与されていること# 環境
– ランタイム:Python3.9
– リージョン:ap-northeast-1# コード
“`python
import boto3
from datetime import datetime, timedelta, timezones3 = boto3.resource(‘s3’)
s3_bucket =
bucket = s3.Bucket(s3_bucket)def lambda_handler(event, context):
# 指定のフォルダ配下で調べたい場合はprefixを設定
prefix = ‘/’ # オブジェクトの取得
objs = bucket.meta.client.list
S3+Athenaで作る低コスト時系列データレイク
今年一年は、大きなネガティブサプライズがたくさん発生して、どんどん仮想通貨市場が冷えていった一年でしたね。こんな厳冬のさなかですが、皆さんは次のバブルに向けて研究開発は順調に進んでいますでしょうか?僕はスプラ3がとても捗っています。
やる気の出ない値動きに流動性の薄さに嫌気がさしている方も多いと思いますが、そんな冬だからこそ値動きに邪魔されずにBUIDLする時間がたくさんあります。今回の記事では、研究開発を始めるにあたっての基礎の基礎、データ収集周りのトピックについてです。データ収集、管理、活用の仕組みってつくるのが非常に面倒ですよね?これらの問題をどのようにして解決してデータレイクを実装しているかについて書いていこうと思います。
この記事を読めば、ほぼS3の保存コストだけという格安で運用できるデータレイクを、誰でも簡単に構築できるようになるはずです。
### 問題提起
データレイクを作るにあったって大きな壁が主に3点あります。
1. 冗長性/可用性を担保して低コストで保存するのはどうすべき?
2. 継続的にデータを更新したいけど、仕組みづくりが面倒
3. データを活用するに
Amazon Athena から Snowflake にフェデレーテッドクエリ
Amazon Athenaはデータコネクタを利用することでAWS以外の様々なサービスにライブデータアクセス(フェデレーテッドクエリ)できる。
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/connectors-prebuilt.html
Snowflake コネクタを利用してAthenaからSnowflakeへのライブデータアクセスしてみた
# 構成概要
– Athenaデータコネクタはlambda関数で実現される
– コネクタはAWS Serverless Application Registoryから検索して簡単にデプロイできる
– Snowflakeへの接続はLambdaコネクタからNAT経由で接続(Business Critical Edition以上ならPrivateLink接続もあるがここでは省略)
– Snowflake接続の認証情報(ID・Password)はAWS Secrets Managerで管理し、Lambdaのコネクタから呼ぶ
– 処理した結果はLambdaのコネクタ経由で指定したS3バケットに出
LocalStackをローカル環境で起動して、Amazon DynamoDB の操作を試せるようにする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/f666381a-63ce-ecbc-132a-36a32c8868e3.png)
# はじめにLocalStack であれば、 AWS のリソースの動作をローカルマシンでテストすることができる、ということを聞き、入門してみました。
https://localstack.cloud/
やってみることとしては、LocalStack を Docker Compose で起動してみます。
docker-compose.yml について、Amazon DynamoDB を動作させるための設定をして、 LocalStack を起動した後、 AWS CLI を利用した操作を試せるようにします。## 環境
– MacBook Pro (Intel)、macOS Big Sur 11.6
– Docker Desktop 4.7.0
– Docker Engine 20.10.14## 構成図
簡単ですが、構成図で
NginxリバースプロキシでALBやS3などへのルーティング設定をした際に499エラーが発生した件について
# はじめに
みなさん、こんにちは。Nginxでリバースプロキシを立ててパスベースルーティングなどでALBやS3などのURLへ振り分け設定をしていたところ、Nginxが499を返してくるという事象が発生したので、今回はこちらの事象の原因と解決方法について紹介していきたいと思います。
# 499が発生した原因
事象発生時のリバースプロキシ設定は次のような定義となっていたのですが、この定義だとNginxのproxy_passに指定しているURLの名前解決はNginx起動時のみに行われ、それ以降はそのIPアドレスを使い続けるという挙動となってしまうことがわかりました。
“`txt:499を発生させてしまう/etc/nginx/conf.d/*.confの例
server {
:
(省略)
:location /api/ {
proxy_pass http://XXXXXXXX.ap-northeast-1.elb.amazonaws.com/;
}
}
“`そのため、何らかの要因でALBやS3などのIPアドレスに変更が生じたものの、それ
AWS WAFを有効化したCloudFrontやAPI Gatewayに対する8KBを超えるリクエストに失敗した件について
# はじめに
みなさん、こんにちは。AWS WAFを有効化したCloudFrontやAPI Gatewayに対する8KB以上のリクエストがブロックされてしまうといった事象に遭遇したので、今回はこちらの事象の原因と解決方法について紹介していきたいと思います。
# リクエストがブロックされた原因
WAFのログを確認すると、そのままズバリAWS WAFのコアルールセット(CRS)マネージドルールグループ `AWSManagedRulesCommonRuleSet`の`SizeRestrictions_BODY`ルールに合致したため8KB(8,192バイト)を超えるBodyを持つリクエストがブロックされていることがわかりました。
余談ですが、なぜ8KBという制限が存在するかというとそもそもAWS WAFで検査できるBodyは最初の8KBという制限があります(おそらく性能の観点で)。そのため、8KBを超えるBodyを持つ(=全文検査ができない)リクエストをデフォルトでブロックしているのではないか、と個人的には考えております。
![01-aws-managed-rule.png](htt
Azure Virtual DesktopからAWSのCloudFrontやAPI Gatewayへのアクセスがブロックされた件について
# はじめに
みなさん、こんにちは。AWS WAFを有効化したCloudFrontやAPI Gatewayに対するアクセスがAzure Virtual Desktop(AVD)からだとブロックされてしまうといった事象に遭遇したので、今回はこちらの事象の原因と解決方法について紹介していきたいと思います。
# アクセスがブロックされた原因
WAFのログを確認すると、AWS WAFの匿名IPリストマネージドルールグループ `AWSManagedRulesAnonymousIpList`の`HostingProviderIPList`ルールに合致したためAVDからのアクセスがブロックされていることがわかりました。うーむ、現状だとAzure Virtual Desktopはエンドユーザトラフィックのソースになる可能性が低いと判断されてしまっているということですね…^^;
![01-aws-managed-rule.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613908/032d52ed-7dc2-f7
Terraformで管理するAWSリソースへタグ情報を付与する際の小ネタ紹介
# はじめにみなさん、こんにちは。AWSを利用するにあたってタグの付与は、運用管理を容易にするなどの観点から一般的に行われている設定かと思います。今回はTerraform入門としてそんなAWSタグをTerraformで付与する際の小ネタのご紹介です。
# 基本的なタグの設定方法
基本的な設定方法としてはAWSプロバイダーの定義にて、デフォルトで付与するタグを設定することです。これにより、すべてのAWSリソースへ漏れることなく付与することが可能なのでこちらを活用するのがオススメです。
“`tf
provider “aws” {
region = var.aws_region
default_tags {
tags = {
owner = “matt”
terraform = “true”
}
}
}
“`# 複数パターンのタグ設定方法
「[基本的なタグの設定方法](#基本的なタグの設定方法)」では1つのパターンのみでしたが、たとえば環境を表すタグ情報などをちょっと変え
TerraformでAWS WAFを構築するサンプルコードを書いてみた
# はじめにみなさん、こんにちは。今回はTerraformの入門ということでCloudFrontおよびAPI Gatewayに割り当てるAWS WAFのサンプルコードを書いてみましたのでこちらを紹介していきたいと思います。
なお、サンプルコードを書いた際のTerraformおよびAWSプロバイダーのバージョンは次のとおりです。最新バージョンでは定義方法が異なっている可能性があるため、実際にコードを書く際は最新の「[Terraformドキュメント]」と「[AWSプロバイダードキュメント]」を確認しながら開発を進めていただければと思います。
[Terraformドキュメント]: https://developer.hashicorp.com/terraform/docs
[AWSプロバイダードキュメント]: https://registry.terraform.io/providers/hashicorp/aws/latest/docs“`tf:versions.tf
# Requirements
terraform {
requ