AWS関連のことを調べてみた

AWS関連のことを調べてみた
目次

EC2のIAMロールを使ってlaravel9以降でS3アップロード用証明書付きURL取得

EC2のlaravelでアップロード用証明書付きURLを取得しようと思うと、例えば以下のようなものが蜜つかります。

IAMユーザでアクセスキーを発行して以下のようにする

“`.env
AWS_ACCESS_KEY_ID=<>
AWS_SECRET_ACCESS_KEY=<>
AWS_DEFAULT_REGION=<<リージョン>>
AWS_BUCKET=<<バケット>>
“`

“`php
$client = App::make(‘aws’)->createClient(‘s3’);

$cmd = $client->getCommand(‘PutObject’, [
‘Bucket’ => config(‘filesystems.disks.s3.bucket’),
‘Key’ => <<保存先のパス>>
]);

$url = $client->createPresignedRequest($cmd, ‘+1 days’);
“`

ただし、昨今IAMユーザのアクセスキーを使ったアクセスはあまりおすす

元記事を表示

EC2でDockerをルートレスモードで稼働させようとしてつまづいた

## はじめに
EC2インスタンスでDockerをルートレスモードで実行させようとしたところ、systemdでの制御が出来ない状況に陥り、思いの外ハマってしまったので書き残しておきます。

– OS: Ubuntu 22.04.3 LTS
– 作業環境: EC2で構築し、SSMセッションマネージャでコンソールログインしての作業

## 何が起こった?
公式ドキュメントに従い、dockerをインストールし、ルートレスモードにしようと試みたところで躓きました。

https://docs.docker.com/engine/security/rootless/

`dockerd-rootless-setuptool.sh`を実行したところ、ドキュメントと異なる出力となり、systemdでの起動設定が出来ない状況に陥りました。

下記が実行時の出力です。
ここでは`runner`という非ルートユーザーで制御する事を目標としています。

