- 1. RedshiftでUNLOADしたgzipファイルをLambdaのPythonで処理をして再びgzipしてS3へアップする
- 2. Terraformで最新のECS Optimized AMIのidを取得する方法
- 3. Amazon Aurora, Redshift, DynamoDBのワークロード別性能を比較する
- 4. C#のみを使って、今ソーシャルゲームアプリを作るとしたら
- 5. (自分用)AWS_Flask_3(AWS上でFlaskをインストール/動かす)
- 6. ノーコード(no-code)なツール(特にHoneycode)を触ってみた
- 7. Lambdaをローカル実行したときにInvalidSignatureException: Signature expired:が出る件
- 8. Spring Cloud FunctionでAmazon API Gatewayのプロキシ統合なLambda関数をサクッと書いてみる
- 9. Amazon Honeycode でノーコードを始めてみた
- 10. AWS メモ1
- 11. AWS日記13 (Textract)
- 12. AWS まとめ
- 13. 令和の Lambda x RDS
- 14. TerraformでAWS VPCを変更する(再作成が発生する場合、しない場合)
- 15. Amazon Honeycodeを触ってみた
- 16. SAMでS3にCSVファイルアップロードをトリガーにDynamoDBへの登録処理の作成 Lambdaの関数部分
- 17. AWS日記12 (Translate)
- 18. AWS,GCP,Azureの対応用語表とベストプラクティス(階層・ユーザー・定義された権限編)
- 19. AWS認定 デベロッパー アソシエイト 受験・合格体験記
- 20. Amazon Linux2にDockerをインストールする
RedshiftでUNLOADしたgzipファイルをLambdaのPythonで処理をして再びgzipしてS3へアップする
# やりたいこと
タイトルの通りですが、Redshiftにデータウェアハウスがあり、普段ELTで処理することが多いのですが、プログラミングによるデータ加工が必要な場合もあります。RedshiftのUNLOADを利用することでRedshiftからSQLの結果をS3にgzipファイルを作成することが出来ますので、S3へのputイベントをトリガーにLambdaで処理して再びgzipした状態でS3にアップ、ということをしてみました。
# UNLOAD
Lambdaは現時点では3008MBが最大となります。今回のような処理はファイルサイズが増えると必然利用メモリ量が増えてしまいます。
そこで、[MAXFILESIZE パラメータ](https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_UNLOAD.html) を設定することでLambdaへ渡すファイルサイズを調整します。
完全なるケースバイケースですが、今回は50MBで設定してみました。# Lambda上のコード
トリガ設定は割愛します。“`
import json
imp
Terraformで最新のECS Optimized AMIのidを取得する方法
AWS公式ドキュメントにSSMパラメータストアから取得できることが記載されています。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html“`console
$ aws ssm get-parameters –names /aws/service/ecs/optimized-ami/amazon-linux-2/recommended
“`Terraformでimage_idのみ利用したい場合は、下記のコードで取得可能です。
“`
data “aws_ssm_parameter” “ecs_ami_id” {
name = “/aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id”
}# Launch COnfigration等で利用する側
image_id = data.aws_ssm_parameter.ecs_ami_id.value
“`
Amazon Aurora, Redshift, DynamoDBのワークロード別性能を比較する
# はじめに
AWSが提供する代表的なDBサービスには、クラウド前提で設計されたRDBの[Amazon Aurora](https://aws.amazon.com/jp/rds/aurora/)、 データ分析特化型RDBの[Amazon Redshift](https://aws.amazon.com/jp/redshift/)、ワイドカラム型DB(NoSQL)の[Amazon DynamoDB](https://aws.amazon.com/jp/dynamodb/)[^1]があります。AWSの各DBサービスの使い分けについては、一般的には概ね業務系システムのDBにはAuroraやDynamoDB、分析系システムのDBにはRedshiftを利用すれば良いとされていますが[^2]、その根拠について定量的に確かめてみたいと思ったので、実際にOLTP/OLAPワークロード別の負荷をかけて各DBサービスの性能特性の違いについて確認してみました。
[^1]: AWS公式サイトではDynamoDBはワイドカラムストアではなくKVSおよびドキュメント型DBと分類されていますが、代表的なワイド
C#のみを使って、今ソーシャルゲームアプリを作るとしたら
# はじめに
現在進行形でC#のみを使って個人でソシャゲ作りを試しているyoship1639です。
本記事はQiita夏祭り2020「[〇〇(言語)のみを使って、今△△(アプリ)を作るとしたら](https://qiita.com/official-events/5d181aadf5db26b73d33)」のテーマに沿った内容となっています。近年のソーシャルゲーム界隈は多様化が進んでクライアントサイドだけではなくサーバーサイドもあらゆる言語やフレームワークが試みられていますが、クライアントもサーバーも統一の言語で構成されているのはほとんどないかと思われます。言語にはその言語の得意分野があると思うので。
しかし、今まさに私が開発中の環境が好きな言語で開発しやすいという理由でクライアントもサーバーもC#で構成した作りになっているので、どのような構成でどうすれば最低限のソシャゲの基盤が作れるかを、解説が長くなり過ぎないようにまとめることが出来ればと思います。
三部構成で、クライアント実装、サーバー実装、AWS EC2へのデプロイまで解説できればと思っています。
Let’s、C#のみ
(自分用)AWS_Flask_3(AWS上でFlaskをインストール/動かす)
# 項目
1. AWSにFlaskをインストール
2. 実際に動かしてみる# 1.AWSにFlaskをインストール
– 前回でもうPythonは入れてあると言う前提“`bash:ターミナル
# ホームディレクトリへ
$$ cd# Python仮想環境を作る(myenvは他の名前でもよいぞ)
$$ python3 -m venv myenv# Python仮想環境を有効化する
$$ source myenv/bin/activate
# 左の環境名だったりの所に(myenv) と表示されれば成功# pipを一応最新にしておく
$$ pip install –upgrade pip# Flaskをインストール
$$ pip install flask# ちゃんとpipにモジュールがあるか確認
$$ pip freeze
“`# 2.実際に動かしてみる
“`bash:ターミナル
# pyファイルを作成、今回はApacheで動かすので/var/www/htmlの中に作る
$$ vi /var/www/html/test.py
“`“`pytho
ノーコード(no-code)なツール(特にHoneycode)を触ってみた
2020年6月25日(JPT)にAWSからノーコードツールである「Amazon Honeycode」がローンチされました(β版?)。のでちょっと触ってみました。
# はじめに
とある市役所でのkintoneの事例([「手間がめちゃくちゃ減った」 郵送とオンラインのハイブリッド給付金申請、非エンジニアの市職員が開発 経緯を聞いた](https://news.yahoo.co.jp/articles/9675a22ed41b48849ea514456bd4ca2fe75e29bd))もすごいとおもっていたり、ちょうどノーコードツールをあれこれ探っていたので、まさにタイムリーと思いました。具体的にはエクセル(A3で3枚くらい)の「セキュリティチェックシート」をアプリ化することを考えていたのですが、どういう入力方法にすれば楽なんだろうと模索するためにノーコードツールを探していました。ということで今回は「[クラスメソッド 標準セキュリティチェックシートを公開しました]
(https://dev.classmethod.jp/articles/cm-standard-security-check
Lambdaをローカル実行したときにInvalidSignatureException: Signature expired:が出る件
#問題
SAMを使ってLambdaをローカル実行したときに
InvalidSignatureException: Signature expired:xxxxxxxxx
というエラーが出る。#対処法
何かの拍子でDockerのタイムスタンプが狂っている模様。Dockerを再起動しましょう。
それでもダメなときはOSのシステム時刻が現在時刻を指しているかどうか確かめて
現在時刻からずれていたら修正する。
Spring Cloud FunctionでAmazon API Gatewayのプロキシ統合なLambda関数をサクッと書いてみる
# はじめに
Lambda関数をJavaで実装するのは面倒くさい。
Spring Cloud Functionというのを使うと、その辺の煩雑さを良い感じにフレームワークが吸収してくれるらしい。
ということで、本当に良い感じに吸収されてサクッと書けるのかを試してみた。ちなみに、Spring Cloud Functionはプロキシ統合していないサンプルは多くあれど、統合版はなかなか見つからなかったので、その検討の一助にもなれば。
# 構成
以下のようなMavenプロジェクトを作成する。“`tree
SpringCloudFunctionTest
├── pom.xml
├── serverless.yml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── springcloudfunctiontest
│ │ ├── AWSLambdaHandler.java
│ │ ├── Hello.java
│
Amazon Honeycode でノーコードを始めてみた
## はじめに
6 月 24 日に発表されたばかりの AWS 謹製のノーコードツール「Amazon Honeycode」に触ってみました。Honeycode アプリケーションを動かすまでの流れをまとめています。一歩踏み込んだ検証はまだ行っていませんので、表面的な内容にとどまっていますが、まずはイメージを掴むことを優先しました。
## はじめての Amazon Honeycode
### Honeycode にサインアップする
投稿時点では、Oregon リージョンのみサービス提供されています。AWS 管理コンソールにログインし、Oregon リージョンに切り替えて、[Sign up for Honeycode] を選択します。
![screenshot-us-west-2.console.aws.amazon.com-2020.06.27-16_25_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319241/6c9d90dd-f6dc-b3b9-7236-8e716f738860.png
AWS メモ1
# クラウドとは
AWSのようなクラウドサービスプラットフォームからインターネット経由で仮想サーバーなど、ITリソースをオンデマンド(利用したい時に、利用した分だけ従量課金)で利用できるサービスの総称である。# オンプレミスとは
サーバー、ネットワーク、ソフトウェアなどの設備を自分たちで導入・運用すること。こちらが、クラウドサービスが主流になるまでは従来の方法であった。# AWSとは
Amazon社内のビジネス課題を解決するために生まれたサービスである。webサービスという形態で、ITインフラストラクチャーサービスの提供をしている。
#### AWSのメリット
1.設備投資費(固定費)が柔軟な変動費になる
2.スケールによる大きなコストメリット
3.キャパシティ予測が不要
4.速度と俊敏性の向上
5.データセンターの運用と保守への投資が不要に
6.わずか数分で世界中にデプロイ*デプロイとは→開発したソフトウェアを実際の運用環境に配置・展開して実用に供することを指す場合が多い。
AWS日記13 (Textract)
# はじめに
今回は Amazon Textractを利用してテキスト抽出機能試します。[今回作成したAmazon Textract のテキスト抽出機能を試すページ](https://labo.systems/textract)
# 準備
[Lambda , API Gatewayの準備をします。]
(https://qiita.com/tanaka_takurou/items/3f93295de6cff060ec09)[Amazon Textractの資料]
[Amazon Textract](https://aws.amazon.com/jp/textract/)※ 2020年6月時点で、Textractは 「アジアパシフィック (東京)」 リージョンで利用できないため 「米国西部 (オレゴン)」 リージョンで試しました。
# WEBページ・API作成
GO言語のAWS Lambda関数ハンドラー aws-lambda-go を使用してHTMLやJSONを返す処理を作成します。
また、Textract を使用するため aws-sdk-go を利用します。[参考資
AWS まとめ
#AWS
Amazon Web Servicesの略で、Amazonが提供している100以上のクラウドコンピューティングサービスの総称
クラウドサービスとして世界最大規模#クラウドコンピューティング
インターネットを介してサーバー・ストレージ・データベース・ソフトウェアといったコンピューターを使った様々なサービスを利用すること
クラウドコンピューティングでは、手元に1台のPCとインターネットに接続できる環境さえあれば、サーバーや大容量のストレージ、高速なデータベースなどを必要な分だけ利用可能#サーバー
ホームページを表示するために必要となる情報を格納しておく場所#ストレージ
パソコンのデータを長期間保管しておくための補助記憶装置#データベース
データを1つの場所に集約し、保管・管理だけでなく、参照したいデータを簡単に抽出できるようにする「箱」のようなシステム#ソフトウェア
コンピューターを動かすプログラムとそのプログラムが処理するデータ。#AWSのメリット
【コスト面】
ハードウェア・ソフトウェアの購入費用が不要。
従量制の課金となるため、定額制と比べて無駄なコ
令和の Lambda x RDS
# はじめに
`Lambda x RDS` は令和になってから重大ニュースがいくつかあった影響もあり、
VPC Lambdaは遅い、同時接続数がつらい、だからアンチパターンかと思いきや、
VCP Lambdaそんなに悪くない、Proxy使えばいい、とも言われてて
相反する情報が多く混乱してしまったので、平成と令和での状況変化を各記事を参考にまとめる# 【平成】 以下5つの点でLambdaとRDSは相性が良くないと言われていた
1. VPC Lambdaでの実行時に、起動コストが高い問題
初回起動時はコールドスタートでENIの作成とアタッチなどに10~20秒ほどかかる
対応方法
定期的にlambdaをkickする2. VPC Lambdaでの実行時に、サブネットのIPを浪費する問題
アタッチされたENIの数だけサブネット内のIPを消費してしまう
サブネットのIPリミットやアカウントのENI作成リミット、APIレートを使い切るリスクがある
また、Lambdaの
TerraformでAWS VPCを変更する(再作成が発生する場合、しない場合)
TerraformでAWS VPCを変更するコード(コマンド)
CIDRのように一度設定した後は変更できないようなパラメータ(※)を変更しようとした場合、VPCの再作成することになるはず。
再作成が発生してしまう場合、どのような挙動やメッセージとなるのかを確認する。※ だいぶ前から[CIDRの拡張は可能になってた](https://aws.amazon.com/jp/premiumsupport/knowledge-center/vpc-ip-address-range/)んですね。知らなかった。
## 実行環境
– Windows 10 Home (1919)
– Git Bash (git version 2.25.1.windows.1)
– AWS CLI (aws-cli/2.0.3 Python/3.7.5 Windows/10 botocore/2.0.0dev7)
– Terraform (v0.12.26)## 再作成が発生してしまうパターン
### 実行前の状態確認
“`
$ aws ec2 describe-vpcs –region=us-
Amazon Honeycodeを触ってみた
## Honeycodeをさわってみた
ネットニュースでAWSがHoneyCodeなるもののBeta版をリリースしたとのこと。>コードを記述せずにウェブ & モバイルアプリを構築する
どうやら最近流行りのノンコード・ローコード開発ツールっぽい。
私自身、コードを書くのが好きとはいえこういった最新っぽいものが出てくるととりあえず触ってみたくなる。
ということで触ってみた。## 準備
準備といったってたいした操作は必要ない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646573/cdddccc0-54fc-2438-f3ca-54e4afb5b4ba.png)
AWSコンソールからHoneyCodeと調べればHitするのでクリックして進めるだけ
アカウント登録だけ必要だったので適当にぽちぽち。ログインするとこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646573
SAMでS3にCSVファイルアップロードをトリガーにDynamoDBへの登録処理の作成 Lambdaの関数部分
## 概要
[前回の記事](https://qiita.com/dmikita/items/2cbc5675dac14a7d380b)のLambda関数の部分です## Lambda
Lambda関数は以下になります“`python
import json
import boto3
import os
import csv
import codecs
import sys
import traceback
import collections
from datetime import datetimes3 = boto3.resource(‘s3’)
dynamodb = boto3.resource(‘dynamodb’)bucket = os.environ[‘bucket’]
tableName = os.environ[‘table’]def lambda_handler(event, context):
key=event[‘Records’][0][‘s3’][‘object’][‘key’]
#get() does not store i
AWS日記12 (Translate)
# はじめに
今回は Amazon Translateを利用して翻訳機能を試します。[今回作成したAmazon Translate の翻訳機能を試すページ](https://labo.systems/translate)
# 準備
[Lambda , API Gatewayの準備をします。]
(https://qiita.com/tanaka_takurou/items/3f93295de6cff060ec09)[Amazon Translateの資料]
[Amazon Translate](https://aws.amazon.com/jp/translate/)# WEBページ・API作成
GO言語のAWS Lambda関数ハンドラー aws-lambda-go を使用してHTMLやJSONを返す処理を作成します。
また、Translate を使用するため aws-sdk-go を利用します。[参考資料]
[AWS SDK for Go API Reference](https://docs.aws.amazon.com/sdk-for-go/api/servic
AWS,GCP,Azureの対応用語表とベストプラクティス(階層・ユーザー・定義された権限編)
# はじめに
AWS,GCP,Azureを使っているのですが対応している用語が分かりづらかったのでまとめました。
また弊社のように今は小規模な組織で厳密に権限管理をするほどではないけど、スケールする可能性があり将来的な負債にはしたくないという方向けの**低工数だけど効果がある最適なベストプラクティス**をまとめました。
1年前の自分に読ませてあげたいことが書いてあります。
# 階層| 階層| AWS |GCP | Azure |
|:——–:|:——–:|:——–:|:——–:|
| ルート | 組織 | 組織 | AzureAD ※2 |
|環境の
グループ ※1 | OU | フォルダ | 管理グループ |
| 独立した環境 | アカウント | プロジェクト | サブスクリプション |
| VMなどの
グループ | | | リソースグループ |
| VMなど |
AWS認定 デベロッパー アソシエイト 受験・合格体験記
#オンライン受験
家族の意見によりテストセンターでの受験を見合わせていましたが、自宅でオンライン受験された[トレノケート山下さん](https://blog.trainocate.co.jp/blog/aws_onvue_022)のブログを発見!:grinning:コードを勉強するために半年前から受験を計画していたり、自宅待機の時間でPython・Translate・Transcribe・Comprehendを使ったサーバーレス環境(API Gateway+Lambda+DynamoDB)などをハンズオンする時間がありましたので、躊躇なく受験を決めました。
既に[クラスメソッドすずきさん](https://dev.classmethod.jp/articles/aws-exam-at-home/)が詳細な記事を書かれていますので、私は検索しても見つからなかったポイントをメモしておきます。
#ポイント
##①システムテストでMacがフリーズする
事前にOnVUEを起動させて[システムテスト](https://www.pearsonvue.co.jp/Clients/Amazon-
Amazon Linux2にDockerをインストールする
Docker初心者の私がAmazon Linux2(AMI)イメージから作成したEC2インスタンスに
Dockerをインストールし色々と触ってみたので備忘録として残します。### ・インスタンスで使用するパッケージを更新する
すでに実施済みのインスタンスであれば不要です実行コマンド
“`
sudo yum update -y
“`
実行結果“`
・・・
Updated:
amazon-linux-extras.noarch 0:1.6.11-1.amzn2 amazon-linux-extras-yum-plugin.noarch 0:1.6.11-1.amzn2
ca-certificates.noarch 0:2019.2.32-76.amzn2.0.2 cloud-init.noarch 0:19.3-3.amzn2
kernel-tools.x86_64 0:4.14.181-140.257.amzn2 python.x86_64 0:2.7.18-1.amzn2
pytho