AWS関連のことを調べてみた2022年10月19日

AWS関連のことを調べてみた2022年10月19日

AWS SageMaker 費用(ノートブックとインスタンスもシャットダウンしないと課金される)

AWS SageMaker Studio初心者です。
Abalone pipelineチュートリアル実行して費用発生(約$10/day)したので
原因を探ってみました。

1)結論
ノートブックとインスタンスもシャットダウンしないと課金される

2)原因
公式の料金表だとml.m5.xlargeは$0.298/Hなので24Hずっと動かしてたらしい。
作業終了時には必ずノートブックをシャットダウンしてたのになぜ?と思い
サポートページ(コンソールの右上の?にある)へ質問してみました。
3日ほどで回答が来て、丁寧に色々と説明がある中に
「自動シャットダウン拡張機能を利用した Amazon SageMaker Studio のコスト削減方法」があり
どうやらノートブックをシャットダウンしても、インスタンスまでシャットダウンしないと
課金され続ける事が判明。
https://aws.amazon.com/jp/blogs/news/save-costs-by-automatically-shutting-down-idle-resources-within-amazon-sagemaker-s

元記事を表示

【AWS】複数のIdpを紐づけたCognito ユーザプールを作る

# きっかけ
– とある案件にて拠点ごとにAzure ADが構築されており、それらを使用して、ユーザをSAML連携したCognitoで一括管理できないかという案を受けて調べることになった。
– 内心、できないんじゃないか(ユーザプールがIdpと1対1対応で複数ユーザプール化)と思っていたが、できちゃったのでこの記事が書かれています

# Cognito, AzureADの構築手順は過去記事参照(CognitoのUIは古いままです)
– 【AWS】Cognito ユーザプールをAzure ADをIdPとして構築する(前編)

https://qiita.com/kei1-dev/items/a0870c26da51dbaa6580

– 【AWS】Cognito ユーザプールをAzure ADをIdPとして構築する(後編)

https://qiita.com/kei1-dev/items/c8ae68e975dccb2902be

