- 1. 【未経験者大歓迎】RAG超入門:AWSが推奨するRAGを体験するハンズオン
- 2. コンテナの配置戦略と制約条件
- 3. ネットスーパー配達員が出発したことをずんだもんにGoogle Home経由で教えてもらう
- 4. AWS CLF クラウドのコンセプト
- 5. 静的ウェブサイトをCloudFront経由のアクセスしか許可しないようにする
- 6. 静的ウェブサイトホスティングにCloudFrontを経由してアクセスしてみる
- 7. 静的ウェブサイトホスティングでホスティングしてみる
- 8. AWSでWebアプリを構築してみる
- 9. M2 チップの Mac で Linux を試したーい
- 10. AthenaのPartition Projectionを使用したテーブルの作成方法
- 11. AWS Lambdaに画像を送信する
- 12. Ruby × Amazon Bedrock × Claude 3 Sonnet
- 13. TerraformでDynamoDBに一気にデータを突っ込みたい時のやつ
- 14. 【DBS-C01】DBS合格体験記
- 15. Lambda 関数 URL で OAC で CloudFront 経由の実行のみを許可する
- 16. AWSアカウントとRoute53の最適化
- 17. AWS SQS/Lambda/SNSにS3を連携し、メール通知を行ってみる[03]
- 18. AWS Lambda/SNSにSQSを連携し、メール通知を行ってみる[02]
- 19. AnsibleでAWS S3にファイルを登録してみる
- 20. AWS EventBridge での失敗と教訓
【未経験者大歓迎】RAG超入門:AWSが推奨するRAGを体験するハンズオン
生成AIはとても注目度が高い技術ですが、すこしとっつきにくいところがあるかもしれません。新しいモデルや活用手法が毎日のように登場し、ウォッチし続けるのはかなり大変です。
タイミングを逃して入門できていない方向けに、 **とりあえず作って体感してみよう** というコンセプトで、ハンズオン記事を作成しました。🎉🎉🎉
ハンズオンの内容は「**RAG**」です。RAGは生成AIの活用法としてよく出てくるキーワードです。ハンズオンでは、ただのRAGではなく最先端の「**Advanced RAG**」を体験できます。
RAGガチ勢には鼻で笑われるかもしれませんが、RAGちょっとわかる勢(「にわかRAGGER」と呼ぶことにします)には十分追いつけるのではないでしょうか?!
:::note
AWSやPythonについては、わかる前提で進めます。
::::::note warn
超特急でRAGを体験するコンセプトのため、生成AIとは何なの?、プロンプトってどうやって書くの?ということには全く触れません(プロンプトは登場すらしません)。本ハンズオンで生成AIに興味を持っていただいた方は、Q
コンテナの配置戦略と制約条件
このタスク配置戦略とは?
—
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/e22673c7-b43f-03e7-482e-1b58d8521e7d.png)
**デフォルトのタスク配置戦略**は、タスクを手動 (スタンドアロンタスク) で実行するのか、それともサービス内で実行するのかによって異なります。**Amazon ECS サービスの一部として実行されるタスクの場合、タスク配置戦略は attribute:ecs.availability-zone を使用した spread です。**https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/bestpracticesguide/bestpracticesguide.pdf
例題
—
ある企業は、コンテナ化されたアプリケーションのワークロードを 3 つのアベイラビ
ネットスーパー配達員が出発したことをずんだもんにGoogle Home経由で教えてもらう
## はじめに
### ネットスーパー配達員 と 猫
食べ物にこだわりがないと、スーパーで買う商品は同じものになりがち。ということでネットスーパー利用してみたらめちゃくちゃ便利!配達指定も2時間単位で出来る!
ところで、やることない休みの日なんか猫と遊ぶに決まってる。お腹の上に乗って遊んじゃったりする。そして鳴り響くチャイム音と、お腹に爪を立てられて苦悶の声を発する私。チャイム音にビックリしたら爪も立てちゃうよね。
来訪直前まで遊んでたいんだけどなー、が動機### やりたくなったこと その①
そういえば配達員さんがお店を出発したタイミングでこんなメール届いてた。
このメールが来てから7分くらいでチャイムが鳴る。このメールをトリガーに何か出来ない?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625818/3033bc0b-435b-1db4-9104-c010302f8667.png)### やりたくなったこと その②
最近Amazonの配達でヤマトさんでも佐川さんでもな
AWS CLF クラウドのコンセプト
# はじめに
AWS CLFにおいてクラウドとコンセプトの分野は24%ほどの配点割合を占めています。内容は概念的なものが多いため文章にて紹介します。
## クラウドのコンセプト
AWS CLFにおいて
このセクションの重要なキーワードとなるのは以下の通りです。
* コスト
* セキュリティ
* サーバーのサイジング
* 俊敏性
* スケーラビリティ
* 疎結合
* Design for failure
* 並列化
* AWS CAF# コスト
AWSでは初期費用が不要かつ使用した分支払う従量課金制となっています。対してオンプレミスの場合は莫大な初期費用が必要となります。
# セキュリティ
AWSにおいてセキュリティはAWSおよび利用者の両方が管理する「責任共有モデル」というものが使われています。大雑把に言うとAWSはクラウド環境、利用者はクラウド内及び接続のセキュリティを管理することが義務付けられています。詳しい責任の所在はAWSのWebサイトでご確認ください(https://aws.amazon.com/jp/compliance/shared-responsibility-mo
静的ウェブサイトをCloudFront経由のアクセスしか許可しないようにする
# 概要
本記事は [AWSでWebアプリを構築してみる](https://qiita.com/ti_and6id/items/9670ee60965a4d10bec7) シリーズの3回目の記事です。
前回の記事は[こちら](https://qiita.com/ti_and6id/items/c257f9d011f84b97ac3e)。# 本記事で作成する構成
本記事では静的ウェブサイトをCloudFront経由のアクセスしか許可しないようにしてみます。
![AWS.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/7a173c6e-0ddb-d0a2-b410-283908b3b5ca.png)
ここでは図のようにCloudFrontを経由した間接的なアクセスのみ可能な状態で、S3でホスティングした静的ウェブサイトに直接アクセスすることができなくなります。# 静的ウェブサイトをCloudFront経由のアクセスしか許可しないようにする
## 1. S3の設定を変
静的ウェブサイトホスティングにCloudFrontを経由してアクセスしてみる
# 概要
本記事は [AWSでWebアプリを構築してみる](https://qiita.com/ti_and6id/items/9670ee60965a4d10bec7) シリーズの2回目の記事です。
前回の記事は[こちら](https://qiita.com/ti_and6id/items/fe652f89d8919052c91c)。# 本記事で作成する構成
本記事では静的ウェブサイトホスティングにCloudFrontを経由してアクセスできるようにしてみます。
![AWS.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/cacc9846-2940-48ae-07af-58bd74e1d204.png)
ここでは図のようにS3でホスティングした静的ウェブサイトに直接アクセスすることと、CloudFrontを経由して間接的にアクセスすることの、2通りのアクセスが可能な状態になります。# 静的ウェブサイトホスティングにCloudFrontを経由してアクセスしてみる
静的ウェブサイトホスティングでホスティングしてみる
# 概要
本記事は [AWSでWebアプリを構築してみる](https://qiita.com/ti_and6id/items/9670ee60965a4d10bec7) シリーズの1回目の記事です。
# 本記事で作成する構成
本記事では静的ウェブサイトホスティングでアプリケーションコンテンツをホスティングします。
![AWS.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/5da46841-89a3-52cb-97d3-dd9c7cd71cf4.png)# 静的ウェブサイトホスティングでホスティングしてみる
## 1. S3でバケットを作成する
1. マネジメントコンソールからS3を開き、「バケットを作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/b0b5361d-2b5b-c33c-a37e-8f4ad502e09e.
AWSでWebアプリを構築してみる
# 概要
AWSでWebアプリを構築したときに小さなステップから少しずつアプリになっていくまでの過程を記録に残していきたいと思います。# 構成
今回作成したWebアプリは以下のような構成で組んでみました。![AWS.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3630916/93bf62cb-2f60-851b-1c0f-768309f08bb0.png)
Amplifyを使うとより簡単に構築できそうですが、今回は学習を兼ねてあえてAmplifyを使わずに構築してみます。
# 記事シリーズ
以下の記事で小さなステップから徐々にアプリになっていくまでの過程を記録していきます。
1. [静的ウェブサイトホスティングでホスティングしてみる](https://qiita.com/ti_and6id/items/fe652f89d8919052c91c)
1. [静的ウェブサイトホスティングにCloudFrontを経由してアクセスしてみる](https://qiita.com/ti
M2 チップの Mac で Linux を試したーい
## はじめに
Mac で Linux 環境を構築した際の備忘録になります。
様々な環境構築方法があると思いますが、今回は以下2パターンについて触れます。
– UTM を使う
– AWSのEC2でLinuxサーバを立ち上げるもう一つ普及している環境構築方法として Virtual Box を利用するパターンがあると思いますが、Apple シリコン搭載の Mac コンピュータはインストールに一工夫必要そうだったので、今回は UTM を利用しました。
Virtual Box をどうしても使いたい方は、以下の記事がわかりやすかったので参考にしてみてください。
[Virtual BoxをMacBook Air(M1, 2020)にインストールしようとしたら、CPUアーキテクチャの違いで詰まったので学び直した](https://qiita.com/k21071/items/55f81bdfc22a02b425d3)#### 対象読者
– MacでLinux環境を構築したい方
#### 動作環境
– macOS:14.4
– チップ:Apple M2
– メモリ:8 GB
AthenaのPartition Projectionを使用したテーブルの作成方法
## はじめに
Athenaではスキャンしたデータによって料金が課金されます。
AthenaでWAFログなどを分析する際、全ログに対してテーブルを作成すると、分析に必要ない範囲まで読み込んでしまうことによって、無駄な料金がかかり、検索時間も長くなってしまいます。この悩みは Projection Partition を使用して、解消することができます。
本記事は、 Projection Partition を使用してWAFログをパーティション分割し、コスト削減および検索時間を短縮する方法について紹介します。## Partition Projection とは?
パーティション分割を自動化できるのが `Partition Projection` です。
通常、パーティション分割されたテーブルを作成するには、手動でパーティション分割用のクエリを実行する必要があります。
ですが、 Projection Partition を使用してテーブルを作成した場合、クエリに記載されたパーティション構造に沿ってデータをパーティション分割します。
新しいデータがS3に格納された場合、パーティ
AWS Lambdaに画像を送信する
# この記事は?
AWS Lambdaエンドポイントに画像を送って処理をする方法のメモ。結論、base64でエンコードしてjsonとして画像を送れば良い。# 本文
## リクエストの方法
Lambdaではバイナリとして画像を受信できないようである。バイナリとして画像を送信すると次のようなエラーが出る。“`bash
Unable to unmarshal input: ‘utf-8’ codec can’t decode byte 0x89 in position 0: invalid start byte
“`エラー内容からすると、Lambdaはリクエストをutf-8として解釈するようだ。なので、画像を送信するときはbase64でエンコードして、jsonとして送ってやる必要があると推察される。サイズの大きい画像を送る場合、curlにエンコードした画像をそのまま渡すと、引数が長すぎてエラーが出るため、一度jsonファイルに変換してやる必要がある。
“`画像ファイルをbase64でエンコードしてjsonに変換.bash
echo “{\”body\”: \”$(base
Ruby × Amazon Bedrock × Claude 3 Sonnet
# はじめに
Bedrockを利用した機能の検証を行う必要があったため、備忘録として残しておこうと思い書いています。
とある個人間中古車プラットフォームでユーザーの投稿内容が規約に違反していないかをチェックしたいという要件をビジネス部門から受けました。
そのため、生成AIを利用し、チェックを行う、あわよくばマスキングしてもらおうと思い検証しました。
Bedrockを利用する理由は以下のとおりです。
– すでにAWSを利用しているため、すぐに使えること
– 使った分だけの費用であること (会社でOpenAIなどの個別の契約がなく、新規で固定費をかけたくなかった)
– Claude3の評判が良いチェックしたい情報は以下です。
– 電話番号やメールアドレスなどの直接コンタクトが取れるような情報
– コンプライアンス上望ましくない言葉# まずは、BedrockをRubyから呼び出す
モデルの呼び出しまでについては以下を参考にしました。
https://www.xmisao.com/2024/04/27/invoke-claude3-opus-from-ruby-aws-sdk.html
TerraformでDynamoDBに一気にデータを突っ込みたい時のやつ
### 結論から
TerraformでMapをListにして突っ込む方法があまり検索に引っかからないのもあり、残しておくことにした。“`terraform:main.tf
resource “aws_dynamodb_table” “example” {
name = “ExampleTable”
billing_mode = “PAY_PER_REQUEST”
hash_key = “PartitionKey”
range_key = “SortKey”attribute {
name = “PartitionKey”
type = “S”
}attribute {
name = “SortKey”
type = “S”
}tags = {
Name = “ExampleTable”
}
}locals {
list = [
{ PartitionKey = { S = “hoge” }, SortKey = { S = “1” }, Con
【DBS-C01】DBS合格体験記
## はじめに
先日、AWS Certified Database – Specialtyを受検し、合格しました。
本試験は、2024/04/29を最終受検日として廃止されているので、今後の受検の参考にはならないと思いますが、記録として残しておきます。https://aws.amazon.com/jp/blogs/news/aws-certification-retirements-and-launches/
## 受検時の状態
– 入社3年
– 業務でAWSを触る環境
– AWS CLF, SAA, SOA, DVA, SCS取得済み## 勉強期間
2か月## 勉強時間
合計30時間ほど内訳
就業後0.5~1時間 電車移動時2時間## 使ったもの
:::note
AWS Certified Database – Specialty Official Practice Question Set (DBS-C01 – Japanese)
:::
:::note
[AWS 認定データベース — 専門知識 AWS Certified Database – Speci
Lambda 関数 URL で OAC で CloudFront 経由の実行のみを許可する
# 概要
https://aws.amazon.com/jp/about-aws/whats-new/2024/04/amazon-cloudfront-oac-lambda-function-url-origins/
# 抑えておくべき用語
## Lambda 関数 URL
API Gateway 無しに Lambda のメニューから機能を ON にするだけ HTTPS 公開ができる。
https://qiita.com/leomaro7/items/f2142431e10cd7cc470d
## OAC
指定された CloudFront ディストリビューションからのアクセスのみにする。
https://qiita.com/leomaro7/items/b9deda523f0c94a494ca
# やってみる
## Lambda 1
Lambda 関数は単純に Hello World を返すもののため省略します。
関数 URL には「**AWS_IAM**」を指定。
![スクリーンショット 2024-05-01 15.46.43.png](https://qi
AWSアカウントとRoute53の最適化
# はじめに
年末から多忙を極め、書きたい記事も中々書けなかった [@\_\_\_nix___](https://twitter.com/___nix___) です。# 背景
様々な企業さまのお手伝いをする中で、AWS環境とRoute53の最適化がされていないと「何で?」と思うことが多々ありました。
また、IaC による開発でも「開発しているAWS環境で閉じられない」というのはインフラとしても手数が掛かるので出来るだけ運用をスマートにしたいと考えるわけです。例えば開発環境で Amplify を使っているケースで、「カスタムドメイン設定したいのでレコード追加してください」という依頼。IaC なんだからインフラ頼らなくても良くね?と。
AWS使ってるのであれば出来るだけ設定は環境毎に閉じて欲しいという思いからこの記事の執筆を決めました。
# 概要
AWSアカウントとRoute53の関係を最適化する為には DNSの権限委譲 を理解する必要があります。
この権限委譲の説明と手順を交えながら進んでいこうと思います。# DNSの権限委譲
## DNS権限委譲とは?
DNSの権
AWS SQS/Lambda/SNSにS3を連携し、メール通知を行ってみる[03]
こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。今回はAWS SQS,Lambda,SNS環境にS3を追加して、S3に何らかのデータがアップロードされた際にメールが通知される環境を構築していきたいと思います。
今までの記事は以下となります。
https://qiita.com/ohtsuka-shota/items/e2b62e5ab61a90807264
https://qiita.com/ohtsuka-shota/items/4daaf14c03705ee0ad05
# 最終的な構築イメージ
以下環境を作っていきます。今回はS3を実装していきます。
![aws-django01-ページ6.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/426843a2-5d28-7283-96dc-22fb1cbe3e34.png)# 構築
## S3の作成
バケットの作成を押下します。
![image.png](https://qiita-i
AWS Lambda/SNSにSQSを連携し、メール通知を行ってみる[02]
こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。
最近、とある事情でAWS関連のインプットをよくしています。今回はAWS LambdaとSNSで構築したメール通知環境にSQSを追加していきたいと思います。
前回の記事は以下となります。
https://qiita.com/ohtsuka-shota/items/e2b62e5ab61a90807264
# 最終的な構築イメージ
以下環境を作っていきます。今回はSQSを実装していきます。
![aws-django01-ページ6.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/426843a2-5d28-7283-96dc-22fb1cbe3e34.png)# 構築
## SQSの作成
SQSの管理画面にアクセスします。キューを作成を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/
AnsibleでAWS S3にファイルを登録してみる
# AnsibleでAWS S3にファイルを登録してみる
★ この記事は3年前に執筆し、投稿し忘れていたものを投稿したものです
## 背景
お仕事でローカルファイルをAWS S3にアップロードする要件がありました。
AWS CLIでは何度もやってますが、今回はAnsibleから行うのが要件の一つにありましたので試してみることにします。## 参考
・[Amazon AWS Collection](https://galaxy.ansible.com/amazon/aws?extIdCarryOver=true&sc_cid=701f2000001OH7YAAW)
・[amazon.aws.aws_s3 – manage objects in S3.](https://docs.ansible.com/ansible/latest/collections/amazon/aws/aws_s3_module.html)## どうやればできる?
調べてみると、Ansibleには「amazon.aws」モジュールが存在していました。
こちらのモジュールを使えばAWSの各サービスに
AWS EventBridge での失敗と教訓
やらかしを教訓として残します
# 機能概要
– 契約しているクライアントさんに対して、メールを送信するAPIを作成
– そのAPIのエンドポイントをAPI送信先として登録
– EventBridge で毎月1日の8時に、登録したAPI送信先に対してリクエストを送信# 起こったこと
該当のAPI送信先に10分間隔でリクエストが発生しており、クライアントさんに対してメールを送信し続ける事例が発生
## 無駄だった対応
デフォルトから設定変更をしていなかったため
再試行ポリシーの再試行回数が185に設定されていたのを0に変更![スクリーンショット 2024-05-01 120159.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76272/a6dc92ce-a0dc-a102-53cf-9a854779bd72.png)
どうやら設定変更前に発生したイベントに対して、新しい設定は反映されないようですね…
## 適切だった対応
該当の EventBridge を無効化して、登録していたA