AWS関連のことを調べてみた2022年05月22日

AWS関連のことを調べてみた2022年05月22日

Terraform でTrivy の脆弱性スキャンとSecurity Hub を統合したCIを構築する

# はじめに
本記事では、Trivy によるコンテナイメージの脆弱性スキャンとSecurity Hub を統合したCI(Continuous Integration)環境を構築するTerraform のコードをサンプルとして共有しています。コンテナイメージのセキュリティ対策の一例として参考になればと思います。

また、補足として、CodeBuild のビルド内のTrivy に関する処理について、簡単に説明をしています。

# Terraform で構築する全体構成図

# 構成の概要

https://aws.amazon.com/jp/blogs/security/how-to-build-ci-cd-pipeline-container-vulnerability-scanning-trivy-and-aws-securit

元記事を表示

【公式ハンズオン和訳】Node.js+PrismaをServerless Frameworkを使用してAWS Lambdaにデプロイする

:::note
この記事は、Prisma公式の「Deploying to AWS Lambda」の和訳(意訳)です。
翻訳元とライセンスについてはページ下部に記載しています。
:::

このハンズオンでは、Serverless Frameworkを使用して、AWS LambdaにサーバレスなNode.jsのREST APIをデプロイする方法をお伝えします。

AWS LambdaはAWSのサービスの一つで、これを使うとサーバ管理不要のサーバレス環境でコードを実行できます。一方で、REST APIをLambdaにデプロイするためには、S3でファイルをホスティングしたり、API GatewayでAPIをHTTPで公開する必要もあります。

Serverless Frameworkを使えば、CLIでワークフローを自動化し、AWSリソースのプロビジョニングも行うことができます。

今回作成するREST APIでは、Prisma Clientを使用してデータベースのレコードの取得・作成・削除を行います。具体的には、それぞれの関数はRESTリソースのエンドポイントを表し、Prisma Client

元記事を表示

AWS日記41 (AWS CodeArtifact)

