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

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

Genvidクラスタのクラウドデプロイに必要なインスタンスの種類(AWS / Azure)

# Genvidのクラウドオーケストレーションで使用されるVM
Genvidは「インタラクティブな動画配信」を実現するSDKです。Genvidの体験を実現するシステム全体を「Genvidサービス」と呼びますが、ゲームの内部データと動画視聴を行うブラウザ、動画配信を行う配信サービスの3つをつなぐ通信処理を行う部分を「Genvidクラスタ」と呼びます。

その大部分はサーバーミドルウェアで構成されており、複数のクラウドサーバーインスタンスを使用します。
クラウドサーバーのオーケストレーションにはHashicorp社 Nomadが採用されており、Terraform、Consul、Vaultといった同社のクラウドリソース管理ツールが活用されています。

![GenvidClusterServices.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19010/686f237c-a23c-4501-e1de-e75ac002278b.png)

https://www.genvidtech.com/doc/ja/S

元記事を表示

AWS公式資料で挑むSCS認定(50)-こんな時どうする(全分野その27)

##### [前回] [AWS公式資料で挑むSCS認定(49)-こんな時どうする(全分野その26)](https://qiita.com/mingchun_zhao/items/d8edf10fe216f0cd2480)

## はじめに

今回も引き続き、「こんな時どうする」集の作成です。

## 分野1: インシデント対応

– CloudFrontが配信するコンテンツへの不正アクセスが報告された、コンテンツへのアクセスを制御するためリクエストにヘッダーを挿入してからオリジンに転送したい
– AWS Lambdaの拡張機能`Lambda@Edge`を使用し、エッジでリクエストにヘッダー挿入可能
– Lambda@Edgeは、CloudFrontの配信コンテンツに対しカスタマイズ関数を実行するコンピューティングサービス
– 米国東部(バージニア北部)リージョンでNode.jsまたはPython関数を作成し、ビューワーに近いAWSロケーションで実行できる
– サーバーをプロビジョニング/管理する必要ない
– 自動ス

元記事を表示

GuardDutyの脅威検出結果をSlack/Teamsに通知する

# 初めに
生産技術部で製品の検査工程を担当しているエンジニアです。AWSのセキュリティ対応のため、GuardDutyを利用しています。GuardDutyを利用することで、悪意のあるアクティビティや異常な動作を継続的にモニタリングすることができます。しかし、検知した結果に気が付かなければ意味がありません。チャットツールに結果を転送することで、早急な対応ができる体制を目指します。

# Slack/Teamsへの通知方法
脅威を検知した結果は、自動的にEventBridge(旧Amazon CloudWatch Events)に送信されるため、EventBridgeでイベントをトリガします。

* Slackを利用されている場合は、EventBridgeからSNSに転送します。SlackはChatbotとの連携が可能なため、ChatbotをSNSのターゲットにします。
* Teamsを利用されている場合は、LambdaをEventBridgeのターゲットとし、Lambdaで結果を加工してIncoming WebhookでTeamsに転送します。

![guardduty-notifica

元記事を表示

7-8億レコードを加工処理してS3へ連携した話

## はじめに

今まで一般的なWeb開発はしてきたけど高速化についてあまり考慮せずに実装してきたエンジニアの方に向けて、筆者のデータ ( **7億-8億レコード** ) 加工処理高速化の経験を基に、本番実行で何を目指すかということと、それまでに実際にどのようなアプローチがあるのかを提案できればと思います。
あくまで提案なので、「こうしたらもっと高速になるよ」的な箇所は多々あるかと思います。
コメントなどでご指摘いただければ幸いです。

## 本記事における前提条件

本記事における前提条件を筆者の経験した環境を参考に記載します。

### 本プロジェクトの背景及び要件

– 既存サービスで蓄積されたデータを外部のシステムに連携して有用活用するにあたってのPoVを実施する。
– 既存サービスで蓄積されたデータの一部を匿名化 (ハッシュ化) したものをCSVに書き出し、外部のシステムにPOSTする。
– 本番実行までの実装及び検証は短期間 (2-4週間程度) である。
– **加工処理はできるだけ早く完了させる**

### 採用したテクノロジー

– Ruby on Rails API

元記事を表示

AWS CLIでバージョニングを有効にしたS3のオブジェクトを一括削除する

## はじめに

バージョニングが有効なS3のオブジェクトはVersionsとDeleteMarkersの両方を削除しないと、
S3上からデータを完全に削除することができません。

また、AWSコンソール上で作成したフォルダはコンソール上からは削除できなかったり、少々ハマりどころがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597765/d47426e5-581e-36fa-7dba-3fba8b2facb9.png)

