- 1. RDSのMySQLでクエリキャッシュを有効化する
- 2. AWS AppSync の Cognito UserPools 認証を行ったユーザーで GraphQL API を実行する
- 3. AWS リファレンスメモ
- 4. [ECS] ecs-cli基本
- 5. APIGatewayとStepFunctionを使い、EC2の起動から停止時間までを自在に操る
- 6. S3へのレプリケーションをトリガーにLambdaのコード更新・新規バージョン発行を実行する
- 7. EC2のSSH接続がConnection refusedになったときに疑うこと
- 8. Amazon Cognito をバックエンドから Python で利用する
- 9. dynamoDBのupdate時、配列やオブジェクトの値に対して条件をつけて書き込み(ConditionExpression)したい
- 10. Migrate AWS EC2 instance to Oracle Cloud
- 11. AWS Configのログ配信先S3バケットをKMS暗号化する
- 12. ビューファイル作成後にサーバーが起動できなくなった
- 13. Terraformはじめてみた
- 14. AWS LightsailでKubernetesを使ってみた
- 15. [AWS] SAMのtemplate.yamlをVSCode拡張機能で快適に記述する
- 16. Amazon WorkDocs とは
- 17. WSL2からAWS LambdaにDocker containerをデプロイしてAPIとして動かすまで
- 18. 簡単にSSHでAWSサーバーに接続する方法
- 19. LocalStackを使ってローカル環境でS3を立ち上げ、Lambdaでファイルをアップロードしてみた
- 20. 【初心者向け】 企業で活躍できるエンジニアになるためのロードマップ② デプロイ編
RDSのMySQLでクエリキャッシュを有効化する
AWS RDSのMySQLではクエリキャッシュがデフォルトでオフになっています。
当初はてっきりオンなのかと思っていましたがオフのようです。しばらく前からクエリキャッシュ自体をやめたほうが良いのではという記事を見かけていましたが、RDSでは実際にオフになっているようです。
https://yakst.com/ja/posts/4612
ただ経験上、一般公開されているWebサーバであればクエリキャッシュはかなり効果的だと思っています。
特にselectの比率が高い場合(90%以上)には有用かと思います。まずクエリキャッシュの状況確認のため、各種パラメタの調整にも有用なのでphpMyAdminで接続して確認しておきます。
https://qiita.com/yousan/items/649e554c1099c1e06ae5
上記記事を参考にphpMyAdminに接続し、「状態>アドバイザ」を進みます。
クエリキャッシュがオフであることが確認できました。
![Screen Shot 2021-10-20 at 10.04.21.png](https://qiita-ima
AWS AppSync の Cognito UserPools 認証を行ったユーザーで GraphQL API を実行する
# はじめに
GraphQL API を実行する場合、API_KEY を使う場合は API Key 認証として具体的なリクエスト方法が示されている。
“`bash
$ $ curl -XPOST -H “Content-Type:application/graphql” -H “x-api-key:ABC123” -d ‘{ “query”: “query { movies { id } }” }’ https://YOURAPPSYNCENDPOINT/graphql
“`https://docs.aws.amazon.com/ja_jp/appsync/latest/devguide/security-authz.html#api-key-authorization
一方、Cognito UserPools で認証を行っている場合は、どのような情報が必要かの具体例が少なかったので、本記事で説明する。
# 回答
手順の概要は以下の通り。
– ログイン可能な Cognito UserPools を作成する (この用途であれば Cognito フェデレーティットアイ
AWS リファレンスメモ
# 背景・目的
いつも、探せなくなるのでメモします。# 一覧
## 権限など
– [サービス認証リファレンス](https://docs.aws.amazon.com/ja_jp/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)# 最後に
随時更新します。
[ECS] ecs-cli基本
## インストール
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ECS_CLI_installation.html
“`bash
sudo curl -Lo /usr/local/bin/ecs-cli https://amazon-ecs-cli.s3.amazonaws.com/ecs-cli-darwin-amd64-latest
sudo chmod +x /usr/local/bin/ecs-cli
“`“`
ecs-cli –version
ecs-cli version 1.21.0 (bb0b8f0)
“`## 基礎
### cluster-config設定
“`bash
ecs-cli configure –cluster ec2-tutorial –default-launch-type EC2 –config-name ec2-tutorial –region ap-northeast-1
“``~/.ecs/config`に保存される
APIGatewayとStepFunctionを使い、EC2の起動から停止時間までを自在に操る
#はじめに
「EC2を起動し、特定の時間経過後、EC2を停止する」仕組みをAPIGatewayとStepFunctionを使い、実現します。#完成図
`https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/start-limit?instance_id=i-hogehoge&time=10`をリクエストすると、インスタンスIDが`i-hogehoge`のEC2を起動し、`10`秒後に停止する挙動になります。**挙動の詳細について説明しますと、**
起動するインスタンス`instance_id`で指定し、と起動してから停止するまでの時間を`time`で指定しています。APIGatewayからこれらの2つの値をStepFunctionに渡し、StepFunction内で、Lambdaに`instance_id`、とWaitに`time`を渡して実行する挙動になります。
S3へのレプリケーションをトリガーにLambdaのコード更新・新規バージョン発行を実行する## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/nbe12fc8d8df7
**※ Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です**
## 補足
ソースコード全体は以下です。https://github.com/yuta-katayama-23/lambda-update-function-code
EC2のSSH接続がConnection refusedになったときに疑うこと
あるネットワーク環境を用いた場合に
WindowsPCのPowerShellから、秘密鍵(.pem)とElasticIPでのシンプルなSSH接続ができなくて下記のエラーが出ました。“`
ssh: connect to host ip アドレス port 22: Connection refused
“`EC2はパブリックサブネットにあり、他のネットワークからの接続はできている状態です。
思わぬところに原因があったので書いておきます、、
# Connection refusedで調べたときに疑ったこと
– 秘密鍵の指定が正しいか確認
– セキュリティグループが正しいか確認
– PCのファイヤーウォールを切ってみる
– EC2が起動しているか確認
すべて確認しましたが問題は見当たりませんでした。
# たどりついた原因
– セキュリティグループでインバウンド(port22)に指定しているIPでSSH接続がされてない– モバイルWiFiなどではブラウザで確認できるIPアドレスとSSH接続に使用されるIPアドレスが異なる場合があるみたいです
#
Amazon Cognito をバックエンドから Python で利用する
# はじめに
Amazon Cognito はサービスのユーザー情報・認証を管理するサービスである。 そして、その一般的な利用シナリオとしては以下のページで説明されている。
https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/cognito-scenarios.html
しかし、ここで説明されている6つのシナリオは全てクライアント (App) から直接 Cognito を呼び出している。 ユーザー情報・認証の管理を行うサービスというのであれば、バックエンドサービスから認証部分だけを分離するという設計をして、以下の図右のようにバックエンドから直接 Cognito を使いたいという要望もあるはずである。 ここではこれを「バックエンドからCognitoを利用する」と呼ぶことにする。
![スライド1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502582/d91b8d5a-525c-59e6-86a2-bf597518310
dynamoDBのupdate時、配列やオブジェクトの値に対して条件をつけて書き込み(ConditionExpression)したい
dynamoDBの条件付き書き込みで、オブジェクト内の特定要素に対して制約を付ける方法をメモする
#dynamoDBのConditionExpressionについて
dynamoDBのあるレコードを更新する場合に下記のように条件をつけることができる
– レコードに特定キーが存在する場合のみput
– レコードの特定キー値がある値の場合のみput例:productTable
“`js
{
name:”apple”, // hash key
price: 300,
isBought: false
}
“`実行コード(lambda)
“`js
const AWS = require(‘aws-sdk’);
const dynamoDB = new AWS.DynamoDB.DocumentClient();exports.handler = async(event, context) => {
const params = {
TableName: “productTable”,
Key:{
Migrate AWS EC2 instance to Oracle Cloud
__Introduction__
If you are considering shift your resources from one cloud to another, then instance migration will be an important task for you. This is a step-by-step guide on how to migrate an EC2 instance manually from AWS to OCI(Oracle Cloud Infrastructure). Hope it helps a little bit.
__Preparation__
An EC2 instance that is in “stopped” state. (I use Red Hat Linux 8 for test.)
A S3 bucket for saving exported image.
Attach ACL to S3 bucket. (Check Step-1 for detail.)
Install & setup rclo
AWS Configのログ配信先S3バケットをKMS暗号化する
## はじめに
2021年2月からAWS Config で使用される S3 バケットでの KMS での暗号化がサポートされたとのことです。
S3バケット側でKMSでの暗号化設定をしていても、オブジェクト単位ではデフォルトでS3 マネージド暗号化キー (SSE-S3)で暗号化されています。
こちらの記載通りに設定することでKMS暗号化できたので、手順を残します。
https://aws.amazon.com/about-aws/whats-new/2021/02/support-for-kms-encryption-on-s3-buckets-used-by-aws-config/?nc1=h_ls## 手順
### KMSキーのキーポリシーを設定する
Configからアクセスできるよう、S3バケット暗号化に使用するKMSキーのキーポリシーをKMSの管理画面から設定します。
通常のIAMロールを用いた場合か「サービスにリンクされたロール」の場合に応じて下記に例がありますので、適切な方を選んで設定してください。https://docs.aws.amazon.com/co
ビューファイル作成後にサーバーが起動できなくなった
Amazon Linuxでビューファイルを作成した後にターミナルからサーバーを起動できなくなりました。
ec2-user:~/environment/myapp $ php artisan serve –port = 8080
ec2-user:~/environment/myapp $ No arguments expected for “serve” command, got “8080”.なお、コントローラ・ビューファイルは下記のように作成しました。
BookController.php
Terraformはじめてみた
# Terraformとは
Terraformを使うとAWSやGCPなどのクラウド上のリソースをコードで管理することができる。”Infrastructure as a Code”を実現するツール。
Webコンソールでポチポチ作成しなくても、コードを書いて叩けば一発でインフラを構築することができる。
Terraformのコード自体バージョン管理することができる。それはつまり**インフラをバージョン管理することができる**ということを意味する。
あとはコードを読むだけでインフラの構成を確認することができる。# この記事について
Terraformを初めて使ってみたので、そのメモです。
※筆者はAWS・Terraformに長けている訳ではなく、あくまでもメモなので、間違っているところがありましたらご指摘くださいTerraformを用いてAWSを使った以下のようなシステムを構成します。
![名称未設定.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385478/11ed9b14-882c
AWS LightsailでKubernetesを使ってみた
# 始めに
低コストで使い勝手の良いLightsailですが、設定の簡単さゆえKubernetesの構造にはそぐわない所が幾つかありました。今の記事ではLightsailでKubernetesクラスターを構成する時に躓いた所を整理していきます。# 基本設定
## インスタンスの選択
### おすすめ
Master Node: 20 USD/月 (4GB メモリ, 2コアプロセッサ, 80GB SSD ディスク)
Worker Node: 10 USD/月 (2GB メモリ, 1コアプロセッサ, 60GB SSD ディスク)公式的にマスターノードは二つ以上のコアを使うように言われているため、20 USD/月のVMをお勧めします。ワーカーノードは理論上1GBのメモリでも行けますが、実際にPODを回すにはメモリが足りないですので月10 USDのVMを使うべきかと思います。
## Network
### CalicoのIPv4ファイアウォール
ファイアウォールのルール設定に制限があります。従ってCNIでCalicoを使う場合、TCPポート以外にIPIPプロトコルを許可するために**
[AWS] SAMのtemplate.yamlをVSCode拡張機能で快適に記述する
SAMのtemplate.yamlを記述する際に、公式ドキュメントを見ながら書くことが多かったのですが、あまりに非効率だったので環境を整えようと思いました。
VSCodeを利用しているので、VSCode前提のお話です。__要約__
CloudFormationの拡張機能を __使用&少しカスタマイズ__ してSAMテンプレートをサクサク書こう# SAMはCloudFormationの拡張
SAMテンプレートはCloudFormationテンプレートの拡張です。
参考:[SAM公式ドキュメント](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-sam-reference.html)まず、CloudFormationで利用できる文法はSAMテンプレートでも利用することができます。
CloudFormationの拡張機能をVSCodeに導入すれば、CloudFormationで記載できる部分は導入できることになります。![image.
Amazon WorkDocs とは
## 勉強前イメージ
docsだから文章の共有的なやつ?
## 調査
### Amazon WorkDocs とは
フルマネージド型のファイルコラボレーション用のサービスです。
コンテンツの作成や編集が簡単に行うことができ、
マルチデバイスからのアクセスに対応しており、AWS内で一元管理されているのでどこからでもアクセスが可能です。
GoogleDriveやDropboxと似たようなサービスです。
[Amazon workspace](https://qiita.com/miyuki_samitani/items/23d38070bae718f5c72b) を使用する人には追加料金無しで
workdocsへのアクセス権限が付与され、1人当たり50GBのストレージが含まれます。### メリット
– コスト削減
アクティブなユーザアカウントとストレージの使用量に対する従量課金で、
1ユーザあたり5ドルで、各ユーザに1TBのストレージが提供されます。– セキュアなファイル共有
すべてのファイルやコメントが暗号化されるので、
もしDBを見られたとしても直接中身が流出する可
WSL2からAWS LambdaにDocker containerをデプロイしてAPIとして動かすまで
# はじめに
現在開発中の機械学習を用いた簡単なサービスを作るにあたって、メインPCで処理させるのがどうしてもいやだったのでAWS Lambdaを使用しました。
現在のLambdaはDockerのimageサイズがが10Gまで対応してるので結構なんでも動かせます。
割り当てるメモリサイズを増やせばそこそこ性能も出るため、普通のモデルならGPUもいらないです。今回は自身の忘備録もかねてwsl2からDocker containerをデプロイしてテストするまでを紹介します。
あまり細かい解説はしていないため、内容は手順書に近いです。# 想定する読者
+ 細かいところはどうでもいいのでLambdaでとりあえず何か動かしたい人
+ AWSよくわかってない人(僕もよくわかってないです、間違ってるところあったら教えてください)# なぜWSL2でやるのか
+ 僕がネイティブに色々入れるのが嫌いだから
+ 環境が統一されていることが多そう(=誰でもそのまま動かせる)# 実行環境
os:windows11 pro
wsl2:Ubuntu 18.04 LTS# 本編
### 準備
まず
簡単にSSHでAWSサーバーに接続する方法
#SSH を使用して接続するには
macはターミナル、winの場合はTera Termを使います。
まずはpemファイルの権限の変更が必要です。
600が推奨されてます。フル権限だとエラーが出ます。“`terminal:ターミナル
chmod 600 /path/to/my-key-pair.pem
“`
chmodコマンドで権限を変更します。その後、下記のsshコマンドでアクセス出来ます。
“`terminal:ターミナル
ssh bitnami@xxx.xxx.xxx.xxx -i /path/to/my-key-pair.pem
“`
簡単に説明すると、
ssh ユーザ@サーバIP -i pemファイルのパス
LocalStackを使ってローカル環境でS3を立ち上げ、Lambdaでファイルをアップロードしてみた
# この記事について
AWSのサービスをローカルで実行できるLocalStackについて紹介したいと思います。今回、AWS CLIの練習も兼ねてLocalStackを使用し、ローカルでAWS LambdaとS3を立ち上げ、Lambda関数を使用し、S3に日時.txtファイルをアップロードしてみました。
# 記事の対象者
– LocalStackに興味のある方
– AWS・AWS CLIに触れてみたい方# LocalStackとは
開発環境において無料で**AWSのアカウント登録なし**でAWSのサービスを擬似的に使用できるモックフレームワークでpipやdockerを用いて簡単に環境構築が可能。
ローカルにAWS環境を作ってくれて、料金などを気にすることなくテストや動作確認が可能である。https://localstack.cloud/
LocalStackは無料版と有料版がある。[^abe] 有料版は無料版に加え、高度なサービスをサポート。以下にLocalStackのサービスを示す。[^abc](2021年10月時点)
| 無料 | 有料
【初心者向け】 企業で活躍できるエンジニアになるためのロードマップ② デプロイ編
##目的
**未経験の人、プログラミング初心者 が
「企業で活躍できるエンジニア」 「どこでも成長できるエンジニア」**↓に移動しました!
https://sg-report.com/loadmap2/