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

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

RustでのAWS Lambda開発完全ガイド

## 概要

この記事はRustでAWS Lambda開発を行うにあたっての全体プロセスのガイドです。RustでLambda関数を実装し、そのコードを実行するためのDockerコンテナイメージを作成します。次にそのイメージを自動でビルドしLambda関数を更新するCI/CDをCodePipelineで構築します。他に複数のLambda関数を一つのクレートで管理し、それらを一括でデプロイする方法についても解説します。

## なぜRustでLambdaを実装するのか?

まず、Rustは素晴らしいプログラミング言語です。静的型付けによってバグの少ないコードを書くことができます。またcargoという洗練されたパッケージマネージャにより、依存関係の解決やビルドを柔軟かつストレスレスに行うことができます。

Rustで処理を実装することで(他の言語と比較して)処理時間を短く、またメモリフットプリントを小さくすることができます。Lambdaは実行時間とメモリ割当量によって課金されるため、コスト面で非常に有利です。

参考:

https://zenn.dev/hinastory/article

元記事を表示

OACを使用してCloudFrontからS3にアクセスする

# はじめに

この記事のゴールは、CloudFrontのOACを用いてS3に接続し、S3のオブジェクトをCloudFront経由で配信することです。

# 全体の流れ

1. プライベートなS3バケット作成
2. 作成したS3バケットにオブジェクト追加
3. CloudFrontのディストリビューション作成(OAC設定)
4. S3バケットにCloudFrontのOACからのオブジェクト取得を許可するポリシー追加
5. CloudFrontのディストリビューションドメインからS3のオブジェクトにアクセスできることを確認

# 前提のお話

## OACとは

正式名称は「Origin Access Control」で、CloudFrontからS3へ接続する際に使用されるコンポーネントです。
OACが出る前は、「Origin Access Identity(OAI)」が使用されていましたが、このOAIではSSE-KMSで暗号化されたバケットには使用できないなどいくつかの制限がありました。
OACはそのようなOAIでは制限されていたことにも対応できるようになっており、AWS公式でもOAC

元記事を表示

AWS SES – カスタム MAIL FROM ドメイン ( Return Path ) の設定 / From アドレス / DMARC

# 1.カスタム MAIL FROM ドメイン

SESでこの設定をすることで、メールの Return-path を変えて、カスタムドメインにできるようだ

## SES > ID > ドメイン型のIDを作成、または選択 > カスタム MAIL FROM ドメイン

ここでは検証済みの `example.com` のドメイン型IDに対して操作するものとする

ここでは例として `xxx.example.com` をカスタムドメインに設定する

image

## DNSレコードの設定

「カスタム MAIL FROM ドメイン」を設定したら、次はドメインの設定が必要だ

ドメインをR53で管理している場合は、1ボタンでレコード追加ができる

imageAWS基礎 メモ

【AWS基礎知識】
・ECSを使用する場合は日額1ドル程度かかるのでこまめに停止・削除すること
・AWSはクラウドコンピューテングサービス。使った分だけサーバーやインフラを操作できる大量のAPIの塊
・サーバなどのインフラリソースを利用者が直接使えるサービスをIaaSという
・開発者がサーバを管理するのはECSonEC2、開発者がサーバにログインできないのはECSonFargate。
・ECSonFargateはサーバの管理・コンテナ作成をAWSに任せることができる
・利用者がサーバ管理不要なアプリケーションがPaasやFaaS
・PaaSはApp RunnerやElastic Beanstalkがあり、Railsなどで実装したコード一式を用意してアップロードするだけで動かせる
・FaaSはAWS Lambdaがあり、コードが書かれた1ファイルをアップロードするだけで動かせる

管理コストとはバージョンアップやセキュリティパッチの適用のためにかかるコストのこと。制約が少ない。

・リージョンとVPC、サブネット、データセンター、EC2、RDSの関係
リージョンの中にAvailabi

元記事を表示

PodのアプリケーションログをFluentBitを使ってS3バケットに送りたかった(EC2)

普段はアプリケーションの実行基盤にFargateを使用しており、組み込みログルーター(Fluentbit)を使ってログを転送していたが、諸事情でEC2ノードでもアプリを実行することになったため同様にログを外部転送するためにやったことをアウトプット。

## 構成

– EKSクラスターとワーカーノードとしてEC2インスタンス1台(EKS on EC2)
– EC2のノードにDaemonSetとしてFluentbitを起動し、対象とするログを読み込むように設定する
– ログの配信先はS3なので、Fluentbit~Firehose~S3という構成でS3バケットへログを配信、保存する

## Fluentbitのデプロイ

