- 1. LambdaでExcelファイルをエクスポートすると文字化けしてしまう
- 2. AWS クラウドプラクティショナー 試験対策まとめ
- 3. 年末に AWS の無駄なリソースを切り落とす(備忘)
- 4. AWS WAF の CrossSiteScripting_BODY ルールでバイナリデータを格納したリクエストがブロックされる
- 5. Step Functionsを利用してNAT Gatewayを自動作成/削除する
- 6. [Golang]Lambda+APIGatewayでミドルウェアを作るには?
- 7. Parser Lambda機能を使って、自然言語でコマンドプロンプトを操作する【Agents for Amazon Bedrock】
- 8. Amazon Bedrockに画像生成のプロンプトを作ってもらうPythonコードを書く
- 9. ALB と ECS on Fargate を利用する際の疎通設定
- 10. Amazon EKS – アクセスエントリ
- 11. 【AWS】ElastiCacheのバックアップについての備忘
- 12. ALB 1台 vs ALB 2台の比較
- 13. EKSのAPIサーバーエンドポイントの設定の違いをまとめた
- 14. プライベートサブネットのEC2へRDP接続する
- 15. EC2からAurora(PostgreSQL互換)を利用する際にはまったポイント
- 16. 別のアカウントにあるCodeCommitを起点にCodePipelineを動かしたい
- 17. チームみんなでAWS資格取ったぞい
- 18. 【AWS】EventBritgeで検知対象としたいイベントの確認方法
- 19. AWSのSticky Sessionを作成(スティッキーセッション)
- 20. マイクラデータパック、リソースパック開発のCI/CD環境を構築 ~準備編~
LambdaでExcelファイルをエクスポートすると文字化けしてしまう
## はじめに
バックエンドにLambdaを使用しているのですが、Excelファイルをそのまま返却しようとすると文字化けしてしまうエラーが発生しましたので、解消方法を記載しておきます。## 対象者
この記事は下記のような人を対象にしています。– PythonのopenpyxlでExcelファイルを作成している
– Lambdaを使用している## 結論
Base64エンコードを使用します。【サーバー側】
“`python:excel.py
import openpyxl
import base64
import tempfile
import jsondef export_excel():
wb = openpyxl.Workbook()
# ここでシートにデータを書き込むwith tempfile.NamedTemporaryFile(delete=False, suffix=”.xlsx”) as tmpfile:
wb.save(tmpfile.name)
with open(tmpfile.name, “
AWS クラウドプラクティショナー 試験対策まとめ
# はじめに
今回は試験対策として、「AWS認定資格 クラウドプラクティショナーの教科書: 合格へ導く虎の巻 CloudTech制作委員会シリーズ」を読んでのまとめ記事になります。参考URL:[https://www.amazon.co.jp/AWS認定資格-クラウドプラクティショナーの教科書](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E5%90%88%E6%A0%BC%E3%81%B8%E5%B0%8E%E3%81%8F%E8%99%8E%E3%81%AE%E5%B7%BB-CloudTech%E5%88%B6%E4%BD%9C%E5%A7%94%E5%93%A1%E4%BC%9A%E
年末に AWS の無駄なリソースを切り落とす(備忘)
年の瀬に、不要なAWSリソースを放置していることに気付いたので・・・。
Billing and Cost Management を見ながらお掃除します。
備忘のために記録しておきます。
2023 年、唯一の投稿がこれか・・・。
2024 年はもうちょい色々やって投稿したい。# DynamoDB
確認すると、2 つほど不要なテーブルを発見。
名前からすると、趣味のソフトテニス関係で何かをやろうとしたときに作成したテーブルっぽい。
もう全然覚えてないや・・・。チェックを入れて、「削除」ボタンをクリック。
![dynamo-db_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244560/4759bc24-c7a4-71c9-76d9-c54f75811e63.png)オンデマンドバックアップはいらないかな。
「確認」を入力し、「削除」ボタンをクリック。
![dynamo-db_02.png](https://qiita-image-store.s3.ap-northeast-1.amazo
AWS WAF の CrossSiteScripting_BODY ルールでバイナリデータを格納したリクエストがブロックされる
# はじめに
Amazon API Gateway の REST API に、AWS WAF のコアルールセット(CRS)マネージドルールグループを設定しています。リクエストボディにバイナリデータを格納してこの API をリクエストすると、コアルールセット(CRS)マネージドルールグループに含まれる“CrossSiteScripting_BODY“ルールでリクエストがブロックされることがありました。
なぜバイナリデータでクロスサイトスクリプティング?と疑問に思い、色々調べてわかったことをまとめます。
# コアルールセット(CRS)マネージドルールグループとは
一般的な Web アプリに必要になるであろうファイアウォールのルールを、ひとまとめにしてくれている AWS WAF のマネージドルールグループです。[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-ba
Step Functionsを利用してNAT Gatewayを自動作成/削除する
## 概要
本記事ではStep Functionsを利用して、Nat Gatewayを自動で作成/削除する方法について記載します。
NAT Gatewayは作成しているだけでコストがかかるリソースであり、開発環境の利用していない時間帯などは停止(削除)することでコスト削減につながります。同じことを以下の記事でCloudFormationを利用して説明していますが、今回はStep Functionsを利用して実施したいと思います。
以下のことをStep Functionsを利用して実現します。
* 作成時
* 既に存在するElastic IPとSubnetを指定してNAT Gatewayを作成する。
* ルートテーブルを更新し、デフォルトゲートウェイ(0.0.0.0/0)のルーティング先をNAT Gatewayにする
* 削除時
* NAT Gatewayを削除する
* ルートテーブルからデフォルトゲートウェイ(0.0.0.0/0)のルー
[Golang]Lambda+APIGatewayでミドルウェアを作るには?
ここ最近はあまりAPIGateway+LambdaのRestAPIを作ることはありませんでしたが昨年からGolangに仕事の言語が切り替わったこともあり、改めて作ってみることにしました。
そこで今回はミドルウェアを作ります。
ECSなどでやるのであればGinなどのWebフレームワークのミドルウェアを作れば良いのですが今回はそうはいかないので自分で作って見ます。
## なぜミドルウェアを作るのか?
Lamdbaに限らず、Webアプリではほぼ全てのAPIに使う共通的な処理があります。
例えばハンドラーのところの実行前に認証をしたり、入口と出口のロギングなどですね。
他の開発同様に共通処理の部分を作れるように2つのミドルウェアを用意します。
## 固定の共通処理の場合
速度測定のロギングなどやエラーハンドリング、認証で使うことが多いです。
“`golang
func middleware(next func(context.Context, events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, er
Parser Lambda機能を使って、自然言語でコマンドプロンプトを操作する【Agents for Amazon Bedrock】
## この記事を2行で
– Agents for Amazon BedrockのParser Lambdaについて説明します
– LLMの応答をコマンドプロンプトのコマンドに整形して、ローカル環境を動かす例を説明します※Agents for Amazon Bedrockは長いので、この記事では`Agents for AB`または`A4AB`と呼びます。
## 前提:Parser Lambda機能って何?
`Agents for AB`の機能です。AWS公式のドキュメントはこちらです。
https://docs.aws.amazon.com/bedrock/latest/userguide/lambda-parser.html
主に2つのことができます。
– 応答を書きかえることができます
– 判断を上書きすることができます**応答を書きかえることができます**
次の画像は、LLMが返した自然な文章を整形して、Windowsのコマンドプロンプト上で実行できるコマンドの形にした例です。
![llm-chain.png](https://qiita-image-sto
Amazon Bedrockに画像生成のプロンプトを作ってもらうPythonコードを書く
## はじめに
Amazon Bedrock(以下Bedrock)使って画像生成するアプリを作ろうとしてます。(画像生成AI好きなので趣味として)
以前「Stable Diffusion XL 1.0のAPIを叩く->作成された画像をS3に格納する」部分をAWS Lambda(以下Lambda)で作ったので、今回は与えたキーワードをもとにプロンプトを生成する部分のコードを書きたいと思います。
前回の記事はこちら
[Amazon Bedrockで画像生成&S3保存するPythonコードを書く](https://qiita.com/Pretzelisa/items/61c4d3838bb6ac7ff561)## 1. 構成
今回はキーワードからTitan Text G1 – Expressに画像生成用のプロンプトを作ってもらいます。返却されたプロンプトを引数に、Stable Diffusion XL 1.0のAPIを叩くLambdaを呼び出します。今Amazon API Gateway – Lambda間の連携はしていませんが、イメージとしてはこんな感じです。
![Bedr
ALB と ECS on Fargate を利用する際の疎通設定
## 背景
AWSを基盤に**ECS on Fargate**で稼働するWebアプリケーションを開発することになった。
アプリケーションには前段に**ALB**を置いて、インターネット経由のHTTPSアクセスをALBで受け付けて、ALBからトラフィックがルーティングされるような構成をとることになった。
以上のようなシステムを構築する際に、「エンドユーザー(クライアント) – ALB – ECSタスク」のネットワーク疎通のためにどのリソースでどの設定項目でどのような設定が必要になるかが分かりづらかったので整理してみた。システム構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271327/0a1fca02-58e4-f6e5-e5ad-aef89476e7bf.png)なお、以下を前提とする。
– Public Subnetに紐づく**ルートテーブル**にて**Internet Gateway**経由でインターネットと疎通する設定は済んでいる
– **ネットワークACL**は
Amazon EKS – アクセスエントリ
# アクセスエントリ
Kubernetes クラスタへの IAM プリンシパルのアクセスを管理するための新しいコントロールセット。
特定の IAM プリンシパルに EKS アクセスポリシーを直接関連付けることで操作を行う。# 利用可能な EKS アクセスポリシー
IAM プリンシパルに付与可能な EKS アクセスポリシーは以下の通りです。
“`json
aws eks list-access-policies
{
“accessPolicies”: [
{
“name”: “AmazonEKSAdminPolicy”,
“arn”: “arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy”
},
{
“name”: “AmazonEKSClusterAdminPolicy”,
“arn”: “arn:aws:eks::aws:cluster-access-p
【AWS】ElastiCacheのバックアップについての備忘
# ElastiCacheのバックアップについての備忘
## ElastiCacheのバックアップ方法
– **手動バックアップ**
以下を設定できる
– ソースにするノード
– バックアップの名前
– 暗号化キー
– タグ
– **自動バックアップ**
クラスターの設定で有効化する
以下を設定できる
– ソースにするノード
– バックアップの保持期間
– バックアップの開始時刻
– バックアップが開始される時間の幅## イベントについて
また、バックアップに起因した処理を行うためにCloudTrailのイベント履歴を確認したのだが、両者には以下の違いがあった
**手動バックアップ**
イベント名「CreateSnapshot」がCloudTrailに履歴として表示される
**自動バックアップ**
イベントがCloudTrailに履歴として表示されることはない## python boto3について
python boto3でスナップショットの情報を取得すると以下のようになる
(スナップショットを作成日でソー
ALB 1台 vs ALB 2台の比較
## 背景
AWS基盤のシステムでECS on Fargateで稼働させるコンテナベースのアプリケーションを2つ開発することになった。
どちらのアプリケーションも前段にALBを置いて、インターネット経由のHTTPSアクセスをALBで受け付けて、ALBからトラフィックがルーティングされるような構成をとることになった。
以上のようなシステムを構築する際に、ALB 1台を2つのアプリケーションで共用する構成が可能か(案1)、それともアプリケーションごとに専用のALBを用意する構成をとるべきか(案2)という相談を受けた。案1:ALB1台の構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271327/aa0fa1f9-53fb-31b1-b58a-0f5f5812e9f0.png)案2:ALB2台の構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271327/31312d2a-ec
EKSのAPIサーバーエンドポイントの設定の違いをまとめた
## 背景
普段は現場のクローズドなEKSしか触っていなかったため、APIサーバのエンドポイントのパブリックアクセスなるものを知らなかった。
[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/cluster-endpoint.html)を読んでなんとなく理解したものの、実際の挙動が気になってしまったので動作検証してまとめてみた。## 概要
|マネジメントコンソール上での名称|パブリックアクセス|プライベートアクセス|同一VPCからのアクセス|インターネット経由でのアクセス|
|—|—|—|—|—|
|パブリック|有効|無効|-|◯|
|パブリックおよびプライベート|有効|有効|◯|◯|
|プライベート|無効|有効|◯|-|### 「パブリック」設定時の挙動
– EKSクラスターの作成時のデフォルトの設定
– VPC内の踏み台サーバやワーカノードからのコントロールプレーンへのアクセスはVPC外の通信となる
– 必要に応じてパブリックエンドポイントへのアクセスできるCIDRを
プライベートサブネットのEC2へRDP接続する
# はじめに
EC2 Instance ConnectはEC2インスタンスをパブリック公開することなく接続できる便利なサービスである。今回は、既存のプライベートサブネットに新たに立ち上げたEC2インスタンスへの接続方法をまとめる。### 前提
– クライアントPCにAWS CLIがインストールされていること
“`powershell
aws –version
aws-cli/2.15.5 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
“`
– Intance Connectコマンドが通ること
“`powershell:powershell
aws ec2-instance-connect open-tunnel
“`## Step.1 VPCエンドポイントを作成する
EC2を設置したいプライベートVPCサブネットに専用エンドポイントを設置する。「AWSのサービス内」から選択できない専用のエンドポイントサービスである。選択例
![image.png](https://qiita-image-store.s3.ap-no
EC2からAurora(PostgreSQL互換)を利用する際にはまったポイント
### 背景
AWS基盤で構築中のシステムにてデータストアとしてAurora(PostgreSQL互換)というRDBのサービスを利用することになった。
Auroraのテーブル作成やデータ投入などの開発作業のために、SQLクライアントとして、Cloud9というマネージドのEC2(仮想サーバ)をホストできるサービスを用意した。Cloud9はWeb IDEのサービスであるが、Terminalを使ってEC2上でコマンド実行でき、複数メンバーで共用も可能であり、料金面でもEC2インスタンス利用料金以外はかからず、しかもしばらく使わなければEC2を自動停止してくれることから、筆者は踏み台サーバのような使い方をよくしている。
Cloud9の詳細は[こちら](https://aws.amazon.com/jp/cloud9/)。システム構成は以下の通り。
Auroraは、PostgreSQL互換のv14.6 を利用した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271327/e64ad34
別のアカウントにあるCodeCommitを起点にCodePipelineを動かしたい
# はじめに
この記事はDevOps on AWS大全 実践編の一部です。
DevOps on AWS大全 実践編の一覧は[こちら](https://qiita.com/tech4anyone/items/c27e74f9ae569ced259f)。この記事では別のアカウントにあるCodeCommitを起点にCodePipelineを動かすアーキテクチャを決める流れを解説しています。
具体的には以下流れで説明します。
– 解決したい課題の整理
– 今回使うAWSサービスの整理
– アーキテクチャの策定
– 策定したアーキテクチャで達成できたことAWSの区分でいう「Level 400 : 複数のサービス、アーキテクチャによる実装でテクノロジーがどのように機能するかを解説するレベル」の内容です。
# この記事を読んでほしい人
– DevOpsエンジニアがアーキテクチャを決めるときにどのような思考フローを踏んでいるか知りたい人
– CodeCommitをクロスアカウントで利用するアーキテクチャを知りたい人
– AWS Certified DevOps Engineer Prof
チームみんなでAWS資格取ったぞい
# チームみんなでAWS資格取ったぞい
チームのみんなで中級者向けのAWS資格であるSAA(Solutions Architect – Associate)を取得しました。この記事では、私たちが合格するために取り組んだことや工夫した点について、合格体験記として書いていきます。
## 対象読者
この記事は以下のような方々を対象にしています:
– 駆け出しエンジニア
– プログラミング初学者
– SAA資格を取得したい方
– チームメンバーと一緒に資格を取得したい方
– チームで資格を取得したい方## きっかけ
私たちのチームはAWSを頻繁に利用する機会が多くあり、会社全体でもAWSを推奨されていました。そのため、いつかはAWSの資格を取得したいと思っていました。しかし、なかなかきっかけがなく時間が経っていました。そこで、自分だけではなくチーム全員で資格取得に挑戦しようという企画を立てました。## 取り組んだこと
– 毎日30分のモクモク勉強会
– 実践を想定した定期的な模擬試験
– 実際の試験への申し込み
– 発起人の私が一足先に合格
– 学習の進め方の共有## 詳細
#
【AWS】EventBritgeで検知対象としたいイベントの確認方法
## はじめに
EventBritge を使用して、S3 に対するイベントトリガーにしたい。
だけど対象となるイベントの形式がわからないからルールを作れない。
上記のような経験はありませんか?本記事は EventBritge のトリガー対象となるイベントの確認方法を記載した記事となります。
## 結論
– CloudTrail に出力されないイベントを検知したいのであれば、
EventBritge で検知範囲を広く設定し SNS で連携されるイベントの全文を確認する
– CloudTrail に出力されるイベントを検知したいのであれば、
CloudTrail でイベント内容を確認しEventBritge の「detail」に挿入## 前提
EventBritgeは各種ログをそのまま検知するのではなく、
以下構造に沿うイベントパターンを検知することが可能となる。“`json
{
“version”: “0”,
“id”: “UUID”,
“detail-type”: “event name”,
“source”: “event source”,
AWSのSticky Sessionを作成(スティッキーセッション)
このチュートリアルでは、一歩一歩、AWSで**Sticky Session**を作成する方法を説明します。
:::note warn
このチュートリアルを進めるには、AWSの**Elastic Load Balancer**のコンセプトに慣れている必要があります。
:::## なぜSticky Sessionを使用し、それは何のためですか?
次の設定を使用するPHPアプリケーションがあるとします:
– アプリケーションロードバランサー
– 2つのEC2インスタンス![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620161/57de4253-52f0-f6a3-fe9b-33014e630b5d.png)
ユーザーがログインすると、弊社の**Elastic Load Balancer**が2つのインスタンス間で負荷を分散します。
ユーザーは最初のインスタンスにアクセスします:
![002.png](https://qiita-image-store.s3.ap-north
マイクラデータパック、リソースパック開発のCI/CD環境を構築 ~準備編~
## はじめに
私の友人がMinecraftのデータパック開発をしており、「データパック開発とかでCI/CD環境があればうれしいな~」みたいなお話があったので、じゃあ、作ってみようかなという感じで作りました。
まだ検証段階でセキュリティやら色々と対応する必要がありますが、ひとまず形になりましたので、やったことを整理しました。ちなみに、私はデータパック開発はできませんし知識もないです。ちょっとfunctionを利用してデータパックをいじれるくらいです。
## CI/CD環境構築の記事一覧
全部書くと長いので4編に分けて説明します。各編で記載されている内容をすべて実施していただければ、CI/CD環境が構築できる状態になるよう努めて参ります。
– マイクラデータパック、リソースパック開発のCI/CD環境を構築 ~準備編~ ★今ココ
– マイクラデータパック、リソースパック開発のCI/CD環境を構築 ~GitLab、GitLab-Runner編~ (準備中)
– マイクラデータパック、リソースパック開発のCI/CD環境を構築 ~GitLab-CI編~ (準備中)
– マイクラデータパ