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

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

TypeError: Cannot read properties of undefined (reading ‘byteLength’) AWS SDK for JavaScript v3で少しハマった話

## はじめに
ローカルではAWS CLIのconfig設定([設定の基本](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-quickstart.html)を参照)をしていたので問題にならなかったが、CIでテスト実行しようとした時に、SDKのクライアントのコンストラクタでクレデンシャルを設定しようとしてハマったので、気を付けたいポイントについて備忘録を残す。

※以下ではCI上でSDKのクライアントのインスタンスをmock化しないで利用しているが、CI環境でテストするのにそもそもSDKをそのまま動かしているのはおかしいのでは…?という突っ込みが当然あると思う。結合でテストしたい場面ではないのであれば、単体テストとして実装するので本来はmockにすべきだが、今回は敢えてmockにしないとどういう事が起きるのか?mockにしないでテスト=単体テストではなく結合テストをCI環境で簡単に実行できるのか?を検証してみたかったので、モックではなく、SDKをそのまま使うという事をした。

## 結論 どうすれ

元記事を表示

【AWS】AWSCLIの「filter」と「query」の使い方について(備忘録)

# はじめに
AWSCLIの確認コマンドでよく用いられる`filter`と`query`の使い方について備忘録を書きたいと思います。

:::note warn
全てのパターンは網羅できておりませんので、ご了承下さい。
:::

# 前提
今回はサブネット一覧を確認するコマンド`aws ec2 describe-subnets`の使用を通して、`filter`と`query`の使い方をご紹介していければと思います。

# filterとは?
filterとは、**出力結果の絞り込み**で使用するオプションになります。

## filterの使用例

### 1つの項目から出力結果を絞る
複数あるサブネットからサブネットID「subnet-0e4fe7412ac22561f」に該当するサブネットのみに出力結果を絞ります。

“`zsh:コマンド
aws ec2 describe-subnets \
–filter “Name=subnet-id,Values=subnet-0e4fe7412ac22561f”
“`

フィルターする内容は、以下になります。

| Name |

元記事を表示

【Terraform/AWS】 インストールからEC2作成まで

# はじめに
Terraformをインストールして、AWSでEC2インスタンスを作成できることを確認します。

# 実行環境
* Windows 10 21H2
* Terraform 1.1.9

# インストール
## ダウンロード
以下サイトよりダウンロードします。
Windwosだと386とAmd64の選択肢がありますが、
スタートメニュー>設定>システム>詳細情報からシステムの種類が
**64 ビット オペレーティング システムだとAmd64**を
**32 ビット オペレーティング システムだと386**を選択します。

https://www.terraform.io/downloads

## パスを通す
ダウンロードしたファイルを解凍します。
自分の場合、解凍したファイルをCドライブ直下に作成したterraformフォルダに移動しました。
![スクリーンショット 2022-05-17 223228.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530861/abe700bc-2d4c

元記事を表示

Raspberry PiにGoofys載せてSMB喋るオブジェクトストレージ直結NASにしてみた

# 内容
β版ながら、データアウト無料のCloudflare R2をRaspberry Piに中継させてNAS代わりにできんか? という実験。
紆余曲折を経たが一応形になったものを紹介。
注意: 速度・安定性などに過度な期待を持ってはいけない。

# 環境
Rapsberry Pi 3 A+
Raspberry pi OS 64bit
AWS環境 (armアーキテクチャのEC2を利用)

# goofysのコンパイル

goofysはLinux用バイナリも提供されているのだが残念ながらx86用のみ。
RaspberryPiに使うためにarm用の実行ファイルをソースからbuildする必要がある。

このコンパイルはそれなりのCPUとメモリを要するためRaspberry Pi3では荷が重かった。そこで今回はAWSのARMアーキテクチャ EC2インスタンスを利用した。
(Raspberry Pi4であれば問題ないかもしれないが、残念ながら手元にない)

## AWSインスタンスの起動

本筋ではないので多くは触れない。
今回はDebian 10の64bit ARMアーキテクチャをOSとし、イ

元記事を表示

AWSのエラーについて(解約後ルートユーザーにログインできない)

## 概要
以前awsを使っていて久しぶりにログインしようとしたところ以下のようなエラーが出た。

![スクリーンショット 2022-05-15 11.33.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633008/055871c1-3d16-ea22-630c-c2c0fc5c1103.png)

もしかしたらアカウントを消してしまったのかと思って、新規作成しようとしたところ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633008/d77fe7fd-6f07-8407-c32e-71e6f555502e.png)

