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

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

AWSのマルチアカウント環境にGoogle WorkspaceでSSOログインできるようにする

日頃の開発に AWS を使いつつ、ビジネスツールとして Google Workspace を導入している企業は多いと思います。その場合、追加の費用なしで、「会社のGoogleアカウントでAWSのマルチアカウント環境にSSOログインできる」ように設定することができます(要するにSAMLですね)。意外と知られていない気もするので簡単に紹介してみます。

[Okta](https://www.okta.com/jp/) などに比べて、Google Workspace は多くの企業で既に採用されているでしょうし、この設定で追加の費用もかからないので気軽に試しやすいかと思います。

公式のユーザーガイドはこちら: [Google Workspace および IAM アイデンティティセンターによる SAML と SCIM の設定](https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/gs-gwp.html)

認証プロバイダをなるべく統一すると、一般の開発者がログインするうえでも便利ですし、管理する人の手間や心配事も減りま

元記事を表示

[AWS]CDKを用いてALBにOIDC認証設定してみた

## はじめに

### 背景・目的

– ALBでのOIDC認証について、CDKを用いた設定方法が気になったので、本記事に学習記録として残しておきます。

### 想定読者

– CDKを用いたALB・ECS構築経験のある方
:::note
本記事は学習記録の側面が強く、割愛している部分があることをご理解ください。
:::

## 設定の流れ
[AWS公式ドキュメント](https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/listener-authenticate-users.html)を参考にしつつ、Googleアカウント認証済みユーザのみがALB背後のECSアプリにアクセスできるよう、CDKを用いて設定してみます。

### Google OAuth 2.0 クライアントIDの設定
:::note
事前にGoogle Cloud Platformでプロジェクト作成が完了していることを想定しています。
:::

– Google Cloud Platformの`APIとサービス`にア

元記事を表示

DeepRacer For CloudをWindows(WSL)上に構築する

# はじめに
[DeepRacer For Cloud](https://aws-deepracer-community.github.io/deepracer-for-cloud/)をローカルにインストールすることで、課金を気にせずDeepRacerのモデル作成を行うことが可能です。

ただしDeepRacer For Cloudのローカル構築記事は多くはなく、私が構築を行ったときには以下の記事が非常に助かりました。
詳細まで書かれており、非常にわかりやすかったです。

https://dev.classmethod.jp/articles/awsdeepracer-local-training-on-windows-wsl/

本記事では上記記事をベースに、構築部分について記事執筆時点での最新情報を加筆しています。(重複する箇所もございますがご容赦ください。)
最後にはトラブルシューティングもつけているので、少しでもご参考になればと思います。

# 必要スペック
ローカル環境へのインストールにあたり、以下のスペックが推奨されています。

| 項目 | 必要スペック |
| :–

元記事を表示

[AWS SUMMIT2024 セッションレポート] 1,000 を超える Web サイトを少人数で運用するソニーミュージックソリューションズ様のオブザーバビリティ実現例~クラウド運用をリアクティブからプロアクティブに!~

# はじめに
受講セッションの個人的な所感と、メモです。
メモの内容は、誤字脱字などあるやもしれませんが、ご了承ください。

# 概要
> ソニーミュージックソリューションズ様は、限られた人員で 1,000 を超える Web サイトを運用し、サイトの速度や表示に関する問い合わせにも日々対応されていました。そのような環境下で、「少人数運用でも安定稼働」を実現するというビジョンを掲げられていました。本セッションでは、同社がそのビジョン実現に向けて、どのような取り組みを日々行ってこられたかをご紹介いたします。成功した施策や乗り越えてこられた課題など、実際の経験に基づくリアルな内容をお話しいただきます。反応的な対応から一歩進んで、「未来に向けた継続的な改善」を実現するための手法や考え方について、同社の実践を通じてご理解いただければ幸いです。少人数での大規模システム運用におけるノウハウを存分に学んでいただけるセッションです。

# 所感
今回お話のあったような規模感ではなくとも、同様の悩みを抱えている企業は数多くあるのではと思いました。
(かくいう我々も・・・)

我々の話でいうと、まだまだ規

元記事を表示

AWS Copilot で管理しているデータベースを変更・リストアする際に注意すること

## はじめに

以前の記事で AWS Copilot で Phoenix と Aurora Serverless を立ち上げる方法を紹介しました

https://qiita.com/RyoWakabayashi/items/6eeda41be7941bd0b485

この場合のデータベースのリストア手順がややこしかったので記事にまとめておきます

## Amazon RDS におけるバックアップについて

RDS では自動バックアップと手動スナップショットを使用できます

https://aws.amazon.com/jp/rds/features/backup/

いずれのバックアップも DB インスタンスのストレージボリュームのスナップショットになっていて、個別にデータを出し入れするわけではなく、全体を復旧する形になります

特に注意しなければならないのが、 **バックアップからのリストアはクラスター、インスタンスの作り直しになる** という点です

既存のデータベースに対してデータを入れ込むのではなく、 **スナップショットから新しいクラスター、インスタンスを作成します**

元記事を表示

[Cloudformation]ECSのServiceを更新したらタスク数が0になった件

# 現状の管理方法

ECSのServiceをCloudformaitonで管理しており、
デプロイ時に`aws cloudformation deploy`を実行しています。

具体的には以下のようなイメージです。

“`sh
aws cloudformation deploy \
–template-file template/sample.yml \
–stack-name sample-ecs-service \
–parameter-overrides ImageTag=${image_tag} EnvName=${env} DesiredCount=1 \
–capabilities CAPABILITY_NAMED_IAM \
–no-fail-on-empty-changeset
“`

## 発生経緯

元々はECSのタスクは以下のように固定で起動していました。

AutoScalingの導入をするときにスケールアウト中にデプロイすることで
タスク数が変動してしまうことを懸念し`DesiredCount`のオプショ

元記事を表示

AWS Lambda関数をGolangで実装し、Github Actionsで構築自動化してみた

## 1. はじめに
この記事では、AWS Lambda関数をGolangで実装し、その更新を手動および自動化する方法について解説します。特に、GitHub Actionsを用いた構築自動化の手法に焦点を当てます。

## 2. AWS Lambdaとは
AWS Lambdaは、イベント駆動型のサーバーレスコンピューティングサービスです。ユーザーはインフラストラクチャを管理することなくコードを実行できます。
https://aws.amazon.com/jp/lambda/

## 3. GolangでのLambda関数実装
### 3.1 Golangの環境構築
※他記事を参考にしてください。

### 3.2 簡単なLambda関数の作成
今回、Lambdaはコンテナイメージで実装しています。

コンテナイメージにする利点や具体的な実装詳細については[エムスリーさんのテックブログ](https://www.m3tech.blog/entry/2023/08/31/110000)を参考にしました。
以下は要点です:
– GolangでのLambda関数作成手順
– AWS Lambd

元記事を表示

Athenaでdouble型(実数型)を取得したら指数表記になってたので変換した話

# はじめに
LambdaとAthenaを使ってデータを取得、返却するプログラムを作りテストをしたところ「0.0003」などの小数が「3.0E-4」などの指数表記で帰ってきていました。
1つのLambdaで指定したテーブルの全列を取得できるような仕様にしており、特定の列をCASTするといったアプローチは取れなかったため指定されたテーブルのスキーマーをもとに取得列を動的に作成するLambdaを作成しました。

# 本題
“`python:main.py

import json
import awswrangler as wr

DATABASE = ‘database_name’
TABLE_NAME = ‘table_name’
OUTPUT_LOCATION=’s3://example’

def lambda_handler(event, context):

try:

# テーブルの列名、型を取得
query = f”””
select
*
from information_sche

元記事を表示

マネジメントコンソールでパスキー設定してみた ~JAWS-UG CLI専門支部と私~

# はじめに
本記事は JAWS-UG IAM専門支部 #44L IAM要素解析: パスキー (MFA)に参加したレポートです
後半(きっと記事のほとんど)が作者とCLI支部との関わり(回顧録?ポエム?)的な内容となってしまうため、レポートだけ興味がある方は前半だけでも読んでいただければ幸いです。
(Qiitaが微妙ならnoteに移動するかもしれません)

# 参加の経緯
参加のモチベーションはこんな感じでした
– [connpassの勉強会告知](https://jawsug-cli-advanced.connpass.com/event/320710/)に記載の通り、AWS re:Inforce 2024で発表されたIAMのパスキー対応というのがどういったものか、手を動かしてみたい
– お昼時の勉強会なら参加できる
– 久しぶりに波田野さんとお話ししたい(オンラインですが)

# パスキーの使い道について
[AWS公式の記事](https://aws.amazon.com/jp/blogs/news/aws-adds-passkey-multi-factor-authenticat

元記事を表示

【小ネタ】AWS SDKでCost ExplorerのAPIを実行してAWSの使用料を取得する

## ちょっと再履修

過去の資料を漁っていたのもあるんですが、コストアラートで送られてくるメールを見落としがちなので`AWS SDKでCost ExplorerのAPIを実行してAWSの使用料を取得する方法`を復習します。

できたら何かしらのプラットフォームに自動通知していきたい。(LINEとか?)

過去の資料

[【とりあえずハンズオン】AWS×LINEで実践!AWS利用料返信Botをつくろう](https://qiita.com/ymd65536/items/f352632aad904bd02b1c)

## ソースコード

昔のコード抜粋でなんとなく記載します。

LINE botに使ったコードだと、モジュール化されていないので使いにくい気がするのと
今はAWS以外も触っているので他のクラウドの利用料金がとれるようなモジュールとして作っていきたい気がします。

“`python
import os
import boto3
import json
import calendar
from datetime import datetime, date

ce_client

元記事を表示

RailsのHostAuthorizationによってELBのヘルスチェックがhealthyにならない

ポートフォリオをデプロイする際に発生した問題について、備忘録として投稿します。

## 発生した問題

Rails6 + AWSで下記の構成のようなアプリを開発していました。

Railsの`HostAuthorization`を利用し、`/api/health_check`というパスでALBからのヘルスチェックを行おうとしました。
しかし、Railsが403エラーを返し、ヘルスチェックが失敗してしまいました。

## 原因

Railsの設定は下記のようになっていました。
![](https://raw.githubusercontent.com/nomikazu-x/post-zenn-qiita/master/images/prettier-plugin-astro-organize-imports/alb-esc-nginx-rails-rds.jpg)

“`ruby:environments/production.rb
config.hosts << 'base_domain.com' ``` 原因は、 「ヘルスチェック時のホスト名がbase_domain.comでな

元記事を表示

AWSのPublic IP一覧を表示するPythonスクリプト(Lambdaとか)

LambdaのPublic IPの一覧がほしかったので、調べてみました。

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/aws-ip-ranges.html

リンク先の記事にあるように、
AWSのPublic IPの一覧は、下記のURLにjson形式で公開されています。

https://ip-ranges.amazonaws.com/ip-ranges.json

が、大方の予想通り、あまりにも巨大でブラウザで見るにはとてもつらいため
必要なデータだけ抽出するようなPythonスクリプトを作成しました。

import requests

REGION = “us-west-1”
SERVICE = “EC2”

ip_ranges = requests.get(‘https://ip-ranges.amazonaws.com/ip-ranges.json’).json()[‘prefixes’]

ips = [item[‘ip_prefix’] fo

元記事を表示

S3とLambda、SESを用いてお問合せフォームを作成した話 3

実は2回で終える予定だったのですが、AWS SUMMITに行った際、AWSのサポーターの方から、「API Gateway使わなくても直接Lambdaの関数たたけるよ^^」と教えていただいたため、確かめることに…

前回までの記事はこちら

https://qiita.com/sakura11054/items/0b5e8603d6d4f92ac746

https://qiita.com/sakura11054/items/a29741cf124ba315d892

https://qiita.com/sakura11054/items/47bba94339cb62f037ef

https://qiita.com/sakura11054/items/678a3b45807999f63b75

# Lambdaの設定

Lambda側の設定は単純です!
前回までで作成したLambda関数を開きます。
設定タブを開くと画像のように関数URLとあるのでこれを開きます。
現状、関数URLなしと表示されているので、関数URLを作成を押下します。

![image.png](https://

元記事を表示

Amazon Bedrock 生成AIアプリ開発入門 レビュー #Bedrock開発入門

:::note info
著者より発売前の書籍をご恵贈いただきました。この記事はその書評を個人の見解として述べるものです。
:::

2024/6/26 にAmazon Bedrock 生成AIアプリ開発入門 [AWS深掘りガイド] が発売されます🎉

Amazon Bedrock 生成AIアプリ開発入門 [AWS深掘りガイド]

本書は Qiita でも Bedrock 関連のアウトプットを積極的におこなわれている @minorun365 @hedgehog051 @moritalous という超強力な著者陣による執筆です。

https://qiita.com/tags/bedrock

## 書籍の概要
本書は AWS の生成 AI サービスである Amazon Bedrock を中心に、生成 AI 技術とそのアプリケーション開発について、幅広く体系的に解説している入門書です。

具体的には生成 AI の基本から始まり、Bedrock の使用方法、LangChain や Streamlit などのフレームワークを使用したアプリケーション開発の基本とコツを学ぶことができます。社内

元記事を表示

複数のVPC間でプライベート通信をする接続方法と要点

EC2 から 異なる VPC 上の EC2 に対してプライベートな通信をしたい場面があります。例えばシステムの要件で「インターネットを経由した通信は禁止」と言われた際には、その要件に適応する構成を検討する必要があります。

構成図

その接続方法は複数あり、要件により選択される手段は変わります。今回は EC2 から 異なる VPC 上の EC2 に対してプライベート通信をする接続方法のうち、利用頻度の高い4つのパターンについてご紹介します。

取り扱うのは以下の4パターンです。

| パターン | 内容 |
|:———–|:———–|
|1|インターネットゲートウェイ( IGW )経由でのプライベート通信|
|2|VPC ピアリング経由でのプライベート通信|
|3|PrivateLin

元記事を表示

AWS ユーザー・アカウント管理サービス

## 前提知識
AWSにおいてユーザーとアカウントは異なります。一つのアカウント内に一つまたは複数のユーザーが存在します。つまり、一つのアカウントに利用者は複数いる場合があります。本記事でのポイントは複数アカウントはOrganization、ユーザーはIAMで管理することです。
## IAM
AWS IAM(Identity and Access Management)はAWSのユーザーとグループを作成および管理して、アクセス権限を付与して AWSリソースへのアクセスを許可および拒否できます。
### IAMポリシー
AWSのサービスとリソースへのアクセス許可を付与または拒否するドキュメントアクセス許可のルールを定義(リソースへのアクセス許可を管理)どのアクションをどのリソースで実行できるかを指定するルールセットです。
### IAMユーザー
許可されたサービスだけにアクセスでき、アクセスキーIDとシークレットアクセスキーを関連付けます。
### IAMグループ
IAMユーザーの集合を管理でき、アクセス権限を複数のユーザーに一括で付与します。
### IAMロール
有効期限のある一時的

元記事を表示

CircleCIでElasticBeanstalkデプロイしようとしたら、タイムアウトエラーになった

## エラー内容
`$ aws elasticbeanstalk update-environment –region ap-northeast-1 …..`
コマンドを実行したところ、デプロイはできているっぽいなんですが、以下のエラーが発生しました。
“`text
WARNING: terminal is not fully functional
Press RETURN to continue
….

….
Too long with no output (exceeded 10m0s): context deadline exceeded
“`

## 解決方法
CircleCIの設定ファイルに、`AWS_PAGER`を空文字に設定することで解決しました。
“`diff_text
deploy:
environment:
AWS_DEFAULT_REGION: ap-northeast-1
AWS_PAGER: “” # aws-cli v2で有効になったページングプログラムを無効にする
docker:

元記事を表示

AWS Lambdaを使用してGlueジョブをトリガーし、SNS通知を送信する方法

## はじめに
この記事では、AWS Lambdaを使用して、特定のS3イベントに応じてGlueジョブをトリガーし、その結果をSNSで通知する方法を紹介します。コード例には、すべてダミーの情報が含まれています。

## はじめに

AWS Lambdaは、イベントドリブンなサーバーレスコンピューティングサービスです。これにより、インフラストラクチャの管理を行わずにコードを実行できます。AWS Glueは、ETL(Extract, Transform, Load)ジョブを実行するためのマネージドサービスであり、AWS SNSは通知サービスです。

以下のコードでは、S3にファイルがアップロードされると、LambdaがトリガーされてGlueジョブを開始し、結果をSNSで通知します。

## コードの詳細

### 必要なライブラリのインポート

“`python
import boto3
from urllib.parse import unquote
import logging
import time
“`

– `boto3`: AWS SDK for Python。AWSサービ

元記事を表示

【AWS】terraformでSQSのメッセージをlambdaで処理してDynamoDBに保存する

## 概要
terraformでSQSのメッセージをlambdaで加工してDynamoDBに保存する
例として’deviceID’ と ‘createdAt’というカラムがあるデータの処理を実施する

## ポイント
– SQSのメッセージはエンコードされているので受け取るlambda側でデコードが必要
– lambdaのソースコードはS3に入れて管理する

## 構成
“`
.
│ backend.tf
│ data_transfer.tf
│ variables.tf

└─lambda_function
│ lambda_function.py

└─output
functions.zip
“`

## ファイルの中身

`backend.tf`
“`
terraform {
required_providers {
aws = {
source = “hashicorp/aws”
version = “~> 5.0”
}
}
cloud {
org

元記事を表示

[AWS #14] EBS


## はじめに
こんにちは
今回はコンピューティングサービス分野の **「EBS」** についてご紹介いたします。
:rolling_eyes:これもどこかで見たことあるようなサービスですね
:upside_down:とあるAWSの**ストレージサービス**になります。

## Amazon EBS
EBSとは **「Elastic Block Store」** の略称です。
EC2インスタンスにアタッチして使用するAWSの**ストレージサービス**になります。
※Elastic → 弾力がある、伸縮性がある(用途に合わせて**柔軟な使用ができる**特徴)

:rolling_eyes:ストレージは確か **「データを保管するもの」** でしたよね
:upside_down:パソコンやスマホ、ゲーム機器などでよく耳にしたり目にしたりするかと思いますね。

:::note info
EBSは、EC2の**インスタンスのデータを保管**しておくことができ

元記事を表示

OTHERカテゴリの最新記事