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

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

AWS CDKについて学ぶ→TypeScriptでTDDを意識して実践→CDKプロジェクトの環境別のデプロイを考えてみた

# はじめに

[AWS CDK](https://aws.amazon.com/jp/cdk/)は、AWS リソース(インフラやサーバーなど)をコードから構築できる開発キットで、このAWS CDKを使ってAWS リソースを構築したくて勉強しました。

個人的にAWS公式サイトは迷子になるので、勉強したことを残しておきたくて記事にしました。
(ただのやってみた系の記事です)

## やったこと
– AWS CDKについて理解する
– AWS CDKを使った開発方法を理解して、実践する
– テストコードも書く(TDDを意識)
– 環境(開発・検証など)が分かれている場合の実装方法を考えて実践する

※ 開発方法の理解が目的なので、記事内で出現するコードは簡単な内容で実装しています。
※ [CDK Pipelines](https://aws.amazon.com/jp/blogs/news/deploying-a-cdk-application-using-the-cdk-pipelines-modern-api/)を使った自動デプロイはやっていません。

## 前提知識

元記事を表示

【AWS】ECS+FARGATEでサービスのタスクを更新する

ECS+FARGATEの構成でWebアプリを作成しようと思っているので、ソースを変更したときにサービスの更新もしなければならないのでやってみる

現状はこんな感じ↓ フリー席予約アプリを作ろうと思っているので「Hello World フリー席予約アプリです」が表示されている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/cf4b1cbe-d94f-9cc6-1c79-53fc21d44208.png)

1. ソースの変更
codecommitでソースを管理しているので変更していきたいと思う
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/301ece5b-620e-894b-68e5-c48917cc0893.png)
今回は「こんにちは! フリー席予約アプリです」とした

