- 1. 【AWS×Webアプリ】CloudFront+Basic認証
- 2. AWS Transit Gatewayを試してみた
- 3. AWS始めたての新人におすすめの初期設定
- 4. VPC エンドポイント for KMS を設置してみた
- 5. LLMはExcel方眼紙を読めるのか?
- 6. S3バケットのパブリックアクセス有効の検知と自動修復
- 7. S3で発行した署名付きURLの有効期限が設定した期限より早く切れてしまう
- 8. AWSインスタンスのホスト名が変わってしまっていたときの対処方法
- 9. terraform で作成した api gateway + lambda をローカル環境で動かす手法
- 10. Lambda でコンテナを動かすときのコールドスタート時間を計測する
- 11. 【初心者🔰】AWS Solutions Architect Associate (SAA-03) 取得の振り返り
- 12. 【AWS】AWS Certified Data Engineer – Associate(DEA)に合格したので感想戦【認定対策】
- 13. AWS SDK for phpを使って、一括送信機能を実装する
- 14. 【AWS】Cognitoを用いてシステム間認可してみた
- 15. RailsアプリActiveRecordのスロークエリを改善した話
- 16. AWS上で Swift の Lambda を動かしてみる
- 17. AnthropicとCohereとBedrockのTool Useを比較
- 18. AWS LambdaでBedrock APIを呼び出す
- 19. プロキシ環境下のローカルPCに “Dify” を導入して、Bedrockする
- 20. 【これでOK!】FlaskアプリをECS(Fargate)で動かすまでのHelloWorld
【AWS×Webアプリ】CloudFront+Basic認証
## 目的
・AWS上の静的Webサイトホスティングを有効にしたS3をCloudFrontで公開。
・Basic認証を実装。## 前提条件
・SAMを使用してAWS上にリソースを作成する。
・Amazon CloudFront KeyValueStore+CloudFront Functionsを使用して実装する。## 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3637963/5e8df92c-3413-2859-46e7-ab9d0dd1a174.png)## SAMテンプレート
“`template.yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Transform: AWS::Serverless-2016-10-31Resources:
WebBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub ${AWS::
AWS Transit Gatewayを試してみた
# 背景・目的
以前、[AWS Transit Gatewayを整理してみた](https://qiita.com/zumax/items/52828a4dd06cbd9fcf63)で、Transigt Gatewayの基本的な知識やユースケース等を整理しました。
今回は、実際に触って試してみたいと思います。# まとめ
今回は、下記のような環境で試してみました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/28ebdc4e-f022-fbac-8379-854391673fc5.png)
下記の順番で作成しました。
1. ネットワークの作成
1. EC2の作成
1. VPCeの作成
1. Transit Gatewayの作成
1. VPCをTransit Gatewayに接続
1. トランジットゲートウェイと VPC の間にルートを追加
1. セキュリティグループを修正# 概要
よろしければ、[AWS Transit Gatewayを整理してみた](http
AWS始めたての新人におすすめの初期設定
# はじめに
気づけばもう6月です。
新入社員であれば、研修が終わり、現場に配属される頃合いでしょうか?
私にも後輩ができるかもしれないので、初心者なりに、始めたての新人に教えたいことをまとめます。## ①請求アラームは設定するな
早速誤解を生みそうな項目ですが、個人的には請求アラームの設定はおすすめしません。
代わりに、AWSマネジメントコンソールのレイアウトを変更しましょう。![cap01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/13697cf5-fe0a-1525-408f-e8478dc60010.png)
レイアウトはドラッグ&ドロップで編集できます。
![cap02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/981b465c-5a90-469e-9573-d951e136cbae.png)
「最近アクセスしたサービス」、「コストと使用状況」が最上段にある
VPC エンドポイント for KMS を設置してみた
![名称未設定ファイル.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3531294/f9ce1172-1b99-da24-3283-296d37f56c28.png)
# 目的
・EC2からKMSへのアクセスNAT gateway 経由でのアクセスからVPC エンドポイント経由でのアクセスへ変更する。# 導入背景
EC2からKMSへアクセスする際に以下の懸念がありました。
・NAT gateway経由によってExternalなネットワークとなるためセキュリティへの懸念
・EC2からKMSへの通信コスト
・EC2からKMSへのレスポンスタイムこれらの課題を解決するためにKMS用のInterfaceエンドポイントを実装しました。
# VPC エンドポイントを介した AWS KMS への接続について
仮想プライベートクラウド (VPC) 内のプライベートインターフェイスエンドポイント経由で AWS KMS に直接接続することができます。インターフェイス VPC エンドポイントを
LLMはExcel方眼紙を読めるのか?
日本にはExcel方眼紙という文化がありますので、各企業に膨大に存在するであろうExcel方眼紙資産をLLMは読めるのか?という水と油のような事を試してみます。
Excel方眼紙としてはかなり簡易ですが、総務省の「統計表における機械判読可能なデータ作成に関する表記方法について」の悪い例を参考にして作ったもので動作を確認します。
https://www.soumu.go.jp/main_content/000723697.pdf
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/63bd7b31-5ae9-62cd-a0eb-ed7072fff28c.png)
セル結合、1セルの中に複数項目、セルの中に注釈を入れる、同じ行に別の表を入れる、などやってます。
この資料に対して、以下の質問をしてみます。
– 複数データ表のCの費用総額は?
– 注釈込み表において冷凍品は何月のどの商品か?
– 結合表の東京都の市区町村を全て出力してください# テキストのみを抽出する
S3バケットのパブリックアクセス有効の検知と自動修復
## 概要
AWS認定のDOP-C02を受験するうえで、AWS Configをほとんど触ったことが無かったので概要を把握するために試しに触った際の記録。
S3バケットのパブリックアクセスを自動検知するルールがあるらしいので、そりゃ便利だということで試してみる。(TerraformのStateファイルのバックエンドの保管等にも使用するので、意図せずパブリックアクセスが有効になったりすると困るので…)## 手順
1. 検証用のS3バケットを作成する
1. AWS Configを設定する
1. 自動修復アクションを追加する
1. パブリックアクセスを有効にして挙動を確認する## 検証用のS3バケットを作成する
terraformで作成。モジュールは[こちら](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket?ref=v4.1.2)を使用しています。
“`terraform
terraform {
backend “local” {}
required_version = “>=1.3.7
S3で発行した署名付きURLの有効期限が設定した期限より早く切れてしまう
## 概要
– S3に発行した署名付きURLの有効期限をコード内で最長の7日間で設定していたが、7日経っていないのにアクセスできないという課題が発生した
– 原因を調査したところ、署名付きURLの生成時に一時的なトークンが発行されていることがわかった
– どうやら、署名付きURLにて設定した期限(今回だと7日)が来る前に、先に一時的なトークンの有効期限が切れてしまい、結果共有したURLでアクセスできないという問題が発生していた## 結論
– 署名付きURLの有効期限を12時間以上に設定する場合、IAMユーザーの認証情報を付与して署名付きURLを生成する必要がある## 原因がわかるまでの過程
– 状況
– Pythonで、botoを使って署名付きURLを生成していた
“`python
def generate_presigned_url(self, access_key, secret_key, filename, bucket, expires_in) -> str:
s3 = boto3.client(
AWSインスタンスのホスト名が変わってしまっていたときの対処方法
# 概要
AWSのインスタンスを`reboot`したらホスト名が変わってしまうことがあります。
原因としては、↓です。
> Amazon EC2 でインスタンスを起動するとき、起動後にそのインスタンスにユーザーデータを渡し、一般的な自動設定タスクを実行したり、スクリプトを実行したりできます。2 つのタイプのユーザーデータを Amazon EC2 に渡すことができます。シェルスクリプトと cloud-init ディレクティブです。https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/user-data.html
# 解消方法
### インスタンス起動時に`cloud-config`をユーザーデータを設定する。
1\.インスタンス起動時に高度な詳細を開く
![スクリーンショット 2024-06-08 23.07.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2620245/b169f38f-8639-30da-55a6-392c
terraform で作成した api gateway + lambda をローカル環境で動かす手法
api gateway + lambda の構成を作成したらローカルで動かして動作確認をしたいですよね。
今回は、terraform で作成した上記リソースをローカルで動かす方法をまとめました。
意外と癖が強くて、動くようになるまで苦戦しました。そのあたりについても書いていこうと思います。# はじめに
AWS は公式で AWS SAM というサーバレス環境構築ツールを提供しています。
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html
こちらは宣言した内容をそのままAWSにデプロイできる上、dockerを使えばローカルで動作させることも可能な優れものです。ただ、リソースを作成するために書くSAMテンプレートはなかなか癖があり、学習コストも少し高めです。
公式もそれを意識しているのか、2年ほど前に terraform で作成したコードからSAMテンプレートを作成してくれるツールが発表されました。https://aws.ama
Lambda でコンテナを動かすときのコールドスタート時間を計測する
# はじめに
Lambda でコンテナを使って動かすことができます。このときに、コールドスタートの時間がどれくらいになるか自信がなかったので、手元で簡単に試してみる記事です。コールドスタートの試行回数は数回程度なので、しっかりした検証ではない点を理解したうえで、この記事を活用ください。また、時期によってもパフォーマンスは変わってくると思うのでその点もご留意ください。
# 検証結果
個人的な意見ですが、コールドスタートでも、起動がかなり高速だと思いました。ざっくり以下の 2 パターンの検証です。
– コンテナイメージサイズ : 以下の 2 種類
– 100 MB
– 10,000 MB (約 10 GB)
– コンテナイメージ内のアプリケーション : bash script を実行
– Lambda 関数のメモリ : 1024 MB
– VPC : VPC 外で実行![image-20240608180505909.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/23
【初心者🔰】AWS Solutions Architect Associate (SAA-03) 取得の振り返り
# 目次
|題目|
|:—|
|[はじめに](#はじめに)|
|[AWS-SAA-03の結果](#AWS-SAA-03の結果)|
|[使用教材](#使用教材)|
|[ざっとした範囲について](#ざっとした範囲について)|
|[最後に](#最後に)|# はじめに
こんにちは!今年から社会人1年生になりました、@mto2yma2です。早いもので社会人になってから3ヶ月目に突入しました…
今回はゴールデンウィーク前に受験したAWS-SAAの合格体験記と振り返りとして記事を書いていきます!勉強法、大まかな勉強時間などをシェアできればと思います:sunglasses:
受験時のSAAのバージョンは03となっているので、最新版に対応しています!!!
情報系をバックグラウンドに持たない素人の備忘録として見ていただけると幸いです。とりあえず改めて……↓
– **筆者のスペック**
・社会人1年生(工学系出身)
・コーディング能力なし、開発経験なし
・過去大学在学中にCLFを取得(https://qiita.com/mto2yma
【AWS】AWS Certified Data Engineer – Associate(DEA)に合格したので感想戦【認定対策】
## はじめに
AWSの認定資格は2024年6月8日現在、有効なものが10種類あります
その中で今年新しく追加されたAWS Certified Data Engineer – Associate(DEA)の認定に合格したのでその振り返り記事を投稿します。
どんな問題が出たかをここで書くことができませんが、どういう観点で対策すべきかを記載しますので今後の学習の参考にしていただけると幸いです。https://aws.amazon.com/jp/certification/
試験結果
![試験結果.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/bb6abc7f-26ea-725c-c5ac-b8106ef86840.png)## どんな試験か
どんな試験かについては公式の試験ガイドに記載がありますhttps://d1.awsstatic.com/ja_JP/training-and-certification/docs-data-engineer-associate/AWS-Cer
AWS SDK for phpを使って、一括送信機能を実装する
## 概要
SesV2Clientを使って、メールテンプレート登録、一括送信機能を実装しました。意外とドキュメントにも書いていないことがあったので、役にたてばと思い記事を書きます。
## この記事で伝えたいこと
– ローカル環境でSDKを使ってメール送信機能を実装する手順
– 初見のAWSサービスを使うときのアプローチの仕方
## 前提
– ローカルでSES APIを使うためのコンテナ作成
– CLIコマンドの準備
(ローカル環境の参考はこちら https://zenn.dev/machui/articles/bfd998c086d81f)
(CLIコマンド準備 https://zenn.dev/hayato94087/articles/7848e9d6a2e3d6)
## メールテンプレート登録、一括送信をSDKで実装するときの流れ(ローカル環境)
– まずAWS CLIで動くか確かめる
– エラーが出るので必要な項目、必要な形式がわかる。
– SDKに直して、実装する。
初めからSDKを使った方が早いように思えますが、上記の手順で必要な項目を絞っていくのが一番早い気がします。急がば
【AWS】Cognitoを用いてシステム間認可してみた
## はじめに
### 背景・目的
– M2M認可(システム間認可)の実装方式について、有効期限やアクセス範囲を持つことによるセキュリティ観点から、OAuth 2.0を採用することがあるかと思います。
– Amazon Cognitoを用いることで、OAuth 2.0 Client Credentials GrantでのM2M認可を簡易に実装することができます。
– 本記事では、OAuth 2.0 Client Credentials Grantの概要、及びAmazon Cognitoを用いたM2M認可の実装方法について解説します。### 想定読者
– `M2M認可の実装方式に関心がある`、`OAuth 2.0の概要を理解している`、`Amazon Cognitoのサービス概要を理解している`方を想定して、本記事を執筆しています。
## OAuth 2.0 Client Credentials Grantの概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3562653/a
RailsアプリActiveRecordのスロークエリを改善した話
# 背景
私は普段Railsアプリケーションを運用保守しています。
ある日、アプケーションで使用しているAWS RDSのCPU使用率が100%張り付きになってしまう問題が発生しました。
今回はその問題を解決するまでの道筋を記載していけたらと思います。# 解決までの流れ
解決までの流れはざっくり書くと以下です。
1. AWS RDSのCPU使用率メトリクスを確認し、問題発生時刻を把握
1. AWS CloudWatchで該当時刻のスロークエリログを確認し、問題となるクエリを特定
1. クエリをEXPLAIN
1. 該当のクエリが作られるActiveRecordを特定、EXPLAINした結果を元にコードやDB設定を修正
1. テスト、リリース# 1. AWS RDSのCPU使用率メトリクスを確認し、問題発生時刻を把握
RDS > データベース > 該当のデータベース > モニタリング > CPU使用率
で確認できます。
# 2. AWS CloudWatchで該当時刻のアプリケーションログやスロークエリログを確認し、問題となるクエリを特定
※スロークエリログをCloudWa
AWS上で Swift の Lambda を動かしてみる
サーバー系は苦手なのに、必要に迫られて AWS で APIを実装する必要性に迫られた。別に、Node.jsやJavaを使えば、もっと簡単に実装できるかもしれないけれど、やはり Swift での実装にこだわってみた。
## 情報収集
まずは「aws、lambda、swift」くらいで検索してみる。このあたりがトップででてくる。
https://github.com/swift-server/swift-aws-lambda-runtime
https://www.swift.org/blog/AWS-lambda-runtime/
このあたりも気になる。
https://developer.apple.com/videos/play/wwdc2020/10644/
## Projectを作成
“`sh
mkdir mylambda
cd mylambda
“`次の構造のようにファイルを構成します。
“`
$ tree .
.
├── Package.swift
└── Sources
└── mylambda
└── main.swif
AnthropicとCohereとBedrockのTool Useを比較
先に結論
| 接続先→
↓使用するSDK | Claude 3 (Anthropic) | Claude 3 (Bedrock) | Command R (Cohere) | Command R (Bedrock) |
| — | :-: | :-: | :-: | :-: |
| [Anthropic Python API library](https://github.com/anthropics/anthropic-sdk-python) | ✅️ | ✅️ | | |
| [Cohere Python SDK](https://github.com/cohere-ai/cohere-python) | | |✅️ | ✅️ |
| Boto3 | |✅️ | |✅️ |Boto3を使う場合、呼び出し方は統一されているが、レスポンスが統一されない印象
## Anthropic Python API library
[こちら](https://github.com/anthropics/courses/blob/master/ToolUse/02_your
AWS LambdaでBedrock APIを呼び出す
[link-1]: https://qiita.com/MhalTeddy/items/5fe8d8ace7b48e1fadec “Amazon Bedrock APIの基本”
[link-2]: https://qiita.com/MhalTeddy/items/b8917f72a32ca5d389dc “AWS CLI”
[link-3]: https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html “Lambda Permissions”## はじめに
生成AIのRAGシステムを構築する前段階として、AWSのLambdaから生成AIモデルを呼び出してみました。
実行ロールの割り当てに引っかかって時間を使ったので、やり方をまとめました。## Amazon Bedrockの事前準備
まず、AWS CLIをインストールして認証します。
方法は[AWS CLIを使い始めるまで][link-2]に書いています。次に、Bedrockへのモデルアクセスとトークンの発行を行います。
こちら
プロキシ環境下のローカルPCに “Dify” を導入して、Bedrockする
# はじめに
お疲れ様です。yuki_inkです。今年のGWあたりからにわかに「Difyがすごいらしい」と話題になりましたが、今まで触れられていませんでした。
https://dify.ai/jp
それから約1か月が経ち、ネット上の情報がかなり厚くなってきた今日この頃(界隈の皆さん強すぎですね)
ちょっと調べてみると、どうやらDifyはローカル環境でも動くらしいとのこと。
え、自社端末で使いたい!!
というモチベーションで色々やってみたという記事です。# やったこと
1. WSL 導入
1. Docker 導入
1. Git 導入
1. Dify 導入
1. Dify で「ワイのかわりに検索くん」を作る
1. 「ワイのかわりに検索くん」をBedrockする## 前提条件
– Windows10のPCで作業しています。
– Docker Desktopは利用しません。
– この記事ではプロキシの IP アドレスを `192.168.11.9`、プロキシのポートを `3128` として説明します。
この記事を参考にされる際は、実際のプロキシの情報に置き換えて設定してくださ
【これでOK!】FlaskアプリをECS(Fargate)で動かすまでのHelloWorld
# はじめに
以前に書いた以下の記事の反響が良く、有難いことに多くの方に見ていただきました。
https://qiita.com/tatsuya11bbs/items/a7898275535a766718bf
ただ、最新のマネージコンソールとの差異が出てきましたので最新版に書き直しました。ECSを学びたい人の最初の取っ掛かりになればと思います。ではECSのHello Worldをやっていきたいと思います。
# 事前学習 (ECSとは)
マネージコンソールで操作をする前に以下を理解してから始めましょう。
#### ★コントロールプレーン & データプレーン
まずは、ここの理解が必要です。Fargateを調べていると “ECS”やら “EKS”が出てきて混乱してしまします。その部分の整理をまずはしましょう。コンテナを運用していくにあたり、「コントロールプレーン」と「データプレーン」の2つに大きくは分けることができます。コントロールプレーンとは、コンテナな管理をするところで、サッカーで言うと監督的なポジションです。このコントロールプレーンが指示を色々出してコンテナを動