“` sh: dockerd-rootless-setuptool.sh install
$ whoami
runner
$ /usr/bin/dock

元記事を表示

AWS Lambda(Python)からOpenAIのGPT4のAPIを呼び出してみた

[Supership](https://supership.jp/)の名畑です。[スナックバス江](https://snackbasue.com/)は肩の力を抜いて見られるのでいいですね。年齢を重ねる毎にこういう作品が好きになっていきます。

## はじめに

[AWS(Amazon Web Services)](https://aws.amazon.com/jp/)でWebアプリを作ることがあるのですが、その過程で触れてきたものについて、せっかくなので要点だけを抽出して残しておくことにしました。

特に目新しい内容はありませんが、**AWS**や**OpenAI**のアカウント作成も含めて一通りの流れを残すので、いい具合の備忘になればと。

今回は[Lambda](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html)を経由して[OpenAI](https://openai.com/)の**API**を叩くまでをまとめます。

## Lambdaとは

> AWS Lambda は、サーバーをプロビジョニングま

元記事を表示

AWS S3のオブジェクト(画像や動画)を特定のドメインからのみ開けるようにする方法

# AWS S3のオブジェクト(画像や動画)を特定のドメインからのみ開けるようにする方法
開発している際に、特定のドメインの時のみURLが開けるように設定したい場合があったので、備忘録として残しておく。

## 1. パブリックアクセスの一部無効
**下記で対応するBucket Policyの編集で競合するため下記2つを無効にする**
・ 新しいパブリックバケットポリシーまたはアクセスポイントポリシーを介して付与されたバケットとオブジェクトへのパブリックアクセスをブロックする

・ 任意のパブリックバケットポリシーまたはアクセスポイントポリシーを介したバケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックする

![スクリーンショット 2024-01-22 12.34.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1130166/f952ef31-4441-9094-613b-30b0000edfb0.png)

## 2. Bucket Policyの編集
1

元記事を表示

AWS Sagemakerで気づかないうちに300$課金された話

学習のためにAWS Sagemakerを利用していたのですが、課金の仕組みを理解しきれずに300$程度課金されたのでここに対処方法を書いておきます。

## AWS SageMakerとは
機械学習モデルの開発からデプロイまでを容易にするマネージドサービス。データサイエンスのプロセスを統合し、スケーラブルで柔軟な機械学習ワークフローを提供。

## 何をしていたか
AWS SageMakerを使い、テストデータを作成し、それをトレーニングさせモデルを作成し分析を行っていた。

## 原因
共有スペースの削除が出来ておらず、スペックの高いインスタンス(ml.g5.4xlarge)が90h程度立ち上がりっぱなしだった。

## 料金がかからないように注意していたつもりだったが・・
コンソール上からSageMaker Canvasはログアウトしていたし、SageMaker Studio上からも起動しているインスタンスはすべて停止していたが、共有スペースの削除に気づけなかった。

## 対処方法
対処方法を探している間にも課金され続けるので焦りながら調査。
コンソール上からの対応方法がすぐに見

元記事を表示

ChatGPTを使った、わたしの資格勉強法

最近、AWSの資格勉強を続けています。昨年12月はAWS SAAに無事合格し、いまはAWS SOAの試験日程を決めるところです。

過去にもAWSの勉強はしていたのですが、正直言って上手に知識を吸収したり処理することができませんでした。しかし最近は、わりとスムーズに勉強できている気がしています。

**そのきっかけが、ChatGPTでした。**

おそらくいくらでも書かれているだろうテーマですが、この記事では自身が**どのようにChatGPTを活用して資格勉強を進めているか**を説明します。

## 使い方1: 問題文をChatGPTに投げる

早速ですが、資格勉強において私が考えるもっとも良い使い方は、

「**例題や模試などの問題文をChatGPTに貼り付け、その回答をベースにやりとりを続ける**」

というシンプルなものです。

### なぜこの方法が良いのか

参考書をつかった学習の場合は「問題文を読んで回答を考え、模範解答と見比べて解説を読み、それでもわからない箇所があればテキストを読み直す」というのが一般的な流れになるはずです。

これと比べると、**ChatGPTを使う利

元記事を表示

【AWS】CloudTrail証跡を必ず有効にする方法

# 目的
CloudTrailの証跡機能が無効になったことを検知して、自動で再有効化させる。
(証跡が有効な状態を自動で担保する)

# 結論
AWS ConfigのルールとAWS SystemsManagerのAutomationを連携させ、自動で再有効化することが可能です。

AWSアカウントがAWS Organizationsを使用している場合はSCP(サービスコントロールポリシー)での制御を設定すれば、そもそも証跡を無効にすること自体を拒否できます。

:::note warn
本記事作成後にサービス内容や仕様が変更になる可能性があります。実際に設定する際には、公式ドキュメントをご確認のうえ自己責任でお願いします。
:::

# 前提
– CloudTrailの証跡が正しく設定され、機能していること。
– CloudTrail、SystemsManeger、S3、IAMロールへの操作権限を持ったIAMユーザーで作業出来ること。

# CloudTrailについて
CloudTrailは、AWSアカウント上での全ての操作を記録・監視するサービスです。
セキュリティの向上、コンプラ

元記事を表示

AWS ALB のざっくり説明資料

アプリケーション畑に軸足のあるフルスタックエンジニアでシステムアーキテクトの私が、社内のオンプレ経験の長いインフラ屋さんに ALB を説明した時の図です。詳細には、違います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2210265/3012cdc6-1928-9c86-795c-c2e862a0f9d6.png)

ALB がどこにあるかを気にされていたので、VPC にどかんとあるイメージを先ず伝えました。次に各パブリックサブネットに NIC があるイメージと伝えました。その NIC は、それぞれ最大で 8 個まで増えるので、IP が各パブリックサブネットで最低 8 個は必要と伝えました。

ALB のアクセスログは、VPC の ALB からではなく、AWS が管理する ALB の元締めアカウントから S3 バケットへ送られるイメージと伝えました。バケットポリシーの設定が必要であることを伝えるための説明です。

WAF との関係や TSL 証明書の配置などについても説明しましたが

元記事を表示

Terraformで始めるAWSマルチアカウント構築

# はじめに

皆様はAWSでマルチアカウント構築に関わったことはありますでしょうか?

各アカウントの担当が同じであればマシですが、
アカウントごとに別担当なことが大半であり、コミュニケーションコストが爆増して苦労するのはあるあるですよね。

そんなときはプライベートでTerraformを利用してもろもろ検証しましょう!
またマルチアカウント構築をするにあたりいくつか方法があるので、本記事ではそれぞれ紹介します。

:::note warn
本記事ではAdministratorAccess権限を利用していますが、
IAM権限も含めて検証したい場合は各自適切なIAMポリシーを作成してください。
:::


# 1.マルチアカウント構築の設定

Terraformでマルチアカウントでリソースを定義するためには、
大まかに以下の二通りがあります。

– プロファイルのみ利用
– プロファイルとAssumeRoleを合わせて利用

## 1.1 プロファイルのみ利用
AWS C

元記事を表示

DBを使わず、boto3だけでベクトル検索をする。RAGやクラス分類をする

# まえがき

## この記事を3行で

– 標準のPythonだけでベクトル検索を実装する方法を紹介します
– 速度、メモリ的に、どのくらいのデータ件数が限界かを調べます
– 埋め込みモデルの利用例(RAG、YES/NOの判別、画像クラス分類)も紹介します

## 使う環境

– Python 3.12
– AWS Bedrock

※今回はBedrockのtitanを使いますが、OpenAIのEmbeddingも使い方は同じです。

## この記事が想定する読者

– AWS(Lambda)がどういうものかを知っている
– Pythonのプログラミングが可能で、LLMに興味がある
– RAGをしようとしているが、ベクトルデータベースの値段が気になる

## ベクトル検索に、データベースはマストじゃない

RAGのためにベクトル検索を導入するなら、ベクトルデータベースは必ず導入したほうがいいのでしょうか。

昔、高専生だった時に日雇いのアルバイトをしていました。
組み立て前の段ボールの束を渡されて、「グルーガンで底を組むように」と指示されます。缶飲料の入った段ボールがベルトコンベアで

元記事を表示

新卒5か月で転職し、AWS全冠を達成した話

## 目次
1. [はじめに](#はじめに)
2. [私について](#私について)
3. [私なりの資格取得の意味](#私なりの資格取得の意味)
4. [AWS全冠を目指した理由](#aws全冠を目指した理由)
5. [AWS認定について](#aws認定について)
6. [いろいろランキング](#いろいろランキング)
7. [自身の軌跡](#自身の軌跡)
8. [AWS未経験から推奨したいロードマップ](#aws未経験から推奨したいロードマップ)
9. [AWS公式のロードマップ](#aws公式のロードマップ)
10. [初学者におすすめの一冊](#初学者におすすめの一冊)
11. [勉強方法](#勉強方法)
12. [最後に](#最後に)

## はじめに
先月、**AWS認定資格(12種)** を全て取得し、いわゆるAWS全冠を達成しました。
達成の軌跡や資格の個人ランキングなどを紹介しますので、AWS初学者や若手で全冠を目指したいという方などの参考になれば幸いです。

![スクリーンショット 2023-12-24 182652.png](https://qiita-image-

元記事を表示

AMIは登録解除されているがSnapshotだけ残っている場合の一覧を取得・削除(Bash)

AMIを取得するとその裏では自動で紐づくSnapshotが取得されますが、
AMIを登録解除する際は、紐づいているSnapshotは自動で削除されません。

このため、AMIの登録解除だけしてSnapshotの削除が漏れてしまっているケースがあったりします。

本記事ではこのようなSnapshotだけ残っている一覧を取得して一括で削除する処理を紹介します。(Bash)

## Snapshotだけ残っている場合の一覧を取得してみる

今回の実装では、AMI側から紐づくSnapshotの一覧 と Snapshot側からAMIから作成されたSnapshotの一覧 を取得し、これをぶつけて AMI側がなくて、Snapshot側のみある一覧を作成しています。

この時に、Snapshot側ではAMIから作成されたSnapshotだとどの情報で判断できるかというと。

AMI登録時に作成されたSnapshotを特定するには、Descriptionが下記になっているSnapshotを取得すればよさそうです。

– Created by CreateImage(i-xxxxxxxxxxxxxxxxx

元記事を表示

【AWS CDK入門】AWS CDKでAPI Gateway + Lambdaを構築してみた

# はじめに
AWS CDKってドキュメント見てもよくわからん…ってなったので、実際に動かしてみた。
すると、CDKすげええええぇってなったので、その感動を共有したくて記事を書いてみた。

### 対象とする読者
* AWS CDKとはなんぞやって人
* AWS CDKをお金をかけずに動かしてみたい人

# AWS CDK のこれだけ知っておけばOK

AWSのIaC (コードでインフラを管理)といえば、CloudFormation!
→ しかし、以下の課題が・・・
* YAML/JSONなので、ループや条件分岐などを用いたリソース定義が書けない
* 大規模なインフラだと、一から十まで書くの大変

これらを解決するのが、AWS CDK!
→ CloudFormation用のテンプレートをプログラム言語から生成しちゃおう

:::note
* TypeScriptやPythonなどでリソースを定義するのでループなど自由自在
* ライブラリでリソースが抽象化されているので記述量が大幅減
(抽象化 = REST APIを作るといったパターンが用意されている)
:::

# AWS CD

元記事を表示

CloudFront + Lambda@Edgeを利用して、user-agentに応じて異なるwebページを表示させる

CloudFront + S3でウェブページを表示する仕組みは以前作ったことがありますが、
「**AWS上の仕組みを使ってスマートフォンとPCからのアクセスで、異なるwebページを表示させることってできるのかな?**」と思ったので、実践してみました。

## 目標
・スマートフォンからのアクセス時は「スマートフォン専用サイト」
・PCからのアクセス時は「PC専用サイト」を表示させる

## 条件
・user-agentに「iPhone」「Android」が含まれている場合にスマートフォン、含まれていない場合はPCからのアクセスと判断する
・表示させるのはS3に配置したhtmlファイル

## 構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969669/018162c8-072d-e62e-0585-2ab732d79111.png)

## 流れ
①S3に2つのhtmlファイルを配置する
②Lambda@Edgeを作成する
③CloudFrontのディストリビューションを作成する

元記事を表示

Cloud9共有環境に、最小権限でチームメンバーを招待してみた

## はじめに
Cloud9には環境を共有する機能があります。
この機能を利用することでリモートでもペア・モブプロが可能となります。

https://docs.aws.amazon.com/ja_jp/cloud9/latest/user-guide/share-environment.html

この時、共有相手用のIAMが必要となります。

ポリシーは最小権限にせよ、という~~無視しがちな~~ベストプラクティスを守る練習として、この時用意する共有相手用のIAMを最小権限で用意してみたいと思います。

### アーキテクチャ

![cap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/0656da75-e9fe-3e95-231e-f242f9ee20a4.png)

cloud9環境の共有用に、以下のリソースを用意します。
– Cloud9被共有者用ポリシーのみをアタッチしたロール
– 上記ロールへのみスイッチできるユーザーグループ
– 上記ユーザーグループにのみ所属し、パスワー

元記事を表示

AutoScalingで、EC2に別VPCのENIをアタッチ(ユーザーデータ編)

# はじめに
以前、スケールアウトするEC2に別のVPCのENIをアタッチする仕組みをStep Functionsで作りました。

https://qiita.com/a_b_/items/136fb263664175d4ae1f

これを、ユーザーデータでやってみました。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/user-data.html

# 概要

– AutoScalingでENIを追加でアタッチする機能はない
– ユーザーデータでインスタンス起動時に、ENIをアタッチするシェルを実行します
– 事前に別VPCにENIを作っておきます
– ENIは同じAZに作っておく必要があります
– EC2にENI関連の権限を付与しておく必要があります

# 参考

https://qiita.com/mittsukan/items/83b55ac65eaf23309f15

# 構成図

![image.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

Visual Studio CodeのRemote SSHでAWSのEC2インスタンスに繋がらなくなって、なんとかなった

# 環境
– クライアント側
– Macbook Pro
– Visual Studio Code
– リモート側
– Amazon Linux t2.microインスタンス(無料枠のやつ)

# 問題の内容
いつも通りVisual Studio CodeのRemote SSH拡張機能からSSH接続しようとしたら繋がらない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1152756/dddf1c74-7668-e000-1a20-436109e0db94.png)

コンソール上でインスタンスが起動してることも確認済みだが、インスタンス上にはログなし。
VSCode側のエラーは以下。

“`bash
[16:30:29.072] > local-server-2> Running ssh connection command: “-v -T -D 50014 -o ConnectTimeout=15 aws-linux”
[16:30:29.073] > l

