AWS関連のことを調べてみた2023年08月05日

AWS関連のことを調べてみた2023年08月05日
目次

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,

元記事を表示

Aurora MySQL2クラスタをAurora MySQL 3(serverless v2に移行する)

## 背景

これまで利用してきたAurora MySQL 2(MySQL5.7互換)クラスタを利用中でしたが、暗号化設定がされていませんでした。
サービス的に求められるようになり、暗号化を導入することになりました。

Auroraクラスタは設定をコンソールからぽちぽち変えるだけで暗号化できるのだろうと思ってたんですが、実はそんなことはなく新規にクラスターを作る必要があるということがわかりました。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Overview.Encryption.html#Overview.Encryption.Limitations

> – 暗号化されていない DB クラスターを暗号化された DB クラスターに変換することはできません。ただし、暗号化されていないスナップショットを暗号化された Aurora DB クラスターに復元することはできます。それを行うには、暗号化されていないスナップショットから復元するときに、KMS キーを指定します。
> – 暗号化されていない A

元記事を表示

JavascriptとCSSのfixedでヘッダーを固定しつつ横スクロールさせた話とAWSでデプロイした話

# AWSのデプロイした話から

昨日めでたく実務で初デプロイをしてきました。めでたい!
ちょこっとした修正ですが、引き継ぎでもらったコードだったので、
読むの疲れた、、、

ってことで、デプロイの流れを。

# まずはデプロイ用のブランチを最新に
gitの管理はソースツリーを使っております。
他のツールでも大体一緒なはず。

デプロイ用のブランチとdevブランチをマージで統合

→リモートリポジトリへプッシュ

→AWSのEC2インスタンスにSSH接続
※インスタンスに入るときは、.sshディレクトリに入ってからね。ここに鍵になるpemファイルが入ってないとだめ。
私はホームディレクトリからやって繋がんなくてちょと焦った。

→AWS内でさっき最新にしたデプロイ用のブランチをgit pull!
これで完了。

Laravelのマイグレーションファイルを作ってたり、DBのカラムを作成していたら、
本番環境のDBの更新も忘れずに行います。

# これでデプロイ完了!めでたい!
ビールを飲んで完了です。

# Javascriptでの横スクロールとCSSのfixedでヘッダーを固定しつつ

元記事を表示

【AWS】SessionManagerでローカル環境からSSH接続する

`SessionManager(SSM)`を使うと、AWSコンソール上から
鍵ストレス無くPrivate subnetにあるEC2インスタンスにアクセスできます

加えてローカル環境からのSSH接続も可能になります
今回はローカル環境からSSHする方法を書きます

## 前提
– AWS上でVPC、EC2、SSMなどの構築は済んでいる想定
– 環境 MacOS
– AWS CLIがインストール済み
– SSMの鍵(pemファイル)を持っている

## ❶SessionManagerプラグインのインストール

`sessionmanager-bundle`が必要になるので下記コマンドでインストールします
[公式docはこちら](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/install-plugin-macos-overview.html)

