- 1. クレデンシャルではなくAssume Roleを利用した外部AWSアカウントへのアクセス
- 2. AWS Control Towerについて
- 3. AWS re:Invent 2023
- 4. AWS NATゲートウェイの状態がFailedになる
- 5. Secrets Managerをアカウント間で同期する
- 6. AWS Elastic IP addressとは
- 7. AWSのVPC この記事でマスターしておこう。
- 8. 新規アカウントでEC2のリージョンが制限されてたのでリージョン変更を申請
- 9. IAMって?
- 10. API gateway (Cognito Authorizer) を使ったM2M認証
- 11. Route53 DNSクエリログに表示される値について
- 12. HANA DB SYSTEMユーザのパスワード初期化
- 13. クロスAWSアカウントでS3オブジェクトにアクセスする
- 14. Amazon EC2へのInstanaエージェント導入&セットアップ
- 15. AWS CLF入門 – ストレージ編
- 16. Amazon LightsailのDNS Zoneを使用している場合のAmazon SESのドメイン認証の手順
- 17. EC2ブートストラップ
- 18. AWS CDK integ-testsを活用した「データ境界」S3アクセステストの自動化
- 19. AWS ALBからのリクエストだけ許可したい場合のEC2に設定するセキュリティグループのインバウンドルールの設定
- 20. 構築したWebサービスのレスポンスが異常に遅い問題を突き止めるまでの奇跡
クレデンシャルではなくAssume Roleを利用した外部AWSアカウントへのアクセス
# 概要
データエンジニアをしています。
直近で参画したプロジェクトにて、データマートのデータをファイル形式にして外部のAWS S3へエクスポートする機能を開発する必要がありました。我々のチームではデータパイプラインをスクラッチで内製開発したという経緯があり、データマートをファイル出力する機能自体は存在していました。
一方で、外部のAWS S3へ出力する機能は存在しなかったので、機能追加とともに主にAssume Roleについて改めて学習する機会となりました。以降、主にAssume Roleに焦点を当てた内容となります。
# Assume Roleの仕組み
まずはかんたんにAssume Roleの仕組みについて振り返ってみます。
IAMユーザーおよびリソースが、**STS経由でロールの権限を一時的に引き受ける**(Assume)仕組みとなります。引き受けた側は一時的にロールにアタッチされたポリシー相当の権限を行使することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co
AWS Control Towerについて
概要
————————-
AWS Control Towerの機能
・ランディングゾーン
複数のアカウント環境をAWSのセキュリティとコンプライアンスのベストプラクティスに基づき、Control Towerが自動的にセットアップします・コントロール
以下3つがランディングゾーンで設定されたAWSアカウントのガバナンスを提供するためのルール
・予防コントロール
・検出コントロール
・プロアクティブコントロール予防コントロール、検出コントロール、プロアクティブコントロールは以下の3つのカテゴリから適用される
・必須
・強く推奨
・選択的・Account Factory
新規アカウントの発行を標準化するテンプレート・ダッシュボード
ランディングゾーンのOUやアカウントに適用されているコントロールの確認やポリシーの非準拠の検出などの確認できる備考
次は、手順とコントロールについてもう少し掘りたいと思いますhttps://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/aw
AWS re:Invent 2023
# はじめに
本田技研工業 RoadSyncチームのバックエンドを担当している安部と申します。
RoadSyncの概要説明はTechブログ第一弾に記載していますので、ぜひご覧ください。
https://qiita.com/nakamuloud/items/a4fe2d3173b361bcb3fe
今回は、2023/11/27〜12/1にラスベガスが開催されたAWS re:Invent 2023に参加しましたので、そのイベント内容を紹介します。
# AWS re:Inventとは?
AWS re:InventはAWS 最大のラーニングカンファレンスで、毎年ラスベガスで開催されています。複数のホテルでセッションが開催され、徒歩、シャトルバス等で移動し受講しに行くというスタイルのイベントになります。
![IMG_1283.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3347144/bb59362a-52fa-1370-bd74-ffb7aac99021.jpeg)
# 滞在スケジュール
ス
AWS NATゲートウェイの状態がFailedになる
## 概要
NATゲートウェイ(NGW)を作成後、状態を確認していたらFailedになっていることに気がついた。自分の場合のトラブルシューティングを簡単にまとめる。
## 原因
NGWが所属するVPCにインターネットゲートウェイ(IGW)が設置される前にNGWを作成していた。
## 詳細
NGWの状態メッセージに下記のように出ていた。
“`
Network vpc-0ff1012a9b84d58bb has no Internet gateway attached
“`これはNGWがインターネットにアクセスできていないということだ。
原因は先にも記載したが所属VPCにIGWを作るより前にNGWを作ってしまった。
そのためNGWがインターネットに接続できない状態になっていた。## 解決方法
1. IGWを作成しVPCにアタッチした。
1. 状態がFailedになっているNGWを一旦削除
1. 再度NGWを作り直す。上記を実施し、問題は解消した。
Secrets Managerをアカウント間で同期する
# はじめに
こんにちは。1年ぶりの記事です。
サボっていたわけではありません。ただ、生きている喜びを実感していただけです。
素敵やん。今回担当案件でどうしても実現したい事象がありました。
それはSecrets Managerの値を別アカウントのSecretsManagerに同期したいというものでした。
説明下手でわかりにくい箇所等あるかと思います。ご了承ください。
備忘録程度なので雑ですみません!権限はもっと絞れるはずです!
もっと簡単な方法あるぞ!という意見お待ちしています。# 前提
AWSアカウントAとAWSアカウントBがあり、それぞれ異なるECサイトを運用しています。
アカウントAにAuroraがあり、そのDB情報等をjsonファイルとしてSecretsManagerに格納しています。
アカウントBはアカウントAのAuroraをクロスアカウントで利用しています。
この度、お客様よりアカウントBにもアカウントAと同期されたSecretsManagerを作成してほしいとの要望がありました。# 課題
いやいやわざわざSecrets作成しなくても下記の方法でクロスアカウント
AWS Elastic IP addressとは
# Elastic IP address
AWSのVPC上の固定のIPアドレス
AWSのVPC この記事でマスターしておこう。
# VPCとは
VPCとは、[Amazon Virtual Private Cloud](https://aws.amazon.com/jp/vpc/)の略称。
*自分の手で、クラウド上に、仮想的なネットワークを作れる*
(ちなみに仮想って意味は、実際の手元にないって意味ね。深く考えずに、ただそれだけ。)
#### ※VPCをちゃんと理解したかったら、[ネットワーク](https://wakabastart.com/work/engineer758/)を結構詳しく理解してないと、VPCをちゃんと理解することはできないので注意
また、ネットワークは基本的に巨大なので、複雑で理解しにくい。
## VPCの前提
VPCを理解したければ、他のリソース(EC2インスタンスやRDSやS3など)も、用語を知ってる必要がある。
なぜなら、VPCで作成したネットワークは、それらの資源と連携して使うものだから。
例えば、VPCの機能の1つとして、IPアドレスの割り当てがある。
VPC上で作成したEC2インスタンスに対して、仮想ネットワークからIPアドレスを割り当てることができる
新規アカウントでEC2のリージョンが制限されてたのでリージョン変更を申請
新規アカウント作成時後に、AWSより以下の内容のメールが届いた。
> Dear AWS Customer,
>
> Thank you for signing up with Amazon Web Services!
>
> As a new customer, you can launch Amazon Elastic Compute Cloud (EC2) instances in 3 AWS Regions. If you prefer other Regions, then contact us through the Support Center: (please click here)
>
> Let us know which 3 Regions are more convenient for you. You can find the list of Regions and the services that are available in each at http://aws.amazon.com/about-aws/globalinfrastructure/re
IAMって?
# AWSクラウドエンジニアになりたい
### *”[愛してんぜ音色!](https://youtu.be/WRFwZY8Pm6w?si=hP5va0lTNgDq7L2n)”じゃなくて、”愛してんぜAWS!!”*
## IAMとは何か?
よく、IAMユーザーとか出てくると思います。
awsコンソールにログインするときなど。
## まず、IAMって?
結論:`awsで作成したユーザーやグループに対して、awsのサービスごとに、権限を設定できるもの`
数ある、awsのサービスの1つ
“`
VPCやEC2などのサービスをAWSクラウドで立ち上げる。
それぞれのサービスに、多くの人が関与することは当たり前にできたほうが便利である。
そうなったら、肝心なのは?
そう。セキュリティ。
IAMでは、そのサービスにどの権限でアクセスしてもいいか。設定できるぞい。
“`難しそうで、とても簡単な話
## では、IAMユーザーは?
結論:`IAMサービスで、サービスにアクセスしてもいいと権限を付与されたアカウント`
一緒に目にするものとして、ルートユーザーがあると思う
API gateway (Cognito Authorizer) を使ったM2M認証
# 実現したいこと
* API gatewayでユーザーログイン認証ではなく、マシン間 (machine to machine:M2M) 認証を行いたい。
* 接続元クライアントごとに利用できるAPIを制御したい### APIキーと使用量プランは認証には使えない
API Gatewayには、APIキーと使用量プランという機能があり、APIキーをもつクライアントのみがアクセス可能なAPIを作成でき、APIリクエストのスロットリングができます。
しかし、公式docにもある通り認証認可には別の方法を考える必要があります。
> API キーを、API へのアクセスを制御するための認証または承認に使用しないでください。https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-api-usage-plans.html#apigateway-usage-plans-best-practices
### Amazon Cognito の Client Credentials Grant を利
Route53 DNSクエリログに表示される値について
## 概要
下記記事でRoute53にてDNSクエリログを出力できるように設定した。ログ出力内容について触れていなかったのでこちらの記事で別途まとめてみる。
https://qiita.com/miriwo/items/a45c924143ed057c0c88
## 内容
下記のドキュメントに記載されている内容をまとめてみる。
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/query-logs.html#query-logs-format
説明には下記のログを使用する。このログで出力されている内容がそれぞれどのようなものであるのかを確認する。
“`
1.0 2017-12-13T08:16:02.130Z Z123412341234 example.com A NOERROR UDP Region 192.168.1.1 –
“`| ログの内容 | 項目名 | 備考 |
| — | — | — |
| 1.0 | ログ形式バージョン | |
| 2017-12-13T0
HANA DB SYSTEMユーザのパスワード初期化
### 前置き
先日HANA DBインストール後にSYSTEMユーザのパスワードを誤って設定していたことがありました。
その設定したパスワードも不明な状況(一体どうやって2度入力のトラップを潜り抜けたのか、、、)で絶体絶命の中、調べるときちんとパスワード初期化の方法が用意されていたので、やってみました。### パスワード初期化手順
#### ①HANAをインストールしているDBサーバにログイン
#### ②ユーザスイッチ
インストール時に作成される”sid”admユーザーへスイッチします。
※”sid”admでログインでも可。
“`
su – godadm
“`
#### ③HANA DB停止
HANAデータベースインスタンスを停止します。
※コマンド内のディレクトリとインスタンス番号は適宜、利用している環境のものに置き換えてください。
“`
/usr/sap/GOD/HDB10/exe/sapcontrol -nr 10 -function StopSystem HDB
“`
#### ④SYSTEMデータベースのnameserverを起動
SYSTEMデータベースのna
クロスAWSアカウントでS3オブジェクトにアクセスする
## やりたいこと
AWSアカウントA:
・S3バケットにVPCエンドポイントしかアクセスできないように制限をかけています
・S3バケットにはRefererアクセス制限をかけていますAWSアカウントB:
EC2などからAWSアカウントAのS3バケットへアクセスしたい## おまかの流れ
AWS記事に書いているとおり
https://repost.aws/ja/knowledge-center/s3-instance-access-bucket## 大変なところ
S3バケットのポリシーを書くこの記事にはだいたい書いています
## 実際にどうやって書くのか
“`
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “Deny get requests not through vpc endpoint”,
Amazon EC2へのInstanaエージェント導入&セットアップ
# はじめに
IBM Instana Observability(以下、Instana)は、アプリケーションパフォーマンス管理(**A**pplication **P**erformance **M**anagement | APM)を実現する監視ソフトウェア/SaaSです。Instanaを利用するには、監視対象のアプリケーションがデプロイされているホストに
エージェントを導入する必要があります。今回は、Amazon EC2にエージェントを導入する方法をまとめます。
(2024/2/21時点)公式ドキュメントはこちらです。併せてご確認ください。
https://www.ibm.com/docs/ja/instana-observability/current?topic=agents-amazon-web-services-aws# Amazon EC2にInstanaエージェントを導入する
## 1. エージェント導入先のEC2インスタンスを構築する
1. AWSコンソールにログインし、検索ボックスで”EC2″と入力/検索し、EC2の画面を開きます。
2. “Launch
AWS CLF入門 – ストレージ編
## はじめに
AWS CLF (AWS Certified Cloud Practitioner) を取得した際の学習記録をアウトプットとして以下に記す。## リンク
[ネットワーク](https://qiita.com/yashiuri/items/31b2c9c3c49c2584cd01)
[セキュリティ](https://qiita.com/yashiuri01/items/73e5310b09ff41912862)
[コンピューティング](https://qiita.com/yashiuri01/items/9eaf71a1590e7815f9ef)
[コンテナ]()
[スケーリング]()
[ストレージ]() ←今ここ
[データベース]()
[メッセージ]()
[モニタリング]()
[デプロイ]()
[コストとサポート]()
[移行とイノーベーション]()
[AWS製品群一覧]()## **ブロックストレージ、オブジェクトストレージ、ファイルストレージ**
| | ブロックストレージ | オブジェクトストレージ | ファイルストレージ |
| — | —
Amazon LightsailのDNS Zoneを使用している場合のAmazon SESのドメイン認証の手順
# 当記事の概要
Amazon Lightsailは、月額数ドル〜でAWS上に簡単にサーバ・Webアプリケーションを構築できるサービスです。このAmazon LightsailでRedmineサーバを構築した際、Redmineからのメール通知用に Amazon SES も一緒に利用したのですが、SESのドメイン認証が当初うまくいかなかったので、その解決方法を記載します。
# ハマったポイント
Amazon SESからメールを送信するためには、送信元のメールアドレス、または、ドメインを事前に検証する必要があります。このうち、ドメイン検証では、例えばAWSのRoute 53でドメインを取得し、Route 53でDNSを管理している場合、SESの設定の中で容易にドメイン検証を行うことができます。ただ、**LightsailでDNS Zoneを作成している場合、SESの設定で完結せず、LightsailでのDNS設定が必要**になります。
整理すると、当記事の対象とするケースは以下になります。
– ドメインはRoute 53で取得済み
– LightsailでDNS Zoneを作
EC2ブートストラップ
EC2ブートストラップとは
Amazon EC2 インスタンスを起動するとき、インスタンスにユーザーデータを渡すオプションがあります。インスタンスの起動時に、データを使って、一般的な自動設定タスクを実行したり、スクリプトを実行したりできます。Amazon EC2を起動する際に、インスタンスにユーザーデータを渡すオプションになります。
具体的には、EC2>インスタンス起動>高度な詳細で設定をする流れになります。以下をユーザーデータとして渡すことができ、組み合わせることもできます
・シェルスクリプト
・cloud-init
・AWS CLI
・PowerShell
・Batch![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/520425b2-cf66-ebd3-0faa-7731a1fab1ec.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038
AWS CDK integ-testsを活用した「データ境界」S3アクセステストの自動化
# はじめに
2024年2月14日に、Security JAWS【第32回】で以下を発表しました。
[](https://speakerdeck.com/mhrtech/secjaws32)
上記では、AWS CDK integ-tests を使ったデータ境界のアクセステストについて、終盤に少しだけ紹介しました。アイデンティティベースポリシーやリソースベースポリシーなどを複雑に組み合わせた場合、机上でアクセス可否を正確に把握するのは難しいです。そこで、データ境界におけるアクセステストで integ-test を活用できないか検討しました。
本記事では、本テーマを深堀して解説し
AWS ALBからのリクエストだけ許可したい場合のEC2に設定するセキュリティグループのインバウンドルールの設定
## 概要
下記のような構成の場合、星1と星2の部分にセキュリティグループを設定することが一般的である。
![Cursor_と_work__Visual_Workspace_for_Innovation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/824187d9-06da-5578-2cea-c1d33b70e15c.png)
この場合、言わずもがなプライベートサブネット内部のEC2にはALBを通して接続してほしい。(ブラウザからのアクセスの場合)
その要望に答えるには星2のセキュリティグループを設定して「ALBからのインバウンドルールのみ許可」してあげれば良い。「ALBからのインバウンドルールのみ許可」について 簡単にまとめる。
## 方法
実は非常に簡単である。
「星2のセキュリティグループのインバウンドルールのHTTPSの設定のソース(リクエスト送信元)を星1のセキュリティグループに設定する」だけである。参考文献でも紹介されているのでぜひご確認いただきたい。
構築したWebサービスのレスポンスが異常に遅い問題を突き止めるまでの奇跡
## 概要
構築したWebサービスのレスポンスがエラーにはならないもの、1分近くかかる事があり、原因がわからず先輩エンジニアさんに泣きついたところ、突き止め方を教えてもらえたので経験としてまとめておく。
この場を借り先輩エンジニアさん方には改めてお礼申し上げます。本当にお力添え感謝致します。ありがとうございます。また、本記事は奇跡を記したもので、解決方法は一切記載していない。
## 症状
ブラウザからの当該Webサービス上での継続リクエストでは特段問題ないものの、数分ブラウザを放置し、その後リクエストを送るとレスポンスが帰るまで約1分くらいかかる。
エラーは出ないものの(最初は別件でエラーが出ていたのでこちらで解決した→https://qiita.com/miriwo/items/a681350ba37164f5c3ea)## 構成概略図
本当はもっと複雑だが簡単に図にしておく。矢印がクライアントからのリクエストを表す。もちろんレスポンスはこの矢印とは逆の方向でクライアントに戻る。
![Cursor_と_work__Visual_Workspace_for_Innov