- 0.0.1. S3のファイル数をCloudWatchでCLIより安く取得する
- 0.0.2. AWS SAA-C03 合格体験記
- 0.0.3. Elastic IPアドレスの関連付けを解除した後、解放せずに、放置してたら課金されてしまった話と対処法
- 0.0.4. Deviseの認証をCognitoに委譲し、カスタムログイン画面でログイン機能を実装する
- 0.0.5. AWS Codepipeline の Deploy ステージで失敗すると Source ステージの Github コミットハッシュが分からないんだが
- 0.0.6. AWS_User_Notificationsの通知( AWS ユーザー通知 )についてあれこれ
- 0.0.7. Personal Health Dashboardに連携されない障害情報について
- 1. Personal Health Dashboard
- 1.1. 注意点
- 1.2. 事象
- 1.3. 原因
- 1.3.1. AWS Proton CodeBuild ProvisioningでDelete Failedとなったときの対処方法
- 1.3.2. Amazon BedrockをPythonスクリプトから利用してみた
- 1.3.3. AWS Lambda × Ruby 「ランタイムに合わせたbundle install面倒くさい…」「デプロイパッケージが大きすぎて…」という困り事
- 1.3.4. Terraform v1.6でTerraform testを試し、S3バケット名の確認を行った
- 1.3.5. mongoDB-shellの日本語文字化けでくっそ苦労した
- 1.3.6. APIGatewayでrobots.txtを公開する
- 1.3.7. [STEPBYSTEP]初めてAWSサービスからAmazonS3 AWS CloudFormationテンプレート作成まで
- 1.3.8. EC2 で CloudBeaver 環境を簡単に用意する
- 1.3.9. Python Lambda DynamoDB ServerlessFrameworkでAPI作ってみた(ローカル開発)
- 1.3.10. AWS Certified Cloud Practitioner体験記
- 1.3.11. AWS CloudWatch Logs のJSONログをイベントフィルタでAND検索/OR検索する構文
S3のファイル数をCloudWatchでCLIより安く取得する
# 前提
S3バケット上のファイル数が1000個以上ある場合、コンソール上では999+と表示され正確なファイル数を確認できない。
取得するにはどうすればいいかググったところ、AWS CLI(aws s3 ls)を使用した記事が多く出るが
もし「シンプルにS3内のファイル数だけを知りたい(=特定のフォルダ配下のファイル数を知りたいとかではない)」場合はCloudWatchから確認した方がコスト安となる。
※もし「特定のフォルダ配下のファイル数を知りたい」場合、CloudWatchからは確認できないのでAWS CLIを使って確認する方法を採用する。# CloudWatchでの確認方法
1. CloudWatchコンソールから左メニュー内の「全てのメトリクス」を選択し、検索欄にS3バケット名を入力する
![スクリーンショット 2023-10-07 2.43.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885498/efe674b4-7f4a-22d0-93a7-976052bef2ae.png)
AWS SAA-C03 合格体験記
# はじめに
先日,AWS SAA-C03に合格しました!AWS SAA-C03合格しました!!
わ~い!! pic.twitter.com/tRCV5mYSgk— うみのやまねこ (@Umi_no_Yamaneko) September 30, 2023
合格までにしたことを中心に,主に以下についてまとめてみました
– 教材
– 傾向と対策因みに,受験時の私のステータスは次の通り
Elastic IPアドレスの関連付けを解除した後、解放せずに、放置してたら課金されてしまった話と対処法
# Elastic IPアドレス関連で課金されてしまった…
AWSの1年無料期間の終わりが近づいていたので、昨日、Elastic IPアドレスの関連付けの解除とインスタンスの削除を行いました。すると次の日(厳密には日付が変わって1時間後)に、Budgetsで設定していたアラートがメールで飛んできていました。Billingで確認すると、なぜかElastic IPアドレス関連で課金されている事態になっていることがわかりました。
![スクリーンショット 2023-10-06 17.58.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079289/20a9dbc4-16b3-6f0b-fd06-2d46beafd741.png)# 原因は?
メッセージの内容やGoogle検索した結果、Elastic IPアドレスがどのインスタンスにも関連づけられておらず、そのまま放置していると、自動的に課金されるという仕様だったらしいです。状況としては、以下の手順を行い、そのまま放置していたことが原因で
Deviseの認証をCognitoに委譲し、カスタムログイン画面でログイン機能を実装する
## はじめに
今回はdeviseの認証をcognitoに委譲し、アプリケーション側で独自のログイン画面を作成して、ユーザーがログインできるように実装していきたいと思います。
## 対象読者
– deviseを使用したことがある人
– deviseの認証をcognitoに委譲したい人
– deviseの認証をcognitoに委譲したが、cognitoの[ホストされたUI](https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/cognito-user-pools-hosted-ui-user-experience.html)では物足りない人
## 動作環境
今回はdeviseログイン画面ありのアプリケーションのひな形を作ってくれている方がいたので、そちらのプロジェクトを使用したいと思います。https://github.com/timothyjamesmarias/rails_7_devise_example
## 実践
流れとしては下記に沿って進めていきます。
Cognitoを既に構築されている方は、
AWS Codepipeline の Deploy ステージで失敗すると Source ステージの Github コミットハッシュが分からないんだが
デプロイグループを選んで「履歴を表示する」で Source/Build/Deploy の単位でまとまった履歴を見られるようだ
# チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ
AWS_User_Notificationsの通知( AWS ユーザー通知 )についてあれこれ
# 概要
AWS_User_Notificationsの通知について、どのような項目が通知されるのか確認## User Notificationsとは
AWS サービスからの通知を設定および表示するAWS ユーザー通知を使用すると、AWS Health イベント、Amazon CloudWatch アラーム、EC2 インスタンスの状態変化など、AWS のサービスからの通知を一貫したわかりやすい形式で一元的にセットアップして表示できます。
## 設定
### AWS User Notificationsを開く
![AWS_User_Notifications_1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70171/47af045c-ccbd-b788-6995-cc36603ed6d7.jpeg)### 通知ハブを設定
東京リージョンで使用するので、一応TOKYOを選択
![AWS_User_Notifications_2.jpeg](https://qiita-image-s
Personal Health Dashboardに連携されない障害情報について
Personal Health Dashboard
https://aws.amazon.com/jp/premiumsupport/technology/personal-health-dashboard/
Personal Health DashboardはAWSの障害情報、バージョンアップ通知、メンテナンス情報の中から利用中のアカウントに関係の有るものを抽出して通知をしてくれるサービス
基本的にAWS障害が疑われるときはまずココをチェック!注意点
アラート検知時にすぐ確認しても障害情報が載っていないことが多い。
⇛障害の速報としては弱い。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571782/8c3ffe90-d633-6e24-51fd-502b5937e842.png)
→X(旧Twitter)での情報収集がやはり早い。。
ハッシュタグ「#AWS障害」
VScodeでAWS EC2の連携
vscodeでAWS EC2インスタンスを開くことができるように、環境構築をした。
しかし、原因不明だが、「SSHへの接続を確立できません:処理がタイムアウトになりました」と表示さされ、vscodeからAWSに接続しLinuxを開くことができなくなった。再度連携するために行なったことを忘れないように記述しておく。
AWSにログインし、AWSのEC2インスタンスが実行中であったが停止する。
インスタンスを開始する。
接続しているインスタンスIDをクリックし、パブリック IPv4 DNS(画面右上)をコピーする。
VscodeのConfigファイルにコピーした、パブリック IPv4 DNSを貼る。(元のから書き換える)
(多分IPアドレスが変わった)接続する。完了。
AWS CLIでの接続エラー
事象
AWS CLIを使用してEC2を表示しようとしたところ下記エラーが発生。なおEC2接続等他のコマンドでも同様のエラーが発生。aws configure、IAM権限周り異常なし。
$ aws ec2 describe-instances
An error occurred (AuthFailure) when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials原因
接続元の端末の時刻(JSP)がずれていたことで、リクエストエラーが発生していた模様。端末の時刻設定を見直したところ解消。。
別件だが、AWS主催の研修に参加した際にラボ環境へのログインできないことがあった。手元のPCの時刻設定を見直したところ接続できた。今後とも時刻同期には気をつけたい。。
AWS Proton CodeBuild ProvisioningでDelete Failedとなったときの対処方法
Proton結構いいなと思って触っています。
AWS Proton CodeBuild Provisioning で、テンプレートの作成が不味く、プロビジョニングが失敗したときの対処方法を書いておきます。
私が陥ったのは、schema.yamlのrequireにtypoで存在しないパラメータを指定してしまったことで、デプロイもアンデプロイもできなくなった状態です。
以下のファイルでは必須のパラメータとしてparamを指定していますが、実はパラメータとしてはparam1しかないという状況です。“`yaml
schema:
format:
openapi: “3.0.0”
service_input_type: “ServiceInputs”
types:
ServiceInputs:
type: object
description: “Input properties for my environment”
properties:
param1:
type: string
Amazon BedrockをPythonスクリプトから利用してみた
# はじめに
こんにちは、はやぴー(@HayaP)です。
ついに、Amazon BedrockがGAされましたね!
東京リージョンでも、一部のモデルが使用可能になりました。今回はPythonスクリプトでAmazon Bedrockを利用してみます。
理由として、Lambdaから実行するケースや、Webアプリケーションに組み込むケースが多そうだなぁと感じているからです。(Lambdaで実行するハンズオンは別で記事を書く予定です)# 対象読者
– Amazon Bedrockに興味がある方
– Pythonスクリプトで、Amazon Bedrockを利用したい方
– AWS Lambdaでの実装を考えている方(Lambdaのハンズオンではありません)# TL;DR (忙しい人用)
– Amazon Bedrockは、モデル毎に(マネージメントコンソールなどで)初期設定が必要
– Boto3を使えば、比較的簡単に実装できる(基本コピペでOK)
– Claude系は、全リージョン共通で許可制(現時点)
– 東京リージョンで使えるモデルは、us-east-1と比べてまだまだ少な
AWS Lambda × Ruby 「ランタイムに合わせたbundle install面倒くさい…」「デプロイパッケージが大きすぎて…」という困り事
# AWS Lambdaでライブラリを利用するのって地味に面倒くさい
AWS lambdaでライブラリを利用するときに面倒だと思った以下2点についての対処法
– zipフォルダを用意するまで
– 「デプロイパッケージが大きすぎて、インラインコード編集を有効にできません。…」の回避## zipフォルダを用意するまで
### Dockerfileを準備
“`Dockerfile:Dockerfile
# AWS Lambdaで利用するランタイムのバージョンを指定する
FROM ruby:2.7RUN mkdir /var/www
# /var/wwwの部分は/appなどなんでも良い
COPY /app/* /var/wwwRUN bundle config –local set path ‘vendor/bundle’
RUN bundle install
“`
### docker container を起動
`$ docker image build -t XXX:YYY`
`XXX`のところは`sample_app`
`YYY`のところは`latest`
な
Terraform v1.6でTerraform testを試し、S3バケット名の確認を行った
# やりたいこと
・2023/08にリリースされたv1.6のTerraform testの動作を知りたい# 前提
・AWSアカウント作成済み
・AWS IAMユーザーを作成し、access_keyとsecret_keyを発行済み
・Terraformインストール済み
(v1.6であること)
・AWS CLIインストール済み
・VSCODEインストール済み
(お好みのエディターで大丈夫)
・Pythonインストール済み
(今回はpython3.9でlambadaを作ってみたいですが、極簡単なソースコードなのでバージョンどうてもいいかと思う)# 環境
“`
$ terraform -v
Terraform v1.6.0
on windows_amd64
+ provider registry.terraform.io/hashicorp/aws v5.19.0$ python -V
Python 3.9.13“`
# 構築リソース
・AWS S3# ディレクトリ構成
“`ruby:qiita.rb
root
┣━ main.tf
┣━
mongoDB-shellの日本語文字化けでくっそ苦労した
# 環境
– 移行元
– OS:Ubuntu 22.06
– DB:mongo 4.0.3
– 移行先
– OS:Amazonlinux 2
– DB:mongo 4.0.3
– クライアント
– OS:windows 10– Shell:Powershell
# 概要
– mongoDump、restoreを使ってデータベース移行を行ったら移行先のmongoShellで文字化けが発生した。
# 事象の整理
| DB | AP | ターミナル | 接続方法 |
| —— | ———— | ———— | ——– |
| 移行元 | 文字化けなし | 文字化けなし | SSH |
| 移行先 | 文字化けなし | 文字化けあり | AWS SSM |# なぜ移行元は文字化けしなかったのか
– おそらくOpenSSHの文字コードを使ってる
# なぜ移行先は文字化けしたのか
– PowerShellがshift-jisだったから# ま
APIGatewayでrobots.txtを公開する
APIGatewayからtext/plainを出力したいだけなのに、えらい苦労したのでメモ。
Lambda、APIGatewayの使い方はある程度分かっている前提です。# Lambda関数を作る
APIGatewayからrobots.txtを出力するだけのLambdaを作ります。
以下Pythonのソースコード。“`python
def lambda_handler(event, context):
return {
‘statusCode’: 200,
‘headers’: {
‘Content-Type’: ‘text/plain’
},
‘body’: “””
User-agent: *
Disallow:
“””
}
“`Pythonからはapplication/jsonが返却されるのでAPIGatewayでそれを受け取ってtext/plainに変換します
# APIGatewayの設定
ここで苦労した。新しいコンソールになって分かり
[STEPBYSTEP]初めてAWSサービスからAmazonS3 AWS CloudFormationテンプレート作成まで
今回は初心者向けにAmazon S3のAWS CloudFormationテンプレートの作成方法についてご紹介いたします。
説明と共に実際に作成する時の動画もYoutubeで配信しておりますので、ご確認いただけますと幸いです。**日本語版**
**英語版**
### テンプレートの作成手順
1. **ステップ1: CloudFormationテンプレートの基本セクションを作成**
AWS CloudFormationテンプレートはいくつかの基本セクションから構成されます。今回は、`AWSTemplateFormatVersion`, `Description`, `Parameters`, `Resources` を利用します。これらのセクションを定義することで、AWSリソースの作成と管理が行えます。2. **ステップ2: S3 Bucketのリソ
EC2 で CloudBeaver 環境を簡単に用意する
こんにちは。インサイトテクノロジーの松尾です!
みなさまデータベース接続のクライアントに DBeaver を使ってますか?私は結構使ってます。DBeaver は様々なデータベースに接続可能な無償のデータベースクライアントで、非常に便利ですよね。アプリケーションとして利用することができ、Windows PC などにインストールして使用します。
非常に便利なのですが、難点としてはPCにインストールする必要があるということです。
今回は、ブラウザから利用できる DBeaver である、CloudBeaver について、簡単に環境を用意する手順を紹介します。
ブラウザから利用するため当然アプリケーションサーバーを起動する必要があります。AWS Marketplace でも提供されておりますが、わずかながら費用が発生するのと、AWS Marketplace を利用できない場合もあると思いますので、本投稿では Amazon Linux 起動時に Docker で CloudBeaver を立ち上げる手順を紹介します。
https://aws.am
Python Lambda DynamoDB ServerlessFrameworkでAPI作ってみた(ローカル開発)
# はじめに
Python / Lambda / DynamoDB / ServerlessFramework でのAPI開発手順を記しておきます。AWSの方から「Lambda × Pythonは起動が速く(コールドスタートが起きない)相性がいい」と伺っていたので、デプロイして計測するのが楽しみです!
# 環境
– macOS Ventura
– Python 3.11.4
– ServerlessFramework 3.34.0
– npm 8.19.2
– node v18.18.0“`terminal: バージョン確認コマンド
$ python3 –version
$ python3 -m pip -V
“`# Lambda作成
## 1. 事前準備
“`terminal:
$ mkdir project-v1 #プロジェクト用ルートディレクトリ作成
$ npm install -g serverless #必要なプラグインのインストール
$ npm install –save serverless-iam-roles-per-function serve
AWS Certified Cloud Practitioner体験記
# 1. はじめに
少し前のことになりますが、今日は2023年6月に受けたAWS Certified Cloud Practitioner認定試験(CLF-C01)の勉強法や試験を受けた感想などについて書きたいと思います。ちなみに現在はCLF-C01が終了し、CLF-C02になっているようです。
これまでアカデミアとしてのキャリアを通して、GRIDなどの大規模分散型コンピューティングシステムを活用したビックデータ分析をおこなってきましたが、商用のクラウドシステムというと馴染みが薄いものでした。ただ近年はアカデミアの業界でもクラウドの導入が進んでいます。ましてやビジネスにおいては、クラウド上でのデータ分析が当たり前のように行われているため、クラウドシステムの基礎をしっかりと理解することは、データサイエンティストにとっても必須であると考え、資格を取っておこうと考えました。このような目的であれば、AWSでなくMicrosoft AzureやGoogle Cloud Platformでもよいかもしれませんが、AWSのクラウドシェアがトップであるため、AWSの資格を取られている方が多い気がし
AWS CloudWatch Logs のJSONログをイベントフィルタでAND検索/OR検索する構文
# AND検索
こんな風に `&&` で繋げばOK
“`
{ $.key1 = “xxx” && $.key2 = “yyy” }
“`# OR検索
`||` でつなげばOK
“`
{ $.key1 = “xxx” || $.key2 = “yyy” }
“`# チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