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

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

【Terraform】AWSの既存リソースをimportする際にデフォルトのリージョンとは別のリージョンを指定する

# 環境
– terraform 1.3.7
– provider aws 4.51.0

# 概要
AWS CloudFrontでは、北部バージニア(us-east-1)のACM証明書しか使えない。
そのため、デフォルトのリージョンを東京(ap-northeast-1)等、北部バージニア以外で設定している場合は、Terraformでの既存リソースimport時にも、ACM用に個別のリージョン指定が必要となる。

今回はデフォルトのリージョンが東京のケースを想定。

## 初期設定
“`terraform:provider.tf
provider “aws” {
access_key = var.access_key
secret_key = var.secret_key
region = var.region

assume_role {
role_arn = var.role_arn
}
}
“`

“`terraform:variables.tf
variable “access_key” {
description = “AWS A

元記事を表示

CloudFormationの長所・短所と備忘録的Tips

# はじめに
最近仕事でIaCの一つであるCloudFormation(以下、cfn)を利用した開発を行っていて、その時考えていたことをここにダンプしておきます。
結論から言うと、IaC中々イケてます。マネジメントコンソールで行ってることのほとんどはcfnで実現できます。ただ、自分はPoC開発の範疇でしか利用していないので、開発チームのスタイルによっては活きないかもです。

# CloudFormationとは
>AWS CloudFormation は AWS リソースのモデル化およびセットアップに役立つサービスです。リソース管理に割く時間を減らし、AWS で実行するアプリケーションにより注力できるようになります。使用するすべての AWS リソース (Amazon EC2 インスタンスや Amazon RDS DB インスタンスなど) を記述するテンプレートを作成すれば、CloudFormation がお客様に代わってこれらのリソースのプロビジョニングや設定を受け持ちます。AWS リソースを個別に作成、設計して、それぞれの依存関係を考える必要はありません。CloudFormation

元記事を表示

どうしてもAmplifyをプロジェクトに採用したいので、Amplifyホスティングを最大限に活用してセキュリティ評価をした結果

AWS Amplifyが便利そうなので使いたいのですが、セキュリティ的な不安からプロジェクトへの導入をあきらめていました。やはり、AWSにおいての開発は、Amplifyを使うのが便利だと思うので、再度チャレンジしようと思い、まずはセキュリティ評価を行いました。

# Amplifyホスティングを最大限に活用する

「Amplifyホスティングを最大限に活用する」というのは過大広告のつもりではなく、Amplifyに表示されている推奨設定項目のタイトルです。以下の方法が記載されています。
まだまだやれそうなことはありそうですが、記載されているものはすべて実施しました。
直感的な操作でできるので、おそらく、そんなに悩むことはないと思います。

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/b1cbcb5f-ef74-c57f-5d5b-b4f0f641f577.png)

今回利用しているCodeCommitでは、プレビュー機能に対応していませんでした。

![002.png](h

元記事を表示

Terraformを開始するシンプルな手順メモ

# はじめに
今回は、Terraformを開始する手順をシンプルに確認していきます。

:::note info
手順のメモのため、ベストプラクティスや仔細は、公式ドキュメント等をご確認よろしくお願いいたします。
:::

https://developer.hashicorp.com/terraform/tutorials/aws-get-started?ajs_aid=faebd7bf-0c00-48ad-98d7-6cb0dafaee34&product_intent=terraform

# 手順
実際に実行する流れを記載します。

1. tfenvをインストール
1. プロジェクトフォルダを作成
1. 使用バージョンを決めてインストール
1. 使用バージョンを指定
1. 初期化
1. Terraformファイルの作成
1. コードの記述
1. リソース作成前に確認
1. リソースをデプロイする
1. リソースを削除する

:::note info
AWSであれば、AWSアカウント及び認証情報の設定は必要です。
[こちら](https://qiita.com/kosments

元記事を表示

FSx for NetApp ONTAPのシングルAZ構成もVMware Cloud on AWSのNFSデータストアとして利用できるようになった!

# はじめに
2022年9月から VMware Cloud on AWS で Amazon FSx for NetApp ONTAP (FSx for ONTAP) を NFS データストアとして利用できるようになりましたが、1/23 の[リリースノート](https://docs.vmware.com/en/VMware-Cloud-on-AWS/services/rn/vmware-cloud-on-aws-release-notes/index.html)にて待望のシングル AZ 構成もサポートされるようになりました!
ここで改めて FSx for ONTAP を NFS データストアとしての利用、考慮点などについてまとめてみたいと思います。

# 目次

1. [Amazon FSx for NetApp ONTAPとは](#amazon-fsx-for-netapp-ontapとは)
1. [これまではどうだった?](#これまではどうだった)
1. [コストの比較](#コストの比較)
1. [FSx for ONTAPのシングル

元記事を表示

AWS RDS とAWS Secrets Managerの統合が発表があったため利用してみた

# はじめに
先日AWSで以下アナウンスが有りました。

https://aws.amazon.com/jp/about-aws/whats-new/2022/12/amazon-rds-integration-aws-secrets-manager/

こちらによってRDS作成時にパスワードのローテーション管理含めてAWS Secrets Managerに設定できるようになりました。
以前はLambdaとSecretsManagerをつかってのパスワードのローテーションをする必要があったため、大分楽になった印象です。

# 前提
基本設定できるタイミングは Amazon RDS と Amazon Auroraでは大きく相違は無いのですが、
以下タイミングで設定できます。

*[Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html#rds-secrets-manager-overview)*
* DB インスタンスを作成する
* マルチ AZ DB クラスタ

元記事を表示

AWS: ChatGPT で DynamoDB の UpdateCommand を再学習してみる

# 背景
ChatGPT を使って学習の効率化をしたい、という思い。
GPT3.0 API を使ったりとかもやってみたけれど、まずどんなもんか?をやっぱり体験しておこう、と

# やりとりの流れ
timestampserver を追加する Lambda のサンプルコードちょうだい、みたいなこといったら・・

“`typescript
import { DynamoDB, Lambda } from ‘aws-sdk’;