# はじめに
今回は [AWS CodeArtifact](https://aws.amazon.com/jp/codeartifact/) を試します。
[コンソールを使用した開始方法](https://docs.aws.amazon.com/ja_jp/codeartifact/latest/ug/getting-started-console.html)を参考にします。
確認のため [CodeBuild](https://aws.amazon.com/jp/codebuild/) で CodeArtifact の npm パッケージを使用します。

# CodeArtifactのリポジトリ・ドメイン作成

![01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586707/7d5a09ee-c7b8-a7f4-be5f-8ccb0d058fbd.jpeg)

![02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

devcontainerのベースをAmazon Linuxにする

devcontainer便利ですよね。
私はいつもUbuntuのイメージを選択していますが、ふと、Amazon Linuxにできないか試したくなりました。

# 普通に作ったUbuntuのベースイメージ

ベースイメージは`ubuntu:20.04`ではなく、devcontaier用にカスタマイズされているようです。

“`Dockerfile:.devcontainer/Dockerfile
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.234.0/containers/ubuntu/.devcontainer/base.Dockerfile

# [Choice] Ubuntu version (use ubuntu-22.04 or ubuntu-18.04 on local arm64/Apple Silicon): ubuntu-22.04, ubuntu-20.04, ubuntu-18.04
ARG VARIANT=”jammy”
FRO

元記事を表示

QuickSight 分析者権限の料金体系

# はじめに

株式会社オズビジョンにてエンジニア8年目のテラシマユウコ (@terra_yucco) です。
通常開発の他、オフショア開発のブリッジエンジニアや運用保守作業、企画のためのデータ出しなども担当させてもらっています。
(ここまでテンプレ)

社内の分析基盤を着々とLookerからQuickSightに置き換えていっていますが、その中で「閲覧権限もらってるけど分析権限がほしい」「プロジェクトが変わるので分析権限はもういらない」という声があり、その都度アカウントの最適化を行っていました。
ですが、月中で作業をした場合の料金体系がわかっておらず、サポートへ問い合わせたのでその結果をメモしておきます。

# 料金体系
## アカウント作成(分析権限所持者の追加)

– 追加した日時を元に、使用量を按分して請求
– 開始時に1時間単位での課金となり、月額料金をその月の総時間数(5月であれば24時間*31日=744時間)で割った金額

## アカウント削除

– 課金終了のタイミングは月末締め
– 月末まで日割りなしで1か月分の料金が発生

# 所感

アカウント削除は月末まで引っ張

元記事を表示

【初心者向け】インフラの基礎からAWSを学ぶ①

# 前提
・Udemy動画でAWSの勉強をしているのですが、そのメモ書きとなります。

# インフラの基礎知識
エンジニアの現場では当たり前のように使われるワードの定義を、改めて学び直しました。
何となく知っているつもりになっていたけれど、人に説明してと言われると難しかったりする。。

#### インフラとは?
・システムやサービスの土台となるもの。
・主にサーバーとネットワークで構成される。

#### サーバーとは?
・ユーザー(クライアント)に対してサービスを提供する側のコンピュータのこと。
・Webサーバー、DBサーバーなど、役割によって名前が変わってくる。

#### クライアントとは?
・サーバーにサービスを依頼し、情報を受け取る側のコンピュータのこと。
・クライアントと言われたら、個人が扱うパソコンやスマホをイメージすれば、大体意味が通じると思う(文脈によっては変わるかも?)

※サーバーもクライアントも、全てコンピュータ。コンピュータは与えられる役割によって呼び名が変わる。文脈によって微妙に意味が変わってくる厄介な言葉なので、注意しましょう

Raspberry Pi Zeroを使ってAmazon Kinesis Video Streamsにカメラ映像送信 (2)

# 1. 概要
Raspberry Pi Zeroを使ってAmazon Kinesis Video Streamsに送信したカメラ映像をWebブラウザで再生していると停止してしまう現象を調べる。ついでに、フレームレートが指定通りでないように見える件も調べる。

# 2. 前置き
前の記事でKinesis Video Streams(KVS)にカメラ映像を送信できることを確認した。この方法を確かめた知人が2時間くらいクライアントで映像再生していると停止してしまうと連絡があり確かめることにした。また、フレームレートが安定していないとも言っていた。

前記事

https://qiita.com/tetsuoMikami/items/d9fa860cab026ba36690

## 2.1 使用機器
* Raspberry Pi Zero WH
OSはBuster(Debian 10)
* UVCカメラ: Buffalo BSW500M
* USB HUB(カメラ以外にキーボードやマウスをつなぐ場合)
* 再生用クライアント(これは知人が指定してきた)
https://aws-sam

Lambdaで絶対にエラーならないレイヤーの作成方法

# 背景
Lambda関数でS3のファイルをSFTPサーバへ転送したいです。調べたところ、paramikoライブラリーの利用を決めたより、Lambdaのparamikoレイヤーを作成する必要があります。

# 現象
requestsライブラリーなどのレイヤーを作成した方法のように、「`pip install paramiko .`」コマンドを使って、ライブラリーをインストールして、Zipファイルを圧縮して、レイヤーを作成しても、関数でparamikoを使う時にエラーになります。
原因を推測すると、paramiko自分自身の依頼が複雑で依頼しているライブラリーはLambdaの後ろに存在するEC2サーバ上にはインストールしてないかと思っていますね。なせならば、コマンドを実行する端末環境はLambda後ろのEC2サーバと違うでしょう。

# 解決方法

### 1、ローカルにDocker をインストールする

[Docker Download and install](https://docs.docker.com/desktop/#download-and-install)を参照してくださ

共有ライブラリについて

ec2にsqliteの新バージョンをインストールした後、pathを通す際に出てきた共有ライブラリというワードにて調べてみました。

# そもそもライブラリとは
 ・よく使う機能をまとめたもの
 ・プログラム(lsコマンド等の実行ファイル)から利用できるようにしたもの

 ※実行ファイル
  ┗/usr/bin/ls等

# ライブラリの種類
 ・静的ライブラリ
  ┗実行ファイル内に埋め込まれているライブラリ
  ┗実行ファイルごとにライブラリが重複してしまうデメリットがある
  ┗拡張子「lib○○.a」
  
 ・共有ライブラリ
  ┗実行ファイル内に埋め込まないライブラリ
  ┗左記などに配置されている: /usr/lib64
  ┗拡張子「lib○○.so.○○」

# 実行ファイルが必要とする共有ライブラリを確認する方法
 ・lddコマンドを使用する

“`
root:~/environment (master) $ ldd /usr/bin/ls
linux-vdso.so.1 (0x00007ffe847f0000)
libselin

ECRのコンテナイメージを再ビルドし、別アカウントのECRにプッシュするシェルを作成してみた

# はじめに

– 検証用環境で確認済のECRイメージを他環境に展開する際、**設定ファイルを上書きした状態でプッシュする必要のある**場面がありました。
– その為、以下を実施するシェルを作成しました。
– 元となるECRのイメージをプル
– イメージを基にコンテナを起動し、設定ファイルを上書きして保存
– 新規作成したコンテナイメージを別環境のECRにプッシュ

### 動作準備
– アカウントA(元となるECRイメージ)、アカウントB(ECRイメージのプッシュ先)が必要
– EC2を用意(アカウントB側)
– EC2にDocker、aws-cliのインストール
– EC2のIAMロールにECRからプルできる権限を付与
– アカウントA側のECRのパーミッションの設定(アカウントBからのプルを許可)

## 使い方
以下のシェルを叩く想定です。
シェルの引数としてECRのイメージURIを渡します。

“`
/bin/sh container-rebuild.sh ECRのイメージURI
“`

## シェル詳細

“`container-rebuild.sh
#

AWS Aurora PostgreSQL 使ってみた

# 初めに

Aurora を使う機会があったので自分なりに触ってみたことのメモです。

# データベースの作成

マネジメントコンソールから「データベースの作成」をクリックし、作成方法とエンジンのタイプを選択します。エディションは PostgreSQL 互換を選択します。

![create-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/883f241c-37ce-e45a-2288-14e409155083.png)

エンジンバージョンは最新の 13.6 を選択します。検証用なのでテンプレートは「開発/テスト」を選択します。

![create-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/c234f52a-52fc-05ec-f4b6-2f085bf377bb.png)

以下、必要な情報を入力します。認証情報はログイン時に必要になります。

![create-3.png](h

【Redshift】データ共有を試してみた

# 背景・目的
Redshiftのデータデータ共有を使う機会があったので、このタイミングで知識と手順を簡単に整理します。

# まとめ
– データ共有は、データは共有しコンピュートは分割する。
– ワークロードの分離や、組織間のコラボレーションに効果的

# 概要
## データ共有とは?
使用すると、読み込み目的でRedshiftのクラスタ間でライブデータを安全、かつ簡単に共有できるとのことです。

## ユースケース
以下のユースケースがあります。
– 様々な種類のビジネスクリティカルなワークロードのサポート
– 複数のBIクラスタや分析クラスタとデータを共有する一元的なETLクラスタを使用する。
– 個々のワークロードに対して読み込みワークロードの分離とチャージバックを提供する。
– 料金とパフォーマンスのワークロード固有の要件に応じて、個々でコンピューティングサイズとスケーリングを行える。
– (ETL専用クラスタと、アドホッククエリ用のクラスタなど)
– クロスグループコラボレーションの有効化
– チームやビジネスグループ間でシー

Lambda から直接ステータスコードを返す

# 問題
こんな感じで ステータスコード 400 を return する Lambda を書くとする。

“`jsx
exports.handler = async (event, context) => {
let response = {
statusCode: ‘400’,
body: JSON.stringify({ error: ‘Bad Request’ }),
};

return response;
};
“`

しかし、API Gateway を介してこの Lambda にアクセスしてみると、なぜかステータスコード 200 が返ってくる。
これは Lambda のレスポンスが API Gateway によりラッピングされてしまうことが原因。
なので、Lambda のレスポンス内容をもとにマッピングテンプレートを利用し API Gateway 側でレスポンスコードを指定する必要があった。
でも面倒なので、Lambda で直接ステータスコードを設定したい。

# 対処
`callback` にレスポンス内容を渡してあげれば中身が

クラウドエンジニア(AWS)の為の基本サービス全容まとめ

# クラウドエンジニア(AWS)の為の基本サービス全容まとめ
CloudTechを主催しているくろかわさんが公開されている記事[クラウドエンジニア(AWS)ロードマップ2021](https://qiita.com/KurokawaKouhei/items/4e9aa3b526f3f233bf85)を読んでみて、抜け漏れている知識もあったので全般で抜け漏れていそうな箇所を学び直した。

# ロードマップ
くろかわさんが公開しているロードマップ画像が非常にわかりやすかった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286094/2f9f4411-3a02-e24d-7073-a554a6ecac69.png)
画像出典:[クラウドエンジニア(AWS)ロードマップ2021](https://qiita.com/KurokawaKouhei/items/4e9aa3b526f3f233bf85)

## 前提知識
■ ざっくり知識
– [WEB全般周りの知識](https://qiit

未経験者がAWSプラクティショナーを取得した感想

未経験ながら今年4月にクラウドプラクティショナーを取得しました!!
これから、AWSに挑戦するぞという方に少しでもお力になればとこの記事を作成しました。

勉強期間
12月〜4月(4ヶ月)
正直、こんなにいらなかったかなというのが感想です。
私自身、今回は締め切りをつけずに自分の力に納得した段階で受けようとしたので結果として4ヶ月もかかってしまいました。
平日1時間:休日4時間ほど確保すれば未経験でも2ヶ月あれば取得できると思います!!

参考書籍
Udemyの以下のものを使って勉強しました。
【2022年版】この問題だけで合格可能!AWS 認定クラウドプラクティショナー 模擬試験問題集(7回分455問)

試験日までにこの問題集を正答率を毎回90%以上が出る状態になるまで繰り返し行いました。

受験感想
Udemyの問題が全く同じものという形ではありませんでした。
しかし、Udemyの問題集を正答率90%まで持っていける状態になれたら問題なく答えられる内容になっているかなと個人的には感じました。

ECRへのPUSHをトリガーにECSのローリングアップデートを行う

# ■Lambda

ローリングアップデートを行うための処理を作成

### ▼Lamdaを作成する際の選択値

| 項目 | 値 |
| — | — |
| name | test ※仮でtestとします |
| 関数の作成 | 一から作成 |
| ランタイム | Node.js 16.x |

### ▼コード

:::note alert
Node.js での現時点でのSDKサポートは v2 になります
※ 最新版を使用したい場合は自身でデプロイを行う必要があります

https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
:::

“`index.js
const aws = require(‘aws-sdk’)

// async は付けないでください
exports.handler = (event, context) => {
const ecs = new aws.ECS({region: event.region});

// 環境変数は「Lambda」の「設定」

Databricks PrivateLink構成における設定確認

Databricksの[PrivateLink構成](https://qiita.com/taka_yayoi/items/1ca54463469df05dd3ee)を組む際、自分でもよく「ワークスペースは構築できたけど、クラスターが起動しない」状況に遭遇するので、その際の確認手順をまとめます。

# 設定の確認

## セキュリティグループ

許可するポートが間違っているケースがあるので[こちら](https://qiita.com/taka_yayoi/items/1ca54463469df05dd3ee#%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97)を参考に適切にインバウンドルール、アウトバウンドルールが設定されていることを確認します。

送信先に自分自身のセキュリティグループを指定した際に警告が出ることがあります。この場合は、一度ルールが空の状態でセキュリティグループを作成してから、再度編集を行なってみてください。

## エンドポイント

EC2 Instance Connectでの接続に挑戦してみた

## はじめに
AWSフルコース22年3月度、第6回の課題まで終了したところ。
VPC内にEC2、RDSを設置し、EC2に接続。さらにEC2からRDSへの接続確認を行う。
というものだった。
で、EC2への接続方法はsshの他に、EC2 Instance Connectを使う手もあるらしい。
ブラウザからEC2に接続できるのって便利じゃん。と思い、挑戦してみることに。
課題とは関係ないけどまあいいや。

## 方針
なるべく公式ドキュメントで頑張る
よく分からないときはQiitaの解説記事などに頼る

## とりあえずやってみた
* まずは接続ボタンを押してみた。繋がらない。
![スクリーンショット 2022-05-20 7.50.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/921126/432fd3f9-2604-6d57-058a-67c8e77ba00e.png)

* 最初は何でダメなのか分からなかったが、[EC2 Instance Connect セットアップ](https://doc

AWS CLFに3日で合格した時のメモ

# 概要
この記事は自分がAWS CLFの試験勉強をする際にとっていた`ノートをそのまま記載しています`

自分が勉強するとき・ノートを取るとき以下のことを意識しているので、よければ参考にしてください
1. まず全体像を掴む(座学、そこまで時間をかけない)
1. 演習問題に取り組み、そこで知らなかった知識をひたすら記述する(答えを見て既に知っていたものは、その単語だけを記載する)
1. 2をひたすら繰り返し、たまにノートを見返す

## 参考教材
https://explore.skillbuilder.aws/learn/course/external/view/elearning/134/aws-cloud-practitioner-essentials?lacp=tile&tile=dt

https://www.udemy.com/course/aws-4260/learn/quiz/4766842/results?expanded=519631452#overview

# CLF対策

> AWSの概要
>
– クラウドコンピューティングのデプロイモデル3種

AWS EC2でCyberChefを動かす

# はじめに

## AWS EC2とは

数分でクラウド上に仮想マシンを立てることができるサービス。

[Amazon EC2(安全でスケーラブルなクラウド上の仮想サーバー)| AWS](https://aws.amazon.com/jp/ec2/)

## CyberChefとは

ブラウザ上でデータに対する様々な操作ができるアプリケーション。

[CyberChef](https://gchq.github.io/CyberChef/)

# AWS EC2でCyberChefを動かす

## EC2インスタンスを起動する

今回は以下の設定でEC2インスタンスを起動します。
詳しいやり方はここでは省略するので、必要に応じて各自調べてください。

* 名前
* 適宜設定する (例えば `CyberChef`)
* アプリケーションおよびOSイメージ
* Amazon マシンイメージ (AMI):Ubuntu Server 22.04 LTS (HVM), SSD Volume Type
* アーキテクチャ:64 ビット (x86)
* インスタンスタイプ
* **