- 1. AWS請求、コストのポリシー権限のアラートがまた来た
- 2. 「おひとり様」AWS Organizationsを運用する
- 3. AWS SDK for Rustを使ってRDS(MySQL)にIAM認証で接続する
- 4. 【AWS】S3の404 Not Found「NoSuchKey」エラーが発生
- 5. 【AWS】CloudWatchダッシュボード作成してみた(EC2のCPUUtilization)
- 6. CloudFormation使ってみた
- 7. [AWS]CodeBuild エージェント&dindを利用した場合のVolumeの扱い
- 8. Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your functionに遭遇した
- 9. ActiveStroage + S3 でファイルを扱う
- 10. AWS認定12冠がCloud Quest: Cloud Practitioner(日本語版)をクリアしてみた
- 11. IaC ジェネレーターで豪快にリソースを掃除した話
- 12. 【AWS】CloudFormationテンプレートの作成効率化【CloudFormation】
- 13. AWS RHELの価格改定後の課金について(2024 年 4 月 1 日以降)
- 14. 【実務で使えるLambda】describe_instancesで色々やってみる
- 15. 「Amazon Web Service負荷試験入門」を読みました
- 16. RDS Blue/Greenデプロイした後のmigrationファイルはどうするべきか?
- 17. AWSでネットワークを構築してみた。
- 18. EC2 AutoScalingのヘルスチェック猶予期間の算出方法
- 19. 【AWS】特定のIPに関するSecurity Groupのルール追加をSCPで制限できるか検証、調査してみた
- 20. AWS Batch 備忘録
AWS請求、コストのポリシー権限のアラートがまた来た
## 経緯
AWSのポリシーについてアナウンスがあったのが2023年1月でした。https://aws.amazon.com/jp/about-aws/whats-new/2023/01/aws-changes-billing-cost-management-account-consoles-permissions/?nc1=h_ls
AWSから通知があって対応したのが2023年8月ごろ。
請求関連のポリシーが次のとおりでした。
“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allow”,
“Action”: “aws-portal:*”,
“Resource”: “*”
}
]
}
“`これを、次の内容に修正。
必要そうなものは全許可です。“`json
{
“Version”:
「おひとり様」AWS Organizationsを運用する
# はじめに
個人で AWS アカウントを運用するにあたり、IAM を含め、操作権限の設定は躓くところかと思います。
「個人で使うアカウントなら、特に細かい権限設定は必要ない」と考える人もいるかと思いますが、実務で使える技術を学びたいのであればその考えは甘いです。
本記事では、 **『個人の AWS アカウントを AWS Organization で管理して IAM Identity Center でシングルサインオンできるようにする方法』** を紹介します。
(簡単にいうと、共通ユーザで複数の AWS アカウントへログインする方法です。)# 個人アカウントを AWS Organizations で管理するメリット
ネットで検索すると色々なメリットが出てくると思いますが、個人アカウントにおける1番のメリットは **『複数アカウント運用の工数が削減できる』** ということです。
将来アカウントを複数持つ可能性がある場合、(_私でいうと無料利用枠がなくなったら、追加で新しいアカウントを作成するなど_) 各アカウントに対して一つずつ IAM ユーザやポリシーを設定するのは負担が
AWS SDK for Rustを使ってRDS(MySQL)にIAM認証で接続する
## 概要
この記事ではAWS SDK for Rustを使ってRDSにIAM認証で接続する方法を説明します。IAM認証のためにはRDSの認証トークンを生成する必要があるため、まずはその生成方法を説明します。次にRustのMySQLのクライアントライブラリであるmysqlクレートと、sqlxクレートのそれぞれ使ってRDSに接続する方法を説明します。
## RDSのIAM認証
Amazon RDSではIAMを使ってユーザー認証を行うことができます。固定のパスワードを使わずに認証することができるため、セキュリティを向上させることができます。また、IAMによってデータベースへのアクセス権限を制御することができます。
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html
このIAM認証を行うためには、IAM認証情報から認証トークンを生成してデータベースのパスワードとして使う必要があります。awscliを使って認証トークンを生成する場合は以下のコマンドを利用します。
“`
【AWS】S3の404 Not Found「NoSuchKey」エラーが発生
フルスタックwebアプリ(Spring Boot, React, MySQL)をAWS(Elastic Beanstalk, S3, RDS)にデプロイしていく中で詰まった部分をメモ程度に記事にしていこうと思います。
# 発生したエラー
ReactアプリをS3にデプロイ後、ブラウザからアプリにログインを試みた際に、”Code: NoSuchKey, Message: The Specified key does not exist.”という404 Not Foundエラーが発生しました。![スクリーンショット 2024-02-05 13.32.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3576475/5aef2f92-88d6-a45e-7aea-37dcb40b43bd.png)
# 解決方法
Amazon S3>バケット>該当バケット押下>プロパティ>静的ウェブサイトホスティングの編集>エラードキュメントに「index.html」を指定することで、エラーを解消することができました
【AWS】CloudWatchダッシュボード作成してみた(EC2のCPUUtilization)
こんにちは!
CloudWatchダッシュボードを作成してみたのでその共有をしたいと思います🙂
### 1. はじめに
今回、AWS構築PJでCloudWatchダッシュボードを作成する機会がございました。対象サーバが多く、手作業で調べることも多かったので記事に残しとこうと思います、、
### 2.作成方法
早速、順を追ってCloudWatchダッシュボードの作成方法について説明したいと思います。#### 2.1 ダッシュボードの作成を行う
【ダッシュボードの作成】ボタンを押して、作成します。
僕はプロジェクト単位でダッシュボードを作成しました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3583957/c023b766-0465-cfcc-f982-b307c478b2da.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3583957/cb92f
CloudFormation使ってみた
こんにちは!株式会社ナイトレイで働くインフラエンジニアです。
今回は、CloudFormationを用いた実装の一部を紹介します!## 背景
aws opsworksサービス終了に伴い、これまでchefで管理していたwebサイトのインフラリソースを、Cloud Formationで作り直すことに!ついでに、ec2インスタンスからECSに乗り換えることにしたので、一部共有します。
## Cloud Formationとは
AWSのリソースをコードで管理できるサービスです。テンプレートと呼ばれるテキストファイル(YAML/JSON)を読み込むと、自動でAWSの環境を作ってくれます。料金は、利用しているリソース分支払えば良いだけで、Cloud Formation自体の利用は無料です。チュートリアルも用意されているのでご参考までに📕
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/CHAP_Using.html
## EC2からECSへの移行について
ECS(Elastic Contain
[AWS]CodeBuild エージェント&dindを利用した場合のVolumeの扱い
# 目的
AWSを利用した開発をする場合、localstackの利用するケースが多いと思います。
UnitTestもそのままlocalstackを利用できれば、より本番環境に近いテストができます。
ということで、やりたかったことは以下のようなもの。![pic1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2210604/ce9b5181-402b-3730-fd2c-2bc74d90273b.png)
そして、実際の業務の開発では、実環境で動作する前にローカルで確認したいことも多いとおもいます。
この構成をローカルで実行する場合は、一癖あるから注意してね、というのが本記事の趣旨とします。# 前提
AWS CodeBuildをローカルで実行する環境は公式から公開されており、この手順でローカル実行を行っています。https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/use-codebuild-agent.html
# 実環
Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your functionに遭遇した
### 起こったこと
“`bash
╷
│ Error: putting CloudWatch Logs Subscription Filter (subscription-filter): InvalidParameterException: Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your function.
│
│ with aws_cloudwatch_log_subscription_filter.this,
│ on main.tf line 34, in resource “aws_cloudwatch_log_subscription_filter” “this”:
│ 34: resource “aws_cloudwatch_log_subscription_filter” “this” {
│
“`CloudwatchLogsのロググループにサブスクリプションフィルターを通してL
ActiveStroage + S3 でファイルを扱う
### はじめに
S3使用時のActiveStorageについて、シンプルな構成で動作の流れと実装方法をまとめました。今回はRailsとDBはHerokuにデプロイしています。
### 全体概要
ファイルアップロード時の流れは下記になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/895236/a6931067-be9d-b47f-c9f8-cf3b4e24791a.png)
1. クライアントからRailsにファイルを送信(POST)します
1. ActiveStorageがS3にファイルをPutします
1. ActiveStorageがDBにメタ情報を保存します### 動作確認環境
– Apple M1
– macOS 14.1.2
– Ruby 3.2.1
– Rails 7.0.6
– gem aws-sdk-s3 1.142.0## 環境構築
構築時の手順は下記のような流れになります。
1. AWS
1. ファイルを保存するS3のバ
AWS認定12冠がCloud Quest: Cloud Practitioner(日本語版)をクリアしてみた
少し前に、無料でゲーム形式でAWSを学習できる「AWS Cloud Quest: Cloud Practitioner」が日本語でプレイ可能になったのですが、数分ググった範囲では日本語版を最後までプレイしたレポートが見当たらなかったので、他の方にお勧めしたいコンテンツか確認するべく最後までプレイしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/252389c6-5cd0-0a88-995d-63da77ca71db.png)
# まとめ
– 無料でAWS実機(マネジメントコンソール)を操作できる(私が知る限り)唯一のコンテンツで、これがとても良い。ゲーム形式がどうのと言うよりこれが本体と言って良い。大半の人が想像するよりも充実していると思う
– 指示通りにボタンを押していくだけでなく
IaC ジェネレーターで豪快にリソースを掃除した話
## IaC ジェネレーター登場前
IaCジェネレーターの登場前はFormer2を使用して既存のリソースをIaC化することができました。
IaC化先もCloudFormationやTerraform,CDKなど色んな選択肢がありました。
詳細はOutputsを開くと出てきます。https://former2.com/
一方でこれを使用するには2つの壁があるかと思います。
* IAMのCredentialをFormer2 に埋め込む
* そもそもプロキシ制限で会社の環境で使えない一旦後者は置いておくとして、
AWSをほぼ触ったことがないけどIaC化してみようかなと思った当時の私は以下の躊躇と対峙しました。
*”このCredential情報を渡して本当にいいんだろうか”*調べると下記のブログやFormer2を触った時に出てくるReadOnlyAccessを使えばいいのかと出てくるわけです。
https://aws.amazon.com/jp/blogs/opensource/accelerate-infrastructure-as-code-devel
【AWS】CloudFormationテンプレートの作成効率化【CloudFormation】
## はじめに
CloudFormationテンプレートでデプロイ作業を行っていると、テンプレートの記載ミスによりうまく実行できない場合があります。そのエラーを修正して再度実行してみてもまた別のエラーが発生して再度修正と実行をするなどしてリリース作業に思わぬ時間がかかってしまいます。
今回の記事ではCloudFormationテンプレートをデプロイする前に正しく定義を作成するためにはどのようにすればよいかを記載しました。【この記事で説明する内容】
①CloudFormationテンプレートの書き方(変数や関数の使用)
②CloudFormationテンプレートの静的解析
③CloudFormationテンプレートの分け方## CloudFormationテンプレートの書き方(変数や関数の使用)
CloufFormationのテンプレートには作成したいリソースの定義を記載しますが、その定義の中には反映する環境に依存するアカウントIDやプレフィックスの文字列、その他テンプレート内に繰り返し登場する固定の文字列があります。
これを毎回手動で更新していては更新漏れやミスによりエラーにつ
AWS RHELの価格改定後の課金について(2024 年 4 月 1 日以降)
AWSより、Red Hat Enterprise Linux (RHEL) ベースの EC2 インスタンスの価格を2024 年 4 月 1 日以降に変更するとの通知がありました。
## 価格改定の経緯
Red Hat側ではもともと「小規模」と「大規模」という2 段階の価格モデルで提示していました。
ただ、この2種類で区別するには市場規模が大きくなりすぎたとのことで、今回からは、vCPU 数に応じた価格とする形になります。
10年以上前から同じ区分であったとのことですし、改定の経緯には納得。RHEL公式アナウンス
https://www.redhat.com/ja/blog/red-hat-enterprise-linux-scalable-pricing-cloud-partners-announcement
## AWS上の価格改定の対象
**オンデマンド**と **スポットインスタンス**のすべての使用に適用されます。また、2024 年 4 月 1 日以降に購入した**Compute Savings Plans**、**Savings Plans**、**リザーブド
【実務で使えるLambda】describe_instancesで色々やってみる
# はじめに
実際に実務で扱ったLambdaの汎用的なコードを備忘録として残しています。
(※機密情報は載せてないのでご安心ください)# インスタンスIDをリストで取得してみる
とりあえずこれをコピペすればOK
“`python
import boto3client = boto3.client(‘ec2′, region_name=’ap-northeast-1’) # リージョンは任意
instances = client.describe_instances()
instance_ids = [] # 空のリストを用意
for reservations in instances[‘Reservations’]:
for instance in reservation[‘Instances’]:
instance_id = instance[‘InstanceId’]
instance_ids.append(instance_id)
“`# インスタンスに付いているタグ名をリストで取得してみる
さっき取得した`in
「Amazon Web Service負荷試験入門」を読みました
# 概要
負荷試験のノウハウについてまとめられた教材って少ないですよね。
[Amazon Web Service負荷試験入門](https://gihyo.jp/book/2017/978-4-7741-9262-8)という書籍がクラウドアプリケーションの負荷試験ノウハウについて整理されており非常に参考になります。(2~3周読みました。)
この書籍を読んで、今後参考にしたい、注意したいと感じた点を激選してまとめます。# メモ
– 負荷試験の指標の目標値の定め方
負荷試験の指標としては①スループット、②レイテンシの2つが一般的かと思いますが、具体的な事例を元にそれぞれの値の定め方が記載されております。
①スループット:1日の利用者数、一人あたりの1日の平均アクセス数、1日の平均アクセスに対するピーク時の倍率、の3つから最大rps(回/秒)を算出されています。
②レイテンシ:「各APIエンドポイントのレスポンスが〇ms以下」のような目標値が設定されています。〇は適切な値の判断が難しいですが、本書を読んだ感じでは長くても200ms以下が望ましいような印象でした。
– 負荷試験シナリ
RDS Blue/Greenデプロイした後のmigrationファイルはどうするべきか?
RDSのBlue/Green Deploymentsは本当に便利な機能ですね。昔はレプリカのサーバーを0から構築していたことを考えると隔世の感があります。
さて、この機能を使ってDBのスキーマを変更した時に問題となるのが、アプリケーションフレームワークにmigration管理の仕組みがあった場合に、DBのスキーマとmigrationの結果に乖離が生じるというものです。要するにmigrationを使わずに直接DBのスキーマを変更したのと同様の状態になってしまうということですね。
これの対応をすることがあったので参考になればと思います。フレームワークはRuby on Railsです。
## migrationを改ざんして辻褄を合わせる
### 空のmigrationを作成する
“`shell
$ bundle exec rails g migration ChangeTableItTakesVeryLongTime
invoke active_record
create db/migrate/20240204115013_change_table
AWSでネットワークを構築してみた。
内容
・目標
・使用できるサービス
・参考サイト
・作業アカウント
・VPC作成とインターネット接続環境の作成
・ルートテーブルによる経路設定を理解
・プライベートサブネットからインターネットへのアクセス方法
・VPC外サービスへの接続方法(説明)
・VPC外サービスへの接続方法1(インターフェイス型)
・VPC外サービスへの接続方法2(ゲートウェイ型)
・後片付け
・結果## 目標
AWS SAA合格と実務でしっかりやっていけるように学習!前回の学習のなかで、マルチAZ、サブネット、プライベート、パブリックといった環境に慣れるため必要性を感じたため、本題材を選択。## 使用できるサービス
VPC,Internet gateway,NAT gateway,Endpoint,EIP,EC2,S3,IAM Role## 参考サイト
https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Network1-2022-confirmation_945.html
## 作業アカウント
IAMユーザー(全権限
EC2 AutoScalingのヘルスチェック猶予期間の算出方法
# はじめに
AutoScalingのヘルスチェック猶予期間のパラメータの算出方法を備忘として書いておきます。# そもそもAutoScalingのヘルスチェック猶予期間とは?
AutoScalingのヘルスチェックには以下2つのタイプがあります。
・EC2
・ELB
EC2の場合、EC2のステータスチェック(コンソール上2/2OKと出るもの)が評価され、正常な状態であれば、AutoScalingは対象のEC2を正常とみなします。https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/monitoring-system-instance-status-check.html
ELB側を選択すると、ELBのヘルスチェック(HTTPやTCP)結果を元に正常か判断されるため、EC2だけでなく、アプリケーションとしての正常性も評価可能であることから、通常ELBタイプを選択しておくことが望ましいです。
ただし、AutoScalingが発動し、ELBのヘルスチェックに合格する前にAutoScalingがヘルスチェックをしてしま
【AWS】特定のIPに関するSecurity Groupのルール追加をSCPで制限できるか検証、調査してみた
AWS認定試験の練習問題を公開しているサイト[EXAMTOPICS](https://www.examtopics.com)のAWS認定SAP-C02試験、問題44について検証、調査してみました。
※EXAMTOPICSはサイト運営公式回答の他にコミュニティーの投票機能があり、正解が割れることが多々あります。
## 問題解説
問題文は[こちらの公式](https://www.examtopics.com/exams/amazon/aws-certified-solutions-architect-professional-sap-c02/view/5/)から参照。
### 問題概要
AWS Organizationsで管理しているOUに属するアカウントに対して、Security Groupに特定のIPアドレス(0.0.0.0/0)を接続元として含むインバウンドルールの作成を拒否したいがどうすればよいか。
### 回答
公式回答、コミュニティー投票が大きく割れた問題となっています。
①SCPから”aws:SourceIp”コンディションキーで条件指定して許可する(EXAMTOPICS公式
AWS Batch 備忘録
# はじめに
エンジニアとなり約半年。
最近、業務でAWS Batch を使用することがあり、「なんじゃこれ?」となったので、調査したことを備忘録として載せます。まだまだビギナーエンジニアなので、不足点とかあればすみません。# AWS Batchとは?
簡単にいうと、大規模計算におけるバッチ処理を効率的に行なってくれるサービスです。
バッチ処理を行う際、AWS Batch が自動でインスタンスをプロビジョニングしてくれます。
[AWS Batch 公式ドキュメント](https://aws.amazon.com/jp/batch/)# AWS Batch の設定
AWS Batch では、「ジョブ」「ジョブ定義」「ジョブキュー」「コンピューティング環境」を設定する必要があります。それぞれ見ていきましょう。
– ジョブ
– ジョブ定義
– ジョブキュー
– コンピューティング環境### ジョブ
AWSによって実行される作業単位のことです。ジョブ定義に基づき作成されます。
パラメータには以下のようなものを設定します。
– 元となるジョブ定義
– 投入先ジョブキュー 等#