そのため、一括削除用のシェルスクリプトを作成しました。
(追記:AWS CLIの出力結果がJSON形式で、Nodeで対応した方が楽そうだったので勉強がてらNodeでも対応してみました。)

## 作成したシェル

“`sh:delete-s3-object.sh
echo 開始!

# バケット名
S3_BUCKET_NAME=”バケット名”
# 削除対象をキーで絞り込み ※S3のフォルダパス
S3_OBJECT_KEY=”test_dir/”
# Ve

元記事を表示

AWS SNS HTTP/HTTPSのサブスクリプションを確認する方法 on Laravel

# AWS SNS HTTP/HTTPSのサブスクリプションを確認する方法 on Laravel

追加した、サブスクリプションが「保留中の確認」になったあと
「確認済み」にする方法の情報が非常に少なかったのでメモ
Laravelで記載しますが、他の言語でも同じだと思います。

## エンドポイントは以下を設定したとする

`https://sns.test.com/sns/notification`

## Laravel側

CSRF対策が設定されていると、HTTP 419などになるので
サブスクリプションを確認する場合は、認証なしで受け付ける必要があります。

### apiでもwebでもどちらでも良いですが、認証なしで!
下記の例では、webの方は、VerifyCsrfTokenが効いているので、apiの方を使う必要がある

