- 1. はじめに
- 1.0.1. S3とは
- 1.0.2. 静的ウェブサイトホスティング機能とは
- 1.0.3. App Runner のカスタムドメイン追加時にwwwサブドメインもまとめて追加する方法
- 1.0.4. Step Functions データフローシミュレーターでステートの入出力設定を理解する
- 1.0.5. AWS Certified Developer – Associateを1週間で合格しました。
- 1.0.6. CloudWatch Logs を Insights で検索する
- 1.0.7. AWS CDK で Infrastructure as Code する
- 1.0.8. AWS SAMを使用してLambda+ApiGatewayのAPIをデプロイ
- 1.0.9. Amazon EC2インスタンス作成の手順
- 2. はじめに
- 3. 作成までの前提
- 3.0.1. ECSコンテナ@Fargateにログインする際の躓きに関する備忘録
- 3.0.2. AWS Transit Gateway作業禄
- 3.0.3. 実はLambdaの関数URLは署名付きURL化できるよ、29秒の壁も越えられるよ、という話
- 3.0.4. プライベートサブネットでコンテナをデプロイするとき、SGでSGを指定する???
- 3.0.5. AmazonLinux 2023でcertbotを用いてhttps化するときのコマンド
- 3.0.6. WordPress に最適な CloudFront キャッシュ設定 (2023年度版)
- 3.0.7. バケットポリシーの設定をミスってアクセスできずに冷や汗をかいた話
- 3.0.8. EventBridge Schedulerを使用して毎日定時にECSを起動・停止する
- 3.0.9. AWSから届くメール、Instance scheduled for rebootについて
テンプレ容量(51,200 バイト)を超えた「cloudformation deploy」実行方法について
## はじめに
Cloudformation (以下Cfn)のテンプレファイルをCLIコマンドでデプロイする時に
は「cloudformation deploy」が使用候補となると思います。このコマンドはローカルに存在するファイルが51200バイトを超えると、
ローカルからデプロイができない仕様があります。本記事は上記容量を超過したテンプレファイルをデプロイする方法探し、見つけるまでの悩みの経緯記載した記事となります。
## 結論
オプションコマンドとS3を経由することで「cloudformation deploy」の実行が可能■コマンド例
“`bash
aws cloudformation deploy –s3-bucket {S3バケット名} –template-file {ローカルに存在するテンプレファイルパス} –stack-name {スタック名}
“`## 確認経緯
### 導入
私:以下コマンドを使ってローカルにあるCfnテンプレートをデプロイしたいけどファイルサイズが上限を超えてエラーになる。。
テンプレテートを分割して2回に分けてデプロイ
AWSのVPCを削除する方法
AWSのVPCを削除する方法(ほかにもっといい動画あるかも)
特定のCIDR範囲のVPCをチェックする
# はじめに
VPCが特定のCIDR範囲かどうかをチェックする方法を作ってみましたので記事にしました。
# 概要
以下の2つを作りました。
– 作成済みのVPCのCIDR範囲をチェックするコマンド
– 全リージョンを一度にチェック
– “(作成済み・今後作成される)VPCのCIDR範囲をチェックするAWS Config”を作成するCFnテンプレート
– リージョンごと
– 複数のリージョンに設定するには、StackSetsなどを用いると良いと思います# きっかけ
以下の~~ツイート~~ポストを見かけたのがきっかけでした。偶然見つけたけど、これ結構な落とし穴では?
VPCのCIDRの修正って影響範囲デカそうだし怖いな。。。> 一部の AWS サービスは、172.17.0.0/16 CIDR 範囲を使用します。将来競合が発生しないように、VPC を作成するときはこの範囲を使用しないでください。https://t.co/FWgycO0YjX
— はたはた (@hatake_book) July 23, 2023
公式では以下になります。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-cidr-blocks.html#vpc-sizing-ipv4
そのため今回は”172.17.0.0/16″っぽい範囲をチェックする仕組みを作ってみました。
AWSのS3 バケットのアクセス権限設定について
AWSサービスのS3で静的ウェブサイトホスティングのバケットのアクセス権限設定について勉強をしたので自身の理解・復習また文章力の向上のためアウトプットさせていただきます。
はじめに
S3で静的webサイトのホスティングを実践してみました。
S3とは
S3(Simple Storage Service)とはAmazonが提供する「スケーラビリティ」「データ可用性」「セキュリティ」および「パフォーマンス」を提供するオブジェクトストレージサービスです。ストレージのディスク管理や冗長化の心配の必要が無い便利なサービスなので本業などに専念可能です。Amazon S3を使用してWebやアプリのデータのバックアップ、動画・画像の格納に利用でき、AWSと連携させることで幅広い用途が可能。容量にかかわらずデータを保護で、アクセス管理機能もあるので各種要件に合わせたデータアクセスが可能。
静的ウェブサイトホスティング機能とは
S3に保存したデータはHTTP/HTTPSでアクセス可能なので、Webサーバーのように静的Webサイトとして公開するこ
App Runner のカスタムドメイン追加時にwwwサブドメインもまとめて追加する方法
# やりたいこと
App Runnerのカスタムドメインで設定したドメインに、`www`サブドメイン付きでアクセスしても同じサイトを表示させてあげたい
要するに……
“`
https://test.com/
https://www.test.com/
“`
このどちらで来ても同じサイトを表示したい、というケースの対応方法を解説します。*注) 同じサイトを表示するだけで、いずれかにリダイレクトするものではないです*
# 手順
## 1. App Runnerでアプリケーション公開
今回は、ここは済んでいる前提で。
## 2. カスタムドメインの設定
注意ポイントです。
2023/08/06時点では、コンソールからでは、メインドメインと`www`サブドメインの両方をまとめて設定することができません。
APIで、サポートされているということなので、今回はboto3(python)で設定を進めます。https://docs.aws.amazon.com/ja_jp/apprunner/latest/dg/manage-custom-domains.html
また、既
Step Functions データフローシミュレーターでステートの入出力設定を理解する
# はじめに
本記事はStep Functionsで提供されているデータフローシミュレーターの紹介記事のようなものです。
`InputPath`、`Parameters`、`ResultSelector`、`OutputPath`、`ResultPath`などの説明は概要程度であり、より詳しい情報は他で参照ください。Step Functions初心者の頃はステートマシンの入出力制御つまり`InputPath`、`Parameters`、`ResultSelector`、`OutputPath`、`ResultPath`がどのような役割を果たしているのか理解に苦労しました。
以下のように丁寧にまとめてくださっている資料もありますが、実際に手を動かして確認する方が理解が早く感じます。https://dev.classmethod.jp/articles/stepfunctions-parameters-inter-states/
ステートマシンを動かせば、入出力制御の結果を確認することができますが、以下のようなデメリットがあります。
– 処理時間が長いステートマシンの場合、確
AWS Certified Developer – Associateを1週間で合格しました。
DVAの受験を受けてきて、無事合格しました。
![スクリーンショット 2023-08-05 22.11.10 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1225450/238dd0f2-8d6d-4cbd-69b4-61935f3a42cd.png)
合格するまでのプロセスや勉強方法を備忘録として投稿して、受験を考えてる方に参考になればと思います!
https://aws.amazon.com/jp/certification/certified-developer-associate/
# 前提知識
– 3年前にSAA、CLFを取得済(更新忘れて失効。。。また頑張る。)
– AWS歴4年弱だが、業務ではリリース時くらいしかAWSを操作しない。
– Lambda,API Gatewayは個人的に色々触ったことはある。# 目的
バッチが欲しかったから。。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amaz
CloudWatch Logs を Insights で検索する
## 背景
これまで CloudWatch Logs に適当にログ出力していたアプリについて、検索しづらいなーと思ったので、なんかいい方法がないかと調べてみたところ、Insights という機能でもっと便利に検索できそうだったので試してみました。## これまでのやり方
特にいい方法を知らなかったので、「すべてのログストリームを検索」などで適当にフィルタリング条件を入力して絞るくらいでした。
(というかイマイチ使いづらいなーとは思いつつも、その他のサービスでは CloudWatch 外でログを管理していたので、そんなにしっかり使う機会もなくこれでとりあえずは事足りていた)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733013/a443c9fb-d8ed-cf20-c8fc-167c3a0a3f00.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733013/019
AWS CDK で Infrastructure as Code する
こんにちは。ただいま絶賛AWSのナレッジを整理中です。今回は AWS CDK([AWS Cloud Development Kit](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html))を使ってみます。
AWS CDK をつかうことで、イチから作成するとまあまあメンドクサイCloudFormationの定義ファイルを生成したり、VPCとかNLBとかいわゆる**AWSのインフラをコードから構築(Infrastructure as Code)** したりできます。
例えばこんな感じにコードを書いて、EC2インスタンスを作成したりできるわけですね。
“`typescript
return new CfnInstance(stack, `EC2${name}`, {
imageId: ‘ami-00d101850e971728d’,
keyName: ‘temp_private’,
instanceType: ‘t2.micro’,
networkInterfaces: [
AWS SAMを使用してLambda+ApiGatewayのAPIをデプロイ
## SAM(Serverless Application Model)とは
サーバーレスアプリケーション構築用のオープンソースフレームワーク
https://aws.amazon.com/jp/serverless/sam/簡単にまとめると
* Lambda開発の手間を削減
* ローカル上でLamabdaを再現してテスト、デバッグができる
* SAM 構文のテンプレートでサーバーレスアプリケーションの構築を高速化## 実行環境
Windowsで実施
AWS SAMを使用するためのCLIをインストールhttps://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/install-sam-cli.html
“`
$ sam –version
SAM CLI, version 1.94.0
“`
前提
Ubuntu 環境導入済み
Docker 導入済み
AWS CLI 導入済み## プロジェクト作成
`sam init`コマンドでアプリケーションの初期設定
`-
Amazon EC2インスタンス作成の手順
インスタンス作成を実際に触って勉強をしたので自身の理解・復習また文章力の向上のためアウトプットさせていただきます。
はじめに
EC2とは
EC2(Elastic Compute Cloud)とは仮想サーバーサービスで、物理サーバーの構築なしで手軽に仮想サーバーを提供できることが強みになります。LinuxやWindowsの仮想サーバを数分で作成可能でスペック変更や削除も容易できます。従量課金で、サーバの起動時間に応じて料金が発生するので必要な際に起動したり不要な際は停止できる点はサービスの強みです。
EC2については僕が書かせて頂いたAWSのEC2についてを読んでみてください。
作成までの前提
・AWSアカウントを持っている
*アカウントを持っていない方はアカウント作成から必要ですのでECSコンテナ@Fargateにログインする際の躓きに関する備忘録
障害原因切り分けのためECS上のコンテナにログインを試みた際、少し躓きがありましたので気づきを備忘録化。
# TL;DR
* こちらの[チェッカーシェル](https://github.com/aws-containers/amazon-ecs-exec-checker)でどこが不足しているのか網羅的に確認しながら進めると効率的。(急がば回れ)
* Fargate環境のステータス遷移が非同期なので、リトライ時はあせらず少し待ってみる。
# 実行ロールに権限が付与未済
対象ロールは従前のチェッカーシェルを使うと表示可能です。
“`text:エラーログ
An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error. Try again later.
“`“`text:以下SSMエージェント実行用ポリシーを付与
{
“Version”: “2
AWS Transit Gateway作業禄
# 概要
異なるAWSアカウント間のVPCを接続するための一つの手段としてTransit Gatewayを使った作業の手順を記載。
それぞれのアカウントで作業が必要なので、手順としての確立を行う。詳しい手順は下記を参考にして後に作業するときのためエッセンスだけ記載しています。
https://dev.classmethod.jp/articles/transit-gateway-vpc/ここで間違えてはいけないのは、これはひとつのVPC同士を接続する術であって、subnet同士をつないでいるわけではないこと。
結果としてそうなっているように見えるけど、そもそもVPCとSubnetの関係はルートテーブル、境界となる点、セキュリティグループで仕切られた人為的なものであることを知っておく必要がある。# 手順
![aws_transit_gateway.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570665/274b17b4-690c-cc21-bbd3-1572474e5832
実はLambdaの関数URLは署名付きURL化できるよ、29秒の壁も越えられるよ、という話
# この記事を2行で
– S3の署名付きURLと同じことが、Lambdaの関数URLにもできます
– Lambdaの署名付きURLを使えば、APIGatewayの29秒タイムアウトを超えてLambdaを実行できます## 何が嬉しいの?
– AIのように時間のかかる処理を、Lambdaだけで処理できます
– 署名付きURLなので、Cognito + APIGatewayのような認証がそのまま使えます## どうやって?
– Lambdaの関数URLは`API Gatewayの29秒タイムアウト制限の影響を受けない`
– S3の署名付きURLと同じ認証方法が、Lambdaの関数URLでも使える
– ※サービスはLambdaだけ、ライブラリもboto3の標準機能だけで実現できます## このあたりの事情を説明(APIGatewayのタイムアウト制限とは?)
AWSのLambdaは、15分かかる処理までは受け付けることができます。
ただ、APIGatewayは、レスポンスを返すのに29秒以上かかるリクエストを強制的に中断する仕様になっています。Lambdaは何しろ安
プライベートサブネットでコンテナをデプロイするとき、SGでSGを指定する???
# この記事の目的
現在、AWSを使用してstreamlitで開発したWebアプリケーションをプライベートサブネット内にコンテナとしてデプロイするという作業を行っています。その中で意味の分からない設定があったので記録として残しておきます。# Webアプリケーションをリリースするまで
アプリケーションをリリースするのに、たくさんのサービスの設定が必要となります。
– VPC:AZ,サブネット、エンドポイント、セキュリティグループ(以下、SG)
– EC2:ターゲットグループ、アプリケーションロードバランサー、ヘルスチェック
– ECS:クラスター、タスク定義、オートスケーリングWebアプリケーションを作成する段階でも、cloud9による開発からDockerコンテナ化によるDockerfile、tomlファイルの作成、ECR、Code Deployによるデプロイ自動化などたくさんやることはあります。
その中でも、SGのインバウンドルールを設定するときに、「設定しているSGに対して、それ自身をソースに指定する」とかいう何の意味があるかわからないことをする必要があります。
インバウ
AmazonLinux 2023でcertbotを用いてhttps化するときのコマンド
# certbot導入からhttps化するまで
“`
# venv作成・pipからcertbotをインストール
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install –upgrade pip
sudo /opt/certbot/bin/pip install certbot certbot-nginx
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
sudo certbot –nginx –agree-tos#自動更新
crontab -e
#crontab内に記載
0 0,12 * * * root /opt/certbot/bin/python -c ‘import random; import time; time.sleep(random.random() * 3600)’ && sudo certbot renew -q“`
とりあえずこれでできた。
certbotの入れ方はいろいろ試したがこれでしかできなかった
WordPress に最適な CloudFront キャッシュ設定 (2023年度版)
AWS 公式ドキュメントが 2023年8月時点で公開している「[Best Practices for WordPress on AWS](https://docs.aws.amazon.com/ja_jp/whitepapers/latest/best-practices-wordpress/welcome.html)」にある設定例「[CloudFront distribution creation](https://docs.aws.amazon.com/ja_jp/whitepapers/latest/best-practices-wordpress/cloudfront-distribution-creation.html)」の内容が古かったので、自分なりに改良してみました。
主な改良点は
– レガシーキャッシュルールではなく、最新のキャッシュポリシーを使う
– wp-json ディレクトリの通信を対応する
– Facebook や広告タグのクエリをオリジンサーバーに飛ばなくするです。
# STEP.1 キャッシュポリシーを作成
絶対に CloudFront にキャ
バケットポリシーの設定をミスってアクセスできずに冷や汗をかいた話
# はじめに
「**[100万人に伝えたい!失敗を乗り超えた話を共有しよう](https://qiita.com/official-events/e9f582bec72278130942)**」の参考記事として以前投稿した記事を紹介して頂いたので、イベントを盛り上げるべく別の失敗談を投稿しようと思います。【紹介いただいた記事】
– [タイムリープして本番リリース直前のBIG-IPをぶっ壊した話](https://qiita.com/sakai00kou/items/54d31810a5bf853154a2)実際には首の皮一枚で何とかリカバリできたので未遂で終わったものとなりますが、業務でS3バケットポリシーを設定した際、ミスってアクセスできなくなった話を共有します。
# 今回の構成概要
あるS3バケットに対して通常時はLambda等からのアクセスのみ許可して、特定の場合にのみその他のアクセスも許可するといった以下のような要件を満たすため、`Step Functions`とS3バケットのバケットポリシーで仕組みを実装しようとしていました。“`plantuml
@start
EventBridge Schedulerを使用して毎日定時にECSを起動・停止する
# はじめに
AWSコスト削減のために、使用していない時間帯はECSを停止したい。
毎回手動で起動したり停止したりするのは面倒なので、EventBridge Schedulerを使用して毎日定時にコンテナを起動/停止する。# EventBridge Scheduler について
EventBridge Rulesとの主な違い:
[Amazon EventBridge スケジューラの紹介](https://aws.amazon.com/jp/blogs/compute/introducing-amazon-eventbridge-scheduler/)# 1. IAMロール作成
スケジュール実行用のIAMロールを作成する。
AWSマネジメントコンソール > IAM > ロール > ロールの作成
信頼ポリシーは以下の通り
Principalには`scheduler.amazonaws.com`を指定する“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“
AWSから届くメール、Instance scheduled for rebootについて
# ■概要
AWSより予告されるEC2インスタンスのメンテナンスについて。
対応手順からメンテナンス完了の確認方法まで記載します。# ■AWSから届くメール
件名は以下のような件名です。
Amazon EC2 Maintenance: Instance scheduled for reboot [AWS Account ID: xxxxxxxxxxxx]また内容については、インスタンスのメンテナンスがx月x日のx時からx時までの間に行われます。
またその間インスタンスは利用できない状態となり、再起動される。といった内容です。> Hello,
> One or more of your Amazon EC2 instances associated with your AWS account (AWS Account ID: xxxxxxxxxxxx) are scheduled for
> maintenance between 2023-08-07 00:00:00 UTC and 2023-08-07 02:00:00 UTC. During this time,