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

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

Amazon Sagemaker Studio Labを試してみる

# はじめに
[Amazon Sagemaker Studio Lab][link-2]はAWSが提供している**無料**の機械学習開発環境です。
そもそも[Amazon SageMaker][link-1]とは、機械学習で必要となるプロセス(データ準備・モデル構築・トレーニング・デプロイ等)をフルマネージド型で提供するサービス群のことであり、Amazon SageMaker Studio Lab はそんなAmazon SageMaker内のサービスの一つです。

マネジメントコンソール上からは以下のリンクから飛べます。
![image01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675893/dd50f524-7c73-6ce3-deaf-eef42c77481f.png)

本サービスは**勉強・研究目的のみ利用可能**となっています。本番環境での利用はできません。また、アカウントを他人と共有したり、仮想通貨マイニングを行うなどの利用はできません。

# 利用するメリット
私が思う利点は以下の

元記事を表示

Amazon CloudFrontなど

# Amazon CloudFrontとエッジサーバー
**Amazon CloudWatch**とは高速コンテンツ配信ネットワーク(コンテンツデリバリーネットワーク、略してCDN)サービス。**Webコンテンツの配信を高速化する**。S3のWebサイトホスティング機能を有効にして構成したWebサーバーと組み合わせてよく使う。
高速化は、Webサーバーの中身をキャッシュ(前もって用意)する**エッジサーバー**を利用して行う。通常はWebサイトの閲覧者はWebサーバーにアクセスしてページを取得するが、毎回Webサーバーが答えていれはWebサーバーに負担がかかるので、エッジサーバーにキャッシュした内容を返させる古音によって、オリジナルのWebサーバーの負担を低減させる。
エッジサーバーはネットワークの末端近くに置かれ、各リージョンに置かれる。クライアントからアクセスするネットワークの距離が近くなるので、レスポンス速度が早くなる。
# Amazon CloudFrontの料金体系
Amazon CloudFrontは基本的に**データ転送に対して料金がかかる**。
サイトの閲覧者からリクエ

元記事を表示

Dictionaryの紐解き方

Boto3 でのお話。
NatGateway を短時間に同じタグ名で立ち上げていて、前のものは削除しているのだが describe すると削除の状態で残ってしまっているので、タグでフィルターしても複数がひっかかってしまっている。
現在、available のものを選択して削除したい、ということで、次の関数に渡すために AllocationId が必要。
Dictionary を紐解くために、以下のコードとした。

“`Python
for i in range(10):
nat_gateway_id=response1[‘NatGateways’][i][‘NatGatewayId’]
public_ip=response1[‘NatGateways’][i][‘NatGatewayAddresses’][0][‘PublicIp’]
allocation_id=response1[‘NatGateways’][i][‘NatGatewayAddresses’][0][‘AllocationId’]
state=response1[‘N

元記事を表示

保存したデータの分析

# データ分析との連携
S3内のオブジェクトやオブジェクトの中身に対し、**データ分析**を行う機能がある。
**S3 Select**と**Amazon Athena**は、CSVやJSONのような構造化されたテキスト形式のデータに対して、SQLのSELECT文を実行する**クエリ機能**。
**Amazon Redshift Specutrum**も同じ機能だが、大量のデータを処理できる。
# データ分析サービス
Amazon S3には、ログやIoT機器から収集したデータなど、後に分析したいデータも含まれるので、データ分析サービスとの連携が用意されている。
S3 SelectとAmazon Athenaは、S3バケットに格納したデータに対して分析するサービス。一方で、Amazon Redshift Spectrumは、S3バケット以外に置いたデータも分析できる。
## S3 Select
S3 Selectは、S3の機能で保存されている1ファイルのデータに対して、SQLを使って、集計や検索ができる機能。
CSVファイルやJSONの他、ログに使われるApache Parquetフォー

元記事を表示

AWS 関連メモ

##### NextでSSGアプリを作成し、CircleCIでS3に自動デプロイする方法
https://nishinatoshiharu.com/next-ssg-circleci-s3/#GitHubCircleCI

  
##### https対応した独自ドメインのWebサイトをS3 + CloudFrontで運用する手順
https://nishinatoshiharu.com/cloudfront-s3-hosting/

元記事を表示

AWS-CDKで生成されるテンプレート上の論理ID(LogicalID)を自由に書き換える

## はじめに
AWS-CDKで生成されるCloudformationテンプレートは`<ユーザーが指定したID>A1B2C3`といった感じで末尾にランダムな文字列が付与される。
通常であれば問題ないが今回DeletionPolicyにRETAINを指定したDynamoDBを含んだStackを更新しようとしたところ、論理IDが変わって(`tableA1B2C3`→`tableX1Y2Z3`)別のDynamoDBのリソースとして認識された。
そのためすでにあるDynamoDBと名前が被っているのでエラーとなりStackが更新できなくなった。

## TL;DR
該当のStackを定義しているClassでallocateLogicalIdをオーバライドして独自実装する

## 実装例
大体はallocateLogicalIdやmakeUniqueId内の処理を丸コピしたもの
ちゃんと期待通りのものになっているかはデプロイ前にSynthコマンドで要確認

“`typescript
import { CfnElement, RemovalPolicy, Stack, StackProps }