“`App\Http\Kernel.php
protected $middlewareGroups = [
‘web’ => [
\App\Http\Middleware\EncryptCookies::

元記事を表示

nginxでnuxtjsを利用した静的サイトを立ててAWSのELBでhttps化したらリロードができない

# はじめに

ローカルでnginxでnuxtjsで作ったサイトをテストして、いざ公開しようとしたら、リロードボタンを押すと読み込みできなかった話。

## 現象

nuxtjsでSPAで遷移する場合、URL欄に/loginなどが表示されます。
これは内部的には、フォルダになっており、/login/index.htmlにアクセスします。

一般的なwebサーバの仕組みは以下になります。

1. documentRootに同じパスのファイルがあるかチェックし、あったらそれを返す。
2. 同じ名前のフォルダがあるかチェックし、あれば、301 redirect で/付きのpathを返す
3. pathが/で終わっている場合は、設定により、index.htmlなどを返す。

今回は、2で、301 redirectするのですが、nginx的にはロードバランサーは知らないので、リダイレクト先に http://ホスト/フォルダ/ を返してしまうためです。

結局以下の設定ファイルでうまくいきました。
“`
server{
listen 80;

auth_b

元記事を表示

Cost Explorer API でアカウント毎に日別の請求額を取得する

## モチベーション
Cost Explorer API を使用してアカウント毎に DAILY の請求額を取得し、以下のようなデータを CSV で出力したい。

|Account Id|Account Name|2022/4/1|2022/4/2|2022/4/3| …|2022/4/30|
|—|—|—|—|—|—|—|
|000000000000|account-0000|42.792716528|40.124716527|43.123416527|…|50.922465287|
|111111111111|account-1111|32.263379809|30.235379809|31.263353594|…|22.133798094|
|222222222222|account-2222|751.71034839|720.51234839|772.62033294|…|651.71042035|
|333333333333|account-3333|4.6428|5.1234|7.8765|…|6.2234|
|44444444

元記事を表示

【Serverless Framework】AWS Lambda構築手順

# まえがき
業務でServerless FrameworkでLambdaを構築する必要ができたので、構築手順をメモ。
# 環境構築
参考させていただいた記事。

https://serverless.co.jp/blog/25/

## Node.jsインストール
・Serverless Frameworkでは、Node.jsはv12以上が必要。

https://nodejs.org/ja/download/

## Serverlessインストール
“`
npm install -g serverless
“`
インストールされていることを確認
“`
% npx serverless –version
Framework Core: 3.15.2
Plugin: 6.2.2
SDK: 4.3.2
“`
「serverless」は長いので「sls」と省略してもOK。
“`
% npx sls –version
Framework Core: 3.15.2
Plugin: 6.2.2
SDK: 4.3.2
“`

### npmによるグローバルインストールについて

元記事を表示

フリーのドメインを取得してAWSのRoute53に登録する

# はじめに
たまにしかやらないと忘れるのでメモ
## 「freenom」でドメインを取得
1. [freenom](http://www.freenom.com/)にアクセスして、ドメインを探す
![dns1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2528939/0c829a36-fbd0-db9b-57b0-6f3cf2750ee1.png)
1. 検索したドメインが利用可能なことを確認して「チェックアウト」をクリック
![dns2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2528939/54e97b8f-068d-32af-9219-ad930a3e11bb.png)
1. 「Period」(期間)を選択して「Continue」をクリック(期間は1年まで無料)
![dns4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

AWSソリューションアーキテクトプロフェッショナル試験 合格記

先日、AWSソリューションアーキテクトプロフェッショナル試験(AWS SAP)に合格しましたので、記録として投稿します。

## 受験者のAWS歴

AWSソリューションアーキテクトとしての試験はアソシエイトとプロフェッショナルの2種類があり、2年ほど前にアソシエイトを合格しました。AWS関連の資格は他には持っていないです。趣味で少しだけAWSをいじったりしていましたが、EC2やS3、VPCなどほぼホスティングサービスの代わりみたいな使い方が中心でした。ネットワーク技術に関して業務で利用しているため、基礎的な部分は理解しています(IPA主催のネットワークスペシャリスト試験には合格)。

## 勉強に用いた資料

勉強に用いた資料は以下4つです。他の受験記とあまり差はなく、一般的だと思います。

 ①書籍
  前者は問題数が多いので問題集替わり、後者は教科書的な記載が多かったので教科書的に使いました。
   ・[AWS認定ソリューションアーキテクト-プロフェッショナル~試験特性から導き出した演習問題と詳細解説](https://www.amazon.co.jp/AWS%E8%AA%8D%

元記事を表示

AWS CDKで “but no credentials have been configured” のエラーが出る

## 発生した問題

AWS CDKに入門してbootstrapしようとしたら、”but no credentials have been configured” みたいなエラーが出てきて詰まったので、解決策をメモしておく。

## TL;DR

`~/.aws/config` の該当箇所を全てを以下のように直せば解決する。

### Before

“`
[]

[]

“`

### After

“`
[profile ]

[profile ]

“`

## 解決への道のり

エラー文の通り、AWSの認証情報がCDK側で受け取れていないのが原因そうだった。しかし、`~/.aws/config` と `~/.aws/credentials` にはちゃんと `cdk bootstrap aws://xxx/yyy –profile ` で指定したプロファイルに対する設定が書かれていた。

元記事を表示

AWS公式資料で挑むSCS認定(49)-こんな時どうする(全分野その26)

##### [前回] [AWS公式資料で挑むSCS認定(48)-こんな時どうする(全分野その25)](https://qiita.com/mingchun_zhao/items/563c40028f658d7d1f6e)

## はじめに

今回も引き続き、「こんな時どうする」集の作成です。

## 分野1: インシデント対応

– OSI参照モデルのネットワーク層(L3)/トランスポート層(L4)/アプリケーション層(L7)へのDDoS攻撃が報告された
– AWS Shield Advancedを使用し(追加料金あり)、ウェブサイトやアプリケーションを標的としたDDoS攻撃を防御できる
– AWS Shield Advancedにサブスクライブし、保護対象のリソースを追加することで、リソース上で実行されるウェブアプリケーションをDDoS攻撃から保護
– ※ 指定されたリソースのみ保護し、AWS Firewall ManagerShieldアドバンスドリソースは自動的に保護されない
– Shield Advanced保護を追加可能なリソー

元記事を表示

AWS SDK for PHPのVersion2とVersion3の主要ページへのリンク集

AWS SDK for PHPのVersion2とVersion3の主要ページへのリンク集。
咄嗟の時にすぐアクセスできる用にまとめました。

## AWS SDK for PHPドキュメント群 TOPページ

[AWS SDK for PHP Documentation](https://docs.aws.amazon.com/sdk-for-php/index.html)

## 主要ページへのリンク集

||Version2|Version3|
|—|—|—|
|PHPのバージョン |5.3.3以上 |5.5以上 |
|要件 |[Requirements – AWS SDK for PHP 2.8.30 documentation](https://docs.aws.amazon.com/aws-sdk-php/v2/guide/requirements.html) |[Requirements and Recommendations for the AWS SDK for PHP Version 3 – docs.aws.amazon.com](http

元記事を表示

AWS CLIを使ってRDSのインスタンスサイズ一覧などを取得する

“`console
$ aws rds describe-db-instances | jq -r ‘.DBInstances[] | (.DBInstanceClass|tostring) + “:\t” + .DBInstanceIdentifier’

db.m5.4xlarge: develop-rds-mysql
db.t3.small: develop-aurora-instance-1
db.t3.small: develop-aurora-instance-1-ap-northeast-1a
db.m5.64xlarge: production-rds-postgresql
“`

元記事を表示

異なるアカウントにおけるS3の同期方法

# 目次
[1.はじめに](#1-はじめに)
[2.やりたい事のイメージ](#2-やりたい事のイメージ)
[3.実施内容](#3-実施内容)
 [1.コピー作業用のIAMユーザの作成及びポリシーのアタッチ](#1-コピー作業用のiamユーザの作成及びポリシーのアタッチ)
 [2.コピー元バケットのポリシー設定](#2-コピー元バケットのポリシー設定)
 [3.AWS CLIの設定](#3-aws-cliの設定)
 [4.同期の実行](#4-同期の実行)
[4.最後に](#4-最後に)

# 1. はじめに
AWS初学者向けに別アカウントS3の同期方法を記しておきます。
自身もまた初学者のため間違いがありましたら指摘頂けると幸いです。

# 2. やりたい事のイメージ
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1706530/cc1ba04f-e0ea-e1c0-3f8e-0ea597b4f170.png)
アカウントAのS3からアカウントBのS3へファイルの同期(コピー)を行

元記事を表示

MediaConvert の API 呼び出しに利用するリージョン固有エンドポイントの仕様

# はじめに

AWS MediaConvert の API を呼び出す場合、一般的に用意されている public なエンドポイントを使うのでなく、MediaConvert が用意しているエンドポイントを利用する必要がある。
その方法としては `describe-endpoints` でアカウント固有のエンドポイントを取得してきて利用する方法が紹介されている。

“`python:boto3を利用した例
# MediaConvert の public endpoint を使ってアカウント固有のエンドポイントを取得
endpoints = boto3.client(
‘mediaconvert’).describe_endpoints().get(‘Endpoints’)

# 取得した固有のエンドポイントから API 利用を行う client を取得
client = boto3.client(‘mediaconvert’, endpoint_url=endpoints[0][‘Url’])
“`

しかし、この `DescribeEndpoints` はかなり API L

元記事を表示

AWS公式資料で挑むSCS認定(48)-こんな時どうする(全分野その25)

##### [前回] [AWS公式資料で挑むSCS認定(47)-こんな時どうする(全分野その24)](https://qiita.com/mingchun_zhao/items/3276ff27f6e59d4693b5)

## はじめに

今回も引き続き、「こんな時どうする」集の作成です。

## 分野1: インシデント対応

– OSI参照モデルのネットワーク層(レイヤー3)とトランスポート層(レイヤー4)へのDDoS攻撃が報告された
– AWS Shield Standardを使用し(追加料金なし)、ウェブサイトやアプリケーションを標的としたネットワーク層とトランスポート層へのDDoS攻撃を防御できる
– 分散サービス妨害(DDoS)攻撃は、複数デバイスから大量のパケットを攻撃対象のWebサーバーに送りつけ、正常なサービス提供を妨げる攻撃
– AWS Shield StandardをAmazon CloudFrontおよびAmazon Route 53と合わせて使用することで、総合的にDDoS攻撃を緩和できる

## 分野2: ログとモニタリング(監視)

元記事を表示

20220425AWS学習メモ

AWSの基本観点

1. 単一障害点のない設計になっているか
2. スケーリングする設計になっているか
3. セキュリティ面に問題ないか
4. コストの最適化がされているか

初心者学習方法

・インターネット
https://aws.amazon.com/jp/blogs/news/2022-aws-beginner-learning/

https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-service-cut/

他YoutubeにあるAWS解説動画、公式非公式含む

AWSサミット2022
https://aws.amazon.com/jp/summits/japan/

【メモ】
動画は1.5倍速で聞こう

・オフ
AWSがわかる
https://www.amazon.co.jp/%E5%9B%B3%E8%A7%A3%E5%8D%B3%E6%88%A6%E5%8A%9B-Amazon-Web-Services%E3%81%AE%E3%81%97%E3%81%8F%E3%81%BF%E3%81%A8%E6%8

元記事を表示

CloudWatchでBillingアラートを作成する

こんにちは。
先日AWSマネジメントコンソールでEC2を立てて3日ほど放置したところ約10USDほどの課金があり、円安の影響をモロに受けたCultivateです。

このような悲劇を繰り返さないためにも、本日はCloudWatchを用いたアラート作成を行いたいと思います。

<手順>

①マネジメントコンソールにログインし、リージョンをバージニアへ設定する(バージニアリージョンに請求情報がまとめて格納されているため)

②Billingにアクセスし、「請求」タグにある「請求設定」を選択する。

③画面中央の「請求アラートを受信する」というチェックボックスにチェックを付け、詳細設定を保存する

④CloudWatchへアクセスし、「アラーム」タグの「請求」を選択する。

⑤「アラームの作成」を選択し、メトリクス名(今回はEstimatedCharges)、Currency(今回はUSD)を選択する

⑥アラームの名前を設定する

上記手順でCloudWatchのアラートを有効化できます。

元記事を表示

OTHERカテゴリの最新記事