AWS関連のことを調べてみた

AWS関連のことを調べてみた

AWS CDK : メトリクスフィルタ→SNS通知

業務で CloudWatch Logs → メトリクスフィルタ → Alarm → SNS通知 という流れを構築することになったので、CDKで検証をしてみたのでまとめてみました。基本的にはBLEAテンプレートを参考にして作成しています。

https://github.com/aws-samples/baseline-environment-on-aws/tree/main

# 構成図
– サーバログインを検知し、メール通知するような設計としています
(そのために/var/log/secureをCloudWatch Logsに配信)
– 各リソース(CPU,Memory,Disk)使用率は、10分内の2データポイントが80%を超えたらアラーム発報するように設定しています

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746031/96cca508-bfd0-95e0-1a5f-b94991f7cea2.png)

# コンソール画面
![image.png](https://qii

元記事を表示

GitHub ActionsでAWSのCI/CD環境を作りたい

# 環境が大事
人の成長に関連して良く耳にする言葉ですが、ITインフラやアプリ開発にも共通して言える事だと思います。
Web系言語を学び始めの時はとりあえずもの作る事を意識していましたが、少しずつ慣れてくると、環境を作れるようになりたいと思い始める訳ですね。

環境といってもAWSでいうアカウント構成とかログ取得環境とかありますが、ここでは諸CI/CDでリソースをデプロイ出来る環境から作成していきたいです。

マルチアカウント環境のデプロイについては別で記事を書いてます。

本記事はマルチアカウント構成作成時にProdOU配下に作ったBlogProdアカウントで作業を行います。
# GitHub Actions
CI/CDの構成には色々あると思いますが、慣れ親しんだGitHubを使いたいです。
この記事ではActionsでEC2を作って消す所までやります。
なんとなくの手順
1. リポジトリの作成とローカルと接続
1. CDKセットアップ
1. (CLIベースでEC2作成の確認)
1. Actionsの設定
1. CI/CDでEC2を作成出来るか確認

## 1.リポジトリの作成とロー

元記事を表示

DynamoDBの変更データキャプチャを試してみた

# 背景・目的
DynamoDB(以降、DDBといいます。)の変更データキャプチャ(CDC)について、触る機会があったので知識の整理と、簡単に試してみます。

# まとめ
下記に特徴を整理します。

|特徴| 説明
|:–|:–|
|概要|・DDBでは、テーブルに保存された項目の変更を、変更の発生時にキャプチャできる
・CDCレコードのニアリアルタイムをサポートしている|
|ストリーミングオプション|・DDB用のKDS
・DynamoDB Streams|

# 概要
[Amazon DynamoDB の変更データキャプチャ](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/streamsmain.html)を元に整理します。

> 多くのアプリケーションでは、DynamoDB テーブルに保存された項目の変更を、変更の発生時にキャプチャすることで利点を利用できます。以下に示しているのは、いくつかのユースケースの例です。

> – 人気のモバイルアプリケーションは、1 秒あたり数

元記事を表示

AWSとGoogle Cloudで、とりあえず簡単にRAGを構築してみたい!(API呼び出しもあるよ)

# この記事について
RAG(Retrieval-Augmented Generation)は、質問への回答を生成する際に外部データベースの情報を取得することで、LLM単独では応えきれない問題(最新の情報、社内独自の情報など)へ対応する技術です。

最近話題になっているので、いちど試してみたい!と思っている方も多いのではないでしょうか?
しかし、試してみたいと思っても使うモデルや技術・サービス・手法等々いろいろな情報が溢れていて結局何をどう使えばいいのかわからん…ということになりがちです。

この記事では、「難しいことはわからんが、とりあえずRAGというものを構築してみたい」という方向けに、AWSおよびGoogle Cloud上に少なめの準備でRAGを作って試す手順を紹介します。
とりあえず作ってみて、難しいことは後で考えればいいじゃない!という精神でRAG+API呼び出しの構築を進めてみて、実際に動作させた感触やかかった利用料などを紹介できればと思います。

なお、この記事を書いている私自身、RAGの手法や精度向上にまったく詳しくないけどとりあえず構築してみた人間のひとりです。

#

元記事を表示

難しいことはわからんが、とりあえずRAGを構築してみたい!(AWS編)

## この記事について
この記事は、[AWSとGoogleCloudで、とりあえず簡単にRAGを構築してみたい!(API呼び出しもあるよ)](https://qiita.com/ckw-1227/items/d8f89757349b90e35fa7)のAWS編として、AWSでの構築手順をまとめたものになります。
GoogleCloud編や、AWSとGoogleCloudの比較を見たい方は親記事からどうぞ。

## 0. 使用するサービス
AWSではAmazon Bedrockのナレッジベースを使用します。(先日まではメニューが英語で「KnowledgeBase」と書かれていた気がするんですが、いつの間にかコンソールが変わってカタカナ表記になっていたので、この記事でもカタカナ表記にします)

ナレッジベースで外部から与える情報源と使いたいデータベースサービスを指定すると、RAGを構築できるようになっています。

## 1. S3にテキストファイルを配置する
Bedrockに触れる前に、まずは外部情報となるテキストファイルをS3に配置します。テキストファイルの作成については親記事で触れてお

元記事を表示

DirectConnectに直結していないVPCからオンプレサーバへアクセスする

# 1. はじめに

– 業務上でDirect Connect(DX)を含むネットワーク設計をしていて、少しクセのある要件に悩んだため、備忘のため検討結果をまとめておく。

:::note
– 検討した構成は全て実機検証しているが、今回の記事は考え方をまとめるもので、具体的な手順のキャプチャなどは記載しない。
– もしかしたらよりよい接続方法などあるかもしれない。。
:::

# 2. 今回のネットワーク要件

– VPC-Aに接続されているVGWがDXGWに接続されている。
– VPC-Bに存在するサーバ(Origin)から、DXの先にあるオンプレサーバ(Target)にhttpアクセスしたい。(DXGWと直結しているVPC-AはCIDRが小さく、そこにはサーバを立てられない、という制約あり)
– VPC-BのCIDRをDX網側に広報できない。(VPC-Bと重複するCIDRがDX網に接続されている別拠点に既に存在する、という制約あり)
– DXはホスト型であるため、TransitVifなどは使用できない。

![image.png](https://qiita-image-stor

元記事を表示

Transit Gatewayの基礎

# 内容
下記勉強会での発表内容になります。Transit Gatewayを分かりやすく説明します。

https://infra365.connpass.com/event/312035/

# AWS環境で発生するネットワーク通信

Transit Gatewayの話に入る前に、AWS内ではどのようなネットワーク通信があるかを見ていきます。まず最初にVPNやDirect Connectを使用したオンプレミスからAWSへの通信があります。

![スライド4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/7e982bfc-1a0a-70fb-9e06-6c8f550af0ea.png)

次にVPC内のPublic SubnetからInternet Gatewayを介したインターネット通信があります。

![スライド5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/2cf4c9d4-55a

元記事を表示

buildspec.yamlでfor文を書く方法

## はじめに
buildspec.yamlにfor文を記述しCodeBuildで実行したところ、
エラーになって滅茶苦茶ハマったので忘れない為に。

## 想定読者
CodeBuildでfor文使いたい人
CodeBuildでfor文使ったらエラーになった人

## 書き方
例として、下記の処理を行うコードを書きます。
1. lsコマンドの結果を変数に入れる
1. 変数をfor文で処理する
“`yaml
commands:
– RESULT=`ls`

– for v in “${RESULT[@]}”; do
echo $v;
done
“`

## ハマっていた時のコード
ハマってエラーが出ていた時のコードは以下でした。
“`yaml
commands:
– RESULT=`ls`

– for v in “${RESULT[@]}”
– do
– echo $v
– done
“`
全行にハイフンを書いていました。
この場合、下記の様なエラーが出ます。
![image.png](https://qiita-image

元記事を表示

AWS Solution Architect Associateに(運よく)ぎりぎり通った話(SAA C-03)

こんにちは、ひらきちです。
先月末(運よく)ぎりぎりAWSの資格(SAA C-03)に合格しました!

「運よく」なので、あまり参考にならないかもしれませんが、
運よく通りたい皆様の一助になれば幸いです。

# スコア
獲得741点 >= 合格点720点
なので本当にぎりぎりでした。

全65問なので、
– 65 * 741 / 1000 = 48.1問正解
したことになります。
– 65 * 720 / 1000 = 46.8問正解
なのであと2問間違えていたらアウトですね。

(ちなみに、採点に関係のない問題も数問入っているらしいので、
厳密には、上記の計算は正しくないです。)

# そもそも模擬試験で一度も合格点に達しなかった
実は、Udemyの問題集を4回分解いて、
一度も合格点に到達できませんでした。

# 過去問
・1回目は約45点(3月1週目)
・2回目は約50点(3月2週目)
・3回目は約55点(3月3週目)
・4回目は約60点(3月4週目)

徐々に点数が上がったため、試験を受ける3月末にはギリギリ合格点(720点)に到達するはず!?
という目論見で受けることにしまし

元記事を表示

AWS ANS合格(更新)記(2024/4/12投稿)

# はじめに
この度AWS認定のANSを受験してきましたので、勉強した内容と受験した感想を書いておきます。
今回は更新目的の受験になります。

# 前提
* AWSのデータ分析基盤は実務経験あります
* AWS認定は全て取っています(詳細は[こちら](https://qiita.com/handy-dd18/items/d21d914bf1c475d777f2)) ※PASは[こちら](https://qiita.com/handy-dd18/items/18e8a856906f97bbb964)、DEAは[こちら](https://qiita.com/handy-dd18/items/cd9410fc2c02a28b4c1d)
* AZ-900/AZ-104/AZ-700/AZ-305/AZ-204/DP-900/AZ-500/DP-203は取得済み
* Google Cloud認定は9つ取ってます

# 学習内容
今回は以下の順番で勉強を進めました。

* [①試験対策本(AWS認定 高度なネットワーキングー専門知識(ANS-C01)完全対応テキスト](https://amzn.a

元記事を表示

①ECS(Fargete)とECS(EC2)とEKSの比較②コンテナの配置戦略と制約条件

コンテナの違いをまとめました。
違いが良くわからず、もやもやしている方々が、「なんだ、そんな事か」と感じてくれて、活用が進むと幸いです。

①ECS(Fargete)とECS(EC2)とEKSの比較

Fargateの特徴

インフラ管理が手軽になる
クラスタであるインスタンスのOSやミドルウェアの構築が不要。
インスタンスタイプなどの設定や管理も不要。

Fargateの欠点

sshやdocker execが利用できない。
パブリックIPの固定割り当てができない

EC2とFargateの比較表

| 特徴 | EC2 | Fargate |
|—————-|—————————————-|——————————————–|
| マネージド度 | 自己管理型

元記事を表示

AWS for SAP とは何か?

### なぜこの記事を書いたのか?
AWS のYouTube 動画を見て最新技術をチェックしようとして、「AWS for SAP」という未知のサービスが紹介されていてくじけました。そのため、「AWS for SAP」について調べて、内容を理解できるようにしたいから書きました。

AWS for SAP とは何か?
Amazon Web Services(AWS)上でSAPシステムを稼働させることです。AWSは2008年からSAP社と共同で取り組みを続けており、SAPの新製品の開始と同時に認定を取得する強固なパートナーシップがあります。
AWS-SAP (AWS Certified Solutions Architect – Professional) とは違います
SAP HANA Cloud とは何か?
SAP HANA Cloud は、未来のアーキテクトが次世代のインテリジェントデータアプリケーションを大規模に構築し、導入できるようにするマルチモデルデータベース管理システムです。

元記事を表示

An error occurred (InvalidPermission.Duplicate) when calling the AuthorizeSecurityGroupIngress operation

Github action を利用して、EC2サーバにログインすると、Security Group 重複のため、下記のエラーが出てしまう。

“`sh
aws ec2 authorize-security-group-ingress \
–group-id=’sg-xxxxxxx’ \
–protocol=tcp \
–port=22 \
–cidr=xxx.xxx.xxx.xxx/32
“`

“`
An error occurred (InvalidPermission.Duplicate) when calling the AuthorizeSecurityGroupIngress operation: the specified rule “peer: xxx.xxx.xxx.xxx/32, TCP, from port: ***, to port: ***, ALLOW” already exists
Error: Process com

元記事を表示

AWS構築 – 初学者説明メモ

## 0. はじめに
この記事はAWS上にLambdaをアップロードする方法についてのメモです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54858/bf69f3c1-1c8b-02a3-8af4-9c43089ede49.png)

## 1.CLIの環境構築
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-getting-started.html

1. AWS CLIの環境構築する
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/prerequisites.html

2. AWS SAM CLIの環境構築する
https://docs.aws.amazon.com/ja_jp/serverless-appl

元記事を表示

内部名前解決の方法をまとめてみた

## はじめに
内部の名前解決の方法について、まとめてみたので備忘録として残しておきます。

## 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 LR

User[
User]
Auth{CF_Authorization
cookie ?}
ZT[

【サブネットマスク】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

元記事を表示

OTHERカテゴリの最新記事