- 1. 【AWS】初心者向け 目的別クラウド構成から学習するAWSサービス ①動的WEBサイト
- 2. AWS SAMのローカル開発でホットリロードを効かせる
- 3. AWS SAMとHugging Face Transformersでサーバーレスな推論APIを作る
- 4. 【試験合格記】AWS 認定 SAP on AWS – 専門知識(PAS-C01)
- 5. AWS S3のobject createを感知してlambda関数を実行する(EventBridge使用)
- 6. AWS S3のobject createを感知してlambda関数を実行する(EventBridge不使用)
- 7. AWS Codeサービス群 + ECS/ECR の利用時に躓いた点のメモ
- 8. VantageのデータをAWS SageMakerでの機械学習に使用してみた
- 9. CloudFormation の 組み込み関数について整理しよう
- 10. BentoMLのAWSへのデプロイ
- 11. ECS初心者がGUIでサーバを立ててみる
- 12. 起動テンプレートのAMIをSSMパラメータで指定する
- 13. 【AWS CDK】AWS CDKを触ってみる with TypeScript。Part1: API Gateway & Lambda
- 14. AWS Codepipeline で ECS にデプロイする時の要点
- 15. EC2にMariaDB & CakePHP環境を作成
- 16. [Terraform] CloudFront のテンプレートをモジュール化するにあたって、ダイナミックにACMをセットできるようにする
- 17. 家庭教師がオンライン授業のためのホワイトボード共有サイトを作ってみた(その2)
- 18. 【Next.js,TypeScript】 ポートフォリオサイトを作ってAWS Amplifyでデプロイ、制作過程
- 19. kubernetesを使用するにあたってぶち当たる壁
- 20. CloudFrontについて
【AWS】初心者向け 目的別クラウド構成から学習するAWSサービス ①動的WEBサイト
# まず初めに
AWSを学習し始めて日が浅く、
構成図を見るとサービスの役割がいまいちピンと来ない方へ向けた記事となります。
以下に当てはまる方は参考になるかと思いますので、
是非読んでいただければと思います!**・メジャーなサービスの機能は理解しているような、していないような**
**・AWSの構成図を見るのに何となく抵抗がある**
**・AWS SAAの試験を勉強中**概要で挙げた中にもありますが、構成図が何となく難しいなと感じる方は、
サービス単体の機能は何となくわかるけど、
構成に盛り込まれていると、
役割がいまいち把握できてないところにあるのかなと思います。優しいAWSはそんなこともあろうかと、
**簡単~応用レベルの構成を30パターン**公開しています。
ここでは抜粋した比較的簡単な構成について、
サービス解説を含め解説していきます。以下、本記事で参考にするページです。
**参考ページ**
https://aws.amazon.com/jp/cdp/# 動的WEBサイト
【構成図】
![image.png](https://qiita-image-sto
AWS SAMのローカル開発でホットリロードを効かせる
# やりたいこと
`sam local start-api`コマンドなどでAWS SAMをローカル環境で動かしている再、ソースコードを変更してもホットリロードで変更が反映されません。変更を反映するには`sam build`を実行しなければいけません。
`sam local start-api`を実行しているターミナルとは別のターミナルで`sam build`を実行すればビルド後のファイルを自動で読み込んではくれます。
これを利用してVSCodeの拡張機能「[Run on Save](https://marketplace.visualstudio.com/items?itemName=emeraldwalk.RunOnSave)」を使ってファイルを保存したら`sam build`が走るようにすることでホットリロードっぽい挙動を実現してみました。
# やりかた
拡張機能をインストール後
例えばPythonのプロジェクトならこのように設定をしておきます。“`json:.vscode/setting.json
{
“emeraldwalk.runonsave”: {
AWS SAMとHugging Face Transformersでサーバーレスな推論APIを作る
# 作ったもの
[Hugging Face AutoTrain](https://huggingface.co/autotrain)を使って、テキストの二値分類をする機械学習モデルを作ったので、それをAWS SAMでデプロイしてみました。
↓のような形でPOSTできて、推論結果などを返してくれます。“`bash
❯ curl -X POST -H “Content-Type: application/json” -d ‘{“text”:”テストだよ”}’ https://xxxx.lambda-url.ap-northeast-1.on.aws/
{“label”: 0, “message”: “success”}
“`なお、Lambda関数をAPIとして使うにはAPI Gateway経由で呼び出すのが鉄板ですが、やってみたらAPI Gatewayの30秒制限に引っかかった(※)ので、今回は[Lambda Function URL](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-urls.html)とい
【試験合格記】AWS 認定 SAP on AWS – 専門知識(PAS-C01)
お疲れさまです。
表題の試験に合格したため記録として残したいと思います。# 結果
合格(791点)[AWS-Certified-Database-Specialty_Exam-Guide.pdf](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-database-specialty/AWS-Certified-Database-Specialty_Exam-Guide.pdf)
|分野|名称|割合|
|:—————–|:——————-|:——————-|
|1|AWS での SAP ワークロードの設計|30%|
|2|AWS での SAP ワークロードの実装|24%|
|3|SAP ワークロードの AWS への移行|26%|
|4|AWS での SAP ワークロードの運用とメンテナンス|20%|# 事前知識
SAP何それ美味しいの?# 所感
練習問題の雰囲気やすでに合格された方の記事を見る限りではオンプレで動いているSAP
AWS S3のobject createを感知してlambda関数を実行する(EventBridge使用)
# 概要
– S3の特定のバケットにオブジェクトがアップロード(create)されたことを感知して、そのオブジェクトの内容をconsole.logに出力するlambda関数を実行する方法をEventBridgeを使い実装してみる。
# 注意
– 本作業を実施することでAWSにて料金が発生する可能性があります。
– 料金アラートなどを予め設定し高額請求にはくれぐれもご注意ください。
– 筆者は一切の責任を負いかねます。# 前提
– 下記記事の内容は実施済みのものとして話をすすめる。
https://qiita.com/miriwo/items/4ab4dd1ca49bfa7c9387
– 条件は上記の記事と全く同じで任意のバケット(筆者の場合miriwo-testバケット)にinフォルダを作成し、そこにファイルアップロードイベントが発生した場合lamba関数でキャッチし、ログに出力する。
# 準備
– IAMロール、S3、lambdaはすでに前提の記事で設定済みのものを使用する。
| 項目 | 内容 | 備考 |
| — | — | —
AWS S3のobject createを感知してlambda関数を実行する(EventBridge不使用)
# 概要
– S3の特定のバケットにオブジェクトがアップロード(create)されたことを感知して、そのオブジェクトの内容をconsole.logに出力するlambda関数を実行する方法をEventBridgeを使わず実装してみる。
# 注意
– 本作業を実施することでAWSにて料金が発生する可能性があります。
– 料金アラートなどを予め設定し高額請求にはくれぐれもご注意ください。
– 筆者は一切の責任を負いかねます。# 準備
## IAMロール
1. 下記の情報でIAMロールを作成する。
| 項目 | 内容 | 備考 |
| — | — | — |
| 信頼されたエンティティタイプ | AWSのサービス | |
| ユースケース | Lambda | |
| 許可ポリシー | AWSLambdaBasicExecutionRole
AWSXRayDaemonWriteAccess
AmazonS3FullAccess | |
| ロール名 | get-s3-object-lambda-ro
AWS Codeサービス群 + ECS/ECR の利用時に躓いた点のメモ
# はじめに
AWS の CodeCommit, CodeBuild, CodeDeploy, CodePipeline をまとめて Code シリーズと呼ぶらしい。
https://aws.amazon.com/jp/cdp/cicd/
ここのところ、Codeシリーズを用いた CI/CD の自動化を行っていくなかで、かなり躓いたのでメモしておく。 また、関連して ECR へのデプロイも行っていたり、ECS Fargate への Blud/Green デプロイも行ったため、それに関しても記載する。
## CodeCommit
別アカウントの CodeCommit を参照する設定は Management Console から行うことはできない。
色々設定したが、正直最初から複数の AWS アカウントで利用するようなリポジトリを持つ場合、Github を利用した方が正直色々と楽。## CodeBuild
Docker Image 構築に発生した問題と対応策。
– CodeBuild で [Docker Hub からイメージを持ってくる場合は同一ソースIPの制限に引っ掛
VantageのデータをAWS SageMakerでの機械学習に使用してみた
とても多くのお客様がVantageとAWSのサービスとの統合に関心を持っています。そのようなトピックからここではSageMakerとVantageの統合について説明します。
このガイドで説明するアプローチはSagemakerと統合するための多くの可能性のあるアプローチの一つであり、そのままの形で提供されるものです。 このアプローチは社内で実装されテストされていますが、TeradataまたはAWSのいずれからも、このアプローチに関する正式なサポートはありませんのでご注意ください。
とはいえ、何がうまくいったのか、何がうまくいかなかったのか、どうしたら改善できるのか、などなど、皆さんのフィードバックはとても望ましく、ありがたく思います。
ご意見・ご感想は、コメントとしてお寄せください。
免責事項:本ガイドは、AWSとTeradata製品の両方のドキュメントからの内容を含んでいます。
# 概要
Amazon SageMakerは、フルマネージドなMachine Learning Platformを提供します。
SageMakerとTeradataのユースケースは2つあります。
CloudFormation の 組み込み関数について整理しよう
# !Base64
`!Base64` は、入力文字列の Base64 表現を返します。
この関数は通常、UserData プロパティを介して Amazon EC2 インスタンスにエンコードされたデータを渡すために使用されます。次の例では、CloudFormationでユーザーデータを記述する場合、Base64エンコードされてなければいけないため、Base64を利用している。
“`yaml
Resources:
SampleLaunchTemplate:
Type: AWS::EC2::LaunchTemplate
Properties:
LaunchTemplateName: sample-launch-template
LaunchTemplateData:
UserData:
Fn::Base64: |
#!/bin/bash
“`# !Cidr
`!Cidr` は CIDR アドレスブロックの配列を返します。
次の例では、10.0.0.0/16 の16ネッ
BentoMLのAWSへのデプロイ
# はじめに
最近Model ServingのOSSとして[BentoML](https://github.com/bentoml/BentoML)に注目しています。BenteMLではクラウド環境へのデプロイをサポートする[bentoctl](https://github.com/bentoml/bentoctl)というOSSも合わせて公開しています。https://github.com/bentoml/bentoctl
現在サポートされているデプロイ先のクラウドは以下になります。
– AWS Lambda
– AWS SageMaker
– AWS EC2
– Google Cloud Run
– Google Compute Engine
– Azure Container Instances
– Heroku今回はAWSのLambdaとSageMakerへのデプロイを試してみました。
# 前提
## 環境
クラウドはAWSを利用します。操作するローカルPCは以下のような環境です。
– OS: Ubuntu 20.04(Windows WSL2)
– Docker 20
ECS初心者がGUIでサーバを立ててみる
# はじめに
今までECSを触ってこなかった私ですが、FargateのSpotFreetが安いという事実を知り、それなら使ってみようという気になり試しに使ってみました。今回はマイクラサーバのイメージ(itzg/minecraft-server)を使い、AWSのマネジメントコンソール上で設定します。# 構成図
![draw.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/776880/411b0e6b-7335-4fd2-29f6-d3ba6f8af764.jpeg)EFSのファイルシステムを作成する手順は省略します。
# クラスターの作成
まずは、クラスターを作成します。クラスター名を設定する必要があるため、ここでは **test-arm** としておきます。
また、任意のVPCとサブネットを選択しますが、今回はNATゲートウェイなどを用意しないため、コンテナが直接外部とアクセスできるようパブリックサブネットを指定しておかないとこの後のプロセスでエラーになります。今回はデフォルトのサブネットを選
起動テンプレートのAMIをSSMパラメータで指定する
# 背景
アップデートで、EC2起動テンプレートのAMI指定欄にSSMパラメータを指定することができるようになりました。
これにより、AMI更新時に起動テンプレートのAMI欄を修正して新規バージョンを発行する必要がなくなりました。https://aws.amazon.com/jp/about-aws/whats-new/2023/01/amazon-ec2-launch-templates-aws-systems-manager-parameters-amis/
# 試してみる
ssm パラメータを作成し、amiを参照する流れを試してみます。
パラメータにラベルをアタッチし、ラベルからバージョンを参照します。
amiを更新する際にはパラメータをoverwriteし、ラベルの付け替えを行います。![更新イメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675893/964a60a2-8972-d0b8-27c1-4388c7c61b68.png)
## パラメータの作成
AMIのID
【AWS CDK】AWS CDKを触ってみる with TypeScript。Part1: API Gateway & Lambda
## 環境情報
* 作業環境はAWS Cloud9を利用
* cdk versionは2.63.2## 作成イメージ
AWS CDKを利用してAmazon API Gateway経由でコールできるLambdaサービスのデモを作成していきたいと思います。作成するデモイメージは以下です。
![hello-arch.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484097/b7005fea-515a-a3d7-7e41-a02a8b342742.png)
では早速手を動かしていきましょう。## CDK新規プロジェクトの作成
今回の作業環境はAWS Cloud9を利用しています。タイトルにもある通り、今回はTypeScriptでプロジェクトを作成していきます。
まずは今回使用していくプロジェクト用のディレクトリを作成します。
“`
mkdir cdk-workshop && cd cdk-workshop
“`
TypeScriptのCDKプロジェクトを作成します。(ちょっと時間かか
AWS Codepipeline で ECS にデプロイする時の要点
# buildspec.yml
チュートリアル通りのだいたいこんなやつを使う
https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/ecs-cd-pipeline.html
“`yaml
version: 0.2phases:
pre_build:
commands:
– echo Logging in to Amazon ECR…
– aws –version
– aws ecr get-login-password –region $AWS_DEFAULT_REGION | docker login –username AWS –password-stdin 012345678910.dkr.ecr.us-west-2.amazonaws.com
– REPOSITORY_URI=012345678910.dkr.ecr.us-west-2.amazonaws.com/hello-world
– COMMIT_H
EC2にMariaDB & CakePHP環境を作成
# EC2にMySQL & CakePHP環境を作成
:::note warn
EC2を構築済みであり、SSHで接続できることが前提
:::
## EC2へSSH接続
1\. EC2へSSH接続
2\. roo権限にする
“`
$ sudo su –
“`
## yumのアップデート
1\. yumのアップデート
“`
$ yum update -y
“`
## Apacheのインストール
1\. Apacheのインストール
“`
$ yum -y install httpd
“`
2\. Apacheのバージョン確認
“`
$ httpd -v
Server version: Apache/2.4.54 ()
Server built: Jun 30 2022 11:02:23
“`
3\. Apacheの起動・自動起動設定
“`
$ systemctl start httpd.service
$ systemctl status httpd.service
● httpd.service – The Apache HTTP Server
Loaded:
[Terraform] CloudFront のテンプレートをモジュール化するにあたって、ダイナミックにACMをセットできるようにする
Terraform で CloudFront のテンプレートをモジュール化したいとき、ACMつけるときと付けない時の `viewer_certificate{}` の中身を変えないといけないので、モジュール化できなくて枕を濡らしたことはありませんか?
“`terraform:ACM無し
viewer_certificate{
cloudfront_default_certificate = true
}
“`“`terraform:ACM有り
viewer_certificate{
acm_certificate_arn = aws_acm_certificate.cert.arn
ssl_support_method = “sni-only”
minimum_protocol_version = “TLSv1.2_2021”
cloudfront_default_certificate = false
}
“`そんな時は `dynamic` ブロックを使えばいいんです。
`dynamic` ブロックは、配列の中身の分だけ動的
家庭教師がオンライン授業のためのホワイトボード共有サイトを作ってみた(その2)
## 前提
今回はログインせずにボードを使える機能の実装を行なった。
[前回の記事](“https://qiita.com/esakiryota/items/999a640abda68d49c9ac” “前回の記事”)
[ボードミート](https://board-meet.com/ “ボードミート”)## 技術
**バックエンド**
— 言語
– Python3— フレームワーク
– Django 3.0.6**フロントエンド**
— 言語
– CSS
– Javascript
– HTML— フレームワーク
– jquery
– materiallize.css**インフラ**
– AWS EC2
– AWS S3 storage
– AWS Route53## アーキテクチャー
![スクリーンショット 2022-11-01 18.48.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1860891/9ab885ca-2127-3908-bec2-4ce2e8
【Next.js,TypeScript】 ポートフォリオサイトを作ってAWS Amplifyでデプロイ、制作過程
ポートフォリオ用に一旦公開しています。後日書き直します。
kubernetesを使用するにあたってぶち当たる壁
kubernetesをGCPやAWS上で動かすとき、実務でぶち当たった壁、考えないといけないポイントをまとめていきます。
## AWSのマネージドで動かすか? k8sの中で動かすか問題
### 証明書関連
どこでSSL終端を行うのか?k8s-cluster外でSSL終端するのか、しないのか?を考える必要がある。さらにその証明書を得るときに期間が切れたときに自動で証明書を発行するのかいなかなどもある。
https://cert-manager.io/
## シークレット関連
通常、k8sで`secrets.yaml`ファイルを定義した場合、Secretのvalueは`base64`で、エンコードされるだけで、エンコードされた文字列を知れば、簡単にデコードできてしまう。そのため、secretsを以下のサービスを使用して外部に置いておいて、必要な時に動的に取得するといったシークレット管理の仕方が存在する。##### external-secrets-operator(ESO)
SSMパラメータストアなどに置いておいて必要な時にk8sからシークレットを呼び出す形https:
CloudFrontについて
## CloudFrontとは
HTMLファイルやCSS、画像、動画といった静的コンテンツをキャッシュし、オリジンサーバーの代わりに配信するCDNサービス。
エッジロケーション(データセンター)からコンテンツを配信する。
※世界中に200以上のエッジロケーションがあり、エンドユーザーに近いエッジロケーションからコンテンツを高層く配信する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733779/c65334dc-4544-71a0-d6f8-635466558037.png)
※エッジロケーションからはCloudFrontだけではなく様々なサービスが提供されている。## CloudFrontのバックエンド
CloudFrontのバックエンドにあるコンテンツを保持するバックエンドサーバーをオリジンサーバーという。
オリジンサーバーとして、ELB、EC2、S3を利用することが出来る。
![image.png](https://qiita-image-store.s3.ap-nort