AWS関連のことを調べてみた2021年10月21日

AWS関連のことを調べてみた2021年10月21日

AWS CLIでS3からフォルダをコピーする方法

#### AWS EC2にS3からコピーする時のコマンド

“`
aws s3 cp –recursive
“`
``の部分はコピーしたS3URLを貼り付ける

元記事を表示

AWSのEC2(Ubuntu)にZabbix5.0を構築

【自分用メモ】

# 概要

AWSのEC2にZabbixサーバーを構築してみました。
OSはUbuntuとし、ZabbixとMySQLをインストールします。
AWSの無料枠でサーバーを立てることができます。
 ※メモリの枯渇で運用はできません。

**大まかな流れ**

1. AWSの設定。EC2からUbuntuを立ち上げてOSを用意します。
1. [Download and install Zabbix](https://www.zabbix.com/download)を参照し、terminalから立ち上げたOSにZabbix, MySQL, Apacheをインストールします。

**環境**

| | |
|:-:|:-:|
| Zabbix | 5.0 LTS |
| OS | Ubuntu 20.04 |
| Database | MySQL |
| Web Server | Apache |
| ホストOS | mac |

## 手順

### 1. AWSの設定

> 1. インスタンスを起動し、Ubuntu20.04を選択します。
![p

元記事を表示

RapidSSLなどで購入したSSL証明書をALBに設置する

#はじめに
会社で購入したSSL証明書をALBに設置する機会がありましたのでまとめます
[SSL証明書)の仕組み](https://milestone-of-se.nesuke.com/sv-advanced/digicert/digital-certification-summary/)についてはこちら

#ドメインを購入
お名前ドットコムなどで購入できます

#CSRを作成
ssh接続したEC2サーバー内で、以下のコマンドでCSRを作成します

“`terminal
# 秘密鍵の作成
$ openssl genrsa -out ca.key -des3 2048
……………………………………………………………….+++
……………………………..+++
e is 65537 (0x10001)
Enter pass phrase for server.key:(ca.keyのパスフレーズ)
Verifying – Enter pass phr

元記事を表示

s3 ウェブサイトに route53 でカスタムドメインを設定する

# はじめに

s3 で構築したウェブサイトに route53 でカスタムドメインを設定しようとしたときに少しハマったので、問題点と解決方法を簡単にまとめました。

# 結論

ドメイン名とバケット名を完全に一致させる。

## ハマったこと

route53 で s3 のウェブサイトエンとポイントに対して A レコードを設定しようとした際に、リソースが見つからないと表示されました。s3 の東京リージョンには、バケットは複数存在しているので原因がわからず困っていました。
![スクリーンショット 2021-10-20 15.40.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582722/0cc4efc1-7ffb-f765-af84-f3dca00f9968.png)

# 解決方法

困っていたところ下記の記事を見つけました。

[Configuring a static website using a custom domain registered with Route 53](http

元記事を表示

Pythonを使ってAmazon S3にファイルをアップロードする

# はじめに

AWS との連携を Python で試す。Python 用 AWS SDK である Boto3 を用いて Amazon S3 へのファイルアップロードという簡単な操作を試してみる。[AWS SDK for Python](https://aws.amazon.com/jp/sdk-for-python/) を参考にした。

# Boto3 とは

冒頭にも書いた通り、Python 用 AWS SDK で、Python アプリケーションやライブラリ、スクリプトを AWS の各種サービス(Amazon S3, Amazon EC2, Amazon DynamoDB など)と容易に統合ができる。
Boto3 には、**Client API(低レベル API)**と **Resource API(高レベル API)** という2つの異なるレベルの API がある。両者の違いは明確に理解できていないが、本記事では Client API で試行してみる。
その他にも、AWS リソースの変化を自動的にポーリングする waiter という機能や Amazon S3 や Amazon D

元記事を表示

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.

元記事を表示

OTHERカテゴリの最新記事