- 1. [ECS] AWS CLIでECSのコンテナにログインする方法
- 2. AのOrganizationのユーザーからBのOrganizationのS3を叩けるIAMとPolicyの設定
- 3. AWS Glue Studio の Example jobs を実行してみる
- 4. gpt-4oAPIを利用してアーキテクチャ図からCFNテンプレートを生成してみる
- 5. Databricks Gitフォルダーを試してみた
- 6. 【AWS CDK (Python)】 クロスアカウントでのデプロイ方法(パイプライン版)
- 7. 【AWS CDK (Python)】 クロスアカウントでのデプロイ方法
- 8. AWSアカウントを作ったり消したりするとろくなことが起きない(ケースがある)
- 9. 【AWS CodeCommit】 クロスアカウントでのリポジトリ接続
- 10. AWS ConfigとAWS CloudTrailの概要と使用シーン
- 11. AWS Certificate Manager でサーバー証明(ELB使用)&aws-cli
- 12. AWSの利用をZscalerからに制限する
- 13. Webアプリエンジニアがドメイン取得し、DNSとCDNの設定をやってみた
- 14. AWSを使って1からインフラ構築をしてみる
- 15. AWS パブリックサブネットの作成
- 16. Direct Connect を利用すると通信経路にリンクローカルアドレスが登場した
- 17. AWS VPCの作成
- 18. 【AWS】TerraformでEC2を構築する際のあれこれ
- 19. 【AWS】複数Availability Zoneに跨るInternal ALBが名前解決で返してくるIPアドレスはどのIPアドレスか?
- 20. じゃあBedrockのナレッジベースのPDFパーサーはどう読めているのか?
[ECS] AWS CLIでECSのコンテナにログインする方法
# はじめに
:::note info
– この記事は紆余曲折し、エラーを解消しながらゴールまで突き進む物語です
– 最短の手順だけを述べたものではありません
– 少しでも皆さんのデバッグのヒントになればと思っております
:::# 目的
構築済みのECSのアプリケーションコンテナにAWS CLIでログインする
# 前提
– ECS構築済み
– AWS CLI設定済み
– aws-vault導入済み(どちらでも可)# 最初に疎通確認
“`
aws-vault exec sotaheavymetal21 — aws sts get-caller-identity
{
# ここにユーザー情報出力
}
“`
該当のAWSアカウントに接続できていることを確認できました# aws ecs execute-commandを実行します
下記の<>の中を埋めていってください
“`
aws-vault exec— aws ecs execute-command \
–cluster\
AのOrganizationのユーザーからBのOrganizationのS3を叩けるIAMとPolicyの設定
# 概要
– プロジェクト単位やプロダクト単位でOrganizationを分けている
– AというOrganizationでユーザーを作り、Bで管理しているS3を操作できるように設定してみた
– ボツになったけどせっかく設定したのでメモしておく# ざっくり
– Aでユーザーの用意
– AユーザーにPolicyを用意してアタッチ
– BのS3のBucket Policyを設定するこれだけ
# 手順
## Aでユーザーの用意世の中手順はいっぱいあるので省略
## AユーザーにPolicyを用意してアタッチ
* `${bucket_name}` には、BのS3 Bucket名が入る
* あとはS3使う上で一般的なやつだと思う“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“s3:GetObject”,
“s3:PutObject”,
“s3:DeleteObject”
],
“Resource”
AWS Glue Studio の Example jobs を実行してみる
## はじめに
AWS のサーバーレスデータ統合サービス **AWS Glue** を使ってみました
その中でも分かりやすそうな **AWS Glue Studio** で Example jobs を実行します
具体的には以下のようなことをします
– S3 上の CSV ファイル3つを結合する
– 特定の列だけ抽出する
– 各列を数値や論理型に変換する
– Parquet 形式で出力する
– 出力ファイルに対して Athena から SQL を実行する![etl.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ec1c6684-01de-0a4e-c4a2-3e0ed9a8c27c.png)
Parquet はデータを効率的に保存・検索するためのファイル形式です
https://www.databricks.com/jp/glossary/what-is-parquet
思ったよりすんなり行かなかったので記事に残しておきます
## AWS Glue とは
gpt-4oAPIを利用してアーキテクチャ図からCFNテンプレートを生成してみる
# はじめに
株式会社TechoesインフラチームのTです!
今回は、5/13にリリースされたばかりのgpt-4oを使用してAWSのCFNテンプレートを生成する手順を解説していこうと思います。
# 実行環境
– Windows: 11 Home
– Python: 3.11.4
– モデル: gpt-4o
– openai: 1.30.1# Chatgpt APIとは
OpenAI社が提供しているChatGPTをPython等のプログラムから呼び出すためのインターフェースです。
Pythonなどのプログラミング言語からAPIを呼び出すことでアプリやサービスにテキストを生成する機能や理解する機能を実装することが可能になります。### 料金について
ChatGPT APIは処理するテキスト量によって料金が決まる**従量課金制**となっています。このテキスト量を計測する単位が**トークン**です。
トークンは入力トークンと出力トークンの2種類があり「1000トークンあたり、いくら」という料金設定になっています。具体的な費用は使用するGPTモデルによっても変化します。
– 入力トークン
Databricks Gitフォルダーを試してみた
# 背景・目的
DatabricksのGitフォルダーについて特徴を整理し、試してみます。# まとめ
下記に特徴をまとめます。|特徴|説明|
|:–|:–|
|Gitフォルダーとは|・DatabricksのビジュアルGitクライアント
・API|
|Gitフォルダーでサポートする内容|・クローン
・コミット
・プッシュ
・プル
・ブランチ管理
・コミット時の差分の視覚的比較|# 概要
[Databricks Git フォルダーと Git の統合](https://docs.databricks.com/ja/repos/index.html)を基に整理します。> Databricks Git フォルダーは、Databricks のビジュアル Git クライアントおよび API です。 リポジトリのクローン作成、コミットとプッシュ、プル、ブランチ管理、コミット時の差分の視覚的比較などの一般的な Git 操作をサポートします。
– Gitフォルダーとは、下記を指す
– DatabricksのビジュアルGitクライアント
【AWS CDK (Python)】 クロスアカウントでのデプロイ方法(パイプライン版)
## はじめに
本記事は、私自身の備忘録を兼ねてAWS CDKをこれから始める方の一助になればと思い、AWS CDKの使い方等をまとめたものです。
前回、AWS CDKで別アカウントにリソースをデプロイしましたが、今回は、その応用でパイプラインを使って別アカウントにリソースをデプロイしたいと思います。
前回の記事は、[こちら(【AWS CDK (Python)】 クロスアカウントでのデプロイ方法)](https://qiita.com/takataka987/items/918d8bfa22e8ff2043f0)を参照してください。
なお、本記事は私自身の経験を基に記載していますが、間違いがあったらすみません。## パイプラインで別アカウントにAWS CDKでリソースをデプロイ
基本的には前回([【AWS CDK (Python)】 クロスアカウントでのデプロイ方法](https://qiita.com/takataka987/items/918d8bfa22e8ff2043f0))、Cloud9でやってたことをCodeBuildでやるだけです。
ただパイプラインでやるとちょっと勝
【AWS CDK (Python)】 クロスアカウントでのデプロイ方法
## はじめに
本記事は、私自身の備忘録を兼ねてAWS CDKをこれから始める方の一助になればと思い、AWS CDKの使い方等をまとめたものです。
今回は、別アカウントにAWS CDKでリソースをデプロイする方法を確認します。
なお、本記事は私自身の経験を基に記載していますが、間違いがあったらすみません。## 別アカウントにAWS CDKでリソースをデプロイしたい!
具体的には以下のような構成になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3445559/01812436-c653-629b-e9e6-1166bfaab543.png)概要としては、
1. Account Bでcdk bootstrapを実行し、必要なRoleを作成
2. Account Aでcdk deployを実行し、Account Bにリソースを作成(Account Bで適切にcdk bootstrapができていればcdkで勝手にAssumeRoleしてくれる)です。
図にすると単純ですね。
AWSアカウントを作ったり消したりするとろくなことが起きない(ケースがある)
# 端的に
表題の通りです。ベーシックサポートを利用している個人開発者は気をつけましょう。ビジネスサポートを契約していればなんとかなるかもしれないし、ならないかもしれません(後述)。# 経緯
* 10年以上使っている既存のアカウントA, Bがある
* Control Towerを導入するため、管理アカウントを新規作成
* Control Towerセットアッププロセスの中で監査アカウント・ログアーカイブアカウントも新規作成
* Control Tower導入が無事完了したので、今度はControl Towerを[削除](https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/decommission-landing-zone.html)する練習[^1]をしようと思い立つ
* Control Towerを綺麗に削除し、導入にともなって作成した上記3件のアカウントも閉鎖
* **Control Tower導入→削除をもう1回繰り返してみた**
* **やめておけばよかった**
* 改めて管理アカウ
【AWS CodeCommit】 クロスアカウントでのリポジトリ接続
## はじめに
本記事は、私自身の備忘録を兼ねてAWS CDKをこれから始める方の一助になればと思い、AWS CDKの使い方等をまとめたものです。
今回は、AWS CDK自体の内容からは少し外れますが、AWS CDKのソースコードを別アカウントのCodeCommitから取得したり更新したりする方法を確認します。
なお、本記事は私自身の経験を基に記載していますが、間違いがあったらすみません。## AWS CDKのソースコードを別アカウントのCodeCommitで管理したい!
具体的には以下のような構成になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3445559/ada9167e-513d-27b9-2152-2e4382d4641d.png)
概要としては、
1. Account Bに用意したリポジトリにアクセス可能なポリシーを持ったRoleにAssumeRole
2. git-remote-codecommitを使用してgitコマンドを実行※ AWS CDKのソース
AWS ConfigとAWS CloudTrailの概要と使用シーン
# 1. はじめに
AWSを使う上で、リソース(AWSの各サービスのこと)の設定管理と監査(ログの記録と分析)は とても大切です。**AWS Config**と**AWS CloudTrail**は、これらの課題を解決するための頼もしい味方です。この記事では、AWS ConfigとAWS CloudTrailの概要と使い道を説明します。# 2. AWS Configってなに?
### 2.1 AWS Configの概要
AWS Configは、AWSアカウント内のリソースの設定を見張ってくれる番人みたいなサービスです。リソースの設定が変更されると、その変更履歴を記録してくれます。これにより、設定の見通しが良くなり、ルールに沿っているかどうかのチェックもしやすくなります。### 2.2 AWS Configの主な機能
– リソース設定の変更を常に記録し、変更履歴を追跡
– 設定変更があった時に通知やアラートを送信
– リソース設定がルールに沿っているかチェック
– 設定履歴のスナップショット(ある時点での状態)とレポート作成
– 複数のアカウントやリージョン(AWSのデータセンタ
AWS Certificate Manager でサーバー証明(ELB使用)&aws-cli
# 構成
今回は、AWS Certification Manager(ACM)を使用してWebサーバーの証明書を作成してみます。
構成は以下の通り。ALBを使用するパターンで考え得る限り最もチープな構成で構築しています。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570192/0654711b-7c37-dcc4-e497-96e6255466fa.png)
– プロバイダで独自ドメインを取得する(example.com)
– Route 53にホストゾーンを作成する(プロバイダで取得したexample.comドメイン)
– プロバイダのドメイン設定で、DNSサーバーにRoute 53のホストゾーンのDNSサーバーを設定する
– ACMにサーバー証明書(www.example.com)を作成する
– EC2インスタンスにWebサーバーを構築する
– ALBを作成し、ターゲットグループにEC2インスタンスを登録(ALBの作成時に最低2つのアベイラビリティゾーンをマッピングする必要
AWSの利用をZscalerからに制限する
# 概要
AWSのセキュリティを強化する機能としては、MFA(多要素認証)が一般的です。
しかしMFAを利用しても、自宅からアクセスできてしまう問題があります。
また複数のAWSアカウントを管理し、IAMユーザが数百人に達すると、全ユーザの動向を把握するのは難しくなります。
メンバ管理をしている責任者が適切に運用してくれないと、退職したユーザにアクセスされてしまう可能性もあります。アクセスキーにMFAを強制するとロジックの作り込みが必要になりますし、人間がアクセスキーを使用する際には手順が増え、ユーザに説明するのも、自分が利用するのも手間がかかります。
このような問題は、IP制限を設定することで多くが解決できます。アクセスキーが漏洩した場合のリスクも大幅に抑えられます。
会社からのアクセスに限定するには、自社拠点のIPアドレスに制限すれば良いのですが、弊社では全クライアントにZscalerがインストールされているためこの方法が使えません。
本記事では、Zscaler環境下でAWSにIP制限をかける方法、特にその運用の自動化を解説します。
なお、これを読みに来た人はZs
Webアプリエンジニアがドメイン取得し、DNSとCDNの設定をやってみた
## はじめに
普段はWebアプリケーションエンジニアとして、ほぼインフラはノータッチだった。ただ、Webの根幹であるネットワークの基礎の基礎(TCP/IP、DNSなど)を学ぶ中で、多少なりともネットワーク関連の簡単な仕組みや設定を理解できるようになると面白いのではと思った。
そこで今回はAWS EC2上に立てたWebサーバをオリジンサーバとして、以下のことをやってみようと思う。
1. 独自のドメインを取得しDNSの設定する
1. CDNを設定し、アクセスをCDN経由にする## AWS EC2のWebサーバについて
EC2上に立てたApacheサーバを利用する(dnfでhttpdとして簡単にインストール・起動できるので)。
EC2のインスタンスは、VPC内のパブリックサブネット(インターネットゲートウェイを設定)に所属し、EC2はパブリックIPを持つ(Elastic IPではないが今回のやりたいことには問題ない)。## 1. 独自のドメインを取得しDNSの設定する
今回は [お名前.com](https://www.onamae.com/) を利用して無料のドメインを
AWSを使って1からインフラ構築をしてみる
# はじめに
本記事は、AWS、インフラ構築の初学者向けの記事です。
私自身も、エンジニア歴 5 年目にして、1 からインフラ構築をした経験がなく、Udemy のハンズオン講座で学習しながら得た知見を、本記事にまとめようと思います。## そもそもインフラ構築とは?
アプリケーションが稼働できる状態を作ること。
アプリケーションが稼働するには?
アプリケーションが動く(環境)サーバーを構築して、そのアプリケーションに接続できるように、ネットワークを構成する必要がある。## インフラ構築ができると何が嬉しい?
### 自分でサービスを作れるようになる
プログラムを書いて、良いアプリケーションを開発し、それを誰かに提供したい!となったとき、自分でできるようになる。
### 自分で開発時のテスト環境を作れるようになる
何かしら検証作業が必要な場合、本番環境で実施するわけにもいかないので、テスト環境が必要な状況ある。
そんなときに、必要な環境を自分で用意することができるようになる。### 障害が起きても、どこに問題があるのか原因の切り分けができるようになる
「サー
AWS パブリックサブネットの作成
## サブネット
サブネットは、VPC の IP アドレスの範囲です。特定のサブネットには、EC2 インスタンスなどの AWS リソースを作成できます。
### パブリックサブネット
サブネットには、インターネットゲートウェイへの直接ルートがあります。パブリックサブネット内のリソースは、パブリックインターネットにアクセスできます。
### パブリックサブネットの作成
VPCダッシュボードのサブネットメニューをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3184769/05ab6ccd-f5ef-ff64-142a-de217c32b9eb.png)
サブネットを作成ボタンを押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3184769/04d7bda2-2e49-1a8e-dd50-bf189314e25a.png)
サブネットを作成
VPC ID:my-vpc-01
サブ
Direct Connect を利用すると通信経路にリンクローカルアドレスが登場した
## はじめに
私はクラウドCoEをやっているのですが、先日「Direct Connectを利用した通信経路でtracerouteをかけた結果、リンクローカルアドレスが登場した。これは不適切なルーティング設定になっているのか?」という質問を受けました。
この質問への回答を今回記事にまとめます。## リンクローカルアドレスとは
リンクローカルアドレスは、同一のセグメント内のみで有効なアドレスです。
DHCPサーバ(プライベートIPアドレスを割り当てる役目を持ったサーバ)が存在しないネットワーク内で使われる、特別なIPアドレスです。
DHCPサーバがなくても個々のコンピュータが自分自身にIPアドレスを割り振ることから、「自己割り当てIPアドレス(AutoIP)」とも呼ばれます。
IPv4アドレスでは、169.254.0.0/16 がリンクローカルアドレスとして利用されます。https://livra.geolocation.co.jp/iplearning/220/#:~:text=%E3%83%AA%E3%83%B3%E3%82%AF%E3%83%AD%E3%83%BC%E
AWS VPCの作成
## AWS VPC
Amazon Virtual Private Cloud (Amazon VPC) とは、リソースの配置、接続性、セキュリティなど、仮想ネットワーク環境をフルで制御できるサービスです。AWS サービスコンソールで VPC を設定するところから始めます。
## AWS VPCの作成
東京リージョンを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3184769/ec35f03e-c829-20d6-a94f-014c1053197d.png)
管理コンソールのサービスからVPCを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3184769/1648ad66-eb3b-2c1e-c6f8-1a9972623638.png)
VPCダッシュボードの「VPCを作成」ボタンを押下
![image.png](https://qiita-image-store.s3.ap
【AWS】TerraformでEC2を構築する際のあれこれ
[前回の記事](https://qiita.com/hidekko/items/19871f8fd14304c13e84)で記載している、副産物の記事になります。
# 構成図
まずは構成図でおさらいです。
![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/02cc9622-9957-5ca7-bb12-6ec2402e68fa.png)
今回の副産物はWeb Serverの構成関連です。# 1.EC2のローカルIPアドレスをDHCPにする。
今までTerraformでEC2を構築する際、ローカルIPアドレスを固定IPアドレスで構築していましたが、今回ALBがDHCPなのでTerraform実行時に何度かIPアドレスが重複して失敗しました。
EC2のIPアドレスをDHCPで構成する場合どうしたら良いか知らなかったので調べてみたのですが、一発で出てこなかったので個人メモに近いですが記載します。具体的なtfファイル上の記載は以下の通りです。
“`ec2.tf
# Front
【AWS】複数Availability Zoneに跨るInternal ALBが名前解決で返してくるIPアドレスはどのIPアドレスか?
転職して初めての記事です。
転職後の会社の先輩から表題の質問を貰い、即答できなかったので検証してみました。
たまたま前職でALBの環境の構築をTerraformで行ったので、今回もTerraformで環境構築を行いました。# 予想される結論
この先輩の方とも社内のチャットでやり取りした時にもお話したのですが、**複数のAvailability Zoneに跨ったALBは名前解決ではラウンドロビンでそれぞれのAvailability ZoneでALBに割り振られたIPアドレスを返してくるんじゃないかな?**というのが私の予想です。
ではこの予想通りになるのか、違う動作をするのか検証をしましょう。# 構成図
では早速構成図から。
論点がずれないように構成図で認識を合わせましょう。
![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/44a727ba-b60e-de4c-3dbb-fcf90060acb4.png)VPCを2つ作っ
じゃあBedrockのナレッジベースのPDFパーサーはどう読めているのか?
何が「じゃあ」なんだって話ですが、Pythonの各種PDFパーサーは雑に使用すると以下のようにうまく読める場所と読めない場所があったので、じゃあナレッジベースではどう読めているのか?を確認します。
https://qiita.com/cyberBOSE/items/142cdf91e0ee20b3114f
# ナレッジベース(pgvector)の準備
SQLで確認したかったので以下のすばらしい記事を丸ごと参考にしました。
クエリエディタで接続可能だと知らなかった…https://qiita.com/hayao_k/items/45e59c1c2a183c27b20d
pgvectorをナレッジベースで使う為の日本語ドキュメントなり記事なりハンズオンなりって他に見た記憶が無いのですが他に現存しているものあるんですかね。
# 使用するPDF
同じ個所で確認をしたいのでBedrockユーザーガイドの日本語版