- 1. 内部名前解決の方法をまとめてみた
- 2. 【Pulumi】Pulumi AIが生成したコードでEC2インスタンスを構築したい
- 3. Cloudflare Zero Trust の ID 認証先に AWS Cognito を OIDC で連携する
- 4. 【サブネットマスク】EC2のセキュリティーグループについて
- 5. AWS Lambda Function URLs(関数URL)がCloudfrontのOACに対応したので試す
- 6. X-Ray SDK for Node.js で注釈とメタデータを追加する – Node.js
- 7. #AWS アラーム通知実装パターンについて
- 8. AmazonBedrock(Claude3 Vision)をLangChain+Streamlitで使う
- 9. Amazon Linux 2でpostgres 15.x clientをインストール
- 10. #AWS EC2、Fargate、RDS指定時間帯稼働用Lambda
- 11. AWS Amplifyを使って日本語のログイン画面を作るとユーザー名のプレースホルダが英語になる
- 12. 365 日後に〇〇する社畜の成長日記
- 13. 【AWS】よくあるサーバレス構成のログ出力先設定とログ内容を確認
- 14. サーバごとかつ日ごとに不定の時刻でEC2インスタンスを自動起動停止するLambda関数
- 15. LINEメッセージをAWS Lambdaで送受信してみたお話
- 16. Slack連携による生産性向上の施策(その1)〜Workflow Builder編〜
- 17. RDS ProxyをやめてRDS Data APIに切り替えた
- 18. AWSエンジニアとしてのキャリアを築く
- 19. 【Rails,AWS】SageMakerのエンドポイントをRailsで使用してみる
- 20. AWS Lambda LayersでError importing numpy: you should not try to import numpy from its source directory
内部名前解決の方法をまとめてみた
## はじめに
内部の名前解決の方法について、まとめてみたので備忘録として残しておきます。## Route 53 Resolverを利用した名前解決方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3115411/7fbfd774-7bd3-0144-d8d8-36c80ae8f5b2.png)サブドメインのプライベートホストゾーンを作成します。
オンプレミスのDNSサーバで条件付きフォワーダを設定し、Route 53 リゾルバーにAWSへの問合せを転送し、名前解決します。### コスト
Route 53 Resolverを利用する場合、利用料が高額であることに注意する必要があります。
Route 53 Resolverを利用するにはエンドポイントが必要です。
エンドポイントの料金はENIに依存し、0.125$/ENI/1時間かかります。
※Route 53リゾルバーエンドポイントのENIは仕様上、エンドポイントごとに2つ必要です。
そのため、エンドポイント1つの場合、月額
【Pulumi】Pulumi AIが生成したコードでEC2インスタンスを構築したい
## はじめに
最近、Terraformを触る機会があったのですが、独自言語(HCL)を覚えるのに時間が
かかりそうで手を付けられずにいました。
そのような時にPulumiは、Pulumi AIでコードを自動生成できてかつ、
YAMLで書けるということを知りました。学習コストが低そうだったので実際に使ってみることにしました。## TL;DR
– Pulumiはプログラミング言語でインフラを構築可能なプロビジョニングツールであり、
慣れ親しんだ開発言語(Python/TypeScript/Goなど)やマークアップ言語(YAMLなど)で記述可能
– Pulumi AIは、コードを自動生成してくれる。ただし、多少の修正は必要
– YAMLで書けてAIも使えるので、個人的には学習コストを低く抑えられたと感じる## 前提条件
PulumiでAWSを操作するには以下が必要です
– Pulumiのアカウントを所持していること
– https://www.pulumi.com/
– AWSにてIAMユーザーのアクセスキーが作成してあること## 実行環境
– Amazo
Cloudflare Zero Trust の ID 認証先に AWS Cognito を OIDC で連携する
# 目的
例えば、セルフホストアプリに対して認証をかけたいときに、Cloudflare に登録された公開ドメインを使って、以下のような構成を組むことができます。
Cloudflare Zero Trust では ID 認証先に OIDC や SAML 2.0 で複数登録し、アプリごとに使い分けたり、IP コンテキストやデバイスポスチャ等の他の要素を組み合わせて、アクセスポリシーを制御できます。
今回はこのようなユースケースを想定し、Cloudflare Zero Trust の ID 認証先に AWS Cognito を OIDC で連携します。“`mermaid:
%%{init: {‘themeCSS’: ‘img {width: 48px; height:48px;}’}}%%
graph LRUser[
User]
Auth{CF_Authorization
cookie ?}
ZT[AWScloudflarecognitoOIDC【サブネットマスク】EC2のセキュリティーグループについて
# セキュリティーについて学ぶ備忘録
## 背景
業務でEC2を使ってバッチ処理を組む際に、セキュリティーグループをテキトーに設定して怒られたので戒めを込めた備忘録として残します。## 結論
**0.0.0.0/0**はだめ!
接続するネットワークのIPをインバウンドルールに設定すること!## EC2インスタンスを起動するときにネットワーク設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3474207/52ba040f-f46c-463f-c999-65fb35152a30.png):::note warn
送信元が 0.0.0.0/0 のルールを指定すると、すべての IP アドレスからインスタンスにアクセスすることが許可されます。セキュリティグループのルールを設定して、既知の IP アドレスからのみアクセスできるようにすることをお勧めします
:::この文言をしっかり読もうよっていう話ですね。
ここで設定しておかないとどからでSSHで接続できてしまうため、IPを指定し
AWS Lambda Function URLs(関数URL)がCloudfrontのOACに対応したので試す
# はじめに
AWS LambdaのFunction URLs(関数URL)は、Lambda単体でHTTPSのURLを発行し、HTTPリクエストをトリガーにLambdaを実行出来るようになる、非常に便利な機能です。
API Gatewayと統合せずともLambdaのみでWebAPIを構築出来るようになり、プロトタイピングやマイクロサービスに有用です。## 関数URLの制限
ところで、関数URLの実行の認可は、IAMを用いた方法しかありませんでした(IAMロールベースの認可か、認可なししか無かった)。
Cloudfrontをリバースプロキシ的に前段に配置し、関数URLと繋ぐことで、ドメインを当てたりキャッシュを活用したり、便利な訳ですが、その際に上記が問題となります。というのは、CloudfrontからIAMベースのリクエストを行うには、Lambda@Edgeを利用するしかありませんでした(オリジンリクエストをIAMロールを付与したLambda@Edgeに任せる)。全てのリクエストでLambda@Edgeが実行されるとコストがかかりますし、せっかく関数URLはシンプルなのに、無
X-Ray SDK for Node.js で注釈とメタデータを追加する – Node.js
# X-Ray SDK for Node.js で注釈とメタデータを追加する
X-Ray SDK for Node.js を使用してセグメントに注釈とメタデータを追加してみました。
https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-sdk-nodejs-segment.html
# 利用するアプリケーション
アプリケーションは以下のものを利用させてもらいました。
https://dev.classmethod.jp/articles/fargate-x-ray/
ちなみに ECS CLI を初めて利用しました。
# ソースコードの修正
## service-a
こちらは、注釈は既に存在していましたので、メタデータを追加します。
“`js:/aws-xray-fargate/src/service-a/server.js
var XRay = require(‘aws-xray-sdk’);
var AWS = XRay.captureAWS(require(‘aws-sdk’));
var
#AWS アラーム通知実装パターンについて
# AWSアラーム実装パターンについて:
AWS環境内に各種リソースを監視するためにアラームを実装する必要があります。監視リソース種類に応じてアラームの実装パターンもいくつか存在していて、リソース種類は大きく以下のように分類できるかと思います。
A. メトリクス系(CPU使用率、メモリ使用率、コンテナ台数など)
B. ログ系(エラーログ、ヘルスチェックログなど)下図のように実際AWSコンソールも非常にわかりやすく、それぞれのグループに分けられています。
メトリクス系は基本CPUやメモリなど使用率が想定値より超えたことを通知するだけなので、煩雑な設定をしないでCloudWatch Alarmをそのまま使用したほうが便利です。
ログ系は
AmazonBedrock(Claude3 Vision)をLangChain+Streamlitで使う
AWSサンプルのAmazon Bedrock QuickStartのサンプルがClaude3になっていなかったので作ってみました。
https://github.com/build-on-aws/amazon-bedrock-quick-start
「claude_3_examples/image_api_st.py」が追加されていましたが、Stable DiffusionかAmazon Titanで制定した画像のタイトルをClaude3に問い合わせるものであり、思ったものと違いました。
以下がAmazon Bedrock(Claude3 sonnet)をLangChain+Streamlitで動かすPythonコードです。
テキストだけでなく、画像の入力にも対応しています。“`python:chat_bedrock_st.py
import timeimport boto3
import base64
import streamlit as stfrom langchain_community.chat_models import BedrockChat
from
Amazon Linux 2でpostgres 15.x clientをインストール
# はじめに
EC2にPostgreSQL15のクライアントをインストールする方法を記録する。下記のファイルを作成。
“`/etc/yum.repos.d/pgdg.repo
[pgdg15]
name=PostgreSQL 15 for Redhat Linux – x86_64
baseurl=https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7.10-x86_64
enabled=1
gpgcheck=0
“`その後、下記のコマンドを実行する。
“`
sudo yum makecache
sudo yum repolist (ensure that pgdg15 shows as a repository)
sudo yum install libzstd
sudo yum –disablerepo=”*” –enablerepo=”pgdg15″ install postgresql15-15.3-1PGDG.rhel7 (To get postgres 15.3)
“`クライアント
#AWS EC2、Fargate、RDS指定時間帯稼働用Lambda
# EC2、Fargate、RDS指定時間帯稼働について:
下記コスト削減、セキュリティ保護などの理由で、AWS環境に稼働しているEC2、Fargate、およびRDSなどのリソースを特定の時間帯のみ稼働させる必要があります。
- ・ コスト削減:
- 特定の時間帯にのみリソースを利用することで、クラウドサービスのコストを削減できます。例えば、夜間や週末には利用者が少ない場合、サーバーの稼働を停止したり、リソースをダウンスケールすることで、不要なコストを抑えることができます。
- ・ セキュリティ保護:
- 特定の時間帯にのみシステムを稼働させることで、潜在的なセキュリティリスクを最小限に抑えることができます。また、リソースの不正利用を防ぐために、特定の時間帯にのみアクセスを許可することもあります。
- ・ リソース最適化:
- 特定の時間帯に高い負荷が予想される場合、それに応じてリソースをスケールアップすることができます。たとえば、特定の時間帯にWebサイトへのアクセスが急増す
AWS Amplifyを使って日本語のログイン画面を作るとユーザー名のプレースホルダが英語になる
## Amplify UIのログイン画面
Amplify UIを使えば画像のようなログイン画面が簡単につくれます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520632/e890de5e-179d-c05a-be20-8ab3bea7d605.png)
この画面の作り方は公式にも、いろんなサイトにも載っているので今回は割愛します。
公式はこちら
https://ui.docs.amplify.aws/react/connected-components/authenticator/configuration
## Amplify UIを日本語にしようとしたら一部だけ英語のまま
このUIに対して、I18nというモジュールを使えば日本語化することができます。
しかし、ユーザー名のプレースホルダだけ「Enter your Username」で英語のままになります。https://docs.amplify.aws/react/build-a-backend/utilitie
365 日後に〇〇する社畜の成長日記
#
## 概要
IT 企業に就職した新米社畜が 3 人で日々の成長日記を綴っていきます!
息抜きを兼ねて、1 年間研修や業務を通して得た学びや成長を記録していくので温かく見守っていただければ幸いです。内容は以下のようなものを予定してます!
– AWS 学習
– SAA 合格への道
– SAAの学習中に学んだ単語などについて紹介していきます!
– SAA合格後はより上位の資格も…?
– 社会人への道
– 社会人のマナーについて紹介&勉強!
– paiza挑戦記録
– Paizaで学ぶ中で初めて知ったことや、詰まったところについて
– 先輩エンジニアに聞いてみた
– 先輩方へのアンケート結果の公開## 社畜紹介
### 社畜 S
> – 21歳、情報系の専門学校卒です!趣味はユーフォニアム!
> – 現在JavaScriptと格闘中!少しずつわかるようにはなってきましたが、モデルとかまだわからないことがたくさんあります。
> **~~専門学生時代に学んだはずのSQLとJavaは半分ぐらい頭から吹き飛びました~~**
取得資
【AWS】よくあるサーバレス構成のログ出力先設定とログ内容を確認
## はじめに
以下のようなよくある構成図について、
ログ出力先や出力されるログ内容まで意識したことはありますか?本記事は、各サービスにおいてログの出力設定方法、
どのようなログが確認できるのかを記載した記事になります。
## 1.サービス構成
S3静的Webホスティング+サーバレスのよくある構成。
サービスイメージとしてはニュース情報収集サイトであり、
処理フローは以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/28ee54d5-5a34-23e3-f3b7-03400762c1ec.png)### 処理フロー
①:ユーザがDNS名を対象にウェブサイトへアクセス
②:Route53がリクエストを受け取り、CloudFrontにルーティング
③:CloudFrontがコンテンツをキャッシュしていれば、ユーザにレスポンス
キャッシュしていなければS3にリクエストを転送
④:S3に格納された静的ウェブサイトが呼び出され、ユーザーに表示
⑤:ユーザが
サーバごとかつ日ごとに不定の時刻でEC2インスタンスを自動起動停止するLambda関数
# 作成経緯
まず筆者が下記のLambda関数を作成するに至った経緯を記す。対象となっているサーバはベンダーが作業時に使う踏み台サーバである。
踏み台用のAWSアカウントを切り出し、SSMセッションマネージャーのポートフォワードで
ベンダーには踏み台サーバへアクセスしてもらっている。この踏み台サーバの稼働時間は、ベンダーの作業によって変わるため一定ではない。
そのため、EventBridgeでサーバごとにルールを作成し、都度実行時間を更新するのは
手間がかかりすぎるため、EC2インスタンスの起動停止時間を可変にする仕組みを考えた。
折角作ったので備忘としてここに残す。(正直EC2インスタンスに起動用タグ・停止用タグを付与し、
タグを対象に月〜金の9時〜18時といった固定時間でEventBridgeルールを作成。
ベンダーにはこの運用ルールを伝え、人間をルールに合わせて作業させればいいと思う。
これができるなら本記事を読む必要はない)# 概要
EC2インスタンスの起動停止を行うLambda関数を作成し、
この関数をEventBridgeで毎日毎時実行する。
対象とな
LINEメッセージをAWS Lambdaで送受信してみたお話
## はじめに
業務にてLINE MessagingAPIを利用したLINEでのコミュニケーションツールを作成したので、技術共有と自分の備忘録もかねて書いていきます。
流れとしては、[公式LINEアカウントへのログイン処理をAWS Lambda経由で実装してみた](https://qiita.com/inacyc_k/items/8337489e3e148db1f9e5)の続きの実装になります。あわせてぜひ読んでいただければと思います。## LINE MessagingAPI ってなに
みなさん、LINEの公式アカウント利用していますか?(私はよく佐川急便とかUNIQLOの公式アカウントをよく利用しています)LINEの公式アカウントをユーザーに友だち登録いただくことでメッセージが届いたり、チャット上で会話形式の質問に回答したりとWebサイトやメルマガよりも気軽に情報発信することができます。このようにMessagingAPIは、
・さまざまなメッセージをユーザーへ送信
・ユーザーが送ったメッセージを受信
そして
・ユーザープロフィールの取得(アイコン画像やユーザー名)
・アカウ
Slack連携による生産性向上の施策(その1)〜Workflow Builder編〜
# はじめに
こちらの記事は三部構成になっております。
– Slack連携による生産性向上の施策(その1)〜Workflow Builder編〜
– Slack連携による生産性向上の施策(その2)〜Slack App編〜
– Slack連携による生産性向上の施策(その3)〜AWS Lambda編〜また、全ての記事の内容を含んだ動画も用意しております。
動画で確認したい方は[コチラ](https://www.youtube.com/watch?v=JE7ZVJ9yE9Q)まで。
※動画開始50分頃からの内容になります。# 事の経緯
![スクリーンショット 2024-04-04 16.45.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763114/66db9017-f5c8-4045-9040-0dd90bebbb12.png)
![スクリーンショット 2024-04-04 16.47.23.png](https://qiita-image-store.s3.ap-northeast-1.
RDS ProxyをやめてRDS Data APIに切り替えた
## はじめに
RDS Proxyとは
https://aws.amazon.com/jp/rds/proxy/
RDS Data APIとは
https://docs.aws.amazon.com/ja_jp/rdsdataservice/latest/APIReference/Welcome.html
Lambda×RDS(Aurora含む)の場合、RDS Proxyを間に挟むのはごく一般的な構成かと思います。
私も以前はLambdaからRDSアクセスがあるなら必須だよな〜と思っていたのですが、あるシステムでRDSにAuroraServerlessV2を採用した際、従来通りRDS Proxyも作成したら料金が跳ね上がってびっくりしました。
AuroraServerlessV2の場合のRDS Proxyの料金は、1時間1ACUあたり`0.025USD`で課金されます。
https://aws.amazon.com/jp/rds/proxy/pricing/
ただこの料金体系、よく見ると最低料金が8ACUとなっており、要は使用しているのが1ACUだけであっても、8AC
AWSエンジニアとしてのキャリアを築く
## はじめに
コラムとしてAWSエンジニアとしてのキャリアを築く上で、
やったこと、これからやりたいことを書く。
AWSエンジニアとして走り出したいエンジニアの参考になれば幸いです。
※個人ブログに後でまとめようかな
## AWS全冠をとる
AWS全冠をとる、これは個人として箔をつけるためにまずやっておきたいこと
但し、受験費用もかかる。
そのため、受験費用の補助や、資格手当が出る企業を選べるとモチベも上がりやすい
## AWSを含め技術発信を深める
Qiita、Zenn、SpeakerDeck、個人ブログなどで
些細な内容でも発信を続けていくと、発信慣れしてくる。
発信しながら、PDCAを回して改善を繰り返すと情報発信が早く、上手くなってくる。## AWSパートナー企業で働く
AWSが躊躇なく使える企業で働くという意味でクラウドの部署がある一般企業より、
クラウドやAWSを専門としている会社があればそこに入るのが確実。ただ、初心者から飛び込んで敷居が高い場合は、目当ての企業に最初から飛び込まず、
1社挟んで下積み期間で設計構築の実務経験を積むことを年齢とのバランスを見て
検
【Rails,AWS】SageMakerのエンドポイントをRailsで使用してみる
どうもこんにちは。
今回は、以下の記事でトレーニングしたBERTモデルをRailsアプリケーションで呼び出してみました。
https://qiita.com/PDC-Kurashinak/items/f55d5d9e534f59440313
# 前提条件
上の記事で手順12まで実行できていることを前提として進めます。
# SageMakerノートブックインスタンス側での設定
## 1. トレーニングしたモデルをデプロイ
SageMakerのノートブックインスタンス内で以下のコードを実行します。
“`python
predictor = huggingface_estimator.deploy(
initial_instance_count=1,
instance_type=’ml.g4dn.xlarge’,
endpoint_name=’endpoint-01′ # ここは任意の名前
)
“`ここで発行したエンドポイントは、「リアルタイム推論」をするためのエンドポイントとなります。
「サーバレス推論」をするためのエンドポイントを発行する手
AWS Lambda LayersでError importing numpy: you should not try to import numpy from its source directory
# AWS Lambda LayersでError importing numpy
AWS Lambda Layersでlangchainを使おうとして以下のエラーが発生しました。“`
[ERROR] Runtime.ImportModuleError: Unable to import module ‘lambda_function’: Error importing numpy: you should not try to import numpy from
its source directory; please exit the numpy source tree, and relaunch
your python interpreter from there.
Traceback (most recent call last):
“`Keith’s Layers (Klayers) のnumpyをレイヤーに追加して解決する。
## numpyのARNを確認
### Klayersへ遷移
https://github.com/k