- 1. shyaml で yaml を parse して shell script で楽したい
- 2. RDSがフェイルオーバーした際、ECSで動作しているRuby on Railsを再起動する仕組みを構築した
- 3. [AWS #3] Well-Architected フレームワーク
- 4. マイクラで遊ぶために全力で技術習得した話
- 5. 自社で開発したWEBサーバー(AWS等)を他社に移管する手順
- 6. ついにAPI Gatewayの統合タイムアウトが29秒の壁を超えられるように!実際に延長リクエストしてみた
- 7. EC2に設置したDB(MySQL)をRDSへ移行した時のコマンドのメモ
- 8. 【初学者必見】はじめてのAWS CloudFormation(Ref: “○○” Fn::Select Fn::GetAZs DependsOn 属性 Fn::GetAtt )
- 9. SeleniumをAWS lambda python3.8以上で動かす[AWS SAM]
- 10. 【AWS】Cloudformationで既存VPCにセカンダリCIDRを追加する
- 11. 【AWS】CIS Benchmarksをまとめてみた(IAM編)
- 12. AWS Sagemaker Studioのお掃除方法
- 13. 手を動かして学ぶMountpoint for S3
- 14. CloudFrontのHTTPS通信を必須にしてみた
- 15. 【やってみた】Agents for Amazon BedrockでLambdaとKnowledge baseに振り分ける
- 16. Organizations形式のCloudTrailログをAthenaから参照
- 17. Go(guregu)+lambda+dynamoDBでデータのやりとりをしよう
- 18. TerraformでローカルからImportする方法
- 19. TerraformのIDプロバイダのimportでexpected “url” to have a hostが出る
- 20. TerraformでAWSリソースを作成(EC2編)
shyaml で yaml を parse して shell script で楽したい
## tldr;
shyaml を使うと yaml を shell script で parse して value を使えて楽だよ
## requirements
1. `Python` && `pip` がインストールされている
2. [`shyaml`]() がインストールされている
* なければ `pip install shyaml`## `shyaml` の使い方
“`
cat /path/to/my.yml | shyaml get-value path.of.my.yaml.field
“`## example
例えば project root dir に以下の yaml があるとします。
“`yaml:.elasticbeanstalk/config.yml
branch-defaults:
develop:
environment: my-eb-env-develop
main:
environment: my-eb-env-main
environment-defaults:
my-eb-env-tes
RDSがフェイルオーバーした際、ECSで動作しているRuby on Railsを再起動する仕組みを構築した
# 概要
`RDS`がフェイルオーバを行うと`Ruby on Rails`(以下、`Rails`)では、ダウンしたDBを参照する現象が発生します。この問題により、`DB`を参照出来ない為、`Rails`が動作しなくなります。今回は、`RDS`のフェイルオーバーが行われたら、`RDS`のイベントサブスクリプション、`SNS`、`Lambda`を使用して、`ECS`で起動している`Rails`の`puma`を再起動する処理を構築しました。今回は、その実装方法を記載します。# 前提条件
– `ECS`で`Ruby on Rails`の環境が動作している
– `Amazon aurora`(postgres)を使用している (RDSでも今回の実施は可能)
– `Terraform`を使用している (webコンソールから設定する事も可能)# Lambdaの処理を動かす為の技術選定
フェイルオーバーが行われた事を`Lambda`に通知する機能として、RDSの[イベントサブスクリプション](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/
[AWS #3] Well-Architected フレームワーク
## はじめに
今回は **「AWS Well-Architected フレームワーク」** について紹介いたします。
:rolling_eyes:うぇーる あーきてくてっど?簡単にまとめると
AWSとそのパートナー各社がシステム設計と運用の経験から得た知見を、**6つの柱**に基づいてまとめた**ベストプラクティス集**です。
## ベストプラクティスとは?
ベストプラクティスとは **「問題解決をするための最善の方法」** です。
この「Well-Architected フレームワーク」はAWSを導入した企業のシステム評価のベストプラクティスや、そのシステムがAWsのベストプラクティスにどれだけ準拠しているかを**評価する質問集をまとめたもの**です。:::note info
自社のシステムがAWSの**最善にどれだけ近いか**判断できます
:::## AWS Well-Architected Tool
質問に答えるだけでAWSのベストプラクティスと比較してくれるサービスです。
マイクラで遊ぶために全力で技術習得した話
## マイクラを始めるきっかけ
今から三年前、新卒で企業に勤め初めてからというもの、友達と交流する機会が減り、「自然と皆が集まる場所」を欲していた。
いや、マジで、切実に。当初はコロナ禍ということもあり「オンライン飲み会」が世間では流行っていたが、僕らの周りでは全く流行っていなかった。というか、主に自分が苦手だった。(オンライン飲み会って、話題を作るのが難しいよね…。)
オンラインで自然に交流が持てるのはやはり「ゲーム」になる。
ゲーム選定では
– 何人来ても楽しめる
– ゲーム内で他の人が来るまでの待機時間が退屈でない
– みんな持ってるという感じで皆さんお馴染みの「マインクラフト」をすることに。
## 自分のPCをホストに皆でマイクラしてみた話
マインクラフトを通信で遊ぶのには「自分でサーバーを用意する」か「マルチサーバーを月額契約」する必要がある。自分でサーバーを用意する場合には何通りか方法があるが、最初は「自分のPCにサーバーを作って、ポート解放で皆がアクセスできるようにする方法」を選んだ。
これはかなり簡単で、色々なサイトでやり方が紹介された。サクサクと
自社で開発したWEBサーバー(AWS等)を他社に移管する手順
# はじめに
自社で開発したWEBサーバー(AWS等)を他社に移管する機会がありましたので、必要な作業をまとめました。
読んでいただいた方が少しでも参考になれば幸いです。# 移管するもの
以下の移管手順について記載します。
| No. | 項目 |
|:-:|—|
| 1 | AWSアカウント |
| 2 | Google Analytics |
| 3 | Google Tag Manager |
| 4 | Google Search Console |
| 5 | ドメイン |
| 6 | GitHubリポジトリ |# AWSアカウント
移管元:代理店経由で契約している場合、直接契約に変更します。
移管先:AWSへ譲渡同意書の発行依頼を行います。
譲渡同意書の発行までには1~2週間程度の時間がかかります。
移管元/AWS/移管先:譲渡同意書に署名します。以下のサイトが参考になります。
https://qiita.com/knt-okada/items/823305b2930a1b315e99# Google Analytics/Googl
ついにAPI Gatewayの統合タイムアウトが29秒の壁を超えられるように!実際に延長リクエストしてみた
# はじめに
こちらでははじめまして!
SimSta(しむすた)と申します。
普段は個人ブログ「しまがじ!」で、AWSのアップデートを毎週まとめるなどしています。**しまがじ! 〜ホワイトシマリス飼いのガジェットブログ〜**
https://alta-whitechip.name
※ガジェットブログなのにまだガジェット記事が1個しかありません
うちの子も見てってね。
![IMG_7908.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3815817/3393f80e-589a-4d27-a09e-5e299d2fab9f.jpeg)
# API Gatewayのアップデート
早速ですが、2024/6/5に以下のアップデートがありました。
https://aws.amazon.com/jp/about-aws/whats-new/2024/06/amazon-api-gateway-integration-timeout-limit-29-seconds/
## 概要
API G
EC2に設置したDB(MySQL)をRDSへ移行した時のコマンドのメモ
### 前提条件
– 移したいRDSは起動済みである
– OSはAmazonLinux2を利用“`PHP
//EC2からRDSにルートユーザでログイン
//adminはRDS作成時デフォルトのルートユーザ名
$ mysql -u admin -p -h RDSのエンドポイント//mysqlログイン中
//移行するDBと同じ名前のDBを作成
CREATE DATABASE データベース名;
//DB用のユーザ作成&権限付与
CREATE USER ‘ユーザ名’@’%’ IDENTIFIIED BY ‘パスワード’;
GRANT SELECT,UPDATE,DELETE, INSERT, CREATE, DROP, INDEX, ALTER, LOCK TABLES, EXECUTE, CREATE TEMPORARY TABLES, TRIGGER, CREATE VIEW, SHOW VIEW, EVENT ON データベース名.* TO ‘ユーザ名’@’%’;
//いったんログアウトする(exitとかctrl+dで抜けたはず…)//既存のDBからdump.sqlを作成
【初学者必見】はじめてのAWS CloudFormation(Ref: “○○” Fn::Select Fn::GetAZs DependsOn 属性 Fn::GetAtt )
## はじめに
Cludformationを使い始めようと考えている方々向けに、記事を作成しました。実際に動作確認済みのテンプレートの解説をする事で、理解を深めてもらえれば幸いです。__今回は、「Ref: “○○” Fn::Select Fn::GetAZs DependsOn 属性 Fn::GetAtt 」についての説明を中心に取り上げます。__
:::note info
– **`Ref` 関数**: 他のリソースやパラメータの値を参照するために使用されます。
– **`Fn::Select` 関数**: リストから特定の要素を選択するために使用されます。
– **`Fn::GetAZs` 関数**: 指定されたリージョン内のアベイラビリティゾーンのリストを取得するために使用されます。
– **`DependsOn` 属性**: リソースの作成順序を制御するために使用され、依存関係があるリソースが正しい順序で作成されることを保証します。
– **`Fn::GetAtt 関数` 関数**:テンプレート内でリソースの特定の属性を取得するために活用します。リソース間の依存関係を管理
SeleniumをAWS lambda python3.8以上で動かす[AWS SAM]
# AWS LambdaでSelenium
webスクレイピングで便利なseleniumですが、サーバーレスと組み合わせると、APIやFTPが無くてもデータ連携させたりできるので、重宝しています。
ただLambdaでseleniumを動かすにはheadlessブラウザのchromiumと対応するchromedriverが必要で、バージョンによってはうまく(ほとんど)動かなかったりします。
とくにpython3.8以上ではLambdaのOSがAmazon Linux2で稼働するようになったため、seleniumがモジュール不足で動かなくなってしまい、従来のようにコード一式zipであげてといった方法が使えなくなりました。
私も業務で運用フローに組み込んでしまっているので、死活問題。python3.8だっていつまで使えるのか。(EOLを見よう)
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html
python3.8廃止は2024年10月14日、うん、すぐだね。:fearful:
というこ
【AWS】Cloudformationで既存VPCにセカンダリCIDRを追加する
# 概要
AWS VPCに追加でCIDRブロック範囲を拡張することは、2017年より可能になっています。
https://aws.amazon.com/jp/about-aws/whats-new/2017/08/amazon-virtual-private-cloud-vpc-now-allows-customers-to-expand-their-existing-vpcs/
作成時に割り当てるCIDRブロックがプライマリCIDR、追加する時に割り当てるCIDRブロックをセカンダリCIDRと呼びます。
しかし、「既存のVPCにセカンダリーCIDRを追加する」場合のCloudformationテンプレート例が公式ドキュメントに見当たらず、また、ネット記事にもなかったのでこちらで紹介します。
# Cloudformationテンプレートサンプル
以下がサンプルです。プライマリCIDRとして`’10.0.74.0/23’`があるとします。
既存のVPCは`VpcId`としてExportされている前提です。
(Exportしていない場合でもID指定で参照させることはできます)
【AWS】CIS Benchmarksをまとめてみた(IAM編)
# CIS Benchmarksについて
非営利団体であるCenter of Internet Security (CIS) によって作成されたセキュリティのベストプラクティスです。このベストプラクティスは、セキュリティエキスパートのグローバルコミュニティによって作成されており、自社のセキュリティ環境評価や情報資産を守るための指標としての活用が期待されています。
:::note info
本記事はCIS Amazon Web Services Foundations Benchmark(v3.0.0) を筆者が簡易的にまとめたものです。IAMに関連した22項目を対象としています。
https://www.cisecurity.org/benchmark/amazon_web_services
:::# 1. IAM(Identity and Access Management)
「認証」「認可」を行う機能です。クラウド利用者のアカウントや、AWSの各サービスがアクセスできる範囲を制御することができます。AWS上では”AWS IAM”というサービスとして提供されています。
AWS Sagemaker Studioのお掃除方法
# はじめに
お仕事で、AWSのSagemaker Studioを毎日使っています。イメージは、これです💡
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3091004/3b8e6ec5-2ce6-143d-3b53-19d304909263.png)
https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/studio-ui.html
左側にフォルダマークがあります。
作業するときはここをいわゆるフォルダ分けのようにして、いろんな分析のワークスペースとして活用できます。便利!# 課題
分析するのがゴールなので、アウトプットの報告が終わると次の仕事に移りがちですよね・・・。すると、どんどん作業中の一時ファイルなどがワークスペースに溜まり、コストを圧迫していきます!これはなんとかせねば・・・!
ー立ちはだかる壁ー
ファイルの容量が大きい=高コスト ですが、どのファイルの容量が大きいかは、ぱっと見で判断できない・・・(
手を動かして学ぶMountpoint for S3
## はじめに
この記事ではMountpoint for S3を使って、EC2にS3バケットをマウントする触る話を書きます。主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば修正していく想定です。## Mountpoint for S3とは
Mountpoint for S3は、S3バケットをディスクストレージにマウントするためのツールです。
– [Mountpoint for S3](https://aws.amazon.com/jp/blogs/news/mountpoint-for-amazon-s3-generally-available-and-ready-for-production-workloads/)
なるほど?って感じですよね?「百聞は一ハンズオンにしかず」ということで実際に触ってみましょう。
## 検証環境を作成
今回は、EC2インスタンスを使って検証環境を作成します。操作を簡略化するためにCloudFormationを使って検証環境を作成します。テンプレートは以下の通りです。
“`yaml:ec2.y
CloudFrontのHTTPS通信を必須にしてみた
# 背景・目的
以前、[Amazon CloudFrontを試してみた](https://qiita.com/zumax/items/14582d1dff091fe2838c)という記事で、CloudFrontの基本的な整理と、簡単なハンズオンを行いました。今回は、コンテンツへのセキュアなアクセスとアクセス制限の設定を試してみます。
# まとめ
下記に特徴を整理します。|特徴 |説明 |
|:–|:–|
|CloudFrontのセキュリティのオプション| ・HTTPS接続
・特定の地理的いるユーザがコンテンツに、アクセスできないようにする
・CloudFrontの署名付きURLまたは、Cookieを使用してコンテンツにアクセスするようにユーザに要求
・特定のコンテンツフィールドのフィールドレベルの暗号化を設定
・AWS WAFを使用してコンテンツへのアクセスを管理する|
|HTTPSの使用|・ビューワーによるHTTPS
・オリジンへのHTTPS|
|ビューワー↔CloudFront↔オリジン間のHTTPS通信
【やってみた】Agents for Amazon BedrockでLambdaとKnowledge baseに振り分ける
# はじめに
こんにちは、もちもちMAXです。
先日、Agents for Amazon Bedrockを使って色々試す機会があったので、今回はその内容を記事にしていきたいと思います。## 作ったもの
今回作ったのは、Agentsを使って雑談とAWSに関する質問とを振り分けるシステムで構成図は下記の通りです。
\
![AWS_structure.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/c176d89e-ba6b-4daf-3811-d3327677c87e.png)
\
現時点では、Agents for Amazon Bedrockはアクションベースとナレッジベースが登録できます。アクションベースはLambda関数を呼び出すことで目的に応じた処理をおこなえます。
今回は、Lambda関数からBedrockの基盤モデルを呼び出して雑談の返答をおこないます。
ナレッジベースはいわゆるRAGシステムです。今回はAWSに関する知識を読み込ませたナレッジベースを作成して
Organizations形式のCloudTrailログをAthenaから参照
# CloudTrailログをAthenaで参照
下記ドキュメントに、CloudTrailのログをAthenaで参照するためのCREATE文が存在しますが、こちらは1アカウントのみの形式です。Organizations形式のログについて、記載はありませんでした。https://docs.aws.amazon.com/ja_jp/athena/latest/ug/cloudtrail-logs.html#create-cloudtrail-table-partition-projection
# Organizations形式のログテーブル
下記CREATE文を実行することで、Organizations形式のCloudTrailログをAthenaから参照することができたため、ご活用ください。
パーティションも考慮してます。“`sql
CREATE EXTERNAL TABLE log_database.cloudtrail_log_table (
eventversion STRING,
useridentity STRUCT< type:STR
Go(guregu)+lambda+dynamoDBでデータのやりとりをしよう
## はじめに
この記事では、Go(guregu)を用いてLambdaを介し、DynamoDBとのデータのやりとりを紹介します。## lambdaを動かしてみよう
2023/12/31にLambdaのGoランタイムがサポート終了となりますが、buildしてLambdaへ渡すため、ランタイムは必要ありません。まずは簡単なコードから実行してみましょう。任意のディレクトリで以下のコマンドを実行して、プロジェクトを作成します。
まずは簡単なコードから実行していきましょう。
任意のディレクトリで
“`sh
$ mkdir go-lambda-test
$ cd go-lambda-test
$ go mod init test
“`
上から順に実行し、プロジェクトを作成していきます。
ディレクトリ直下にmain.goを作成し、以下のコードを記述します。
“`main.go
package mainimport (
“context”
“github.com/aws/aws-lambda-go/lambda”
)// ハンドラ関数を定義
func handler() (
TerraformでローカルからImportする方法
## 概要
Terraformを使ってTerraform Cloudで管理しているStateファイルをローカルからterraform importする手順を以下に説明します。
## 手順
### 1. Terraformにログイン
stateはterraform cloud で管理しているのでCMDで以下のコマンドを実行しプロンプトに従ってログインを実施
“`
terraform login
“`2. AWS CLIを設定
実際にAWSリソースを触るのでCMDで以下のコマンドを実行しアクセスキーとシークレットアクセスキーを登録する
“`
aws configure
“`3. importブロックを作成
次のようにimportブロックを作成します。
例としてIDプロバイダとロールをimportします。“`
import {
to = aws_iam_openid_connect_provider.github_actions_cicd_provider
id = “arn:aws:iam::***:oidc-provider/token.act
TerraformのIDプロバイダのimportでexpected “url” to have a hostが出る
## 概要
以下のterraformのimportブロックを書く
“`
resource “aws_iam_openid_connect_provider” “github_actions_cicd_provider” {
client_id_list = [“sts.amazonaws.com”]
tags = {}
tags_all = {}
thumbprint_list = [“1b511abead59c6ce207077c0bf0e0043b1382612”]
url = “token.actions.githubusercontent.com”
}import {
to = aws_iam_openid_connect_provider.github_actions_cicd_provider
id = “arn:aws:iam::${var.AWS_ACCOUNT_ID}:oidc-provider/token.actions.githubusercontent.com”
}
TerraformでAWSリソースを作成(EC2編)
## はじめに
Terraformを使ってAWSリソース(EC2)を作成する手順について、Terraform初学者の自分用のメモを兼ねて記載しておきます。
今回は以下の記事に続きEC2を構築します。
そのためここではVPCが既に構築されている前提で記事を書いています。https://qiita.com/tomoya0117/items/15960678222cfa641854
## 前提
・windows環境であること
・Terraformが端末にインストールされていること
・AWS CLIが端末にインストールされていること
・AWSのアカウント(アクセスキーとシークレットアクセスキー)があること
・TerraformでVPCなどが構築済みであること
・EC2はPrivate subnetに作成
・EC2のOSはAmazon Linux 2023を使用
・インバウンドの通信はssh(ポート22)のみ許可、アウトバウンドはすべて許可のセキュリティグループ(sg)を作成## アーキテクチャ図
![ec2-矢印.drawio.png](https://qiita-image-