- 1. AWS CLIインストールした際にエラーの対処方法
- 2. AWSLamdbaのエフェメラルストレージ10GB拡張を試してみた
- 3. AWS S3コマンドでメタ情報を付与する方法
- 4. Cloud Data Warehouse BenchmarkでRedshiftのデータを準備する
- 5. AWS公式資料で挑むSCS認定(30)-こんな時どうする(全分野その7)
- 6. Redshift Data APIを使ってS3のJSONデータを取り込む
- 7. AWS 初めて使う時に参考にした記事
- 8. CodeBuildで利用するproxy設定をパラメータストア化する
- 9. CloudFrontによる静的Webホスティング+署名付きURLの生成
- 10. CodePipeLineを使用したCI/CDの構築
- 11. rake stderr: warning package.json: No license field warning package-lock.json found.
- 12. AWS Session Manager経由のSSH接続でAWSのprofileを指定するには・・
- 13. Amazon ECS Execで”The execute command failed due to an internal error. Try again later.”と言われた時の対応
- 14. 【AWS】EBS縮退作業メモ
- 15. AWSのStreaming Serviceを使って、Unityで動画をStreamingする
- 16. AWS CLI SSM接続時のエラー【 [SSL: CERTIFICATE_VERIFY_FAILED]】対処法メモ
- 17. IoT CoreからAMP(Amazon Managed Service for Prometheus)へデータ登録するLambdaを作った話
- 18. 【反面教師】AWSの無料利用枠を勘違いし、ちょっと泣きたくなった話
- 19. Dynamooseのクエリまとめ
- 20. [AWSのECSのエラーを解決したお話] ValidationError: Member must satisfy regular expression pattern: [a-zA-Z][-a-zA-Z0-9]*
AWS CLIインストールした際にエラーの対処方法
### AWS CLIインストール時にawscliが機能しないエラーが発生、解決方法をメモ
#### エラーメッセージ
“`
C:\> aws –version
Traceback (most recent call last):
File “C:\Program Files\Python38\Scripts\aws.cmd”, line 50, in
import awscli.clidriver
ModuleNotFoundError: No module named ‘awscli’
“`#### 環境
Windows10 x64#### 手順
AWSインストールガイドに従ってインストールしました。
“`
C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
“`
[AWS CLI インストールガイド](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.
AWSLamdbaのエフェメラルストレージ10GB拡張を試してみた
# まえがき
普段サーバサイドエンジニアをしています。
今回はじめてQitaに記事を掲載します。# 概要
3/24のLambdaのアップデートにてエフェメラルストレージが最大10GBまで対応できるようになったため、実際に使ってみました。
https://aws.amazon.com/jp/about-aws/whats-new/2022/03/aws-lambda-configure-ephemeral-storage/元々Lambdaには「ファイルシステム」からEFSを設定することが可能でしたが、
VPCに接続する必要があったり、スループットが必要な案件ではかなり高価なEFSを使う必要がありました。# 設定
マネージメントコンソール上の「設定」から「一般設定」に「エフェメラルストレージ」が増えており、
こちらから更新すること可能ですが、既にServerless frameworkで対応されていましたので、こちらからデプロイしてみたいと思います。
※「エフェメラルストレージ」の機能を使用するにはServerless framework 3.10.0以上を使用する必要がありま
AWS S3コマンドでメタ情報を付与する方法
### 本記事について
AWS S3 へ cp コマンドを使用してローカルの csv ファイルをアップロードする際の出来事。
メタ情報を付与するための S3 コマンドについて調べてもいい感じの記事が見つからない!!
なので対応したときのメモ書きを残します。### そもそも AWS CLI とは?
ターミナル等のコマンドラインツールから AWS を操作するためのインターフェースです。
AWS CLI を利用して、S3 上の対象バケットにあるオブジェクトを移動・削除したり、ローカル にあるファイルをアップロード、逆に S3 から ローカル へ ダウンロード することができます。# 【本題】AWS S3 コマンドでコピー時にメタ情報を付与する方法
※ S3 コマンド実行はWindowsOSを想定“`shell
# 送信日をセット
$ SET DATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%# メタ情報設定 DドライブのTEST.csvをS3バケット「send-s3」にセットする場合
# S3 Metadata KEY ⇒ meta_info
#
Cloud Data Warehouse BenchmarkでRedshiftのデータを準備する
# 背景・目的
– Redshiftの性能や機能を試すためには、ある程度サイズや件数が多いデータが必要になります。
そのため、awslabs/amazon-redshift-utilsリポジトリの[Cloud Data Warehouse Benchmark](https://github.com/awslabs/amazon-redshift-utils/tree/master/src/CloudDataWarehouseBenchmark/Cloud-DWB-Derived-from-TPCH)(以降、Cloud DW benchmarkという。)を利用してデータを準備し、今後の検証に利用します。
– Cloud DW benchmarkは、TPC-Hから派生したベンチマークツールです。3TBと30TB用のディレクトリがあるが、今回は3TBを利用します。# サマリ
– Redshiftのデータを準備しました。
– 一定以上の大きさのデータをさくっと用意するには、awslabsが有用だと感じました。
– ただし、ロードの時間を考えると同一リージョン(us-east-1)に
AWS公式資料で挑むSCS認定(30)-こんな時どうする(全分野その7)
##### [前回] [AWS公式資料で挑むSCS認定(29)-こんな時どうする(全分野その6)](https://qiita.com/mingchun_zhao/items/b9fab772e1e4558a7026)
## はじめに
「こんな時どうする」自作により、理解が徐々に深まるきがします。
この調子で続けます。## 分野1: インシデント対応
– Amazon CloudFrontオリジンのS3バケットに保存したプライベートコンテンツへ、S3 URL経由で疑わしいアクセスが発生した
– S3バケットのオリジンアクセスアイデンティティ(OAI)を設定し、Amazon S3 URLからファイルへの直接アクセスを禁止、署名付きCloudFront URLを使用したアクセスのみ許可
– 設定手順
– OAIと呼ばれる特別なCloudFrontユーザーを作成し、CloudFrontディストリビューションに関連付ける
– バケット内のファイルの読み取りアクセス許可をオリジンアクセスアイデンティティに付与
– 他のすべ
Redshift Data APIを使ってS3のJSONデータを取り込む
Redshiftへ取り込むデータがAPIでしか提供されていない場合にLambdaで外部のWeb APIを叩いて取得したデータをRedshiftに取り込むということになると思います。今回はそのような実装したので紹介します。細い説明は省きます。
#### 1. Redshiftのデータベースとテーブルを作成する
#### 2. LambdaでRedshift Data APIを使ってS3にあるJSONデータをRedshiftに取り込む今回のアーキテクチャは以下の通りです
# IAM周りのセットアップ
#### 1. LambdaのIAMロールに「AmazonRedshiftFullAccess」ポリシーをアタッチする
#### 2. Redshift用のIAMロールを作成 & 「AmazonS3ReadOnlyA
AWS 初めて使う時に参考にした記事
# AWS初めて使用する時に使った記事
### インスタンス作成
* [AWS EC2の公式ドキュメント](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/launching-instance.html#choose-an-instance-type-page)
* [WordPressをAWSで作る](https://katsuhiroblog.com/aws-wordpress/)
* [セキュリティグループの設定で使用](https://tech-dive.xyz/2018/11/30/post-751/)
ポイントは「~/32」であれば設定したIPアドレスのみ(IPの左から32文字まで固定。/24だと24まで固定だから25-32桁は変動出来る)
* [キーペアのタイプ(RSA(従来型)とED25519](https://dev.classmethod.jp/articles/saichan-20220107/)
ポイントはRSA古くから使用されており、以前はこれ一択であった。ED25519は「RSAと同程度の安
CodeBuildで利用するproxy設定をパラメータストア化する
CodeBuild(CodePipeline)をVPCで実行するシーンでは、以下のようにプロキシ指定を駆使する必要があるケースがあると思います。
– 外部通信にプロキシ(HTTP_PROXY,HTTPS_PROXY)を利用する
– AWSサービスへの通信のうち、VPCエンドポイントが提供されている場合は、VPCエンドポイント経由(NO_PROXY)とする
– プロキシ設定は、パラメータストアに入れて集約したい![codebuild_proxy.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1219565/116b2236-ad5c-71a7-e656-c2b8b2663c38.jpeg)
パラメータストアに、“http_proxy“,“https_proxy“,“no_proxy“を登録して、CodeBuildの環境変数でパラメータストア参照にすれば良いかなと試しましたがうまく行きません。
これを実現する方法を記載します。## 前提
* CodePipelineから、Github
CloudFrontによる静的Webホスティング+署名付きURLの生成
# はじめに
LambdaでCloudFrontの署名付きURLを生成し、S3オブジェクトのキャッシングを実装。
S3とCloudFrontの直接参照は不可とする。
## S3
– 新規でバケットを作成し、ファイルをアップロード
– アクセス許可:パブリックアクセスを全てブロック
– 静的ウェブサイトホスティング:無効## CloudFront
– 新規ディストリビューションを作成
– オリジンドメイン:作成したS3バケット
– S3バケットアクセス:
– OAIを使用(新規で作成)
– バケットポリシー:自動更新キーペアを生成後、「ビューアーのアクセスを制限する」を変更
## キーペアの作成
今回はOpenSSLで生成
“`
openssl genrsa -out private_key.pem 2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
“`public_keyをAWSにアップロード
– CloudFrontの左メニューから「パブリックキー」を選択
CodePipeLineを使用したCI/CDの構築
# CodePipeLineを使用したCI/CDの構築
環境構築初心者が 開発時に調査&構築した内容を備忘録として残します。
## 目的
以下のデプロイフローを実現
– **CodeCommitリポジトリ**のPushをトリガーに、**CodeBuild**によるビルド/テストを実行
– ビルドに問題がなければWebアプリの実行ファイルを**S3**にデプロイ
– **S3**にデプロイしたWebサイトを**CloudFront**でキャッシング(アクセス許可はCloudFrontからのみ)## 使用したAWSサービス
– **S3**
– **CodeCommit**
– **CloudFront**
– **CodeBuild**
– **CodePipeLine**## デプロイするWebアプリ
– **Angular**
## CodeCommit
– 新規リポジトリを作成
## S3
– 新規バケットを作成(アクセス許可はパブリックアクセスを全てブロック)
## CloudFront
– 新規ディストリビューションの作成
– オリジンドメイン:
rake stderr: warning package.json: No license field warning package-lock.json found.
# 前提
Rails 6.1.3
Ruby 2.6.5
# エラー内容
“`
rake stderr: warning package.json: No license field warning package-lock.json found.
“`
# 結論(解決方法)
以下のコードを書くだけです。
“`package.json
{
…
“license”: “UNLICENSED”
…
}
“`
# 補足
## package.jsonとは
アプリが依存するパッケージに関する情報を記録するのに使用するファイルで
JSON形式で各種の設定を記述します。
## package-lock.jsonとは
このファイルには dependency、dependency の dependency…と間接的なものも含めすべての dependency のバージョン(とその integrity)が記録される。
## No license fieldとは
No license field==ライセンスが設定されていない
# 参考記事
[「package.json」って何?って
AWS Session Manager経由のSSH接続でAWSのprofileを指定するには・・
## Session Managerを使ってEC2に直接SSHする
https://www.karakaram.com/aws-session-manager-tunneling-support-for-ssh/
使っているAWSアカウントが一つなら問題ないのですが
## AWSのprofileが複数あるのですが。。。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-profiles.html
案件Aと案件BでAWSアカウントが違うってよくありますよね。
そういうときはAWSのPROFILEを分けてアカウントを管理します。## で、こんな風にしたいじゃないですか
“`
ssh -i ./ssh-key.pem ec2-user@i-0xxxxxxxxxxxxx –profile HOGEHOGE
“`が、今の所できないようです
https://www.shigemk2.com/entry/2020/03/13/202311
AWS_PROFILEをexportせよ、と
Amazon ECS Execで”The execute command failed due to an internal error. Try again later.”と言われた時の対応
ECS Execを実行する時に以下のエラーが発生するときがある
“`
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error. Try again later.
“`## まずやるべきこと : Amazon ECS Exec Checkerを使おう
以下からgit cloneしてきましょう
https://github.com/aws-containers/amazon-ecs-exec-checker使い方などは割と簡単なので割愛します
## Amazon ECS Exec Checkerで出てくる3パターン
### 1.ECSのタスクロールにSSM関連の
【AWS】EBS縮退作業メモ
# 状況
EC2: amazonlinux2
縮退前EBS: gp2 100GB
縮退後EBS: gp3 30GB# 作業時間目安
EBSスナップショット作成: 30秒~60秒/GB
EBS同期(rsync): 2~3分/GB# 手順
##### 1. スナップショット作成
「アクション->イメージとテンプレート->イメージを作成」から縮退対象のインスタンスのAMIとEBSスナップショットを取得
取得後に復元しボリュームとして利用可能な状態に
※この時「再起動をしない」チェックはONにしない。再起動を行わないとスナップショット内のデータが壊れる可能性あり(AWS非推奨
![Untitled Diagram-Page-2 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298813/2e05d039-2a71-c41f-88eb-bd137f861f20.jpeg)##### 2. 新規インスタンスと同時に縮退後のEBSを作成
縮退対象EC2と同じAMI・AZでEC2インスタンスを作成(
AWSのStreaming Serviceを使って、Unityで動画をStreamingする
# AWSのStreaming Serviceを使って、Unityで動画をStreamingする
## ツール情報:
この記事で利用するのツール:
– [AVProVideo](https://assetstore.unity.com/packages/tools/video/avpro-video-core-edition-181844)
– Unity: 2018.4.2f1
– AWS S3 Service
– AWS Elemental MediaConvert Service## Streaming Mechanism:
ストリーミングのメカニズムでは、1つファイルを数パーツファイルに分けて、プレイバック時間で判定、適切なパーツをDLして、再生する。—
## システム構築図:
![architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2156015/7102647f-f9e6-5875-1e95-8aa89d75dacb.png)
| Service |
AWS CLI SSM接続時のエラー【 [SSL: CERTIFICATE_VERIFY_FAILED]】対処法メモ
# 0.問題
気ままに更新ボルベルトでーす。今日はEC2にSSMを使って接続をしようとしていたらエラーが出たのでメモしていきます。
やろうとしていたことは以下です。
* IGを作成したVPCにEC2を立ち上げる。なお、VPCはDNSホスト名とDNS解決を有効とする。
* EC2にSSM接続を許可したポリシーをアタッチする(AmazonSSMManagedInstanceCoreというポリシー)
* aws cliから下記コマンドでssm接続を試みる
“`
aws ssm start-session –target “インスタンスID”
“`
上記手順でSSM接続しようとしたところ下記のエラーが発生
“`
SSL validation failed for https://ssm.ap-northeast-1.amazonaws.com/
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)
“`# 1.解決策(一時しのぎ)
結論、“`–no-verify“
IoT CoreからAMP(Amazon Managed Service for Prometheus)へデータ登録するLambdaを作った話
IoTデータをPrometheusに入れてGrafanaで見れたらおしゃれな気がする。理由はないけど。
しかーし
**IoT CoreのルールアクションにPrumetheusがない(泣)**
2022/4/3現在の指定できるアクションはこちら。
![ap-northeast-1.console.aws.amazon.com_iot_home_region=ap-northeast-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/2cd343f6-a326-b811-93fe-932ab775761d.png)
ないならLambdaで作ろうと思い立ち、作ったのがこちら。
https://github.com/moritalous/iot2aps-lambda
構成はこのようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/85d2428e-16b0-2ab
【反面教師】AWSの無料利用枠を勘違いし、ちょっと泣きたくなった話
# ある日
2022/3月、AWSの無料枠の範囲でこんなことをしていた。
環境構築後は、インスタンスなどは停止した状態で放っておいた。
https://qiita.com/yokoo-an209/items/547d9a495a0a83855031
そして、ふとメールを見るとAWSからこんな通知メールが
![スクリーンショット 2022-04-04 21.55.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669969/81b8c47f-8450-5e8a-30fa-d684fe7b68b7.png)
**`Total in JPY: 8,954*`**
「ほぇ?」
一瞬なんのことを言ってるかよくわからなかったが、冷静になりよくみてみると・・・
「あれ、もしかしてこれ先月の請求のこと言ってる?
まだ登録して12ヶ月以内だから無料枠のはずなのにどういうこと??」悪い予感を抱えながら、`Billng`を見にいくと・・・・
![スクリーンショット 2022-04-04 22
Dynamooseのクエリまとめ
## 書こうと思ったきっかけ
今参画してるプロジェクトのデータベースに**DynamoDB**を使っていて、そのORMとして**Dynamoose**を使っています。
ただ、調べながら実装していて思ったのが、**記事が少ないんじゃあ**ということ?
なので、今回は実務でよく使っているクエリ文を紹介できたらと思います。## そもそもORMとは
> オブジェクト指向プログラミングにおけるオブジェクトとリレーショナルデータベース(RDB)の間でデータの相互変換を行うこと。そのための機能やソフトウェアのこと。
プログラムからRDBへデータを保存するには、オブジェクトを実体化したインスタンスの持つ値を、データベースの表中の項目に当てはめて書き込む操作(読み込みの場合はこれとは逆の操作)を行なうが、通常はデータベース管理システム(DBMS)へ操作を依頼するSQL文などを生成・発行するコードをプログラム中にその都度記述しなければならない。
ORMはこの処理を専門的に受け持つもので、あらかじめ設定された対応関係の情報に基づき、インスタンスのデータをデータベースの対応するテーブルへ書き出したり、デー
[AWSのECSのエラーを解決したお話] ValidationError: Member must satisfy regular expression pattern: [a-zA-Z][-a-zA-Z0-9]*
## はじめに
このエラーで調べるとヒットしなかったので書きました同じエラーで困ってる方の助けになれば…
## 状況
AWSのECSでデプロイしようとした際のお話docker-compose.ymlを設定し
“`docker context create“`でcontextを作成して
“`docker context use“`で設定し
“`docker compose up“`を実行した際のエラー## エラー内容
“`
ValidationError: 1 validation error detected: Value ‘wordpress-
recruit_website’ at ‘stackName’ failed to satisfy constraint:
Member must satisfy regular expression pattern: [a-zA-Z][-a-zA-Z0-9]*
“`## 解決
**ValidationError** ということで
自分のディレクトリ名にしてた“`’wordpress-recruit_