“`shell
curl “https://s3.amazonaws.com/session-manager-downloads/plugin/latest

元記事を表示

WSL環境にAWS コマンドラインインターフェイス(AWS CLI)を構築する

## イントロ

こんにちは。
最近お仕事でAWSを触りまくってます。インプットが多すぎてアウトプットできていなかったのですが、徐々に情報を発信していこうと思っています。まずは「**AWS コマンドラインインターフェイス(AWS CLI)**」です。いわゆる

“`console
$ aws ec2 describe-instances
{
“Reservations”: [
{
“Groups”: [],
“Instances”: [
{
“AmiLaunchIndex”: 0,
“ImageId”: “ami-04394efb326c1b2f0”,
“InstanceId”: “i-xxxxx”,
“InstanceType”: “t2.micro”…
$
“`

的なヤツですね。WindowsのWSL環境にAWS

元記事を表示

Terraformで作るECS × RDS × ElasticCache(Memcached)を使ったクエリキャッシュ

## はじめに

本記事は以下の記事の続編となります。RDSのクエリ結果をElasticCacheを使ってキャッシュすることで、パフォーマンス改善を行うためのサンプルアプリです。

https://qiita.com/WebEngrChild/private/b9b21c1d2d133d523389

## インフラ構成図

![名称未設定ファイル-AWS編.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1824740/0fc876c2-5d72-fdc0-b7ba-0416b6e08157.png)

:::note alert
注意点
利用するAWSの各リソースは課金対象となるものが多く含まれています。個人利用される方は特に注意してください。発生した費用に関して一切責任を負いかねます。
:::

## サンプルAPI概要

:::note info
本ハンズオンでのユースケース
*非常に遅いクエリを発行するAPIをキャッシュを用いてパフォーマンス改善する*といったケースを想定しています。
:::

元記事を表示

【図解】キャッシュ戦略って何?キャッシュを使ったクエリチューニングって何?

# 基礎知識編

Webシステム開発においてキャッシュの理解と設計は非常に重要です。

キャッシュはサーバーの負荷を軽減し、レスポンス時間を大幅に短縮する役割を果たします。頻繁にアクセスされるデータや計算結果を一時的に保管しておくことで、同じリクエストが来たときに再計算や再取得をせずにすみます。

前半の”基礎知識編”では、主にキャッシュ戦略やAWSが提供しているインメモリのキャッシュサービスについてまとめ、記事の後半の”ハンズオン編では、”MemCached”を使ったクエリチューニングを実践していきます。

## キャッシュ戦略種別

キャッシュ戦略は、システムの目的や構成、負荷の性質に応じて選択することが重要です。主に、「ローカル or リモート」、「リード or ライト」、「インライン or アサイド」の三つの軸で戦略が分類されます。それぞれの軸での選択がパフォーマンスや一貫性に大きな影響を及ぼします。

### ローカル or リモート

**ローカルキャッシュ**
一般にはブラウザのようなクライアント側にデータを一時的に保存する方法を指します。これにより、データがローカルに存

元記事を表示

EC2からProxy設定を回避してS3へアクセスする方法

## 問題の背景

シェル(bashなど)の環境変数にProxy設定をしている場合、その設定は一般的にそのシェルで実行される全てのコマンドに影響します。これにより、`aws s3`コマンドでS3へアクセスする際に、意図せずProxyを経由することがあり、一部の環境ではProxy設定が原因で問題が発生することがあります。そこで、今回は`.bashrc`で設定されたProxy設定を回避して、AWS S3にアクセスする方法を解説します。

## 実行環境
OS : AlmaLinux
Version : 9.2 (Turquoise Kodkod)

EC2インスタンスはVPCプライベートネットワーク下にあり、S3へのアクセス口としてVPC Gateway Endpointsを立てています。

また、EC2サーバーから対象のS3バケットへの正しい権限設定などを行ない、アクセスが可能になっていることが前提となります。

## 解決方法

`NO_PROXY`環境変数を設定することで、特定のS3バケットやエンドポイントに対してProxyを経由せずに接続するようになります。この環境変数には、P

元記事を表示

既存AWS構成をTerraformでIaC化(VPC,API Gateway)

## はじめに
現在の以下の構成をTerraformでIaC化していきたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484097/9aeb7811-c7ff-e0dd-7c96-1f0a5e7d7350.png)

内容としては
・VPC関連(VPC,Subnet,InternetGateway,RouteTable,SecurityGroup)
・API Gateway
の部分をまずはやっていきたいと思います。その他コンポーネントについては順次記事を追加投稿していきたいと思います。(長くなってしまうので)

※Subnetの種類としてPublic SubnetとPrivate Subnetを用意していますが、前提構成ではPublic Subnetしか利用していないので基本はPublic Subnetの設定を実施していきます。(Private Subnetは一部の検証を実施する際に利用した。詳細は以下記事)

https://qiita.com/kennyQiita

元記事を表示

QuickSight Roadshow 東京に行ってきました!

皆さん、こんにちは。
KDDI CCoE(*1)の柴田です。

今日はAWS主催のAmazon QuickSight Roadshow 東京に行ってきました!
https://poweredbyquicksight-tokyo.splashthat.com/

このイベントで学んだことを超速報レポートします!(*2)

※1:CCoE = Cloud Center of Excellence の略称。
自社内のクラウド利用推進をさまざまな形で支援・牽引する専任組織を指す。

※2:超速報のため、テキストOnlyとなります。ご了承ください。

# オープニング:Amazon QuickSight の最新アップデートを総まとめ!
アマゾン ウェブ サービス ジャパン合同会社 QuickSightシニア事業開発マネージャー 伊東 大騎さんのセッションでした。

+ データ分析&ビジネス活用は必要

+ なぜデータを可視化するのか?
・データを表形式で見るだけでは気づきを得られにくい

+ ビッグデータを高速に全社員で使うことが今後求められる
・データに基づくビジネス判断ができるように

+

元記事を表示

【AWS CDK (Python)】 LambdaのCI/CD環境をIaCで作る(Layer対応版)

## はじめに
本記事は、私自身の備忘録を兼ねてAWS CDKをこれから始める方の一助になればと思い、AWS CDKの使い方等をまとめたものです。
前回、AWS CDKでLambdaのCI/CD環境を作成しましたが、今回は、その構成を少し変更してLambda LayerのCI/CDにも対応するようにしたいと思います。
前回の記事は、[こちら(【AWS CDK (Python)】 LambdaのCI/CD環境をIaCで作る)](https://qiita.com/takataka987/items/50fe40f9db859f7f8e56)を参照してください。
なお、本記事は私自身の経験を基に記載していますが、間違いがあったらすみません。

## 環境
本記事は以下の環境を使用して記載しています。
* AWS Cloud9
* AWS CDK:2.80.0
* Python: 3.10.11
* Node.js: 16.20.0

また、以下の記事に基づいてAWS CDKの環境を作成しています。
* [【AWS CDK/Python】 AWS CDKの始め方](https://qiita

元記事を表示

2023/08 Glueについて〜2章〜(1からConnectorの作成をしたい)

# Glue Connectorとは

どの役割のConnectorになるかで意味は違ってくるので、今回の要件であるS3からデータを読み取りし、RDSへimportする場合についての意味で説明します。
簡単に言えば、crawlerやjob実行をする上での、dataのimport先のVPCやそのサブネット、セキュリティグループの情報を持って適用してくれるツールのようなものです。
例えば社内システムの場合、セキュリティをしっかり組んでいると思うので、Connectorの設定をしておかないと、接続時に弾かれるエラーが表示されてしまいます。
その接続を担保してくれるものだと認識してください。
Connector自体は作成しなくても、crawlerやJobを実行できるという話もあるのですが、僕は作成した方がいいと思います。
実際Connectorなしで試したのですが、うまくいきませんでした。(原因の追求は深く行なっていませんが)
先の話ですが、Job作成時にコンソール上でもスクリプト上でもVPCまでは設定することができるのですが、サブネットやセキュリティグループまでの設定を行うことができないので

元記事を表示

[AWS] SCPでできること

AWSアカウント全体でやっていいこと、やっちゃいけないことをAWS OrganizationsのSCPで制限したいケースがあると思うのですが、ご作法が色々あるので、備忘録的にメモする。

## Principal/NotPrincipal句をかけない。
* 代わりにConditionでがんばる

“`{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “DenyAssumeRoleToKeyMGRfromSSOuser”,
“Effect”: “Deny”,
“Action”: “sts:AssumeRole”,
“Resource”: “arn:aws:iam::*:role/testRole0*”,
“Condition”: {
“ArnLike”: {
“aws:PrincipalArn”: “arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/

元記事を表示

[CDGC] Amazon S3のスキャン

# はじめに

[インフォマティカ](https://www.informatica.com/jp/)が提供する、 [CDGC](https://www.informatica.com/jp/products/data-governance/cloud-data-governance-and-catalog.html)(データガバナンス&カタログ)を使って、Amazon S3からメタデータを取得(スキャン)するためのガイドです。2023/08時点の情報を元にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986164/53441740-848c-dadd-21df-55b780144b75.png)

# 事前準備
CDGCがセットアップ済みであり、メタデータコマンドセンターのメニューにアクセスできるライセンス、およびユーザロール、ユーザである事を確認して下さい。[こちらのナレッジベース](https://knowledge.informatica.com/s/articl

元記事を表示

【小ネタ】S3のライフサイクルルールで、非現行バージョンの保持するバージョン数の設定ができない…??

# はじめに
先日バージョニングを有効化しているS3で以下のライフサイクルルールを設定したところ…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3491064/0807183f-b2da-6cf0-535d-dc80338faa26.png)

ルールの作成時にエラーが出ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3491064/d2570365-0e4a-9735-4836-284292936396.png)

直訳すると以下の通りですが、
NewerNoncurrentVersionsとは一体なんだろう…。
“`:翻訳
‘NewerNoncurrentVersions’ for
NoncurrentVersionExpiration action must be a positive integer

NoncurrentVersionExpiratio

元記事を表示

SSHでアクセスできない

## 備忘録
スクール学習中で分からなかったことや解決したことの備忘録です

スクールの課題でVPCで仮想ネットワークを作成するというものがあったのですが、実際にVPC、サブネット、インターネットゲートウェイ、EC2を作成して、SSHも「0.0.0.0/0」で許可し、いざ接続!と意気込んたもののアクセスできず・・・

## 結論
結論としてはそもそもインターネットの出入り口の役割もつインターネットゲートウェイがデタッチ(停止状態)になっていて出入り口が封鎖されていたこと、ルートテーブルのルートがローカルしか無かったことが原因でした。
つまり、ルートがローカル(VPCのIPアドレス)だけだったので入り口はあっても出口がなかった状態だったということですね。

インターネットゲートウェイをアタッチにして、ルートの送信先を「0.0.0.0/0」ターゲットをing-xxxxxxxx(インターネットゲートウェイ)に設定して解決しました。

元記事を表示

Terraformを用いてACMで証明書を発行する際にドメインを複数登録する方法

Terraformで証明書を発行する際に以下のように一つの証明書に複数のドメインを入れたいときとかありませんか?
![スクリーンショット 2023-08-03 193446.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3439167/41ec590f-c3a1-b231-af4c-f0750cedd4c3.png)
画面上でポチポチ操作するときは「この証明書に別の名前を追加」をクリックすれば追加できますが、この操作をTerraformで行うときに少し詰まったのでその方法を共有させていただきます。

# 結論
subject_alternative_namesを使うことで追加できます。
具体的には以下のようになります。

“`
resource “aws_acm_certificate” “tokyo_cert” {
domain_name = “example.com”
subject_alternative_names = [“*.example.com”]
validat

元記事を表示

OTHERカテゴリの最新記事