## どうゆうこと!?
AWSのサポートに問い合わせしてみた結果以下のような返信がきた
“`
I understand you don’t have access to the email address on the account. For security and pri

元記事を表示

Amazon EventBridge の 使い方

Cloudwatch alertを使って、[EC2のオートリカバリ](https://qiita.com/kazwata/items/feea966dbb4b76eedc37)や、SNS -> lambdaを介してSlack通知など、便利に使っていたのですが、連携できるサービスが限られているため、EventBridgeを使ってみます。

# EventBridgeとは
EventBridgeは、AWS外のSaaSやAWSサービスで発生した様々なEventを受け取って、LambdaやStep Functions などの指定したターゲットにEventを連携することができるサーバレスのマネージドサービスです。EventBridgeという名称そのままな感じですが、Eventソースとターゲットの自由度がかなり高いので、アイデア次第で色々できそうな感があります。

# EventBridgeの設定方法
「Cloudwatch alertのイベントを受け取って、lambdaに連携する」というEventBridgeを作成してみます。まずは、Amazon EventBridge > ルール > ルールを

元記事を表示

CognitoユーザープールはMFAを無効にしていても、MFA出来ます。(特にEメールによるOTP)

# スマートにサインインサインアップ機能を実装したく、Cognitoのユーザープールを作成していた時のこと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1699525/b57de284-6f4c-702d-8c1c-d5f8aa835170.png)
「ん?多要素認証ってことはメールで認証コードを送るあれ(OTP)ができるってことかな?」
「でも選択肢にはTOTPとかいうのとSMSメッセージの認証しかねえぞ・・・?」
「でもOTPもMFAの一種だし、ここでMFAなしに設定したらOTPできなくなるのか・・・???」

とここではまってしまいドキュメントをひっかきまわす。

# 結論:メール認証(OTP)やりたいならMFAなしで大丈夫

色々調べた結果、OTPとMFAの設定は無関係で、何にもしなくてもサインアップの際にEmailに認証コードを送ってくれる。
まずCognitoのAPIにある`SignUp`をLambdaで実装。TEST機能で自分のメアドでサインアップすると、、、
![im

元記事を表示

Golangでform dataから受け取った画像をS3にアップロード

# はじめに
GolangでAPIサーバーを構築しており、APIで受け取った画像データをS3にアップロードする処理を実装したので、方法を共有しようと思います。初心者Golangerなので受け取った画像をリサイズなどせずにそのままアップロードする方法しかわからなかったので、その点は悪しからず。むしろ方法をご教示いただきたい所存。。。S3以外の処理は省略します。

# 完成コード
“`golang:s3Handler.go
func (app *Application) imageUpload(w http.ResponseWriter, r *http.Request) {
err := godotenv.Load(fmt.Sprintf(“./%s.env”, os.Getenv(“GO_ENV”)))
if err != nil {
log.Fatalln(err)
}
ak := os.Getenv(“AWS_ACCESS_KEY”) // .envのAWS_ACCESS_KEY
ask := os.Getenv(“AWS_SECRET_ACCESS

元記事を表示

ConoHaでEC-CUBEインストールしたらSSLしなかった件

# 動作環境
レンタルサーバーConoHa
EC-CUBE 4.1.0

# 不具合
![スクリーンショット 2022-05-17 23.43.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1653133/4e99fbdb-8bb1-df8f-6661-b4a21dcbc57c.png)
色々操作ができない

# 原因
SSL通信できていないことらしい

# SSLを強制に✔︎できない
![スクリーンショット 2022-05-17 23.48.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1653133/5897f390-b331-7006-4242-c8fa5c1eda5c.png)

# ロードバランサーが関係しているらしい
`AWS`
`ConoHa`
などで発生している模様

# 解決
`.htaccess`に以下を追記

RewriteRule ^(.*) – [E=HTTPS:on]

元記事を表示

【初心者】Amazon Route 53 Resolver インバウンド/アウトバウンドエンドポイント を使ってみる

# 1. はじめに
– AWSのネットワーク関連の復習をしている。AWSと外部(オンプレミスなど)を接続した際のお互いの名前解決の方法について確認したかったため、実機での設定を行い基本的な仕組みを理解する。

# 2. やったこと
– AWS VPCとGCP VPCネットワークがVPNで接続されている環境を用いる。(環境の構築記事: [【初心者】AWS Site-to-Site VPN を使ってみる (GCPとのVPN接続)](https://qiita.com/mksamba/items/f6f2896a9456dd68bed8))
– GCP内のインスタンスから、Route 53 Resolver(インバウンドエンドポイント)を用いて、AWS側VPC内の名前解決を行う。
– AWS内のインスタンスから、Route 53 Resolver(アウトバウンドエンドポイント)を用いて、GCP側VPCネットワーク内の名前解決を行う。

# 3. Route 53 Resolver インバウンド/アウトバウンドエンドポイントとは(自分の理解)
– そもそも Route 53 Resolver

元記事を表示

AWSのクロスアカウントアクセスをCLIからやってみた

## はじめに

– AWSで他アカウントのリソースにアクセスする必要があったため、方法を以下に整理しました。

## 前提
– アカウントAからアカウントBのリソースにアクセスする

## 準備

### アカウントBでの作業
– アカウントBでIAMロールを作成する
– 信頼関係でアカウントAのIDを指定する
– 必要なリソースの権限が記述されたIAMポリシーをロールに付与する
– 今回は特定のS3バケットへのアクセス権限を記述する

### アカウントAでの作業
– IAMポリシーの作成

“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Action”: [
“sts:AssumeRole”
],
“Effect”: “Allow”,
“Resource”: [ “arn:aws:iam::アカウントB:role/アカウントBで作

元記事を表示

Aamazon EC2にDockerコンテナを立ち上げてJavaプログラムをテストしたい

# はじめに
本内容は、成り立てエンジニアな私の個人メモとしての記録であり、超基礎的な内容となっております。初学者向けとして本記事を閲覧していただければと思います。また、自身の成長につながるため、何かアドバイス・ご指摘があればコメントしていただけると幸いです。

# やろうと思ったきっかけ
新卒エンジニアとしてこの春より働くことになり、研修を行いつつ配属先での業務に少しずつ触れさせてもらっています。
そんな日々の中、ある日の会議でこんな話がありました。

>「それじゃあ、まずはEC2立てて、Kubernetes使って簡単な検証から始めていこうか。」
>(初心者過ぎて正確な内容は理解が追いつかず、上記の内容はめちゃめちゃニュアンスです)

議事録を取りながら聞いていたのですが、専門用語の応酬でとてもビビり散らかしていたことは覚えています。
その時の自分の心境としては、

> (EC2?たしかAWSの仮想サーバーサービスだったかな?ローカルとかではやらないんだ。)
> (クーバネティス?聞いたことあるけど全然イメージつかねぇ。Dockerとかコンテナに関連したやつってことだけは、なんとなく

元記事を表示

【初心者】機械学習のクラスタリング(エルボー法)を調べてみた

# 背景・目的
私は、現在データエンジニアリングを生業としています。普段は、データ基盤の構築や、パフォーマンスチューニングなどビックデータに関する業務に従事しています。
ビックデータの収集や、蓄積、分析などの環境構築の経験はそこそこありますが、機械学習による予測や分類などのスキルは持ち合わせていませんでした。
今まで機械学習を避け続けてきましたが、一念発起し学ぼうと思います。

学び方としては、AWS Certified Machine Learning – Specialty(以降、ML試験という。)の勉強を通して、理解を深めていきます。ML試験のガイドの第2分野に、探索的データ解析が登場しましたのでそこから学びたいと思います。

今回は、**クラスタリングのエルボー法**について学びたいと思います。

> 2.3 機械学習のデータを分析および視覚化する
> ・クラスタリング (階層型、診断、エルボープロット、クラスターサイズ

なお、過去の機械学習の調べてみたシリースは下記にまとめています。
– 2.探索的データ分析
– 2.1.モデリング用のデータをサニタイズおよび準備する

元記事を表示

Truncate時にCannot truncate a table referenced in a foreign key constraintとエラーが出た時の対処法

## 解決策

以下のように外部キー制約を一時的に外してtruncateする

“`
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE table $table_name;
SET FOREIGN_KEY_CHECKS = 1;
“`

ちなみに、外部キー制約の状態は以下コマンドで確認可能

“`
SELECT @@foreign_key_checks;
+———————-+
| @@foreign_key_checks |
+———————-+
| 1 |
+———————-+
“`

## 参考
– https://stackoverflow.com/questions/5452760/how-to-truncate-a-foreign-key-constrained-table
– https://hacknote.jp/archives/19470/
– https://fibonacci.hatenablog.jp/e

元記事を表示

CloudFormationで最低限のセキュリティ設計を考慮したクラウド環境をさくっと建てる

# 本記事の内容

– AWSが提供するCloudFormationサービスを利用し、AWSのクラウド環境に最低限のセキュリティ設計を考慮したサーバをさくっと建てる方法を記載した記事です。
– AWSアカウントをすでに持って入れば、本ページに記載のCloudFormationテンプレートを使うことで、10分程でクラウド環境を作成できます。

先日投稿した「[【AWS入門】知識ゼロでもこれを読めばAWSを理解しつつ1~2時間後にサーバを建てられる](https://qiita.com/kanamekun/items/92f92777a0351f2e8099)」の記事で手動で構築した環境をCloudFormationを使って作成します。

本記事の手順で以下のような構成のクラウド環境を作成できます。
![aws1.drawio_r2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/c9513759-cdf0-48cb-2fd0-e846638619bb.png)

またAWSの操作画面はサ

元記事を表示

難しいことを考えずにSSMでBastionサーバを作成

# 概要
セッションマネージャでAWS接続サーバを作る。
細かいことは気にしてないので、適宜環境に合わせてください。

# 手順

1. ポリシーの追加とロールの作成
2. セキュリティグループの作成
3. キーペアを作成する
4. EC2の作成
5. SessionManagerを確認
6. 接続

※ VPCとかsubnetは割愛

# ポリシーの追加とロールの作成

## 概要

****AmazonEC2RoleforSSM****のポリシーがアタッチされているロールを作成する。
また、EC2に接続する際にキーペアが不要になるようなポリシーを追加する。

## 方法

個別ポリシーの作成から以下のjsonを貼り付ける。

“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: “ssm:StartSession”,
“Resource”: [

元記事を表示

CloudFront Behavior の後方一致パスパターンにおける挙動確認

# はじめに

https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern

CloudFront の Behavior でパスパターン文字のワイルドカードとして以下が使える。

– `*` は、0 個以上の文字に一致します。
– `?` は、正確に 1 個の文字に一致します。

一般的な利用では、先頭固定でパスを取る (例: `/static/` 以下に静的リソースを配置する。 `/docs/` 以下に記事コンテンツを配置する) と思うが、アプリケーションの作り上、途中に特定パスが入るようなケース (例: 途中にディレクトリ `css` を含む全てのパスを対象にしたい時など) を CloudFront のパスパターンとして利用可能かを調査した。

# 実験内容と結果

## Behavior の登録は可能か?

1. パスパターンとして `/*/css/*` を C

元記事を表示

Athenaで異なるS3ストレージクラスのオブジェクトをクエリする

# AthenaのS3ストレージクラスに関する仕様

Athenaでは異なるストレージクラスのオブジェクトで構成されるテーブルについても問題なくクエリすることができます。
例えば、以下のようにテーブルに対応するフォルダ配下に複数のストレージクラスのオブジェクトがあったとしても問題ありません。

![スクリーンショット 2022-05-17 16.17.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/346c8659-e2db-4bfe-14f9-00ef57403e5c.png)

# AthenaのGlacierに関する考慮事項

Athenaでは `Amazon S3 Glacier Flexible Retrieval`と`Amazon S3 Glacier Deep Archive`ストレージクラスのオブジェクトに関してはクエリされません。
例えば以下のように`Amazon S3 Glacier Flexible Retrieval`と`Amazon S3 Glacier De

元記事を表示

AWS SSOでno accessエラーが出る。

AWS SSOでno accessエラーが出る。

Provide your administrator with the following info: No access
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102438/db429157-8d0f-9505-9c07-380482c00f0c.png)

この記事をもとに作っていて、動いていたはずなのに動かなくなった。
https://qiita.com/daisukeArk/items/abedd59194c9401a7423

サーバー環境では動くのに、ローカルでエラーが出る。

原因は、ローカルPCの時計が2分ほど遅れていたこと。

元記事を表示

PostgreSQLよりOLTPが4倍/OLAPが100倍高速のPostgreSQL互換のAI/機械学習搭載DB新サービス!AlloyDB

![1433418.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633992/012ba770-e459-5a6d-f451-8272cba68d4f.jpeg)

Google Cloud の新サービスとして、AlloyDB for PostgreSQLのリリースが発表され、Previewとして利用できるようになりました。

AlloyDB for PostgreSQLは、オープンソースDBであるPostgreSQLとの互換性を維持しつつ、DBに最適化されたストレージアーキテクチャを採用されています。
さらにAI・機械学習による最適化などによって高速化し、SLA 99.99%(予定)の高可用性、リニアなスケーラビリティ、AI・機械学習による運用管理の自動化なども実現できるとのことです。

このようなAlloyDB for PostgreSQLの特徴を紹介していきます。

## PostgreSQL完全互換
現時点ではPostgreSQL14と互換性があります。
PostgreSQL 14との互換

元記事を表示

OTHERカテゴリの最新記事