元記事を表示

AWSにおけるDatabricksデプロイメントについてまとめてみた

主要クラウドサービス(AWS、Azure、GCP)で動作するDatabricksですが、AWSでデプロイする際には自分でVPCの構成を決めたり、PrivateLink構成を選択することができます(他のCSPでも順次対応しています)。

その分、「どの構成にしたらいいのか?」と迷うこともしばしばです。これまでに少なくとも10以上のDatabricksワークスペースをデプロイしてきた経験を踏まえて、記事にまとめてみました。

# AWSにおけるDatabricksデプロイメントの方法

方法としては以下の2つがあります。

1. Databricksアカウントコンソール(GUI)
1. Account API(REST API)

設定自体を自動化するツールには以下の2つがあります。サインアップした際のデフォルトのデプロイメント手段はAWS QuickStartになっています。

1. [AWS QuickStart](https://qiita.com/taka_yayoi/items/c53beee557ae4a9643ac)
1. [Terraform](https://qiita.

元記事を表示

RDS MySQLとAuth0を繋げる

こんにちは。SARAHの沈(シム)です。
最近認証基盤をRailsのdeviseからAuth0への切り替えを行う作業があり、Auth0と既存のDBを繋げる機会がありまして、
自分が学んだ内用を共有しようかと思います。

目的

RailsのDevise認証からAuth0への認証基盤を移行
DBのユーザーデータは維持する(Export/Importなし)
Auth0のOIDCを付けてAPI Gatewayを保護

システム構成図

![スクリーンショット 2022-08-23 19.48.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342115/ea27c898-b074-9776-ce9e-46ffe1b670fc.png)

RailsのDeviseからAuth0への切り替え

RailsにAuth0を導入するのは難しくないかと思います。
Auth0のSampleコードをそのまま従って実装すれば簡単にできます。
https://auth0.com/docs/quickst

元記事を表示

なるべく手間をかけずにサーバーレスでCognitoユーザーがAWSマネジメントコンソールへログインできるようにする(ログイン画面も自作しないパターン)

# 経緯
[前回の記事](https://qiita.com/yusuke-takagi/items/9e914c43cc4b80055fb7)でCognitoユーザーがAWSマネジメントコンソールにログインできるようにしましたが、ログイン画面さえも自作しないでできることが分かったので書き残しておきます。

具体的にはCognitoユーザープールのホストされたUIを使います。
ホストされたUIでは不満がありログイン画面のデザインや動きを自作したい場合は[前回の記事](https://qiita.com/yusuke-takagi/items/9e914c43cc4b80055fb7)のパターンやウェブアプリを自作すると良いでしょう。

# 前提条件
– ユーザーにAWSマネジメントコンソールを使わせたい
– ユーザーはCLIでなく、ブラウザ(ログイン画面)でログインさせたい
– 事情があってAWS SSOに連携するIdPを使えない、使わない
– ログイン画面のためだけにウェブアプリを作りたくない
– サーバーの運用はなるべくしたくない
– IAMユーザーは発行したくない
– 運用チーム

元記事を表示

保存されたオブジェクトの管理

# バージョニング
**バージョニング**とは、オブジェクトの複数バージョンを保存する機能。
バケット単位で設定し、バージョニング機能を有効にすると、誤ってファイルを変更した場合や削除も復元できる。
**バージョニング無効(デフォルト)、バージョニング有効、バージョニング停止**の3つの状態のいずれかに設定できる。

* 以前のバージョンに戻す方法
保存されている過去のバージョンを同じバケットにコピーする
* 1つ前のバージョンに戻す方法
最新バージョンを削除する
# ライフサイクルポリシー
ライフサイクルポリシーとは、
オブジェクト群に対して、定期的に行うアクションを設定できる機能。
S3では、**ライフサイクルポリシー**(ライフサイクルのルール)を設定できる。
**ライフサイクルポリシーに設定できる主なアクション**
|アクション|内容|
|-|-|
|Transition|オブジェクトを別のストレージに移行|
|Expiration|有効期限が来たオブジェクトを削除。オブジェクトがバージョニングされているときは、最新のバージョンのみが対象。バージョンが複数あり、削除マーカーがつ

元記事を表示

アクセス管理と改ざん防止

# アクセスログとは
**アクセスログ**とは、サービアに対してどのようなリクエストあったのかを記録する機能のこと。
ログの内容は、
* バケットの所有者
* バケット名
* リクエスタ
* 時刻
* レスポンス時間
* アクション
* レスポンスのステータス
* エラーコード
が記録される。
S3の機能として、アクセスログの記録が提供されているので料金はかからない。
ログを書き込んだファイルは対象となるバケットと同じリージョンのバケットに保存されるので、その保存には料金がかかる。
**主なログ記録**

|項目|内容|
|-|-|
|Remote IP|リクエスト要求元のIPアドレス|
|リクエスタ|アクセスしてきたユーザー|
|リクエスト ID|識別のためにAmazon S3で生成されるID|
|オペレーション|リクエストされてあ操作の種類|
|キー|リクエストのあったオブジェクトキー|
|Request-URI|リクエストされたURI|
|エラーコード|エラーコード|
|Bytes Sent|送信されてレスポンスのバイト数|
|Object Size|リクエストされたオブジェクト

元記事を表示

ファイルのアップロードとダウンロード

# アップロードとダウンロード
S3バケットにファイルをアップロード・ダウンロードする方法は**マネジメントコンソールを使用する方法とCLIを使う方法**がある。ツールやプログラムから操作するにはAPIやSDKを使用する。
マネジメントコンソールを使用する場合は、ドラッグ&ドロップもしくはポイントとクリックの操作でアップロードできる。ドラッグ&ドロップはGoogle ChormeとFirefoxブラウザのみのサポート。
S3には全てのファイルタイプをアップロードできるが、アップロードできるファイルサイズには制限がある。アップロードのファイルサイズ制限は、マネジメントコンソールからは160GBまで。それ以上はSDKやAPIを使う。
# 様々なアップロード
ファイルを**クライアント**からアップロードするには、様々な方法がある。
1. APIやSDK
APIやSDKを使うとサーバーパーティ製のツールを使ってファイル操作できるようになる。使用にはIAMユーザーでアクセスキーとシークレットアクセスキーを発行し、利用したいツールに設定。
1. マルチパートアップロード
**マルチパートアップロ

元記事を表示

デプロイ先のどこにアプリを置くべきか

## 前置き
ec2にログインして`git clone`を実行すればアプリのデータを持ってくることができます
しかし、どのディレクトリにアプリを置くべきか。ちょっと調べてみました

## 基本的には`var/www`
実際、どこに置こうが構わないらしいのですが、`var/www`に置くことが多いようです

## `/home`でも構わない
wordpressなどは`/home`に置くこともあるそうです。

ec2にログインした直後にいる場所も`/home`配下なので、ここに置いてしまっても動かすことは可能です

## 使い分け
規模の大きなアプリは複数人でサーバーを管理することが多いです

個人でやる分には構わないのですが、`/home`は個人のディレクトリであるという使われ方をする場合が多いです

複数人で管理する場合、権限管理の都合で、共有管理のできる`/var`を使用することが多いとのこと

元記事を表示

Webサイトホスティング

# Webサイトホスティングとは
S2では**静的Webサイトをホスティングすることができる**。
静的Webサイトをホスティングするには、バケットをそのままWebサイトとして公開する。
これはURLを設定し、バケットを誰でもアクセスできるようにすることを指す。
バケットはデフォルトでは第三者がアクセスできないので、ブロックパブリックアクセスとバケットポリシーを設定。
## 静的Webサイト
静的Webサイトとは、**サーバー上でスクリプト処理をしないサイトのこと**。
ex)単純なHTMLと画像だけで作成されているWebサイト。
ただし、静的Webサイトには、**JavaScriptなどのクライアント側で処理されるスクリプトが含まれることもある**。
## 動的Webサイト
動的Webサイトとは、PHP、JSP、ASP.NETなど、**サーバー側で処理が必要な言語を含むサイト**を指す。
# Webホスティングで必要な設定
Webサイトとしてバケットを公開するには、バケット作成時や作成後に、いくつか必要な設定がある
* 静的Webホスティング(スタティックWebホスティング)を有効に

元記事を表示

Databricksにおけるアカウントコンソールを用いたVPCエンドポイント登録の管理(E2)

[Manage VPC endpoint registrations using the account console \(E2\) \| Databricks on AWS](https://docs.databricks.com/administration-guide/account-settings-e2/vpc-endpoints.html) [2022/8/15時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

:::note info
**プレビュー**
本機能は[パブリックプレビュー](https://docs.databricks.com/release-notes/release-types.html)です。
:::

本書では[E2バージョンのDatabricksプラットフォーム](https://qiita.com/taka_yayoi/items/7d209bc8d32bc5f2dba4#e2%E3%82%A2%E3%83%BC%E3%82%AD%E3

元記事を表示

Amazon Appstream2.0でMFCアプリを配信する

# はじめに
Senju Family、mPLATを簡単にお試し利用ができるmPLAT/Tourサービスでは、MFCアプリケーションである「千手ブラウザ」をインストール不要で手軽に、セキュアに利用できるよう、Amazon AppStream2.0を利用して配信しています。

AppStream2.0を利用してみて、主にオートスケーリング面で事前の想定通りの動作をしなかったり、直に端末にインストールして利用する場合と比べて、利用ができない機能などがあったため、整理してみました。

# 環境構築
AppStream2.0でのアプリケーション配信準備は、ImageBuilderでのイメージ化、Fleetの作成、Stackの作成とFleetとの紐づけ、UserPoolでのユーザーの作成と通常通り進めていきます。
もちろん千手ブラウザのアプリケーション自体に手を入れる必要はありませんでした。

# オートスケーリングの設定
## 事前の想定
+ 利用者の接続に応じてインスタンスが増え、5ユーザーまでが利用可能。
+ 同時利用が5ユーザーを超えた場合はエラー画面が表示される。
+ 2ユーザー目以降

元記事を表示

ALB/NLBアクセスログが出力できない時の注意点

# はじめに
ALB/NLBのアクセスログ出力設定時によくあるエラーとして、
以下例の通り出力先バケットの権限エラー(**Please check S3bucket permission**)が挙げられるかと思います。

本記事はバケット権限エラーに直面した際の確認観点を共有させていただき、同様のエラー対応に悩んでいるかたの救いになれば幸いです。

例)出力先バケットの権限エラー
![2022-08-13_10h54_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/f2fde6f6-7bbd-b847-c35f-a493d9a26f5c.png)

# エラー発生時の確認観点

### ①S3バケットポリシーを付与しているか
アクセスログを出力するためには、出力先S3バケットポリシーを付与する必要があります。
※S3のバケットポリシーは[こちら](https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/applic

元記事を表示

AWSにてwebアプリケーション環境をCircleCI Ansibleで自動デプロイしてみた

## 実施の背景

* 知り合いがクラウド案件に従事しており、楽しそうに仕事をしていた。
* ネットワークエンジニアとして働くも、自分もクラウドへの興味が沸く。
* AWSについて2022年3月より学習開始。
* 2022年7月にSAA取得。
* 資格勉強で学んだ知識の落とし込み。
* Ansible、CircleCI、Dockerなどモダンな技術の使用してみたかった。

# 実施概要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2641225/84376062-7338-b13e-9fcf-b13cb2a54259.png)

**EC2**

HTTP(80ポート)のトラフィックはELB経由のみ許可
VPCエンドポイント経由でS3に静的画像をホスト

**RDS**

MySQL(3306ポート)のトラフィックは、EC2にアサインしたセキュリティグループのみ許可

# 使用技術

**アプリケーション**

Railsを使用したアプリケーション(インフラにコミット

元記事を表示

バケットポリシーとユーザーポリシー

# S3バケットへのアクセス制限
S3バケットにはアクセス制限を設定できる。
アクセス制限には3つの方法がある。
バケット単位で制限する**バケットポリシー**、IAMユーザー単位で制限する**ユーザーポリシー**、**ACL**(アクセスコントロールリスト)がある。
## バケットポリシー
該当のバケットにアクセスできるユーザーを指定する。
対象ユーザーが多いときに使用。
## ユーザーポリシー
アクセスできるバケットを指定する。
バケットが多いときに使用。
## ACL(アクセスコントロールリスト)
自分以外のほかのAWSアカウントに対して、「読み取り」「書き込み」それぞれの操作を「許可」「拒否」できる一覧表のこと
# アクセス制限の対象と内容
**アクセス制限で設定する項目**
|項目|内容|
|-|-|
|リソース(何に対して)|制限の対象となるバケットやオブジェクト。Amazonリソースネーム(ARN)を使って、対象を識別する|
|アクション(何を)|実際にできる行動のこと。GET(取得)、PUT(配置)、DELETE(削除)など。アクションキーワードを使って指定|
|エフェ

元記事を表示

オブジェクトとバケット

# オブジェクトとバケット
バケットとはWindowsでいうドライブで、オブジェクトとはファイルのようなもの。
**バケットはフォルダではないので、バケット内にさらにこバケットを作ることはできない**。
バケットはAWSアカウント1つに100個まで作れる。
オブジェクトは単にファイルではなく、管理のためにメタデータがついている。
1つのバケットの格納できるオブジェクトの数や容量に制限はない。
S3はオブジェクトストレージなので、フォルダやディレクトリの概念はない。
格納されたオブジェクトは、バケット内に並列に並べられる。
# バケット作成と命名規則
バケット作成後はリージョンやバケット名の変更はできない。
他のS3ユーザーが使用しているバケット名は使用できない。
リージョンを変更したいときは、同じ名前で作成できないので、一度バケットを削除してから新たにバケットを作成する。
## バケットの命名規則
* バケット名の始まりと終わりはアルファベットか数字
* 3文字以上63文字以下
* DNS命名規則に従う必要がある
* IPアドレス形式のバケット名はつけられない
* 大文字やアンダーバー

元記事を表示

OTHERカテゴリの最新記事