- 1. [小ネタ]ACMの証明書を再発行してもCNAMEレコード値は変わらない
- 2. AWS Cognitoを使用したSSO実装
- 3. terraformとGithub actionsでAWS構築 〜序 terraformバージョン設定〜
- 4. AWS Signerを使って既存のLambda関数をコード署名してみた
- 5. 【備忘録】AWSのセキュリティ対策について学んだことまとめ ~検知編 ログによる異常の検知~
- 6. 【備忘録】AWSのセキュリティ対策について学んだことまとめ ~リソース編 リソースの暗号化~
- 7. API GatewayのJWTオーソライザーでGoogle IDトークンを検証してみた
- 8. 【備忘録】AWSのセキュリティ対策について学んだことまとめ ~インフラ編④ Lambdaにおけるアクセス制御~
- 9. CloudWatch LogsのログをKinesi経由でS3に転送する
- 10. [Terraform] Trivyでセキュリティスキャンをしよう!
- 11. AWS認定全冠(12冠)になったけどあんまり達成感はない。
- 12. AWS DOP-C02に受かるために使ったもの
- 13. EC2(Ubuntu)にCloudWatch Logsエージェントを導入しログ出力するまで
- 14. Lightsailについてまとめてみた
- 15. AI コード支援機能をサービス、ローカルで構築して比較してみる
- 16. AWS S3 Glacierにある大量のアーカイブを全部消す
- 17. aws-saa対策
- 18. S3EventからLamdaコンテナを動かす
- 19. AWS Solutions Architect – Associate(C03) 合格奮闘記
- 20. EB CLIを使って、Elastic Beanstalkでコンテナを動かす
[小ネタ]ACMの証明書を再発行してもCNAMEレコード値は変わらない
## これは何?
ちょっとした小ネタではあるのですが、タイトルにもある通りACMを再作成してもCNAMEレコードの値は変わらないことについて紹介しようと思います。## 想定されるケース
ドメインをRoute 53 で管理せず、顧客所掌のドメイン管理サービスを利用し、且つ証明書はCertificated Managerを利用するケースの場合、ACMで発行されたCNAMEレコードを外部のドメイン管理サービスに登録する必要があります。たまにここの意思疎通が煩雑なケース(何社にも跨ぐ)ことがあるため、CNAMEレコードの登録がDNS検証のリミットである72時間経過してタイムアウトが発生する場合があります。
https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/troubleshooting-timed-out.html## 解決策
実は、これ**ACMを再作成しても、CNAMEレコードの値は再作成前のCNAMEレコードの値と差分はない**です。
https://docs.aws.amazon.com/ja_jp/acm/la
AWS Cognitoを使用したSSO実装
業務でSSO開発を行ったので、備忘録。
# 対象者
– Cognitoを使用してSSO連携したい人
– SAML認証を使用してSSO連携したい人
– IdPを簡潔に設定してSSO連携の動きを知りたい人# SSOとは
Single Sign-Onの略で、ユーザーが複数のサービスに一度のログインでアクセスできるようにする技術です。これにより、ユーザーエクスペリエンスが向上し、パスワード管理のオーバーヘッドも削減されます。# SAMLとは
Security Assertion Markup Languageの略で、SSOのためのXMLベースのオープンスタンダードです。SAMLは、異なるドメイン間での認証と承認データの交換を可能にします。# AWS Cognitoとは
Amazon Web Services (AWS) が提供する認証・認可サービスです。Cognitoを使用すると、Webアプリケーションやモバイルアプリケーションに簡単にユーザー管理と認証機能を追加することができます。# 実装の流れ
今回は下図を構築していきます。App部分は後日時間があれば別記事にします。
S
terraformとGithub actionsでAWS構築 〜序 terraformバージョン設定〜
普段、Jenkinsを使いDevOpsとして仕事をしているのだが、Github actionsも使えるようになりたいと思い、練習を試みている。
気付いたことなどをメモにしていきたいと思っているが、忘れてしまう恐れもある。
漏れがあったら、ごめんなさい…コードはこちらで管理しています。
https://github.com/bifree-llc/ciel-app今回はterraformのインストール、バージョン設定について記事にしていきます。備忘録、みたいな意味合い強いのでGithub actionsに触れてねえじゃねーかというクレームは追々…。
## 環境
macOS Monterey version 12.3.1
Homebrew 4.1.2## tfenv設定 (terraform初見さんはこちらから)
tfenvはTerraformのバージョンマネージャーで、簡単にバージョンの切り替えが可能となる。Homebrewでtfenvをインストールします。
※Homebrewのインストール方法は、こちらを参考に。
AWS Signerを使って既存のLambda関数をコード署名してみた
## これは何?
最近ですが[AWS Signer](https://docs.aws.amazon.com/ja_jp/signer/latest/developerguide/Welcome.html)によってLambdaなどにコード署名をくわえることができるるのか検証する機会があったので、今回はその検証した内容についていろいろ記載していきたいと思います。シナリオとしては、未署名のCloudformationで管理しているLambda(Python3.11)関数を、コード署名するまでの流れを検証してみました。
## 1. 事前準備
コード署名の設定していない関数をコード署名を有効化し、コードの改竄防止を確認しようと思います。
この章では、事前準備としてコード署名設定をしていないLambda関数の作成までをしようと思います。### フォルダ構成
Cloudformation を用いてデプロイしようと思うため、以下のようフォルダ構成になります。
“`
./
├── event.json
├── function/
│ └── main.py
└── template
【備忘録】AWSのセキュリティ対策について学んだことまとめ ~検知編 ログによる異常の検知~
今回はログ記録によるセキュリティ異常の検知方法についてまとめていきます。
インフラ編では不正アクセスの防止策、リソース編では侵入後の盗用防止策を記載していましたが
ログによる検知では不正な操作を監視することで早期発見につなげます。## CloudTrail
AWSユーザーやロール、サービスから実行された操作APIをログに記録してくれるサービスです。
AWS上で「いつ・何に・誰が・何をした」を記録してくれるので内部不正操作の監視に
役立ちます。
管理イベントとデータイベントがあり、管理イベントはリソースの作成や削除、
データイベントはリソースに対して行った操作を記録するためそれぞれ作成が必要です。
例としてS3のオブジェクトを削除したことを記録したければ
データイベントを作成する必要があります。
S3バケットを削除したことを記録するのはデフォルトで作成されている管理イベントから
確認可能です。後述するCloudWatchLogsと連携することで勝手にS3バケットやオブジェクトを
削除した時にアラートを設定して通知することができます。## CloudWatch
実に多くのAWSサー
【備忘録】AWSのセキュリティ対策について学んだことまとめ ~リソース編 リソースの暗号化~
今回はリソースの暗号化についてです。
AWSには保存しているリソースが外部から不正アクセスされたとき
内容が暗号化によって権限がない人が見れないようにする仕組みがあります。例としてS3, DynamoDB, Systems Managerのパラメータストア, Lambdaの環境変数などで
保存した値を暗号化することができます。
詳しくは以下で説明します。## S3
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3522793/e1e36d2d-8d20-7b17-7375-143f91b93ed6.png)
バケット作成時に暗号化のタイプを選択することができます。
以下、公式サイトから2023年1月5日以降はデフォルトで
バケットが暗号化されるようになったとあります。
以前は暗号化しない選択もできたようです。
ちょっと注意なのは、2023年1月5日より以前にバケットの暗号化をなしに設定していた場合は
既存のバケットの中のオブジェクトは暗号化されていないようです。
ただし既存のバケ
API GatewayのJWTオーソライザーでGoogle IDトークンを検証してみた
– toCアプリの認証認可ソリューションを選定する場合、OpenID ConnectやOAuth2.0等の技術を利用したソーシャルログインの実装が候補に上がることが多いのではないでしょうか。
– 今回はAmazon API GatewayのJWTオーソライザーを利用して、Googleアカウントで認証済み利用者への認可処理を実装してみました。## 環境構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3562653/38d33f32-8cac-43de-f8b1-f830ff5c978f.png)## 設定手順
### Google OAuth 2.0をセットアップする
※事前にGoogle Cloud Platformでプロジェクト作成が完了していることを想定しています。
– Google Cloud Platformの「APIとサービス」にアクセスします。
– 左メニューから「認証情報」を選択した後、「認証情報を作成」を押下します。
![Untitled.png](ht
【備忘録】AWSのセキュリティ対策について学んだことまとめ ~インフラ編④ Lambdaにおけるアクセス制御~
今回はAWSのサーバレスサービスを利用したインフラの構築におけるセキュリティについて
記事を書いていこうと思います!
Lambdaにおけるセキュリティについてのみの投稿のため基本的な
Lambdaの実装方法については記載しないのであしからず。# Lambdaとは
まず、基本的なことですがLambdaとはAWSが提供する
サーバーレスコンピューティングサービスです。
[前の記事](https://qiita.com/Yukimaru_Rutla/items/6325db36b7584b7d3730)ではEC2インスタンスを構築したネットワーク環境に配置して
管理していましたが、Lambdaは自前でアプリを動かすためのサーバーの構築や運用を
AWSに任せてクラウド上に作成したプログラムさえ置けば動かすことができる優れものです!
初めて触ったときは概念の理解がイメージしにくかったのですが触れば
とても便利なものと分かります。# サーバーレスにおけるセキュリティとは
前述で説明したようにサーバレスとはサーバーの構築・管理の一斉をクラウドサービスに
お任せできるため物理的な管理は不要にな
CloudWatch LogsのログをKinesi経由でS3に転送する
# この記事でやること
CloudWatchLogsへ出力されたログをKinesis Data Firehoseを使用してS3へ転送する仕組みを構築する。こちらの記事の続きでやっていきます。
https://qiita.com/jun_aws/items/5e0d44067a0db0ccd664
# 前提
– CloudWatch Logsへログは転送済み
– Kinesis Data Firehoseを使用してログをS3に転送する
– CloudWatchLogsのサブスクリプションフィルターを設定する# 実施手順
– ログ保管用バケットを作成
– Kinesis用IAMロールを作成する
– Kinesis Datafirehoseを作成
– CloudWatch Logsのサブスクリプションフィルターを作成&設定する
– S3にログが転送されているか確認する## S3バケットの作成
以下バケットを作成しました。
設定はデフォルト設定にしています![Screenshot 2023-09-24 at 17.21.44.png](https://qiita-image
[Terraform] Trivyでセキュリティスキャンをしよう!
## はじめに
今回は[Trivy](https://github.com/aquasecurity/trivy)をterraformのCIツールとして導入します。[Trivy](https://github.com/aquasecurity/trivy)はセキュリティスキャンツールです。
[前回の記事](https://qiita.com/bkend_2/items/95b3082f7216788f3d20)で[tfsec](https://github.com/aquasecurity/tfsec)を紹介させていただきましたが、そのリポジトリ内ではこのような表記があります。> Going forward we want to encourage the tfsec community to transition over to Trivy. Moving to Trivy gives you the same excellent Terraform scanning engine, with some extra benefits:
[docs/index.md](https
AWS認定全冠(12冠)になったけどあんまり達成感はない。
2023年2月にMLSを受け、それがきっかけで月に1~2個のペースで他の認定資格を取り続け、9月にAWS認定全冠を達成しました。
![スクリーンショット 2023-09-24 17.12.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569054/7e578542-3e1b-8b76-79a4-47a6c8da0859.png)
資格取得に集中しすぎて仕事に影響が出ないよう、バランスを保つことに努めました。結果として、DBSやDOPなどの資格は業務に直接活かすことができ、非常に効率よく学習を進めることができました。AWS認定全冠はもはや珍しいことではありませんが、私の経験が皆さんの参考になれば幸いです。
# 私の経歴
エンジニア歴4年目。AI研究とインフラ再設計・構築を主に担当しており、アプリケーション開発(フロントエンド、バックエンド)もたまに行っています。
今の会社で働いてちょうど1年くらいになるのですが、前職までは主にモバイルアプリの開発をやっていました。
SQSやS3などの一部のAW
AWS DOP-C02に受かるために使ったもの
# 想定読者
* 既にある程度AWSの知識・経験があり、アウトプット中心で勉強をしようと思っている方
* 勉強のやり方、適切な期間、といった情報は求めていない方# 使ったもの
## 模擬試験私が使った模擬試験は以下になります。
* \[公式\] [AWS DOP-C02 試験問題サンプル](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-devops-pro/AWS-Certified-DevOps-Engineer-Professional_Sample-Questions.pdf)
* \[公式\] [AWS Skill Builder – AWS Certified DevOps Engineer – Professional Official Practice Question Set (DOP-C02 – Japanese)](https://explore.skillbuilder.aws/learn/course/external/view/elearning/117/exam-re
EC2(Ubuntu)にCloudWatch Logsエージェントを導入しログ出力するまで
# この記事でやること
EC2インスタンス(Ubuntu)にCloudWatch Logsエージェントを導入し、コンソール上でロググループを確認する。# 実施手順
– EC2(Ubuntu)インスタンスを用意する(パブリックアクセス有効)
– EC2に適切なIAMロール作成&を割り当てる
– CloudWach Logsエージェントを導入する
– 設定ファイルを確認する
– AWSコンソール上でログ出力を確認する## EC2(Ubuntu)インスタンスの用意
作成環境まずはEC2インスタンスを用意します。
– VPC:192.168.0.0/16
– サブネット
– パブリックサブネット:192.168.2.0/24
– AMI:Ubuntu Server LTS22.04
– セキュリティグループで22と443を開放しておく作成成功、SSH接続ができることを確認しました。
![Screenshot 2023-09-23 at 17.12.30.png](https://qiita-image-store.s3.ap-northeast-1.amazona
Lightsailについてまとめてみた
Lightsailについて色々まとめてみました。
## この記事で紹介する内容
– 顧客にAWS Lightsailを提案したい方
– Lightsailのユースケースを把握したい方## Lightsail とは?
Lightsailとは以下のようにAWS クラウドに常駐する仮想プライベートサーバー (VPS)であり、EC2のように自前でネットワーク環境を整備する必要なくサーバをホスティングできるサービスになります。
EC2と比較し費用対効果が高く素早く環境を構築できるため、
〇〇をすぐ使ってみたいといった方におすすめとなります。https://aws.amazon.com/jp/lightsail/features/
> Lightsail インスタンスは AWS クラウドに常駐する仮想プライベートサーバー (VPS) です。Lightsail インスタンスを使用して、データの保存、コードの実行、ウェブベースのアプリケーションやウェブサイトの構築が行えます。インスタンスは、パブリック (インターネット) とプライベート (VPC) ネットワーキングの両方を通じて、相互接続や
AI コード支援機能をサービス、ローカルで構築して比較してみる
## はじめに
サービスは「Amazon CodeWhisperer」、ローカル LLM は「Code Llama」を対象に AI コード支援機能を環境から構築し、両者のメリデメを比較してみます。### 想定読者
以下の要望がある開発者向けです。ローカル LLM は Mac ユーザー向けに
– 無料で手軽に AI によるコード支援を試してみたい
– ネットワークがない環境でもコード支援を動かしたい
– NVIDIA GPU がない Mac でも AI を動かしたい### 選定理由
無料で手軽が大前提、かつコード支援を行う以上は VSCode 上で動作すること。
– **Amazon CodeWhisperer**
https://aws.amazon.com/jp/codewhisperer/
– 大規模事業者サービスであること
– サービス基盤の堅牢性、ネットワーク応答性、サービスの長期継続性を見込めるため
– 商用利用可能
– データ収集のオプトアウト
– **Code Llama**
https://about.fb.com/news/20
AWS S3 Glacierにある大量のアーカイブを全部消す
# はじめに
そもそもそんな操作をする事は無いのでしょう。
単純なワンライナーですが長いのでメモ。# いきさつ
Synology製NASには[Glacier Backup](https://kb.synology.com/ja-jp/DSM/help/GlacierBackup/help?version=7)というNASのディレクトリをS3 Glacierにバックアップするアプリがあります。
自宅NASのバックアップ動作確認で不要になったボールトを削除する事になり、本来であればNAS側からボールト削除操作を実行するべきだったのですが・・・
パソコン初心者なので、誤ってAWS側のアクセスキーを先に削除してしまいました。(本当は深夜飲酒中にシステム操作したせいです。)
別のアクセスキーを再登録してもNAS側操作はエラーとなり、仕方なくCLIから操作する事にしました。
しかし、ボールトを削除するためには格納されているアーカイブを全削除しなければならず、アーカイブの総数は10000件以上もあったのです。リファレンスのように手動ではやってられません。# 結論
– 生成したアーカイブリスト
aws-saa対策
## 対策
わからないことをざっくりまとめます。### プライベートサブネット上のインスタンスのインターネット接続
以下の対応を行うことで、プライベートサブネット上のインスタンスとインターネットの接続経路が確保される
1. 共存するサブネット内のパブリック上にNATゲートウェイを構成
2. カスタムルートテーブルを定義、インターネットトラフィック用にアプリケーション層のプライベートサブネットへ関連付けする。※ルートテーブル、サブネットが別のサブネットやインターネットと通信するためにはルートテーブルの作成、およびアタッチ(紐づけ)が必要
—
### EC2インスタンスのステータス
1. 休止:インスタンスのサスペンド。メモリも保存される。
→(メモリ上に保管されているデータをルートEBSボリュームに格納されたファイルに保存して、一時停止前の状態を保持)
2. 停止:インスタンスのシャットダウン。
3. 終了:インスタンスの削除。起動や接続は不可能。※メモリデータの保持が必要で、かつ(EBSとEIPを除いて)費用を軽減したい場合ソリューションの際は「休止」ステータスを
S3EventからLamdaコンテナを動かす
## 今回やること
S3 EventでLambdaジョブ(コンテナ)を実行させる– 入力: csvファイル
– 出力: jpgファイル![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54100/7a32469d-334a-41d1-b160-bf8499f80922.png)
### やりたかったこと
S3のPutObjectに応じたS3イベントを使って、
Python(Maplotlib/Pandas)を動かして、生成物を再度S3へ保存。#### 経緯
– S3 EventとLambdaを組み合わせて簡単に作ろうとした。
– Maplotlibのボリュームが大きく、レイヤーの容量上限250MBにどうしても入りきらない。
– Lmadaコンテナを使う## やってみる
やった結果:
https://github.com/bd8z/s3event
### Step1 S3イベントの確認する
print(event)だけするLambdaとS3インベントをつないで、
実行
AWS Solutions Architect – Associate(C03) 合格奮闘記
# なんで取るの?
今働いてる会社で古くなったアプリケーションを更改する予定があり、インフラ側も新しく見直そうという機運が高まっている。
今はMicrosoft Azureだが、聞くところによるとAWSの方が障害が少ないらしい。
個人的な印象では、GithubとのCI/CD連携でPushしてもなかなか反映されなかったり、ログの表示がおかしいことがあるので、そういう地味に嫌なところがなくなったら良いな、と思っている。
あとはこんなものを見つけてしまったので、将来のキャリアも含めて無いよりはあった方が良いか、という感じ。50%オフはでかい。
https://pages.awscloud.com/jp-traincert-certification-challenge-associate-2023-terms-and-conditions.html# どうやって勉強するの?
とりあえず今はひたすらCloudTechさんの動画見まくってます。こ
EB CLIを使って、Elastic Beanstalkでコンテナを動かす
# はじめに
前回、Elastic Beanstalkをコンテナから作ることを、コンソールから行いました。https://qiita.com/a_b_/items/351b4442e676e3c46380
今回はEC CLIから行ってみました。
# 概要
– 以下の2つの手法がある。
– ECRにコンテナをPUSHし、URIを記載した設定ファイル`Dockerrun.aws.json`を、Elastic Beanstalkに渡して実行
– Dockerファイルやソースファイルを直接使用
– 今回は公式のサンプルと、いつも作ってるplumberのコンテナの2つをデプロイする。
– サンプルは、Dockerファイルやソースファイルを直接使用
– plumberのコンテナは、Elastic Beanstalkのデプロイ中にビルドするとタイムアウトになるため、ECRにPUSHする方法を使用# やってみた
環境はCloud9(t3.small)でやっています。
“`
$ python -V
Python 3.7.16
“`
Pythonの