- 1. 例の経営統合のニュースをAmazon Transcribeに文字起こしさせてみた
- 2. Saving Plansによるコスト試算
- 3. AWS で MFA 必須の IAM アカウントを作成し、ユーザに受け渡す手順について
- 4. Saving Plansによるコスト試算
- 5. 【AWS】S3の画像アップロードにて500エラー ArgumentError (Missing required arguments: aws_access_key_id, aws_secret_access_key)
- 6. 【AWS】CloudFormation::Macroを使って多数のIPを接続許可する
- 7. Fargate のログを FireLens を通して、EC2 の Fluentd/td-agent に出力する
- 8. Amazon Cognito を利用して、会員登録を行う。
- 9. Amazon Linux 2 に Laravel 環境構築 + デプロイ [とりあえず最速でデプロイしたい人向け]
- 10. Private SubnetのインスタンスにSSH接続
- 11. LambdaからSystems Managerを実行してEC2のバックアップを取得する
- 12. Serverless Framework で 自身のAPIのURLを取得したい
- 13. /etc/fstabについて
- 14. お金がかかりそうなAWSサービスの全リージョン状況把握 boto スクリプト
- 15. となりのAWS
- 16. LOAD DATA FROM S3でファイル分割時の性能検証
- 17. AWS上の Windows で InfoScale を用いてクラスタリングしよう
- 18. [awscli] 全てのIAM Roleの最終使用日時(RoleLastUsed)一覧を取得するワンライナー
- 19. JenkinsからAWS Lambdaをデプロイする
- 20. 是丈は心得おくべし:AWS
例の経営統合のニュースをAmazon Transcribeに文字起こしさせてみた
## はじめに
AWSの自動音声認識サービス[Amazon Transcribe](https://aws.amazon.com/jp/transcribe/)が日本語に対応したとのことで、日本語音声を入力して文字起こしを試してみました。
## 題材
以下のニュース動画を利用しました。
– [YahooとLINE 統合を発表 – テレ東NEWS](https://www.youtube.com/watch?v=ndMhJZF6mjM)
1人のアナウンサーが1分間ほどニュースを読み上げる内容となっていて、複数人による会話などはありません。
## 文字起こし方法
Transcribeは、
– マネジメントコンソール
– AWS CLI
– AWS SDK for Python (Boto)にて利用できますが、今回はAWS CLIを使ってみます。
### 1. 変換をリクエストする
あらかじめ以下のJSONを用意しておいた上で、`aws transcribe start-transcription-job`を実行します。
“`json:request.json
{
Saving Plansによるコスト試算
Saving Plansによるコスト試算
はじめに
AWSで運用しているシステムでコスト効率を上げるため、Saving Plansのコスト試算に関して調べました。
基本料金とSaving Plansのコスト試算についてまとめています。EC2の料金
Amazon EC2 料金表を確認しましょう。
基本的に常時稼働のEC2インスタンスではリザーブドインスタンス(RI)を購入して運用している方が多いと思います。
Saving Plansでは、常時稼働ではないが定期的・不定期に停止・起動を行っているようなサーバに適用することでコスト削減が望めそうです。Fargateの料金
AWS Fargateの料金を確認しましょう。
2019/11/23現在、東京リージョン(ap-northeast-1)では以下の料金となっていました。リソースタイプ 料金(per hour)
1 vCPU $0.05056
1 GB MEM $0.00553
Saving Plansでのコスト試算
AWSマネジメントコンソールのうち、EC2サービスにSaving Plansのメニューがあるので選択します。
※こ
AWS で MFA 必須の IAM アカウントを作成し、ユーザに受け渡す手順について
多段階認証 (MFA) が必須の IAM アカウントを作成して、ユーザに受け渡す手順について。
## MFA 必須でパスワードリセット可のポリシーについて
公式のドキュメントは以下の2つです。
* https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html
* https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_aws_my-sec-creds-self-manage.html基本的にはドキュメントの通りにやればいいのですが、このままだと、初回のパスワードリセットが許可されません。
この点についての説明が、英語版と日本語版で異なっていました。
> **注記**
> このポリシー例では、サインイン時のパスワードのリセットをユーザーに許可していません。新しいユーザーおよびパスワードの期限が切れているユーザーは、これを行う
Saving Plansによるコスト試算
# Saving Plansによるコスト試算
## はじめに
AWSで運用しているシステムでコスト効率を上げるため、**Saving Plans**のコスト試算に関して調べました。
**基本料金**と**Saving Plans**のコスト試算についてまとめています。## EC2の料金
[Amazon EC2 料金表](https://aws.amazon.com/jp/ec2/pricing/on-demand/)を確認しましょう。
基本的に常時稼働のEC2インスタンスではリザーブドインスタンス(RI)を購入して運用している方が多いと思います。
**Saving Plans**では、常時稼働ではないが定期的・不定期に停止・起動を行っているようなサーバに適用することでコスト削減が望めそうです。## Fargateの料金
[AWS Fargateの料金](https://aws.amazon.com/jp/fargate/pricing/)を確認しましょう。
**2019/11/23現在、東京リージョン(ap-northeast-1)**では以下の料金となっていました。
【AWS】S3の画像アップロードにて500エラー ArgumentError (Missing required arguments: aws_access_key_id, aws_secret_access_key)
# 原因の究明
本番環境でエラーが出る場合、原因が突き止めにくいのでローカル環境での見直し。
ローカルが上手くいっている場合は、本番環境への反映が上手くいっていない。
ローカルにてエラーが発生した瞬間のターミナルログを見ましょう。# 500エラー
“`:ターミナル
ArgumentError (Missing required arguments: aws_access_key_id, aws_secret_access_key):
“`この場合、`aws_access_key_id`, `aws_secret_access_key`が上手くいっていない。
・そもそもキーが正しいか
・バックエンド側のAWSのkey辺りのコードを見直す。
・キーが反映されているかの確認をする。
・キーが逆になっていないかの確認も必ず。
(AWS_SECRET_ACCESS_KEYの方が長い)“`shell
# キーの確認
env | grep AWS
# 結果
AWS_SECRET_ACCESS_KEY=******************************
AWS_AC
【AWS】CloudFormation::Macroを使って多数のIPを接続許可する
初めての記事投稿です。
よろしくお願いします。# 使うもの
– CloudFormation
– Lambda(Python3)めんどくさいからソースと作り方だけくれって人向けにgithubに置いておきます。
コードは記事に書いてあるのと同じです。
https://github.com/nekotouma0114/CloudFormationMacroDemo# 事の始まり
僕「テスト環境の接続許可するIPって何があります?
お客さん「xxxとyyyとzzz….(数十個羅列※)お願いね!」
僕「あ、はい」※IPはばらばらでCIDRでまとめれないような状態
AWSのユーザガイド([AWS::EC2::SecurityGroup Ingres](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule-1.html))を見る限りまとめてIPは指定できず、
CloudFormationにはループ構造が見当
Fargate のログを FireLens を通して、EC2 の Fluentd/td-agent に出力する
# 概要
AWS FireLens を利用して、Fargate に立ち上げた nginx から EC2 インスタンスに用意した td-agent にログを落とす構成を作ってみます。今回の例は ECS(Fargate) ですが、CPU Unit や Memory Limit 周り以外は設定としては ECS(EC2) でも同様です。図示すると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840/4894c949-9b76-11ac-1eb0-404421dccac6.png)のような状態から、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840/89f7a25c-5825-3f22-93b3-46b1a44a4449.png)のような構成を作ります。
# 構築
## Fargate で nginx が動作している状態
Task Definition は以下のようになっているは
Amazon Cognito を利用して、会員登録を行う。
## はじめに
ここでは、Amazon Cognito を使用して、メールアドレスとパスワードを登録するためのソースコードを書きます。ただし、既に[ユーザープールを作成し、ユーザープールにアプリを追加ている](https://aws.amazon.com/jp/getting-started/projects/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/module-2/)ものとします。## AWS Amplify ライブラリをインストール
Amazon Cognito を使用するには、[AWS Amplify ライブラリ](https://github.com/aws-amplify/amplify-js)が必要なのでインストールします。“`terminal
$ npm install aws-amplify –save
“`
ちなみに [「Amazon Cognito ID SDK for JavaScript」が「AWS Amplify ライブラリ」 の一部になった](https://
Amazon Linux 2 に Laravel 環境構築 + デプロイ [とりあえず最速でデプロイしたい人向け]
既にインスタンスを作成してssh接続が完了している前提です。
デプロイする場合は、githubにリモートリポジトリが作られている必要があります。
AmazonLinux2にLaravel環境を構築して各種設定を行い、実際に動かすまでの手順を共有します。Apache 2.4
MySQL 8.0.18
PHP 7.3## yumアップデート
“`
$ sudo yum update -y
“`## Apacheのインストール
“`
// インストール
$ sudo yum install httpd
// 起動
$ sudo systemctl start httpd
// 自動起動設定
$ sudo systemctl enable httpd
// 動作確認
$ systemctl status httpd.service
“`## MySQLのインストール
“`
// mysql8.0リポジトリの追加
$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el
Private SubnetのインスタンスにSSH接続
# Public SubnetのEC2インスタンスにPrivate Subnetで起動中のEC2インスタンスのキーを転送
自分のPCからPublic Subnetにキーを転送します。社内や学内のネット環境ではできないかもしれません。
UbuntuのAMIを使用してインスタンスを作成しました。– Public Subnetのキーはpublic.pem
– Private Subnetのキーはprivate.pem
– X.X.X.XはEC2インスタンスのパブリックIPです“$ scp -i public.pem private.pem ec2-user@X.X.X.X:./PATH “
# Public SubnetのインスタンスからPrivate Subnetのインスタンスにキーを転送
##自分のPCからPublic SubnetのインスタンスにSSH接続“$ ssh -i public.pem ubuntu@X.X.X.X “
##Private.pemを使ってPrivate SubnetのインスタンスにSSH接続
– XX.XX.XX.XXはPriv
LambdaからSystems Managerを実行してEC2のバックアップを取得する
## はじめに
EC2の定期バックアップを取得をするのに良い方法はないかと思っていたところ、SSMでスナップショットが取得できることを知ったので、Lambdaから実行してみました。
サーバーの作成は省略しますが、Systems Managerを使用するので、SSMエージェントがデフォルトインストールされているWindows Server 2019を使用しています。参考
[Windows インスタンスで SSM エージェント をインストールし設定する](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-install-ssm-win.html)# やったこと
– Windowsサーバーの作成
– Systems Managerからバックアップ取得
– LambdaからSystems Manager ドキュメントの実行# Windowsサーバーの作成とIAMロール設定
バックアップを取得するため、EC2を1台作成します。
![image.png](https://qiita-im
Serverless Framework で 自身のAPIのURLを取得したい
### はじめに
Serverless FrameworkでAPI Gatewayを利用した際に
死活監視やなんらかの目的で
内部的にAPIを呼び出したい場合があるかと思います。ただ、デプロイされたあとにURLを確認し
Lambdaの環境変数に・・・などはちょっと面倒くさいので
serverless.yml内だけで設定できないかやってみました。### customにてURLを生成
本題部分です、API Gatewayで生成されるURLを文字連結します。
これでAPI GatewayのURLが生成できます。“` yml
custom:
region: ap-northeast-1
stage: ${opt:stage,”default”}
my_url:
{
“Fn::Join”:
[
“”,
[
“https://”,
{ “Ref”: “ApiGatewayRestApi” },
“.execute-api.
/etc/fstabについて
##fstabとは?
###ファイルシステム情報が記載されているところ
もっと詳しく言うとディスクなどマウントした時、このファイルが参照されます。
なので、ディスクをマウントした後、自動起動するような設定をしたいときはfstabの設定をします。##設定するには?
###viコマンドの利用“`
# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Jan 28 15:24:25 2019
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX / xfs defaults 0 0
※数字の部分はXと表示しています
“`
AWSでは上記の
お金がかかりそうなAWSサービスの全リージョン状況把握 boto スクリプト
* credential 設定
* IAM Role の権限必要“`python
#!/usr/bin/env python3import boto3
import json
from bson import json_utilclass get_all_region_resources:
##########
# init
##########
def __init__(self):
self.default_region = “us-east-1”# ec2
ec2_stats = [
“InstanceId”
,”PrivateIpAddress”
,”State.Name”
,”PublicIpAddress”
となりのAWS
# マイグレーション
### となりのCloudEndure
ExciteさんでオンプレからAWSにマイグレ[事例](https://exdev.exblog.jp/30862809/)
ニフティさんでクラウドからAWSマイグレ[事例](https://pages.awscloud.com/rs/112-TZM-766/images/H2-07.pdf)
# マーケティング/モバイル
### となりのPinpoint
ニフティさんのPinpointでユーザーにプッシュ通知[事例](https://blog.web.nifty.com/engineer/3059)
# サーバーレス
### となりのStepFunctions
Fringe81さんでサーバーレスなジョブフロー[事例](https://pages.awscloud.com/rs/112-TZM-766/images/C-3.pdf)
LOAD DATA FROM S3でファイル分割時の性能検証
auroraに大量データを登録しようとしましたが、bulk insertだと思ったように性能が出なかったので、[LOAD DATA FROM S3](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.LoadFromS3.html) を試してみました
セットアップはいつもお世話になっている [Developers.io](https://dev.classmethod.jp/cloud/aws/aurora-mysql-integrate-with-s3/) さんの記事にお世話になりました
引っかかったのは、クラスターパラメーターグループにroleのARNを設定後、DBインスタンスの再起動をしないと反映されないところぐらいでした対象のデータは、100万件で900Mほどのcsvファイルです
| インスタンスタイプ | 1ファイル | 4ファイル | 8ファイル | 16ファイル |
|:—————–|:————-
AWS上の Windows で InfoScale を用いてクラスタリングしよう
# はじめに
InfoScale は、AWS上のWindowsでのクラスタリングを保証しています。ただし、顧客要件によって実装パターンが複数存在します。そして、InfoScaleをAWS上のWindowsに構築する場合は、以下2つのポイントに留意する必要があります。
**1.どのような要件を満たすために、どのような構成のクラスターを構築するか**
**2.オンプレとは異なるInfoScaleの前提条件**
本記事では、上記2つのポイントを中心に、AWS上でクラスタリングが必要になった場合に、要件毎の最適なソリューションと、実装パターン毎の注意点を説明します。
# どのような要件を満たすために、どのような構成のクラスターを構築するか
**同一AZ内で、共有ディスクを用いたクラスター**
もっとも単純なクラスター構成です。クラスタリングされたオンプレのシステムを、そのままAWSに移行する際に用います。同一AZ内ですので、共有ディスク構成をとることができますし、AWSのPrivateIPをクラスターのノード間で切り替える事も可能です。AZの障害を考慮しないActive-Standby型のクラ
[awscli] 全てのIAM Roleの最終使用日時(RoleLastUsed)一覧を取得するワンライナー
# 背景
[アップデート] IAMロールの最終使用日時を確認できるようになりました!
Identify unused IAM roles easily and remove them confidently by using the last used timestamp
https://aws.amazon.com/jp/about-aws/whats-new/2019/11/identify-unused-iam-roles-easily-and-remove-them-confidently-by-using-the-last-used-timestamp/# やったこと
2019.11.22時点では `aws iam list-roles` のレスポンスには `RoleLastUsed` が含まれていなかったため、 全Roleの最終使用日時を取得したい場合には `aws iam
JenkinsからAWS Lambdaをデプロイする
# Jenkinsとは
初心者ですが、私の解釈としては自由度の高いCI/CDツールという位置付けです。
実行したい内容をJobという形で登録しておくことで自動で実行してくれます。
今回初めて触ってみたので、忘れないうちにメモしておきます。#手順
– コンソールから「新規ジョブ作成」を選択します。![スクリーンショット 2019-11-22 11.41.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/205918/98c74577-8b2c-b2ab-4737-49fcc347c22b.png)
– そのジョブの中に入り「新規アイテム作成」を選択。
基本的に一番上のフリースタイルでいいと思います。
![スクリーンショット 2019-11-22 11.47.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/205918/3afb99f4-5792-f3e4-6973-4354258ac4e4.png)–
是丈は心得おくべし:AWS
深く後悔したことをメモしていく。
# AWSのサービスと関係するコードは、最初の1行からAWS上でユニットテストすべし
ユニットテストは手元で走らせたいのが人情だが、やってはならない。うっかり`moto`を信じた私が馬鹿だった。`moto`は何をしてもまったくエラーを返さない。
# Lambdaでは共有メモリが使えない
そのため`multiprocessing`の`Pool`と`Queue`が使えない。そのため`loky`も使えない。
[Parallel Processing on AWS Lambda with Python using Multiprocessing](https://sysadmins.co.za/parallel-processing-on-aws-lambda-with-python-using-multiprocessing/)
随時追記する予定。