[re:Postの投稿](https://repost.aws/ja/knowledge-center/cloudwatch-stream-container-logs-eks)をなぞるだけです。

まず、namespace「amazon-cloudwatch」を作成します。

“`bash
[root@ip-192-168-0-50 ~]# k get ns
NAM

元記事を表示

EKS on FargateにおいてPodを明示的に(確実に)AZを跨ぎ実装する方法

FargateにおけるPodの配置計画は `Fargate Profile` を用いて管理する。

掲題の問題は2つの問題を分離して考える必要がある。
– Fargate(Node)がどのAZ(Fargate profileで指定するのはsubentだから、実際はsubnet)に配置されるか
– PodがどのNodeで構築されるか

# 前提知識

## k8s スケジューリング(どのNodeにPodを配置させるか
– nodeSelector
– Node Affinity, Node Anti-Affinity
– Inter-Pod Affinity, Inter-Pod Anti-Affinity

## AWS

Fargate profile

目的: Selector(namespace, tag)を指定して、該当PodをFargate上で起動させる
FargateをどのAZに配置するかは管理してないのでは?

妄想

Stateful

元記事を表示

AWSぜみ内容

現状のデータ分析の基盤について
ほかの顧客データなどを実際に活用するハードルは結構高いのでは
→実際にTableau(タブロー)を導入したばかりであり、すぐにQuicksightが使われるわけではない  
実際にサービス評価も行われている、まだ確認できていないが

最初に今回あまり調査実施できませんでした、、
AWS CLIでログデータのデータレイク作ろうとしたらうまく行かなくて、、あまり他の調べができませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3688241/cce7121f-0ca3-fc29-9830-e5b807bd4aad.png)

一方でAWS内のサービスにおいて分析を行うサービスであれば使いやすいのでは?aws
ログ分析を行う基盤など
→Amazon Detective、Security Lakeなどあるが、、

AWS上のアプリケーションでのセキュリティ問題や不審なアクティビティなどがあった際に原因を分析・調査することを支援するサービス

元記事を表示

【AWS】ssh接続にて「Permission denied (publickey,gssapi-keyex,gssapi-with-mic).」エラーと戦った日

こんにちは!
転職成功してからすごーく久々の投稿となります。
インフラエンジニアデビューしてからというもの業務(作業)に追われることばかりになり学習が全くできていませんでした。
本当に良くないとわかっていつつ時間の浪費に追われてしまっていました。
自分の人生なのでやりたいことをやるためにまずSAA取得から頑張ります!

話せば長くなるので本題に。

最近AWSと戦っておりましてudemyの講座で学習中。
EC2インスタンス立ち上げてパブリックサブネットにてWebサーバー構築し、プライベートサブネットにDBサーバー作成、さあsshでアクセスするぞというところでつまずきました。
秘密鍵をコピペしてログインしようと試みるも繋がらない。
エラーメッセージは以下のとおり。

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

権限つけたはずなのになにかがおかしいい。
コピペ元のpemファイルを確認すると以下のように記述されていた。

—–BEGIN RSA PRIVATE KEY—–

元記事を表示

EventBridgeのスケジュール機能を使った自動起動/停止

# 1.はじめに
今回は業務で使っているEC2やDB(RDS、DocumentDB)といったリソースを使っていない時間帯は停止して、コスト削減をしたい!という目的でEventBridgeを初めて使う機会があったので、使い方や設定で詰まったところなどを共有できたらと思います。
本記事ではEventBridgeのスケジュール機能の紹介になるので、AWSアカウントの作成やDBなどのリソース構築については省略させていただきます。

# 2.前提
### 2-1.EventBridgeを使うに至った経緯
「はじめに」もある通り、私の参画しているプロジェクトでコスト削減を目的に、DBや踏み台に使っているEC2を操作しない時間帯(夜間)に停止できないかという施策の提案がありました。
ただ、リソースを平日毎日起動/停止するのは現実的ではない、、、
ということで、スケジュールベースで自動的にリソースの起動/停止をしてくれるサービスとしてEventBridgeを使ってみました。
### 2-2.やりたいこと
基本的には上記にあるとおりですが、イメージとしては次のようになります。
↓今までの曜日時間関係なく

元記事を表示

Amazon ECS Workshop – Cats and Dogs – をやってみた

# 概要
AWSが公式に提供している、「ECS WORKSHOP – CATS AND DOGS-」をやってみたので、
構築した環境をCloudFormationでテンプレート化してみた。

[ECS WORKSHOP – CATS AND DOGS-](https://dcj71ciaiav4i.cloudfront.net/D0B5A980-C9FC-11EB-ABD7-3362918AE194/)

## (結論)以下にテンプレートを入れました

何なりとお使いください。

https://github.com/bamtech1904/aws-hacks/tree/main/009_ecs-workshop-cats-and-dogs

## どんな環境作ってるの?

こんな環境(ワークショップからそのまま拝借)。

![nw-diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524408/f31e8489-dccd-7bb8-9b0a-5ed49c3df920.png)

#

元記事を表示

CloudFormationでEC2のインスタンスタイプをスタック更新時の不安

CloudFormationで構築したEC2インスタンスのインスタンスタイプを変更しようとした際に
少し考えたことがあったのでメモ。

# 背景

既存のEC2スタックを更新して、インスタンスタイプを変更しようとした

![cfn-ec2-instancetype01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524408/f453b235-8811-788a-d85b-6508df224c6c.png)

インスタンスタイプをスペックアップしていざ更新しようとした。

![cfn-ec2-instancetype02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524408/f3ef0999-b1fa-c5b3-c41d-befde03b0fa3.png)

チェンジセットのReplacementが`Conditional`になっている。
通常、ただのインスタンスタイプ更新であれば`False`になると思っ

元記事を表示

RDSのBlue/Green Deploymentをやってみた

# Agenda

今回は、以下のことを解説します。
– RDS Blue/Green Deploymentの概要
– RDS Blue/Green Deploymentデプロイメントの使い方

本動画は以下の方を対象にしています
– RDS Blue/Green Deploymentデプロイを使うメリットが知りたい
– RDS Blue/Green Deploymentデプロイのやり方を知りたい

# RDS Blue/Green Deploymentとは?

![rds-bg-ex01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524408/696d6d40-e236-d995-c55b-ec1fcb5db4d7.png)

まず、Blue/Green Deploymentとは、本番環境(Blue)とステージング環境(Green)を使って、
システム変更作業をダウンタイムなしに行うことができるデプロイ方式です。

Blue/Green Deploymentはとても便利なシステムです。

本番

元記事を表示

AWS BedrockでストリーミングRAG

## はじめに
AWS BedrockでKnowledgeBaseを使う場合、retrieve_and_generateメソッドを利用すると思いますが、ストリーミングに対応していなさそうだったので、やり方を考えてみました。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/bedrock-agent-runtime/client/retrieve_and_generate.html#

※こんな感じになります。(KnowledgeBaseには先日OpenAIが発表した動画生成AI「sora」の紹介記事を登録しています。)

![streamlit-app-2024-02-27-21-02-42-_online-video-cutter.com_-_1_.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/4ece6639-0adb-7216-d5c4-1b0ec2b2e242.gif)

#

元記事を表示

WindowsでDockerを使ってみた3(on AWS)

内容
◉趣旨目標
◉前回の記事からの続き。
◉現状の構成
◉作りたい構成
◉作りたい構成の細部
・VPCの作成
・セキュリティグループの設定
・ECRにイメージをプッシュ。
・ECS(クラスター)作成
・タスク定義
・サービスの作成
・【参考】タスクの実行

## 趣旨目標
前回の記事のアップデート。WindowsでDockerを構築し、MySQLを連携させてデータベースにレコードを追加することができたので、今回は、コンテナをAWS上のEC2,ECSを使用し、コンテナを設置、データベースにレコードを追加するところまで行う。

## 前回の記事からの続き。
前回の記事:
https://qiita.com/nikorasu277/items/18faba6be13a92628644

## 現状の構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/593e867f-6038-9230-948c-37e168ba0a0e.png)

## 作りたい構成
![image.p

元記事を表示

[パート2:実行]S3に保存する前ラムダでサムネイルに画像圧縮の前処理

# 前提

せめてS3・Lambda・IAM権を持っているAWSアカウントそれともIAMアカウント用意

# 概要
こちら記事では詳細な実行を説明させて頂きます。

主な内容が下記のように進めています。

1. バケツ作成
1.1 バケツ作成
2.2 ライフサイクル作成
2. ポロシー・ロール作成
2.1 ポリシー作成
2.2 ロール作成
3. ラムダファンクション作成
3.1 環境作成
3.1.1 初期設定
3.2 ファンクション作成
3.2.1 ロールや処理時間を設定
3.2.2 トリガー設定
3.2.3 環境変数
3.3 ラムダのNode modulesについて
4. テスト行い
4.1 S3アップロード
4.2 結果をチェック
4.3 ログをチェック

## 1. バケツ作成

2つのバケツを作成し、そのうち1つを一時的なバケツとして使用します。この一

元記事を表示

【Terraform/AWS】【入門編2】tfファイル・Terraformコマンドについて

# はじめに
本記事は、AWS初心者でIaCに挑戦してみたい方向けに導入~コード実行までをまとめた内容となります。
前回はTerraformを動かすための前準備手順をご紹介しました。
今回は簡単なコードを例にterraformコマンドの使い方を紹介をします。

なお、[【Terraform/AWS】【入門編】環境準備](https://qiita.com/rittan_girla/items/eefc45c1f9dd0a1761fa/)を閲覧していることを前提としているため、重複する内容は割愛しておりますことをご了承ください。

# 1. Terraformコード準備
Terraformを動かすためにはまずコードが必要となります。
サンプルとして、EC2でAmazon Linux 2023を建てるコードを使います。
Terraform用の作業フォルダを作成して、下記のコード(main.tf)を格納します。

“`main.tf
terraform {
required_providers {
aws =

元記事を表示

【AWS】EC2構築前に考慮すべきこと

## はじめに
初めて勉強しますと言う方に向けた記事になりますので、よろしくお願いいたします。
EC2をただ構築するだけではなく、その後の作業諸々、考えなければいけないことが
あります。別の案件作業や会議等もあるので余裕を持った、スケジュール感を考えないと
行けないと感じました。ハンズオンだけではわからない実務経験をお伝え出来たらと
思います。

## 考慮すべき点
・OS設定(Linux,Windows)
・監視設定(CloudWatchアラーム,使用している監視ツール)
・バックアップ設定(AWS,BackUP,その他バックアップツール)
・既存のパラメータシートの修正または新規でパラメータシート作成
・既存のライセンス(SQLServer等)を持ち込む場合
・タグ設定(EC2,EBS)
## 詳細
### OS設定
EC2の構築自体はパラメータシート(詳細設計書)を見ながら構築を行うので
実際には時間はかかりません。ですがその後の作業は実際どうしたらいい?
って方も多いのではないかと思います。(クラウドから始めた方とか)
基本的な変更点は以下になります。

■ホスト名変更
サーバ

元記事を表示

特定ユーザ除くコンソールログインを一括禁止するように

組織内でIAM(Identity and Access Management)ユーザーからSSO(Single Sign-On)ユーザーへの移行を計画している場合、スムーズでセキュアな過渡期を確保することは非常に重要です。この記事では、IAMユーザーを無効化し、SSOユーザーへ移行するためのプロセスを紹介します。特に、数百人のユーザーを対象とした場合の自動化スクリプトの作成と利用に焦点を当てます。
(忙しい方は直接に最後[スクリプト](#スクリプト)へ)

# IAM無効化の必要性
IAMユーザーをSSOユーザーへ切り替える過程で、IAMの無効化はセキュリティ上のリスクを最小限に抑えるための重要なステップです。一斉に削除することのリスクを避け、過渡期間を設けることで、組織内のすべてのユーザーがスムーズに移行できるようにします。

# スクリプトの準備
IAMユーザーを効率的に無効化するために、AWS Native原則ですぐ使えるCloudshell利用でbashスクリプトを作りました。このスクリプトは、指定されたIAMユーザー以外のログインパスワードを一時的に削除しました。スクリプト

元記事を表示

【小ネタ】EC2 IMDSv2でインスタンスIDを取得する

# これは何?
IMDSv2強制している(IMDSv1を許可しない)EC2で、内部からインスタンスIDを取得する方法です。
業務でEC2内部に入って作業をした時に、証跡でインスタンスIDも一緒に残したい場面があり、備忘としてメモしました。

# 最初に結論
curlのHTTPリクエストヘッダにセッショントークンを含めることで、取得可能です。
“`zsh
# インスタンスID取得
$ TOKEN=`curl -X PUT “http://169.254.169.254/latest/api/token” \
-H “X-aws-ec2-metadata-token-ttl-seconds: 21600″` \
&& curl -H “X-aws-ec2-metadata-token: $TOKEN” \
-v http://169.254.169.254/latest/meta-data/instance-id/

# メタデータ全体取得
$ TOKEN=`curl -X PUT “http://169.254.169.254/latest/api/token” \

元記事を表示

IoT Coreではじめてのサブスクライブやってみた

# はじめに
[前回](https://qiita.com/f-mio/items/ab49458d98242b353308)に、センサーデータをAWS IoT Coreに送信してみました。はじめは苦戦しましたが、結構簡単に設定できて感動しました。
今回は送ったデータをサブスクライブするプログラムを作成します。

# AWS IoT Core
AWSにログインして、IoT Coreを開きます。
IoT Coreでサブスクライブするための設定をします。

![IoTCoreモノの登録画面への遷移.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671049/016cf078-a798-24b4-e436-1f417c96ebe2.png)

## ポリシーの設定

まずは、サブスクライブ用のクライアントIDを決めてください。
クライアントIDが決まったら、前回同様にサイドバーの【セキュリティ】 > 【ポリシー】を選択します。

遷移した画面に、ポリシー一覧が表示されるので、【[前回作成したモノの

元記事を表示

OTHERカテゴリの最新記事