- 1. Storage Gatewayとは?
- 2. MySQL + AWS RDS – RDS 証明書の更新でダウンタイムは生じるのか生じないのか
- 3. 【AWS】ECS Execを利用してFargateに接続してみた
- 4. SageMaker Studioでカスタムイメージが起動しない
- 5. AWS CLIを使用したDynamoDBのアイテム数のカウント方法
- 6. CloudFrontを利用していてDNS切り替えをしても狙った所にアクセスできない時の対応
- 7. SageMaker Studioでカスタムイメージを使用する
- 8. StepFunctionsでいろいろ詰まったこともあったのでまとめておく
- 9. API Gatewayを単一Lambda関数と統合する際のハンドラーのルーティング方法
- 10. IAMユーザーをコマンドで簡単に削除する
- 11. 外部アカウントからRedshiftにアクセスする方式
- 12. Cognito の SRP 認証フローを理解する
- 13. 未経験からSIerに転職して1ヶ月経ったので振り返ってみる
- 14. 【AWS-CloudFront】静的コンテンツリリース時にCloudFrontキャッシュクリアをしたい
- 15. 【メモ】WAFメンテナンス・テストモード切替
- 16. 【メモ】CloudFormation実行関連
- 17. EBS・スナップショットの暗号化
- 18. 【メモ】SQSの受信とクリア
- 19. 【メモ】CloudWatchLogsインサイトの保存されたクエリの確認
- 20. 【メモ】CloudShell/Git 初期設定
Storage Gatewayとは?
## 初めに
本日はStorage Gatewayについて書かせて頂きます。
皆様のご意見頂けたら幸いです。## Storage Gatewayとは?
オンプレミスからAWSのストレージサービスへのアクセスを高速かつセキュアに行うことができるサービスの事###### イメージ
![スクリーンショット 2024-04-02 14.28.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744656/6bbe50e6-06a3-cec5-55b5-7307b0e87bd7.png)上記の様にAWS上のストレージサービスにStorage Gatewayを通してアクセスを行います。
種類は後ほどご紹介させて頂きます。## 種類
![スクリーンショット 2024-04-02 14.43.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744656/7dd1ff7c-3216-84dc-a28b-3af50
MySQL + AWS RDS – RDS 証明書の更新でダウンタイムは生じるのか生じないのか
# 前提
RDS証明書更新よりも前に、アプリケーションがデータベースに接続するための証明書更新も必要なようだ
# 概要
MySQL の SSL モードが required でない場合は、ダウンタイムが生じなさそう
ただしSSLの暗号化通信がされなくなってしまうようなので、いつの間にかSSL通信していなかったという事態には要注意だMySQL 8 系の SSL モードはデフォルトが required ではなく preferred なので、注意
## 参考
新しい SSL/TLS 証明書を使用して MySQL DB インスタンスに接続するようにアプリケーションを更新する
> disabled、preferred、および required の SSL モードを指定できます。preferred SSL モードを使用し、CA 証明書が存在しないか、最新でない場合、接続は SSL を使用しない状態にフォールバックし、暗号化なしで接続が行われます。
>これらの新しいバージョンでは OpenSSL プロトコルが使用されるため、サーバー証明書の有効期限が切れても、 required
【AWS】ECS Execを利用してFargateに接続してみた
# はじめに
[以前の記事](https://qiita.com/kawatani32/items/b79da8af72fc4f0e7b31)で、ECS on Fargateを用いてWebサイトの構築を行いました。
何か問題が起きた際に既存Fargateに接続したいということがあるかと思います。
そこで、Serverworks様の[記事](https://blog.serverworks.co.jp/ecs-exec)を参考に、Fargateに接続できるまでの手順をまとめていきたいと思います。# 個人環境
+ Windows10## AWS CLIのインストール
AWS CLIがインストールされていない場合は、公開されている[インストール手順](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html)を参考に、AWS CLIのインストールを行います。
※特に変更などせずデフォルトのままインストールを行っています。
※AWS CLIに任意の認証情報を設定してください。
SageMaker Studioでカスタムイメージが起動しない
# 発生した事象
SageMaker Studioのjupyter labでカスタムイメージを選択して起動しようとしたところ。ステータスがUpdattingのまま起動されない。**(2024/4/1現在)**
# 原因
サポートに問い合わせたところ、AWS側の問題(おそらくバグ?)とのことでした。
space の JupyterLabAppSettings に SageMakerImageVersionAlias が設定されている場合、カスタムイメージを使用してJupyterLab App を起動しようとすると、CreateApp APIが呼び出されません。spaceの設定確認コマンド[2]
“`
aws sagemaker describe-space –domain-id–space-name
“`
# 対処法
対処法として以下を提示して頂きました。1. 新たに作成された space を使用する
2. AWS CLI コマンドから JupyterLab App を起動する[1]
“`
aws sag
AWS CLIを使用したDynamoDBのアイテム数のカウント方法
AWS DynamoDBは、大量のデータを扱うためのマネージドNoSQLデータベースサービスです。開発者やデータベース管理者がよく行うタスクの一つに、テーブル内のアイテム数をカウントする作業があります。AWS CLI (コマンドラインインターフェース) を使用して、特定のプロファイルやリージョンを指定しつつ、DynamoDBテーブルのアイテム数を効率的にカウントする方法を記載します。
## 概算アイテム数の取得
`describe-table`コマンドを使用すると、DynamoDBテーブルのメタデータからアイテム数の概算を簡単に取得できます。これはテーブル全体をスキャンせずに済むため、時間もコストも節約できます。
### コマンド例
“`sh
aws dynamodb describe-table –table-name テーブル名 –profile プロファイル名 –region リージョン名
“`このコマンドを実行すると、`ItemCount`フィールドにテーブルに格納されているアイテム数の概算が表示されます。
## 特定のクエリ条件に基づくアイテム数のカウ
CloudFrontを利用していてDNS切り替えをしても狙った所にアクセスできない時の対応
# はじめに
ドキュメントを読めば、きちんと書いてありますが逆引きで事象から必要となる対応、チェックすべき所はコレだ!ってのは中々ないとの、自分がハマったことなのでメモ書きします。# 大前提
社名は出しませんがCRMサービス(AWSを利用してる他社サービス)から自社のCloudFrontに移行しようとした時に、DNSレベルでは切り替わってるハズなのに、CloudFrontを通過すると、昔のサイトに行ってしまうという事象が発生しました。# 原因
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html
ここにバッチリ記述されています。
> **重複する代替ドメイン名**
AWS アカウントが他の CloudFront ディストリビューションを所有している場合でも、同じ代替ドメイン名が別のディストリ CloudFront ビューションに既に存在する場合、代替ドメイン名をディストリビューションに追加することはできません。
>
> ただし、*.example.com の
SageMaker Studioでカスタムイメージを使用する
# はじめに
Amazon SageMaker Studioにカスタムイメージを適用する際に苦労したので備忘録です。
# Cloud9のセットアップ
今回はCloud9を使用します。ローカルにAWS CLI環境が構築されている場合はそちらでも構いません。### 環境を作成
1. コンソールから [Create environment] をクリック
2. [Additional instance types]からinstance typeをt2-mediumに変更
※後のイメージ作成の際にt2-microだとエラーになるため
3. その他の設定は任意で[Create]をクリック### ストレージサイズを変更
デフォルトの5GBだとイメージ作成に足りないため、拡張します。
1. Cloud9が動いているEC2を停止
2. アタッチされているEBSのSizeを増やします。とりあえず30GiBくらい。
※増やすことはできるが、後から減らすことができない。
![EBSVolume.PNG](https://qiita-image-store.s3.ap-northeast-1.
StepFunctionsでいろいろ詰まったこともあったのでまとめておく
## 前提(困ったこと)
プロダクト開発でAWSのサービスを中心に組み上げていく中で、・API Gateway
・StepFunctions
・Lambdaの3つを使うことになったが、
API Gateway + StepFunctions
と
API Gateway + Lambda
で微妙にcontextの内容が違ったので難儀したケースがあった。## 使用サービス
・Lambda
・StepFunctions
・API Gateway
・Keycloak(AWS外)## どうしてこうなった
最初はLambda中心に開発しており、StepFunctionsもいつかは使おうと考えてはいつつも後回しにしていた。
ある程度落ち着いたタイミングで、StepFunctionsを使ってこれまで作ったLambdaを組み合わせて実装を進めていたが、想定していた挙動にならない。具体的にはAPI GatewayのAuthorizerにLambdaを使って、そのLambda内で外部のKeycloakを呼んでcontextのauthorizerに含めるという仕組みにしていたのだが、これ
API Gatewayを単一Lambda関数と統合する際のハンドラーのルーティング方法
# はじめに
API GatewayとLambdaの統合には様々な実装パターンがあるせいか、下記の状況下でのルーティングの方法の情報が無かったので投稿します。
# 前提
– すべてのメソッドを単一のLambda関数とプロキシ統合する
– プロキシリソース(`{proxy+}`)は使わない(HTTPルーティングはAPI Gatewayで行う)
– [aws-lambda-web-adapter](https://github.com/awslabs/aws-lambda-web-adapter)や[aws-lambda-go-api-proxy](https://github.com/awslabs/aws-lambda-go-api-proxy)などは、使用しない# 結論
Lambda関数が受け取るeventオブジェクトに含まれる`resource`と`httpMethod`を使用する。
`path`も使えそうですが、実際のパラメータが含まれる値のため、使用しない方が良いでしょう。“` json:event
{
“resource”: “/todo/{id}”,
IAMユーザーをコマンドで簡単に削除する
# はじめに
IAMユーザーをコマンドで削除する場合、なにもせずにコマンドを実行するとエラーになって削除できません。“`shell
$ aws iam delete-user –user-name user01An error occurred (DeleteConflict) when calling the DeleteUser operation: Cannot delete entity, must remove users from group first.
“`原因は、[ドキュメント](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting_cli)に記載されている通りで、コマンドで削除する場合は削除前にアタッチされている項目を削除する必要があります。
コンソールから削除すれば気にする必要もないのですが、削除対象をコマンドとして事前に整理して実行をしたいケース等もあるかと思います。
# IAMユーザー削除スクリプト
という
外部アカウントからRedshiftにアクセスする方式
この記事では、アカウントAにあるEC2からアカウントBのRedshiftへのアクセス方法について紹介します。
### 構成
#### アカウントA
・vpc-ec2
・subnet-ec2
・ec2#### アカウントB
・vpc-ec2
・subnet-private
・redshift### 1.VPCペアリング接続を作ります
#### アカウントAで:
(VPCがなければ作成します。サブネットやセキュリティグループも同様。)
VPC管理コンソール画面に遷移して、「ピアリング接続」というタグを選択し、「ピアリング接続の作成」ボタンをクリックします。
![截屏2024-04-01 23.52.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3668444/5cc51ea2-960c-5601-9266-a100cb1d3e61.png)名前とVPC IDなどを入力します:
![截屏2024-04-01 23.54.23.png](https://qiita-ima
Cognito の SRP 認証フローを理解する
# はじめに
Cognito の認証では SRP プロトコルに対応しているフローがあります。
SRP ってパスワードが平文でインターネット上を流れないからセキュアなんだろうなぁ、というふわっとした理解で、使用する際も SDK が勝手によしなにやってくれるため、細かいことが何も分かりません。
そこで、SRP とは何ぞや、Cognito ではどうやって使われているんだ、という部分を調べてみました。# SRP とは
RFC 2945 で定義されていました。
ネットワーク認証方式の1つであり、暗号化されていない通信路でもパスワードを使用した認証を安全に行うためのプロトコルとのことらしいです。
パスワードを直接サーバーに送信するのではなく、特定の計算式に基づいて計算した値にして送信するため、パスワードが通信経路を直接流れることがないとのこと。
クライアントとサーバー間で共有の秘密鍵の生成を行うことができるようです。なんとなく概要がわかった気がするのでもう少し詳細を見てみます。
>Abstract
>
> This document describes a cryptographic
未経験からSIerに転職して1ヶ月経ったので振り返ってみる
どうも、初心者12冠エンジニアのアスカです。電機メーカー研究職から転職してちょうど1ヶ月経過したので思う所を綴りたいと思います。これから転職を考えている方の参考になれば幸いです。
ちなみにインフラ案件のPL候補という枠で採用されました。
あくまで業界歴1ヶ月という短い経験の感想なので一般論ではない事を念頭にしてください。# どんな業務?
基本的には上流の設計から下流の構築まで行う業務です。案件や、どの段階から参画するかによって実際にやる事はまちまちな気がします。
実際に自分がアサインされたのはAIベンチャーのサービスをクラウドに移行する案件で、キックオフから参入しました。基本設計フェイズから始まっており、週次でお客様と打ち合わせを繰り返し、構成の基本方針を詰めていっています。
すでにデータセンターで動いているものがあるため、EC2のミドルウェアやパッチ適用、マルウェア対策まで固まっているので時間は無いけど比較的やりやすい案件なのかな?と思っています。
# どんな力が必要?
ざっくりいうと国語力な気がします。少し分解すると
1. 情報収集と整理する力
1. 資料作成力
1.
【AWS-CloudFront】静的コンテンツリリース時にCloudFrontキャッシュクリアをしたい
![【AWS-CloudFront】静的コンテンツリリース時に CloudFrontキャッシュクリアをしたい.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754524/96a9b569-4d96-2ccb-0315-7284b3ccff9a.png)
## 本記事で実現できること
静的コンテンツリリース時にCloudFrontキャッシュクリアを行う## 前提
– AWSマネコンはログイン済み
– 2024.1.19 時点でのコンソールのUIになります## 簡単な解説
全部で7フェーズ①ホーム画面で、画面上部検索欄に[**CloudFront**]と入力。
出てくるサービスの中から[**CloudFront**]をクリック![【AWS-CloudFront】静的コンテンツリリース時に CloudFrontキャッシュクリアをしたい (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375452
【メモ】WAFメンテナンス・テストモード切替
## 事前確認
“`ruby:title: 事前確認
$ AWS_REGION=us-east-1
$ STACK_NAME=
$ WAF_PREFIX=
$ aws wafv2 get-web-acl –name “${WAF_PREFIX}-WebACL” –scope CLOUDFRONT –id $(aws wafv2 list-web-acls –scope CLOUDFRONT –output text –query “WebACLs[?Name==\`${WAF_PREFIX}-WebACL\`].Id”) –query “WebACL.DefaultAction”
{
“Block”: {
“CustomResponse”: {
“ResponseCode”: 503
}
}
}
$ aws wafv2 get-web-acl –name “${WAF_PREFIX}-WebACL” –scope CLOUDFR
【メモ】CloudFormation実行関連
## CloudFormation実行
※各環境の実行したい処理単位のフォルダに入る
“`ruby:title: CloudFormation実行
$ cd <実行したい処理単位のフォルダ>
$ pull
$ ../../build
※build.sh実行
“`## CloudFormation手動実行
### 手動実行(WAFの例)“`ruby:title: 手動実行(WAFの例)
StackID=141-WAF
aws cloudformation deploy –template-file ./cfn/${StackID}.yml –stack-name DEV-${StackID} –parameter-overrides $(grep -Evh ^# ./cfn/common_param.ini ./cfn/${StackID}.ini | tr ‘\n’ ‘ ‘) StackName=DEV-${StackID} MaintenanceMode=true TestMode=false
“`## CloudFormationテンプレート検証
EBS・スナップショットの暗号化
## 初めに
本日は、EBS・スナップショットの暗号化に関して、記載させて頂きたいと思います。
作成の際の注意点もあげてますので、ぜひご参考にして頂けたら幸いです。## 暗号化
目的:ボリュームやスナップショットを暗号化する事は機密性を高める為
→暗号化する際は、AWS KMSサービスを使用します。
※機密性とは?:決められた人だけが対象のデータにアクセスが出来る様にする事です![スクリーンショット 2024-04-01 15.44.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744656/1f56f88a-dc6d-145b-0472-5d5c0694405b.png)
## 暗号化されるデータ
・ボリューム内の保存データ。
・ボリュームとインスタンス間で移動されるデータ。
・ボリュームから作成されたスナップショット。
・スナップショットから作成されたボリューム。## 作成の流れ(注意点有り)
ボリュームの作成時に暗号化のオプションを有効にする。
![スクリーンショット 202
【メモ】SQSの受信とクリア
## SQS
### SQSの受信とクリア“`ruby:title: SQS 受信とクリア
aws sqs receive-message –queue-url https://sqs.ap-northeast-1.amazonaws.com/xxxxxxxxxx<アカウントID>/–visibility-timeout 1 –max-number-of-messages 10
“`
※2回実行すると、受信メッセージがクリアされDLQ行きになる
【メモ】CloudWatchLogsインサイトの保存されたクエリの確認
## CloudWatchLogsインサイト
### 保存されたクエリの確認“`ruby:title: CloudWatchLogsインサイト 保存されたクエリの確認
pwsh –Command ‘(aws logs describe-query-definitions | ConvertFrom-Json).queryDefinitions | sort-object name’
“`
【メモ】CloudShell/Git 初期設定
## 本記事で実現できること
CloudShell初期設定を行う## CloudShell事前確認
### 事前確認
リージョン選択で作業対象のリージョンが選択されていることを確認する
※別リージョンを選択していると、別リージョンにCloudFormationスタックが作成される
※CloudFormationスタックが正常に作成された際、
リソースが想定の場所に作成されているか必ず確認する
![【AWS-IAM】アカウント棚卸時に、新規参画者のアカウントを作成したい (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754524/8e72a78d-4c73-9b88-807e-9f9dcd0eb3bb.png)## CloudShell日本語化
### 日本語パックのインストール
“`ruby:title: 日本語パックインストール
sudo yum install glibc-langpack-ja
“`
CloudShellはhomeディレクトリ以外は永続化されないので、
後