元記事を表示

色々なネットワーク間接続を試しつつTransit Gatewayを理解する。(その2:Site-to-Site VPN)

# はじめに
前回は`VPC Peering`についてまとめましたが、今回は`Site-to-Site VPN`を使い、オンプレミスの環境と`VPN`接続を行ってみようと思います。

– 【前】[色々なネットワーク間接続を試しつつTransit Gatewayを理解する。(その1:VPC Peering)](https://qiita.com/sakai00kou/items/fc4685c652f0a70f9d88)

# Site-to-Site VPNとは
前回まとめた`VPC Peering`は`AWS`環境の`VPC`同士を接続するサービスでしたが、`Site-to-Site VPN`は主にオンプレミスのネットワーク機器と`IPsec VPN`で接続を行う、`LAN`間接続のサービスとなります。

`Site-to-Site VPN`で接続を行った場合、相手側ネットワーク機器が1台構成であった場合でも、冗長化のため、VPNトンネルが2本作成され、また、デフォルトでは相手側ネットワークとのルーティングのやり取りは`BGP`という動的ルーティングプロトコルでやり取りが行われます。

元記事を表示

AWS LambdaでECRのコンテナイメージを指定したら、エラーが出た。

こんにちは、ユーゴです。今回は、私がコンテナイメージからLambdaを作ろうとした時に遭遇したエラーと解決策を紹介します。
難易度は、初歩レベルです。

# 問題
以下のようなエラーが出る
![スクリーンショット 2024-01-21 15.44.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/9f3108ea-4f10-fccc-bd2c-22b0f44d2666.png)

> Source image xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/xxxxxxxx is not valid. Provide a valid source image.

# 原因
リポジトリ自体のURIを指定してた
![スクリーンショット 2024-01-21 15.45.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/8349e5bc-a

元記事を表示

【AWS EC2】Amazon Linux2 にMySQLをインストールしようとしてGPGでつまづいた話

※この記事では、MySQLのインストール手順の詳細は割愛しています。
Amazon Linux2 にMySQLをインストールしようとした際、下記のエラーが出てつまづいた。

# 【起きた事象】
##### 実行コマンド
“`
sudo yum install -y mysql-community-server
“`

#### 実行結果
![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663768/87f8a50f-50cc-409e-7dd4-04c682be8b9e.png)

#### エラーメッセージ
“`
The GPG keys listed for the “MySQL 8.0 Community Server” repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this re

元記事を表示

OTHERカテゴリの最新記事