const dynamo = new DynamoDB.DocumentClient();

exports.handler = async (event: any, context: Lambda.Context) => {
const user = event.Records[0].dynamodb.NewImage;
user.timestampserver = new Date().toISOString();

const params = {
TableName: ‘user’,
Item: user
};

try

元記事を表示

Django から S3 へ画像をアップロードする Example

:::note info
Githubで公開している内容(READMEの内容)です。
ソースコード → https://github.com/takux/example-django-s3
:::

:::note info
Django関連コースを出しているのでこちらもぜひ
→ https://www.takux.one
:::

## Django プロジェクトの作成

必要に応じて仮想環境作成。

“`
python3 -m venv venv
“`

Django プロジェクトの作成。

“`
django-admin startproject myconfig .
“`

Django App の作成。

“`
python manage.py startapp myapp
“`

## 必要なライブラリのインストール

“`
pip install Django django-environ boto3
“`

Django: フレームワークとして使用
django-environ: 環境変数読み込み用に使用
boto3: S3 へのアップロードに使用

元記事を表示

AmazonTimestreamの位置情報データをGrafana Geomapで表示する

# はじめに
SORACOMのGPSマルチユニットをユーザーガイドに従って操作するとLagoon上に簡単に地図上に表示できます

https://users.soracom.io/ja-jp/guides/iot-devices/gps-multiunit/

お手軽で良いのですがLagoonのベースとなっているGrafanaではより多くの機能があり
例えば航空写真をベースマップにしたいと思った時には本家のGrafanaを使いたくなります
そのためにはまずデータを蓄積する時系列データベースが必要です

そこで下記記事を見てsoracom Funnel を利用してAWS Timestreamへ送信する方法を知ったのでそこから先のGrafanaへの連携方法を書きたいと思います

# AWS Timestream にデータを蓄積

SORACOM GPSマルチユニットで取得した情報をAWS Timestreamへ送信させる

https://qiita.com/ckw-1227/items/82f3bc0d6c2e689411a5

この記事の通りにするとsoracom Funnel ->

元記事を表示

レートリミットをAWS CDK でやってみた(WAF使用)

# レートリミットとは

レートリミットとは、リソースの過剰使用やサービス拒否攻撃を防ぐために使用されます。
サーバーへのリクエストの頻度を制御し、特定の時間内にクライアントやIPアドレスからのリクエスト数を制限するために使用されます。

今回はIPアドレスベースでの制限になります。

# 背景
最近では[ポケモン徹底攻略](https://yakkun.com/)さんのサイトが大量リクエストで落とされるなど、[DDos攻撃](https://ja.wikipedia.org/wiki/DoS%E6%94%BB%E6%92%83#DDoS%E6%94%BB%E6%92%83)対策も必要ですね。

基本的に、サーバーサイドを使用するときは、Nestjsを使用していて、[Nestjs](https://docs.nestjs.com/security/rate-limiting)での実装方法もあります。
ですがサーバーサイドで実装すると、

– オリジンにリクエストは届くの

元記事を表示

AWS EventBridge S3のバケットとフォルダを指定してオブジェクトの作成イベントをキャッチする

# 概要

– EventBridgeにて、S3のバケットとフォルダを指定してオブジェクトの作成イベントをキャッチする方法を簡単にまとめる。

# 情報

– 今回、オブジェクトの作成イベントをEventBridgeでキャッチする方法をまとめる。
– 詳細な情報をまとめておく
– バケット名:Foo
– フォルダ名:/look
– EventBridgeルール名:s3-upload-rule
– EventBridgeのターゲット:下記記事で作成したSNSトピック

https://qiita.com/miriwo/items/12d42dfb71294a2b557e

# 方法

1. AWSにログインし、EventBridgeのホームまで移動する。
1. 左サイドバーで「ルール」をクリックする。
1. 遷移先ページで「ルールを作成」をクリックする。
1. 下記の様に設定して「次へ」をクリックする。

| 項目 | 内容 | 備考 |
| — | — | — |
| 名前 |

元記事を表示

AWS SNS Chatbot Slackに通知を行う

# 概要

– AWSのSNSとChatbotを使って任意のSlackワークスペースのチャンネルに通知を送る方法を簡単にまとめる。

# 情報

– 筆者は下記の情報で実施する。
– SNS
– トピック名:sns-test
– Chatbot
– チャンネル設定名:notice-test
– チャネルロール名:notice-test
– Slack
– パブリックチャンネル名:notice_test

# 方法

1. Slackの準備
1. 自身がオーナー権限やそれに近い権限を持っているSlackワークスペースを用意する。
1. 通知チャンネルの作成をする。
1. SNSの設定
1. AWSにログインし、SNSのホームまで移動する。
1. 左サイドバーの「トピック」をクリックする。
1. 遷移先のページで「トピックの作成」をクリックする。
1. 下記の様に設定して「トピックの作成」をクリックする。(記載されていない内容は特に設定しない。)

元記事を表示

AWS CloudShell がデフォルトだと時刻表示(JST)がなく見づらい

# 課題
AWS Cloudshell のプロンプトがデフォルトだと時刻表示(JST)がなく見づらい
“`shell-session
[cloudshell-user@ip-10-2-43-180 ~]$ ← このような表示
“`
# 実装の流れ
1. .bashrc の編集

# 手順1 .bashrc の編集

■バックアップ作成
“`shell-session
[cloudshell-user@ip-10-2-43-180 ~]$ ls -la .bashrc*
-rw-r–r– 1 cloudshell-user cloudshell-user 314 Jan 31 04:21 .bashrc
[cloudshell-user@ip-10-2-43-180 ~]$
[cloudshell-user@ip-10-2-43-180 ~]$ cp -ip .bashrc .bashrc.`date +%Y%m%d`
[cloudshell-user@ip-10-2-43-180 ~]$
[cloudshell-user@ip-10-2-43-180 ~]$ ls -la

元記事を表示

AWSアカウント同士でS3バケットを共有する

他AWSアカウントとS3バケットを共有する状況(=「S3を提供するAWSアカウント」と「S3を利用する(提供される)AWSアカウント」が居る状況)になったとする。
そのような場合、こんな感じで設定しておくと良いのではないか。

## S3バケットを提供する側

* お互いのAWSアカウントID(数字12桁のもの)を共有する
* S3バケットを用意する
* 【オプション】S3バケットに[S3アクセスポイント](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/access-points.html)を追加する
* 【オプション】断固拒否したいアクションをアクセスポイントのリソースポリシーにて設定しておく
* ※例:読み込み専用にしたいので「`s3:Delete*`」と「`s3:Put*`」を「`Deny`」する
* 【オプション】リクエスト時に[リクエスタが料金を支払う](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/R

元記事を表示

Amazon Linux 2022でのSquid構築

今回はAmazon Linux2022(以下AL2022)でOSSのWebProxyのSquidを構築します。Amazon Linux2では”yum install squid”で簡単にインストールできますが、AL2022ではリポジトリからSquidパッケージがなくなっているようで自力でコンパイルしないといけません。悲しい…ネットでは簡単にサクサクできます的な感じですがソースDL、コンパイルからやると結構つまずくポイントが多かったので備忘録もかねて記事にします。

Squidとは何ぞやという方はこちら →[Squidとは?](https://e-words.jp/w/Squid.html)

# 今回のゴール(やりたいこと)
AL2022をデプロイして
・Squid公式サイトからソースDLし、コンパイルして設定、構築する
・”systemctl squid start/stop”でサービス起動と停止ができるようにする
・Squid経由でデータDLできることを確認する

# 前提環境
以下の環境を前提として構築していきます。
・デプロイするEC2のOSはAL2022
・デプロイする

元記事を表示

エンジニアインターン9日目

今日はスクレイピングをするための環境構築を行った。awsのアカウントを作ったり、データベースに接続して、今までとはまた違ったことをやった。新しいことだらけで難しいが、いろんなとこに触れることができ、確実にためになっていると思う。新しいことをたくさん教えていただけて、自分が確実に成長できる環境だと思う。これからも勉強することの連続だが、新しいことを学ぶことに楽しさを覚え、エンジニアになるために毎日進歩していきたい。

元記事を表示

【AWS CLI】インスタンスに関連するコマンド

### 特定期間のインスタンス数の確認方法

サービスの実行中のタスク数を表示するには

1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。
1. ナビゲーションペインで、[Metrics](メトリクス)、[All metrics] (すべてのメトリクス) を選択します。
1. [Browse] (ブラウズ) タブで、[ECS] (ECS) 名前空間を選択します。
1. [ClusterName]、[ServiceName] を選択してから、実行中のタスクを表示するサービスに対応したメトリクス (CPUUtilization または MemoryUtilization) を選択します。
1. [グラフ化したメトリクス] タブで、[期間] を [1 分] に、[統計] を [サンプル数] に変更します。
1. グラフに表示された値は、サービスの RUNNING タスクの数を示しています。

上記の内容を、カレンダー部分にて1週間や特定の期間で絞ることで
変動するインスタンスのタスク数を確認す

元記事を表示

Fargateの見積もりについて

Fargateの見積もりを行う際によくわからない項目があったのでメモ。

https://calculator.aws/#/

この「タスクまたはポッド数」と「平均期間」であるが、それぞれ単位が秒〜月(日数)がありイマイチわからない、、、
![スクリーンショット 2023-01-31 11.08.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659784/d99dbc43-773c-ac2e-2209-341db6646c86.png)

考え方としてこのようになるらしい。
“`
■ 例1: 1ヶ月(30日換算)の間に2個のタスクが常時起動
タスクまたはポッドの数: 2、/月
平均期間: 30、日数
“`

“`
■ 例2: 10時間の間に4個のタスクが常時起動
タスクまたはポッドの数: 4、/月
平均期間: 10、時間
“`

“`
■ 例3: 20分の間に1個のタスクが毎日起動
タスクまたはポッドの数: 1、/日
平均期間: 20、分
“`

元記事を表示

Lambda関数からAmazon SQSにデータを送信する時ハマったこと

# はじめに
Lambda関数からAmazon SQSにデータを送信する時、ハマったことがあったので備忘録として残しておく。

# 前提条件
– Lambda関数からAmazon SQSにデータを送信する
– Lambda関数はVPC内のプライベートサブネットに設置している
– Lambda関数のIAMロールはAmazon SQSに対してフルアクセス権限を付与している
– Lambda関数はNode.jsで作成

# 起こったこと
上記前提条件のもとLambda関数を実行するとタイムアウトしてしまった。
そのときのソースと実行結果はこちら
AWS公式サンプルソースのほぼコピペ
https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/sqs-examples-send-receive-messages.html

“`js
var AWS = require(‘aws-sdk’);
AWS.config.update({region: ‘ap-northeast-1’});

var sqs = n

元記事を表示

SQLite3をAWSにインストールする方法

# 概要

ポートフォリオを作成中、SQLite header and source version mismatchと出たので、消しました。~~大丈夫かな~~そして、せっかくなので、新しいバージョンを入れようと思って今回実行しました。

# 環境
ec2(Amazon Linux2)
AWS cloud9
SQLite3 ver3.35.0

# 手順
1
“`ターミナル(cloud9).
ec2-user:~/environment $ rails db
(もしくはsqlite3 –version)
“`
を実行後、
“`ターミナル(cloud9).
ec2-user:~/environment $ SQLite header and source version mismatch
“`
が出た。

2
“`ターミナル(cloud9).
ec2-user:~/environment $ sudo rm /usr/local/lib/
“`
で元々入っている古いSQLite3を消します。

3 2の実行後
“`ターミナル(cloud9).
ec2-user:~/e

元記事を表示

OTHERカテゴリの最新記事