2. タスク定義を変更する
![image.png](https://qiita-i

元記事を表示

【AWS】CodeBuildのエラー COMMAND_EXECUTION_ERROR

AWSでcodebuildをしたら`COMMAND_EXECUTION_ERROR: Error while executing command: docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG -f $DOCKERFILE .. Reason: exit status 1`なるエラーが出力され、うまくいかなかった。

https://qiita.com/tatsuakimitani/items/b4447635476c628f5dee

↑の方の記事を見てみたが、当てはまるものはなく・・・

そこで、ログを見てみると・・
“`
[eslint]
src/App.tsx
Syntax error: ‘>’ expected (23:4)
“`
そのまま書かれていました
下のコードの`>`が抜けていました
何かの拍子に削除してしまったようです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/51804e47-9364-e36e-7

元記事を表示

Terraformでセキュリティグループを設定してEC2にhttp接続する

# はじめに
Terraformの勉強を始めたので備忘録を兼ねて行ったことを投稿しようと思います。
これは[前回の投稿](https://qiita.com/kakita-yzrh/items/980f3209d587e7e349a6)の続きです。
前回の投稿ではTerraformでIAMを設定してEC2にセッションマネージャー経由で接続しました。
今回はhttp接続できるようにセキュリティグループをTerraformで設定します。
※EC2にはセッションマネージャー経由で接続できるので、予めnginxをインストールして起動しておきます

# Terraformでセキュリティグループの定義を行う
### http接続用のセキュリティグループを定義
http接続できるようにセキュリティグループを定義します。
“`terraform:securitygroup.tf
resource “aws_security_group” “test” {
name = “tf_test”

tags = {
Name = “tf_test”
}
}

resource “aws_

元記事を表示

【AWSコスト最適化設定】AWSを安く使おう!

## 前書き
AWSを何も考えずに学習していると、びっくりしてしまうような請求が
来てしまった。。

そんな経験がある方もいらっしゃるのでは。。

今回はSAAアソシエイト試験の学習も兼ねて安く!安心に!
利用する方法をまとめてみました!

## コスト最適化とは?
いわゆる安く使うために必要な設計が必要になります。
具体的には。。

・不必要なリソースを少しでも削減する
・ケースごとに最適なサービスを利用する
・マネージド型サービスを上手く使いコスト削減
・請求されるコストを把握すること
など。。

公式にもコスト最適化のための記事が出ています!

https://aws.amazon.com/jp/architecture/cost-optimization/?cards-all.sort-by=item.additionalFields.sortDate&cards-all.sort-order=desc&awsf.content-type=*all&awsf.methodology=*all

## AWSの課金の仕組み/課金を抑える
基本的にAWSは利用料に比例してコストが

元記事を表示

【AWS学習】AWSサービスとグローバル、リージョン、AZとの関係

## AZ(アベイラビリティーゾーン)
物理的なデータセンタ群。

地理的にも電力的にも独立している。
そのため、落雷や大雨などの浸水などの障害が発生しても他のAZに影響が出ないように配置されている

AZ間で冗長的に配置することで、可用性の高いシステムを構築することができる。
AWSが掲げる7つのベストプラクティスである「故障に備えた設計で障害を回避」にも該当する。

## リージョン
複数のAZが存在する地域

——-
リージョン > AZ
リージョンの中にAZが配置されているイメージ
例) 東京リージョン > 新宿AZ(本当はどこに配置されているか不明だけどイメージで。。。)

## サービスレベル
**注意**
1つのリージョン内のAZサービス間であれば、プライベートIPアドレスで接続できる。
リージョン間では、グローバルIPアドレスで接続しなければならない。

グローバルサービス > リージョンサービス > AZサービス

### グローバルサービス
どこのリージョンからでも共通のサービスとして利用できる

### リージョンサービス
リージョン毎に作成・管理される

元記事を表示

[AWS][Terraform]Iot ruleをLambdaのトリガーに設定する方法

# はじめに
– 最近業務でTerraformを使ってLambdaのトリガーにIot ruleを追加する機会があったので、設定方法を備忘録として残しておきます。
– バージョン
– Terraform:1.3.5
– aws provider:4.49.0

# やりたいこと
– TerraformでLambdaのトリガーにIot ruleを追加したい
※マネジメントコンソールから追加する場合は下記のようにLambda設定画面から「トリガーを追加」をクリックし、「AWS Iot」を選択し、「Rule」のARNを入力すればOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954734/51ff6f2e-19c3-a83a-dde3-3cad295ece74.png)

# ハマったこと
以下のIot ruleリソースを作成するTerraformコードを作成し、lambdaブロックのfunction_arnに対象Lambdaを記述したのですが、terraform appl

元記事を表示

Auto Scaling グループの起動テンプレートでの spot インスタンスの嵌り

起動テンプレートで、スポットインスタンスを選択して、デフォルトに設定、楽しみに待っていても、インスタンスが立ち上がってきません。

Auto Scaling グループの、アクティビティ履歴を確認すると、起動に失敗したという内容で、以下のような文言があります。

“`
Launching a new EC2 instance. Status Reason: The attribute ‘disableApiTermination’ cannot be used when launching a Spot instance. Launching EC2 instance failed.
“`

終了保護を外すことにより、ターゲットグループにインスタンスが立ち上がるようになりました。

インスタンスの詳細を確認してみると、ライフサイクルが、spot となっています。

これで、安くなっているのでしょうかね。

試しに、インスタンスを停止しようとしてみました。

“`
You can’t stop the Spot Instance ‘i-xxxx’ because it is asso

元記事を表示

AWS クラウドプラクティショナー受験記録

昨年、AWS認定クラウドプラクティショナーに合格しました。
![スクリーンショット 2023-01-10 22.38.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691862/706a44d8-9c54-d0dd-6189-fad16dc982cb.png)

かなり時間が経ってしまいましたが、勉強開始〜受験までを記録に残そうと思います。
筆者は未経験入社の3年目です。AWS実務経験も無し。

# 受験動機

・~~資格手当ほしい~~
・新卒研修時に触れてたこと(EC2構築、S3の使用くらい)
・実務で触れる機会が出来たとき用に最低限の知識がほしい
~~・AWS分かってたらちょっとカッコいい~~

’22/7月ごろに受験を決め、業務や予定との兼ね合いで受験日を9/3に決めて申し込みました。

# 使用テキスト

[AWS認定資格 クラウドプラクティショナーの教科書: 合格へ導く虎の巻 CloudTech制作委員会シリーズ Kindle版](https://www.amazon.co.jp/g

元記事を表示

AWS DataSyncとAzure File Sync 比較 ~AWS DataSync動作確認編~

AWS DataSync(以下、DataSync)と Azure File Sync(以下、File Sync)シリーズの4本目の記事です。
1本目は記事はこちら
[AWS DataSyncとAzure File Sync 比較 ~共通点と相違点~](https://qiita.com/hidekko/items/9610ef551999f6ea1f37)
2本目は記事はこちら
[AWS DataSyncとAzure File Sync 比較 ~前提条件定義編~](https://qiita.com/hidekko/items/45eab57f6c6088eb1607)
3本目は記事はこちら
[AWS DataSyncとAzure File Sync 比較 ~AWS DataSync構築事前準備編~](https://qiita.com/hidekko/items/8e7a3fb6494462926597)
4本目の記事はこちら
[AWS DataSyncとAzure File Sync 比較 ~AWS DataSync構築編~](https://qiita.com/hidekko/i

元記事を表示

AWS cloud9で表示数を増やす方法

ログなど出力の量が多いものを表示させたい場合に、デフォルトの表示数が少ないため
全ての出力が表示されない場合があります。
cloud9のターミナルに表示できる数を増やす設定ができます。

右上歯車>Usersetting>Scrollback(デフォルト1000なので数を増やします)

元記事を表示

AWS LambdaでSSM RunCommandを実行する(AWS SDK for JavaScript v3)

# 概要
LambdaからSSMのRunCommandを実行する処理の作成方法について記述します。言語は`JavaScript`でSDKのv3(バージョン3)で書いてあります。

v3では、サービスのインスタンスを作成して、非同期で`send`メソッドを呼び出すというのが全サービス共通の書き方になります。`send`メソッドはPromise型を返します。何のアクションを行うかは`send`メソッドの引数の型によって判断されます。

## 公式ドキュメント

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/

# サンプルプログラム

## 処理の流れ

SSMClient生成 → SendCommandCommand生成 → send実行 → ListCommandsCommand生成 → send実行 (RunCommandが終了するまで繰り返し) → send実行 → send実行 → …

注意点としては、RunCommandを実行した後その処理がサーバーで正常終了したのか異常終了したのかすぐにわからない点です。R

元記事を表示

クラウドプラクティショナーの備忘録

# はじめに
AWSのクラウドプラクティショナー取得のために勉強したことをまとめます。

https://aws.amazon.com/jp/certification/certified-cloud-practitioner/

こちらのサイトに試験ガイドや模擬問題が提供されています。

# 試験ガイドについて
4つの分野から問題が出されるそうなので、試験ガイドの中にある出題範囲のリストをベースに何となく大事そうだと思ったポイントを記載しておきます。
## 第1分野 クラウドのコンセプト
* 総所有コスト(TCO)を削減するために「資本的支出(CapEx)」を「運用維持費(OpEx)」に変えていくことができる。モノを持たないことで、変化に強い財務体質が作れる。
* Well-Architectedが5本柱からサステナビリティが追加されて6本柱になった件

## 第2分野 セキュリティとコンプライアンス
* 責任共有モデルはサービスによって異なる
* EC2はOS以上がユーザー責任
* RDSはデータとプログラムがユーザー責任
* lambdaはプログラムだけが

元記事を表示

AWS DataSyncとAzure File Sync 比較 ~AWS DataSync構築編~

AWS DataSync(以下、DataSync)と Azure File Sync(以下、File Sync)シリーズの4本目の記事です。
1本目は記事はこちら
[AWS DataSyncとAzure File Sync 比較 ~共通点と相違点~](https://qiita.com/hidekko/items/9610ef551999f6ea1f37)
2本目は記事はこちら
[AWS DataSyncとAzure File Sync 比較 ~前提条件定義編~](https://qiita.com/hidekko/items/45eab57f6c6088eb1607)
3本目は記事はこちら
[AWS DataSyncとAzure File Sync 比較 ~AWS DataSync構築事前準備編~](https://qiita.com/hidekko/items/8e7a3fb6494462926597)

本記事からいよいよ構築を開始します。

# 構成の確認
全体の構成はこのようになります。
![image.png](https://qiita-image-store.s3.ap

元記事を表示

初心者がGitの使い方を学べて挫折を防ぐサービス”GIT USED TO”を自分のポートフォリオとして作ったので紹介させてください【Rails api/react/typescript/Docker/CircleCI/aws Fargate/cloudfront】

# はじめに
この記事を開いてくださりありがとうございます。
今回プログラミング初学者である自分のポートフォリオが完成したので紹介させていただこうと思い、今回投稿しました。
今回の記事はreadmeに記載した内容になりますが、お読みいただけたら幸いです!
まだまだ修正すべき点などが見つかるかと思いますが、よければぜひGIT USED TOを使ってみてください!

# GIT USED TO
![twitter_header_photo_2](https://user-images.githubusercontent.com/98959840/211242239-d0850567-f66e-4b3c-b231-0f0d8fc0be2f.png)
### GITトレーニングサービス
“GIT USED TO”とは、プログラミング超初心者を対象に現在エンジニアとは切っても切り離せない関係の分散型バージョン管理システム”git”がコマンドを通してどのような動きをしているのかを学び、gitへの恐怖心を無くして実務で使用できるようになるためにトレーニングをサポートするサービスです。
元々準備さ

元記事を表示

【iOS】【AWS】はじめての個人アプリ(iOS+AWS)で開発からリリースまでやった話(苦戦あり)

## 概要
 2023年1月1日に、はじめて個人アプリをリリースしたので
 開発からリリースまで苦労だらけだったので
 同じようなところに苦戦するような人がいたり、参考になれば嬉しいです。
 今回は全体感の話なので細かいところは別記事で追記していこうと思います。

## なぜ個人アプリを作ろうと思ったのか
 コロナで1週間何もせず寝込んでいた時に
 よく使っていたアプリ自体の更新が止まっていて不便な思いをしたので
 自分で新しいアプリを作ろうと思ったのがキッカケ

## どういうアプリを作りたかったのか
 FF14のまとめ記事と動画などを検索せずに見れるアプリ
 最新情報が探しづらいし情報が古かったりするから最新情報だけ欲しいアプリを目指す。
 ![アプリレビュー説明資料.001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215997/7cf71fe5-538b-1523-4a20-bf5b55a9ea05.png)

## バックエンド AWS開発編 (試しながら1〜2週間)
 バックエンドは

元記事を表示

AWS Transfer FamilyでIPアドレス制限付きのSFTPサーバーを立てる

### はじめに
AWS Transfer Family は、AWS で提供されている SFTP, FTPS, FTP のプロトコルが使える安全なファイル転送のサービスである。
今回はそのTransfer Familyを使ってVPCにSFTPサーバーを立て、セキュリティーグループを使って特定のIPアドレスしかアクセスできないようにする。
そして、S3に接続することでSFTPサーバーを経由し、S3バケットにオブジェクトが送信される機構を構築する。

# 前提
* IAMロール、VPC、S3バケット、セキュリティーグループ、秘密鍵、公開鍵は既に作成済みである
* OSはMac(Windowsでももちろん可能だが、今回はMacでの実装を紹介している)

# 目次
**1. SFTPサーバーを作成する**

**2. ユーザーを追加する**

**3. ファイルを送信してみる**

## 1. SFTPサーバーを作成する

### プロトコルを選択する

![スクリーンショット 2022-12-26 16.01.54.png](https://qiita-image-store.s3

元記事を表示

Glueパーティションテーブルの定義変更

## はじめに
パーティションを含むデータをGlueでテーブル化した際、テーブル全体の定義変更が各パーティションへ反映されないという事象が起きた為、解決方法を含めて記事化します。

## 前提
処理のおおまかな全体像は下記の通りです。
・S3に月次でcsvファイルを追加し、Athenaを通してそれらを分析
・Glue crawlerによりスキーマ,パーティション等をGlue Data Catalogへ登録

## 課題
元csvに「値として含まれる区切り文字」により、列のずれが発生
⇒この事象は以下のように、__①囲み文字の設定__ および __②テーブル定義の書き換え__ で解消すると考えられますが、__以下の対応でずれが解消しない__ 点が課題でした。

以下はデータおよび事象のイメージです。

①csvに囲み文字””を設定
`”日付”,”番号”,”名称”`
`”2023/01/01″,”001″,”aaa”`
`”2023/01/03″,”002″,”bbb”`
`”2023/01/04″,”003″,”cc,c”`
`”2023/01/06″,”004″,”ddd”`
※便

元記事を表示

AWS Cloud Practitioner Essentials 学習メモ

## クラウドコンピューティングとは
> 従量課金制による、インターネット経由の IT リソースとアプリケーションのオンデマンド配信

## オンプレミスデプロイの別の呼び方
> プライベートクラウドデプロイ

## クラウドコンピューティングの規模はコスト削減にどのように役立ちますか?
> 多くのユーザーによるクラウド使用量が集約されるため、従量課金制の料金を低く抑えることができる。

## Amazon Elastic Compute Cloud (Amazon EC2)を使用するメリット
Amazon EC2 インスタンスでは、仮想サーバーを使用して AWS クラウドでアプリケーションを実行できます。

> – Amazon EC2 インスタンスは数分以内にプロビジョニング[^1]、作成できます。
> – ワークロード[^2]の実行が終了したら、使用を停止できます。
> – 料金は、インスタンスの実行時に使用したコンピューティング時間に対してのみ支払います。停止時や終了時に料金は発生しません。
> – 必要なサーバー容量に対してのみ支払うことで、コストを節約できます。

[^1]

元記事を表示

AWS Cloud Practitionerを受験するのでやること・やったことまとめ

## AWS Cloud Practitionerとは?
`AWS Certified Cloud Practitioner は、AWS クラウドの概念、サービス、および用語の基礎的な理解を提供します。過去に IT やクラウドの経験がない非技術職の方や、オンプレミスでの IT 経験があり、AWS クラウドへの基本的な知識が必要な方にとって、良いスタート地点となる資格です。この認定は、ロールベースの AWS 認定に挑戦する候補者に自信を与えてくれます。`
参考:https://aws.amazon.com/jp/certification/certified-cloud-practitioner/

AWSの基礎を固めるための試験です。初歩的な知識も多く、料金形態や各サービスについての問題が出題されます。

## やること
1.AWS SkillBuilder
↓のAWS 公式が出しているSkillBuilderで勉強しました
動画形式なので文字を読みたくない人におすすめ
https://d1.awsstatic.com/ja_JP/training-and-certification/

元記事を表示

OTHERカテゴリの最新記事