# 検証結果
– Azure ADのディレクトリを2つ作り、それぞれユーザを紐づける。
![スクリーンショット 2022-10-18 13.28.4

元記事を表示

【rails + minitest】 flashに格納したメッセージをassertする方法

## 概要
minitestでrailsのテストを書いていてふと、
「flashの内容でコードの挙動を確認出来れば、testコードの可読性があがりスマートなのでは??」と思ったので、書き方をメモします。

## 結論
以下のように記載すればOK。

assert flash.to_hash.value? “想定されるメッセージ”

## 詳細
Flashクラスはよくわからないので、`to_hash`でハッシュに変換したのち、`value?`メソッドで格納されたメッセージを検索してます。

これを使えば、以下のように、テストコードの可読性がグンッと上がって幸せ

“`ruby:sample-test
test “records-destroy” do
# 正常系
sign_in(@user2)
delete record_path(1)
assert flash.to_hash.value? “レコードを破棄しました”
# ↑ 一目瞭然
assert_redirected_to records_path

# 異常系
delete record_pa

元記事を表示

AWS Fargateでストレージを共有するバインドマウントとデータボリュームの違いを理解する

# はじめに

アプリケーションをコンテナ化してAWSのFargateで運用する場合、Django+Nginxの場合だとスタティックファイルの共有が必要となるが、仕組みをよく理解していなくて混乱していた。
後から考えればそういうことかと思えたけどもそのあたりを整理してみた。

# やりたいこと

ざっくり構成図を描くとこんな感じ。本当はRDSとかECRとか使っているが省略。

![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691494/bec4b6e0-85c0-67e5-39d0-4f877d4fbf29.png)

2つのアベイラビリティゾーンにパブリックサブネットを配置してFargateをロードバランシングして運用。
1つのタスク内にDjangoとNginxの2コンテナを置く。
DjangoとNginx間でファイル(実際はディレクトリ)を共有する必要があり、左右のFargate間はロードバランシングしているため共有が必要となる。

結論からいうと

* タスク内のコンテナ間での共有

元記事を表示

API Gateway カスタムドメイン設定方法

# 目的
Lambda+API Gateway構成で、証明書を作成してAPIGatewayにカスタムドメインを設定する方法を
試しにやってみたので、手順書的なもの。
※ Route53でのホストゾーンの作成は済んでいるものとします。
※ ACMを使った証明書も作成済みとします。
# やったこと
API Gatewayを開き「カスタムドメイン名」を選択します。

①今回指定したいドメイン名を定義します。
②ACMで作成した証明書を選択します。
![スクリーンショット 2022-10-17 21.56.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542333/fa30e287-367f-a0ed-ae02-8d75d0452568.png)

次にAPI Gatewayの画面に移るので、「APIマッピング」を選択し、設定を行います。
①対象のAPI Gatewayを選択
②対象となるステージを選択
③パスも設定(Lambda関数名)
![スクリーンショット 2022-10-19 8.39.40.pn

元記事を表示

Amazon Detective とは

## 勉強前イメージ

聞いたことない感じする

## 調査

### Amazon Detective とは

AWS上のアプリケーションでのセキュリティ問題や不審なアクティビティなどがあった際に原因を分析・調査することを支援するサービスになります。
Detectiveは探偵の意味なので、探偵のようにモニタリングをして原因を調査して分析するサービスです。

Detectiveは、以下のようなログを収集して情報を分析します。

– cloudtrail ログ
– vpcフローログ
– GuardDuty

### 推奨条件

– aws cliは 1.16.303 以上
– Amazon GuardDuty を有効にする必要があります
– マスターアカウントで有効にする必要があります
– 有効後48時間待つ必要があります
– Amazon GuardDutyのcloudwatch通知が6時間間隔なので15分にする

### ユースケース

– セキュリティで問題が発生した際の影響調査

万が一漏洩した際の認証情報や、悪意のあるIPアドレスからのAPIコールなどを確認することが出来

元記事を表示

AWS LambdaでPython向けLayerを作ろうとしたらはまった話

AWS Lambda(Python)を使ってGoogle APIにアクセスしようとしたらライブラリではまった話です。
(Python初心者なので誤った記述があるかもしれません)

# 環境
– 開発環境用にEC2 Amazon Linux2 + Python 3.7
– Google APIにはサービスアカウントでアクセスする
– Google API利用に必要なPythonパッケージ用にLambda Layerを作成する

# 参考にした記事
– メインのコード自体は「補足:サービスアカウントを使ったやり方」を
ほぼそのまま活用させていただきました。

https://www.coppla-note.net/posts/tutorial/google-calendar-api/

– 必要なパッケージについてはGoogleの「[Python quickstart](https://developers.google.com/docs/api/quickstart/python)」を参照しています。

# 事象
`pip -t`でインストールしたディレクトリを圧縮・Layer化したのに

元記事を表示

【Terraform】Terraformで別のリソースを参照する方法

# はじめに
udemyを使ってTerraformの勉強をしたので、Terraformで別のリソースを参照する方法についての学習備忘録です。

https://www.udemy.com/course/iac-with-terraform/

# Terraformで別のリソース参照する方法
* “.”で連結して参照する
* resourceブロックの場合、省略できる

“`terraform
..
“`

“`terraform
# 例
resource “aws_vpc” “vpc” {
cidr_block = “192.168.0.0/24”
}

resource “aws_subnet” “public_subnet_1a” {
vpc_id = aws_vpc.vpc.id # リソース参照している

}
“`

各リソースでどのような情報が引き出せるかは、[公式ドキュメント](https://registry.terraform.io/providers/hashicorp/aws/lat

元記事を表示

RDSパラメータグループ(utf8)を設定しても日本語が文字化けする

# はじめに

Postmanを利用してLambda(Go)のAPIを試しているときに、日本語を送信するとエラーが発生するという問題が起きました
MySQLを使う際によく起きる現象なので記事を参考に修正をしましたが、どうもうまくいきませんでしたのでまとめます

# 問題

https://bamboo-note.tokyo/AWS/aws-rds-mysql-cannot-japanese/

この記事を参考に設定を行い、DBの更新を行ったがなぜか日本語が文字化けしてしまいます
テーブルを削除して作成しなおしたのですが、それでも日本語が文字化けしました

# 解決方法

テーブル削除でなくデータベース自体を削除する必要があありました

“`
select * from INFORMATION_SCHEMA.SCHEMATA;
“`

これで文字形式をみたところ利用しているデータベースが`latin1`になっていて、`utf8`になっていないことから気づきます

RDSを変更したらDBを一回削除してから再度作成しないと変更が適応されませんでした

https://qiita.com

元記事を表示

AWS、デフォルトサブネット

# とは
公式ドキュメントを見ても定義が曖昧ですが
**デフォルトVPCのサブネット**
という意味かと思います([AWS公式Doc > Default VPCs > Default VPC components](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html#default-vpc-components))。
厳密に言うとデフォルトVPCにデフォルトに設定されているサブネット。

### デフォルトのデフォルト(デフォルトサブネットのデフォルト設定)
デフォルトサブネットはデフォルトでパブリック(サブネット)です。
[AWS公式Doc > Default VPCs > default subnet](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html#default-subnet)

さらに言うとデフォルトVPCのデフォルトサブネットはデフォルトでパブリックです。

### ごっちゃになったところ
デフォルトVPCはAW

元記事を表示

AWS Solutions Architect Associate (SAA-C03) note

##### aws root accountと一般ユーザの関係
“`
root account
|- ユーザ01
|- ユーザ02
|- ユーザ03 …
“`
複数ユーザをまとめ「ユーザグループ」にする事が出来、
ユーザ単体とユーザグループには「権限」の設定が出来、大体root account作成後は使わず、adminのユーザを作成し、「AdministratorAccess」権限を上げ、管理者として使う、例は画像として:
![スクリーンショット 2022-10-18 18.35.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2747384/6e40b241-fc41-3995-b628-a31f2eaed917.png)

元記事を表示

<AWS>アカウント使用時に確認すること

本記事は、①アカウント使用時に設定した内容と、②コスト管理において気を付けた方が良いことをまとめたものになります。
特別なことは記載しておりませんが、AWSアカウントを使用するときに何を意識したら良いかわからないとき、この記事が少しでも参考になれば幸いです。
# ①初期設定
## ルートユーザーでの作業
**1.ルートユーザーの多要素認証の有効化**
**2.ルートユーザーのアクセスキーの削除**
**3.アカウントパスワードポリシーの設定**
アカウントパスワードポリシーでは、基本的には全ての項目にチェックを入れて問題ないでしょう。
ただ、有効期限を設ける場合は事前に周知しておきましょう。

:::note warn
**パスワードの有効期限を設定した場合、有効期限は直ちに適用されます。たとえば、パスワードの有効期限を 90 日に設定したとします。この場合、既存のパスワードが作成されてから 90 日を超える期間が経過しているすべての IAM ユーザーのパスワードが失効します。これらのユーザーは、次回サインインするときにパスワードを変更する必要があります。**
:::
https://

元記事を表示

API Gatewayに独自ドメインでアクセスする方法(エッジ最適化編)

カスタムドメインを使って、API Gatewayに独自ドメインでアクセスする方法をまとめます。
本記事は「**エッジ最適化編(API Gatewayのエンドポイントをエッジ最適化に設定)**」で CloudFrontを利用するので、グローバルに展開するサービスに良いと思います。
また、API Gateway につながる実際の APIについては「[API Gateway、Lambda(Node.js)、DynamoDB を使ったAPIの作り方](https://qiita.com/chinone0711/items/13abf8b6f39d09f04962)」で作ったAPIを利用するので、こちらを先に見ておくと良いかと思います。

# 前提
route53でドメインを取得していること。
本記事では取得済ドメインの **サブドメイン** を利用します。

# ACMでSSL証明書を発行
ACM(Certificate Manager)を使って取得済ドメインのSSL証明書を発行します。
今回はエッジ最適化編なので、米国北部(バージニア北部)リージョンで証明書を発行する必要があります。

「バ

元記事を表示

API Gatewayに独自ドメインでアクセスする方法(リージョン編)

カスタムドメインを使って、API Gatewayに独自ドメインでアクセスする方法をまとめます。
本記事は「**リージョン編(API Gatewayのエンドポイントをリージョンに設定)**」でCloudFrontを利用しないので、国内限定サービスなどに良いと思います。
また、API Gateway につながる実際のAPIについては「[API Gateway、Lambda(Node.js)、DynamoDB を使ったAPIの作り方](https://qiita.com/chinone0711/items/13abf8b6f39d09f04962)」で作ったAPIを利用するので、こちらを先に見ておくと良いかと思います。

# 前提
route53でドメインを取得していること。
本記事では取得済ドメインの **サブドメイン** を利用します。

# ACMでSSL証明書を発行
ACM(Certificate Manager)を使って取得済ドメインのSSL証明書を発行します。
今回はリージョン編なので、任意のリージョンで証明書を発行します。

「証明書をリクエスト」をクリックします。
![acm

元記事を表示

【Athena】行のパス・ファイルを取得する

# どのファイルにデータが入っているか知りたい

Athenaで一つのテーブルの中で、ファイルごとにデータを見たい場合などがあり、これまではテーブルを分けたり、パーティションで区切っていたのですが、クエリでファイルパスが取得できる事がわかったので記事にします。
[こちら](https://aws.amazon.com/jp/premiumsupport/knowledge-center/find-s3-source-file-athena-table-row/)の公式のドキュメントを参照しました。

# パスの取得方法

パスは `”$path”` で取得可能です。

“`sql
select
id,
“$path”
from
users
limit 10
“`

とすると結果が

“`
“id”,”_col1″
“1”,”s3://example-backet/path/to/hoge.csv”
“2”,”s3://example-backet/path/to/foo.csv”
“3”,”s3://example-backet/path/to/bar.c

元記事を表示

Macでeksctlを利用してAWSにEKSのクラスターを構築する

# はじめに
eksctlを利用して、AWSのEKSにクラスターを構築する方法です。
学習する際にクラスターを簡単に作れるので、便利です。

# 環境設定
1. kubectlをインストール

“`sh
brew install kubectl
“`
1. eksctlをインストール

“`sh
brew tap weaveworks/tap
brew install weaveworks/tap/eksctl
“`

# 実行環境の準備
[AWS CloudFormationを動かすためのAWS CLIの設定](https://qiita.com/miyabiz/items/fed11796f0ea2b7608f4)を参考にしてください。

# EKSの構築

1. AWSで利用できるEKSのバージョンの確認

“`sh
aws eks describe-addon-versions –query ‘addons[0].addonVersions[0].compatibilities[*].c

元記事を表示

[CodeBuild] ログを綺麗に(普通に)テキストコピー

CodeBuildのログは、CodeBuildのビルドログタブや、そのテールログで確認できます。
ただし、単にコピーしてエディターにペーストすると、余計な空白行が大量に挿入されたり、HTML用のヘッダーが含まれたりして扱いづらいです。

ログ内容が長大でなければ、以下で簡単にテキストコピーできます

ビルドログタブ -> 上部の「ログ全体の表示」-> CloudWatchLogsに飛ぶ -> テキストとして表示にチェックをつける -> 上部の「さらにロードします。」を、「現時点で古いイベントはありません。再試行」の表示になるまで何回か押す -> アクション -> 検索結果のコピー(ASCII) -> エディターにペーストする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620712/a6112538-02fe-14c6-9cb3-f696dd36b14d.png)

“`
——————————————————-

元記事を表示

AWSを使う前に必ずやるべし!AWSを使う前の初期設定について

# マルチファクタ認証(多要素認証)
Multifactor認証を使ってアカウントを保護していきます。

ex)
・パスワードのような知識情報
・SMSなどの所持情報
・指紋などの生体認証

まずはIAMを開きます。MFA認証を追加します。

![スクリーンショット 2022-10-17 2.58.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/c28009a0-cd54-2cb7-8ab6-75761c8c9629.png)

セキュリティ認証情報の画面にいくと思いますが、その中で多要素認証(MFA)のMFAデバイス割り当てをクリックします。

![スクリーンショット 2022-10-17 3.09.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/03ad7a77-8a12-c01b-5a8f-ca01380075d8.png)

下のような画面が出てきますが、仮想MFAデバ

元記事を表示

フロントエンジニア、AWSエンジニア目指す方必見! TypeScript導入!

# どういう方が読んだ方がいいか
・JavaScriptをある程度知っている方
・AWSエンジニアを目指される方
・フロント開発をされる方

# TypeScriptとは
Microsoftが開発したプログラミング言語で、JS(Java Script)をさらに拡張した言語です。
静的型付け機能(static typing)となっています。

新機能などがJSに追加されますが、JSのようにブラウザで実行できません。
新しい機能をTS(TypeScript)からJSにコードを変換(コンパイル)し、
開発者が正しいコードを書くことを支援します。

# TypeScriptのインストール
この公式サイトを参考にします。

https://www.typescriptlang.org/

このサイトからダウンロードします。ダウンロードをしていきます。

https://www.typescriptlang.org/download

npm経由で
“`
$ npm install -g typescript
“`
を実行します。権限が足りない時はsudoをnpmの前につけます。

![

元記事を表示

Landing Zone とは

## 勉強前イメージ

聞いたこともないかも

## 調査

### Landing Zone とは

ランディングゾーンと読み、AWSのベストプラクティスに基づいて作成されたアカウントを展開していく仕組みになります。
あくまで、Landing Zoneはサービスではなく仕組みです。
多数のアカウントのセキュリティなどを一定に保つためのものです。

### Landing Zoneの機能

– 必要な初期設定が完了しているアカウントの作成します
– 管理用の権限を発行、アカウントを管理するための権限を作成します
– SSOによるアカウントのアクセス管理をします
– ネットワークのベースラインを確保します
– AWSのログを一元的に保存します
– ガードレールを設置します

### Landing Zoneの利用方法

– Control Tower を使う

[Control Tower](https://qiita.com/miyuki_samitani/items/210a359f44b602aac1ec) はLanding Zoneを実現するもので簡単にセットアップが出来ます。

元記事を表示

OTHERカテゴリの最新記事