- 1. 【Python】importが必要なPythonをAWS Lambda へ移行してみた 事前準備編
- 2. RcloneでAWS S3からOCIオブジェクト・ストレージにデータをコピー
- 3. AWS lambda@Edge単体テスト(イベントテンプレート)
- 4. SystemsManagerChangeCalendarでssmAutomationランブックの実行を制御する
- 5. AWSサーバレスでTerraformビルド
- 6. 【AWS】AWSでデプロイ後にhttps化する方法
- 7. Red Hat OpenShift on IBM CloudのクラスターをAmazon EKS ConnectorでEKSコンソールに接続する
- 8. EC2でFX自動売買サーバーを構築する
- 9. SAA勉強中にわからなかった用語2
- 10. 【AWS SAM】AuthorizationError: ポリシーが効かない場合に確認したい罠
- 11. CloudFrontでS3の署名付きURLを発行する
- 12. 【AWS】CloudWatch AgentをWindows10(オンプレミス)へインストール & 起動!!【ログ解析】
- 13. ドメインとネームサーバ(Route53/お名前.com比較)
- 14. Amazon Connect、Get Customer Inputブロックの謎設定 Enter an ARN の設定方法がわかった!
- 15. SFTP専用ユーザーを作成し、特定directoryのみ更新できるよう制限する
- 16. Terraform環境構築(Windows編)
- 17. 【Ruby】S3にCSVデータを出力する
- 18. ChaliceのCDパイプラインをシンプルに構築する
- 19. Cloudformation + Lambdaで環境変数にパラメータストア-SecureString-の値を設定する
- 20. EBS ディスク容量追加
【Python】importが必要なPythonをAWS Lambda へ移行してみた 事前準備編
#はじめに
昨日、macOSのcronで自動実行するためにmacOSの省電力モードをOFFにすると1ヶ月で1,200円程度電気代がかかるのでは!?という記事を書きました(あくまで試算です)https://qiita.com/hirockio2206/items/2ce4fcac798a21ad40b4
やはり、オンプレ運用はよくないと。これからはクラウドっしょ!
ただ、AWS Lambdaってよくわからん。
って思っている方いますね?(私)ってことで本日はAWS Lambda へPython実行環境を移行にチャレンジしてみました。
少し長くなるので、事前準備編とAWS編で分けて投稿します。#環境
・既にAWSのアカウントを持っている(お持ちでない方でもすぐ発行できますよ。)
・Python3.9
・macOS Catalina10.15.7
・定期実行したいpythonがある#事前解説
今回はサンプルとして、ccxtという複数の仮想通貨取引所のAPI操作が集約されたライブラリをAWS Lambdaで実行したいと思います。AWS Lambdaにはデフォルトではccx
RcloneでAWS S3からOCIオブジェクト・ストレージにデータをコピー
# 初めに
AWS S3またはAzure Blobから、Orale Cloudのオブジェクト・ストレージにデータをコピーできますか?答えはできます。このタスクを完了するには多くの方法がありますが、Rcloneを利用すれば、簡単に実現できます。
[Rclone](https://rclone.org/) は、クラウド・ストレージ上のファイルを管理するコマンドライン・プログラムです。Oracle Cloud Object Storage、AWS S3、Azure Blob、Google Cloud Storageなど、多くのクラウドベンダーがサポートされています。異なるクラウドストレージ間でデータを簡単に転送できます。
では、AWS S3からOracle Cloudのオブジェクト・ストレージにデータをコピーする方法をご紹介します。
__ステップ__
[1. Rcloneのインストール](#1-rcloneのインストール)
[2. OCI接続用情報の収集 (コピー先)](#2-o
AWS lambda@Edge単体テスト(イベントテンプレート)
AWS lambdaを書く時、いちいちデプロイしてテストしてました。
実際どういうリクエストが来るかはある程度イベントテンプレートでまかなえるようです。
lambda@edgeを書いていて、デプロイなどがとても面倒でしたが、これでかなり進みました。以下の画像は`cloudfront-normalize-querystring-to-improve-cache-hit`というテンプレートです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213689/00c80761-4629-87d1-e7fb-5760718bea81.png)
単純にCloudfrontにGetリクエストが来たような感じですかね
“`
curl https://[CFドメイン]/test?size=LARGE&color=RED
“`実際に受け取るeventと比較してキー名などは一致してるみたいなので、使えそう.
もしCookieをつけるなら以下のようなものを`headers`ブロックに追
SystemsManagerChangeCalendarでssmAutomationランブックの実行を制御する
# SystemsManagerChangeCalendarとは
SystemsManagerの機能の一つで、カレンダー内の特定の日付・時間に「イベント」を挿入することで、そのイベント間のアクションの実行を制御を行える機能です。例えば、「毎日定時にSystems Manager Automation ランブックからEC2インスタンスを停止させているが、この日だけは停止させたくない」といった場合に、対象日にイベントを設定しておくことでインスタンスを停止させないということができます。
更にEventBridgeとも連携できるため、柔軟にイベントの管理が行えます。
以下公式ドキュメントです。
> AWS Systems Manager の一機能である Change Calendar では、指定したアクション (Systems Manager Automation ランブックなど) が AWS アカウント で実行できるまたはできない日付と時刻の範囲を設定できます。Change Calendar では、このような範囲はイベントと呼ばれます。Change Calendar エントリを作成す
AWSサーバレスでTerraformビルド
Terraformビルド順番
①IAMアカウント作成
➁CLIユーザー作成
③Terraformインストール
④DynamoDBとS3作成
⑤Terraform展開①IAMアカウントを作成する
AWSへログインしてIAM serviceにアクセスする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387054/8dcbd07c-e57f-9e7f-04b0-b8cf3bf3b49e.png)➁CLIユーザー作成
アクセスタイプはProgramatic accessをチェックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387054/f6dbdca0-9ca2-9e4c-34b7-fbf393e8c812.png)CLIユーザー作成後権限グループを作成してアクセス権限へ付与する。
![image.png](https://qiita-image-store.s3.ap-n
【AWS】AWSでデプロイ後にhttps化する方法
#対象者
* AWSでデプロイをおこなった方
* https化したい方#目的
* https化してWebサイトのセキュリティをより強固にする
#実際の手順と実例
###1. httpとhttpsの違い2つの違いは
**通信内容が暗号化されているかどうか**です。
httpのままだとSSLが未導入であるということになります。#####SSLとは
* インターネット上の通信を暗号化する技術のことhttps://ds-b.jp/media/what-is-https/
###2.前提
* AWSでデプロイしていること
* nginxがインストールされていること
* EC2でAmazon Linux **2**で環境構築していること[Amazon Linuxのもつ特徴7つ|AWSとの関係も解説](https://www.fenet.jp/infla/column/technology/amazon-linux%E3%81%A8%E3%81%AF%EF%BC%9Famazon-linux%E3%81%AE%E3%82%82%E3%81%A4%E7%89%B9
Red Hat OpenShift on IBM CloudのクラスターをAmazon EKS ConnectorでEKSコンソールに接続する
# Amazon EKS Connector
Amazon EKS Connectorは、EKS外の既存のKubernetesクラスターをAmazon EKSコンソールで表示することができる機能です。操作ができるわけではありません。これで何がうれしいかは難しいところですが、複数のKubernetesクラスターを一見一元管理できているように見えるので、マルチクラウド環境でクラスタが乱立した際に、マネージメント向けの印象は良くなるかもしれません。
# 目的
今回はIBM CloudのRed Hat OpenShift on IBM Cloud(ROKS)をEKS ConnectorでEKSコンソールに表示してみます。
なお、2021年9月時点のEKS ConnectorはまだPreviewリリースのため、GA後の仕様は変更される可能性があります。
# 手順
公式ガイドはこちらです。
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/eks-connector.html
## IAMポリシーの追加(AWS)
下記
EC2でFX自動売買サーバーを構築する
[FX自動売買をするため、Amazon Lightsailを利用した](https://qiita.com/nkmk1215/items/88f0bb6aeaf2185bedc7)が課題があり、
EC2で改めて環境構築することにした—
# AMI選定
– 「[いろいろなシチュエーションでのWindows AMIの選び方について整理してみた](https://dev.classmethod.jp/articles/how-to-choose-windows-ami/)」を参考にCloudShellにて検索
– 今回は「Windows_Server-2022-Japanese-Full-Base-2021.08.25」を利用する“`
aws ec2 describe-images \
–region ap-northeast-1 \
–owners amazon \
–filters “Name=platform,Values=windows” \
“Name=name,Values=Windows_Server-*-Japanes
SAA勉強中にわからなかった用語2
## フェイルオーバー
稼働中のシステムやサーバに障害が発生した場合、あらかじめ用意しておいた経路と同等の待機システムに切り替える機能のこと## プロビジョニング
必要に応じてネットワークやコンピュータの設備などのリソースを提供できるよう予測し、準備しておくこと## インスタンス ユーザデータ
OSの起動スクリプト
EC2インスタンスの初回起動時(作成時)に実行したい処理を設定する。## インスタンス メタデータ
インスタンスIDやIPアドレス、ホスト名などEC2インスタンス自身に関するデータ。
実行中のEC2インスタンスは設定や管理の為にメタデータを利用する事ができる。※ メタデータとユーザデータは暗号化手法によって保護されない
## エイリアスレコードとCNAMEレコード
### エイリアスレコード
エイリアスレコードは、次のように、選択した AWS リソースにのみクエリをリダイレクトできます。
– Amazon S3 バケット
– CloudFront ディストリビューション
– 同じ Route 53 ホストゾーンの他のレコード例えば、acme.exam
【AWS SAM】AuthorizationError: ポリシーが効かない場合に確認したい罠
# はじめに
SAMでStepFunctionsや、Labmdaのリソースにポリシーを設定する際に、`SAM policy templates`を利用することは多いかと思う。
しかし、リソースの設定が間違っていてうまく実行ロールに権限が渡っていないことがあった。
# 確認事項
ポリシーによって、– リソースのARNが必要か
– あるいは名前などの単なる値が必要かが異なる。
# 例えば
LambdaからSNSのトピック発行する場合
## NGな例
“`diff_yaml
Resources:HogeTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: fuga-fugaHogeLambda:
Type: AWS::Serverless::Function
Properties:
Policies:
– SNSPublishMessagePolicy:
++ TopicName: !Ref HogeTop
CloudFrontでS3の署名付きURLを発行する
CloudFrontでS3の署名付きURLを発行する方法です。
## 暗号鍵、公開鍵の生成
“`bash
openssl genrsa -out private_key.pem 2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
“`## CloudFrontキーグループに公開鍵の追加
ここはAWSコンソールで作成するだけなので割愛します。
## SecretsManagerに暗号鍵を登録
今回、作成した暗号鍵はシークレットキーに保存し、Lambdaから取得します。
AWSコンソールを利用して暗号鍵を貼り付けると値がおかしくなるようなので
AWS CLIを利用し登録します。“`bash
aws secretsmanager create-secret –name <シークレット名> –secret-string file://private_key.pem –region ap-northeast-1
“`## 署名付きURLの発行(Lambda)
“`python
imp
【AWS】CloudWatch AgentをWindows10(オンプレミス)へインストール & 起動!!【ログ解析】
#1:はじめに
本記事ではCloudWatch AgentをWindows10へインストール & 起動し、CloudWatch LogsとWindowsイベントログを同期させてログ解析を行えるようにします。
Windows機へのAgentのインストール手順は数も多くなく、MS特有のハマりポイントも多く存在し、インストール & 起動にとても苦労しました。#2:概要
● 本記事の目的
WindowsPC(10)へCloudWatch Agentをインストールし、CloudWatch LogsにてWindowsイベントログの取得、及び解析を行う● 本記事の流れ
① CloudWatch Agentのダウンロード、及びインストール
② 設定ファイルの作成、及び読み込み
③ Agantの起動
④ AWSコンソールよりログが取得できているか確認● 機能要件
・Windows EventLogを取得する(System, Application)
・SSMは使用しない#3:CloudWatch Agentのインストール & 起動
##3.1:A
ドメインとネームサーバ(Route53/お名前.com比較)
### はじめに
個人開発で独自ドメインを作りたいなと思い、先日↓の記事を参考にさせていただいた。https://qiita.com/nakanishi03/items/25278fb4dfad60ebfac4
上記の記事では
・ドメイン作成 → お名前.com
・ネームサーバ作成 → AWS Route53
の方法で作成していたが、先日業務でAWS Route53でドメイン作成できるということも知り、
・ドメイン作成 → AWS Route53
・ネームサーバ作成 → AWS Route53
でドメイン作成する機会があった。この時点で「あれ、ドメインってそもそもなんだっけ?ネームサーバとドメインの関係性って?」と混乱してしまったので改めて整理。
—
### ドメインとネームサーバドメイン:IPアドレスの別名
ネームサーバ:ドメイン情報(ドメイン — IPアドレス)のマッピング情報を保持するサーバ①ぐぐる時にURLに「https://qiita.com/ 」と打ち込む
②ドメイン「qlita.com」のIPアドレスを知っているネームサーバに問
Amazon Connect、Get Customer Inputブロックの謎設定 Enter an ARN の設定方法がわかった!
最近、別々のAWSアカウント越しにいろいろ連携する方法をリサーチしています。
今回は、**Amazon Connectのコンタクトフロー**から、**別のAWSアカウントにあるLexボットを呼び出したい!**がゴールです。
## フツーのLexボット連携の場合
Amazon Connectと同一アカウント内のLexボットを連携するフツーのケースでは、Get Customer Inputブロックの**Amazon Lex**セクションで**Select a Lex bot**を選択すると、ドロップダウンリストから目的のLexボットを選べるので、チョロいわけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/e0bdaea1-bef1-3068-26cb-76d4e5713bdd.png)じゃあ、**Enter an ARNすれば他アカウントのLexボットも呼び出せるんじゃないか?**
と思ったら、、、意外と簡単じゃなかった。。## Enter an ARNの公
SFTP専用ユーザーを作成し、特定directoryのみ更新できるよう制限する
## これは何
SFTP専用ユーザーを作成し、特定directoryのみ更新できるよう制限してみたので、メモをここに残します。
FTPソフトはCyberduckを使ってます。## 要件
sftp-userを作成する
/home/sftp-user配下のファイルしか操作できない様にする(chrootする)
ただし、/var/www/html/hogeだけは更新できる様にしたい## やってみた
**ユーザー作成**
“`
useradd sftp-user
“`**httpd install**
“`
yum -y install httpd
“`**sftp-userがアップロードしたファイルをApacheが動かせるようにする**
“`
gpasswd -a apache sftp-user
“`**SSH directory 作成**
“`
cd /home/sftp-user
mkdir .ssh
chmod 700 .ssh
“`**鍵作成**
“`
sudo su – sftp-user
cd .ssh
ssh-keyge
Terraform環境構築(Windows編)
# Terraform環境構築(Windows編)
## Terraformとは
HashiCorp社が提供するIaC(インフラをコード化して管理する)を実現してくれるツールです。
クラウド上のサーバーやネットワークなどのインフラ構築を自動化してくれます。
HCL記法でコードを記述し、インフラ管理していく。
AWSや、Azure、Google Cloudなどの複数のプロバイダーに対応しているので、HCLの記述さえ慣れれば、神ツールです。今回はAWS環境にTerraformを使ってVPCを作成してみることについて解説します。
※AWS Cliの設定済みの前提で話を進めます。## Terraformのバージョン管理ツール(tfenv)のインストール
Terraformの公式ページから、直接ダウンロードしてきてもいいですが、
TerraformのHCLの記法がv0.13以降、大幅に変わったこともあり、今からはじめるなら
バージョン管理できた方がいいねということで、tfenvをインストールしていきます。
今回はWSL2+Ubuntuの環境にインストールしていきます。Ubunt
【Ruby】S3にCSVデータを出力する
## はじめに
– CSVファイルのデータをAWSのS3に保存するロジックを実装したので、よかったら参考にしてみてください。
– `Rails: 5.2.6`
– `Ruby: 2.7.2`## 実装したコード
– S3のバケットに 例: `2021_10/2021_10_01.csv` といったファイル名で出力されます。
– こちらは毎日バッチで実行することを想定して作成おります。“`export_csv.rb
# frozen_string_literal: truerequire ‘csv’
require ‘aws-sdk-s3’class ExportCsv
def self.execute(params)
output = CSV.generate do |csv|
csv << params['headers'] params['values'].each do |value| csv << value end end export_csv_to_s3(output, pa
ChaliceのCDパイプラインをシンプルに構築する
# What is chalice?
AWSが提供するPythonのサーバーレスフレームワークで、flaskみたいな書き心地でLambdaなどにデプロイできます。
今回はこのChaliceのCDを構築するお話。# TL;DR
Chaliceは自動でCDパイプラインを構築する機能がある。でもなんか難しくて結局自分で作った。# 使用バージョン
– chalice==1.24.1# Deploy Command
公式ドキュメントの[Quickstart](https://aws.github.io/chalice/quickstart.html#deploying)ではローカル環境からCLIでデプロイする方法が紹介されています。“`
$ chalice deploy –stage dev
“`
1コマンドで簡単!
しかしこれだとチームで開発している場合は問題になります。
Chaliceは作成したAWSリソースを把握するため、`.chalice/deployed/`配下に下記のようなJSONを作成します。“`json:deployed.json
{
“reso
Cloudformation + Lambdaで環境変数にパラメータストア-SecureString-の値を設定する
LambdaProjectを新設したので、デプロイ周りを構築中。
環境変数をパラメータストアから取得しようとしたら・・・“`
SSM Secure reference is not supported in: [AWS::Lambda::Function/Properties/Environment/Variables/ENV_NAME]
“`
なん….だと?[公式ドキュメント](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#template-parameters-dynamic-patterns-resources)を見ると。
> Resources that support dynamic parameter patterns for secure strings
Resources that support the ssm-secure dynamic reference pattern currently include:
– AW
EBS ディスク容量追加
まず、コンソールからec2インスタンスに接続しましょう。
現在の容量を確認します。“`
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 516K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/nvme0n1p1 300G 281G 20G 94% /
tmpfs 389M 0 389M 0% /run/user/1000
tmpfs 389M 0 389M 0% /run/user/0
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1