AWS関連のことを調べてみた2023年03月07日

AWS関連のことを調べてみた2023年03月07日
目次

AWS Hands-on for Beginners 手を動かしなら学ぶ Analytics サービス入門:学習メモ

## はじめに

AWSハンズオン for Beginnersシリーズとして提供されている「[AWS Hands-on for Beginners 手を動かしながら学ぶ Analytics サービス入門](https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Analytics-2022-reg-event.html?trk=aws_introduction_page)」を実施した際のメモです。
データを活用する目的は、ビジネスの意思決定をするためです。
データ量が少なければ、表計算ソフトなどで可視化可能ですが、大容量となるとデータレイク、データウェアハウスなどを構築する必要が出てきます。
本ハンズオンでは、AWSのデータウェアハウスサービスであるAmazon Redshiftを使用し、データのロードをしたり、クエリを発行して結果を受け取ることを試してみます。また、Amazon QuickSightを使用して、Redshift内のデータの可視化も行います。

## アジェンダ

1. 今回のハンズオンで構成する

元記事を表示

【AWS】AWS Lambdaで外部モジュール(ライブラリ)を含むPythonをzipデブロイする方法

## 背景
– [AWS Lambda](https://aws.amazon.com/jp/lambda/)で`Python`を実行する際、[pandas](https://pandas.pydata.org/)などの外部ライブラリは`Lambda`に事前に`install`されていないため、いずれかの方法で`Lambda`に外部ライブラリ等を`install`させる必要があります。
– 私が知る限りでは、[AWS Lambda](https://aws.amazon.com/jp/lambda/)で`Python`を実行する際に、外部ライブラリを使用できるようにする方法は以下の3つです。
1. [Lambda レイヤー](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invocation-layers.html)を使用する方法。
2. [zip デブロイ](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-package.html)を用いる方法。

元記事を表示

PyhonでChatGPTのLineBotを作る

### TL;DR
流行りに乗ってChatGPT(本当はOPENAIのgpt-3.5-turboエンジン)のWebAPIをたたくLineBotを作る
ほぼ、下記記事の劣化焼き直し
https://zenn.dev/umi_mori/articles/chatgpt-api-python
https://chatgpt-lab.com/n/n55257c082a9d

### OPENAIキーの発行方法
下記の通り。ただし、https://openai.com/api/はproductのページへリダイレクトされてしまう
https://platform.openai.com/account/api-keys などにアクセスする
https://zenn.dev/umi_mori/books/chatbot-chatgpt/viewer/how_to_use_openai_api#api%E3%81%AE%E7%99%BA%E8%A1%8C%E6%96%B9%E6%B3%95

### LineDeveloper登録
下記などを参考にする。
https://chatgpt-lab.com/

元記事を表示

【AWS】Codedeployのタイムアウトエラーにより「置き換えタスクセットのデプロイ」が一向に終わらない件の対応方法

# エラー内容
* AWS Codedeployを実施したところ、以下のエラーが表示されてしまった。
* 以下は1時間待った場合。「ステップ1. 置き換えタスクセットのデプロイ」が33%のところで止まってしまい一向に進まなくなる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710373/f3ae5911-1bac-6ce4-f301-0b59e4397404.png)

“`
The deployment timed out while waiting for the replacement task set to become healthy. This time out period is 60 minutes.
“`

## 前提
* AWS Codebuildの実施(Image作成)は成功している
* デプロイ方法は、ブルーグリーンデプロイメントの手法をとっており、以前はこのやり方でデプロイが成功していたが、最近実施したらできなくなっていた

## 結論
*

元記事を表示

エイリアスを使って AWS CLI の Profile 切り替えを楽にしてみた

## はじめに
AWS CLI を使って AWS リソースを操作する場合、複数の AWS アカウントやリージョンに対応するために、IAM ユーザーの認証情報を設定する必要があります。そのため、毎回認証情報を指定するのは手間がかかりますが、本記事では、プロファイルを使用して AWS CLI をより便利に使うための設定方法を紹介します。

## 複数のプロファイルを設定する
~/.aws/config ファイルに複数のプロファイルを設定することで、複数の IAM ユーザーの認証情報を管理できます。
また、リージョンや出力形式など、各プロファイルごとに異なる設定をすることも可能です。
例えば、複数の AWS アカウントや、IAMユーザーの権限を切り替えて作業しなければならない場合などに有効です。

“`sh
[profile profile1]
region=ap-northeast-1
output=json
[profile profile2]
region=us-west-2
output=json
“`

## 認証情報を設定する
~/.aws/credentials ファイルに

元記事を表示

API Gateway JWT Authorizerメモ

## JWT Authorizerとは

* クライアントが API リクエストとともに送信する JWT を検証するAPI Gatewayの認証機能

* トークンの検証、およびオプションでトークン内のスコープに基づいてリクエストを許可または拒否する

## JWT Authorizer 認証の流れ

![jwt_authorizer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586535/9a35b872-f731-9cc9-c6ca-f16098fa61e1.png)

1. トークン発行者(認可サーバー)によって提供されるJWT形式のトークンを含んだHTTPリクエストが行われる

2. API Gatewayがリクエストを受信し、API Gatewayは検証のためにトークンをJWT Authorizerに渡す

* `identitySource` に指定されたトークンを取得する

* `identitySource`にはトークンのみを含めるか、`Bearer `

元記事を表示

RouteTableにprefixlistを登録する方法① boto3編

# 初めに
基本的にCloudFormationを使用してIaCを管理しているのですが、
なんと、、、
CloudFormationでは、PrefixlistをRouteTableに登録することができないとのこと。
参考:[AWS::EC2::Route support for DestinationPrefixListId](https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/572)

CloudFormationでPrefixlistの作成はできるのに、RouteTableに登録できないなんて、、、と思っていても仕方ないので、
(実装時期も未定らしい。)
代案方法をまとめたいと思います。

今回は、**boto3**になります。

:::note info
ちなみに、下記ツールならRouteTableにPrefixlistを登録することはできそうです。
– AWS CLI
– SDK
– boto3
– Terraform
:::

### boto3とは?

>参考:Chat

元記事を表示

Amazon SageMaker Canvas のモデル持ち込み機能 (BYOM) を掘り下げる

# はじめに

みなさんこんにちは。このブログでは、2022年12月 (re:Invent直後) に発表された SageMaker Canvas の新機能である、モデル持ち込み機能 (BYOM; Bring Your Own Model) について深ぼってみたいと思います。

# SageMaker Canvas について

SageMaker Canvas について詳しく説明するのがこのブログの趣旨ではないので手短に。
SageMaker Canvas は、いわゆる no-code の機械学習のサービスです。データを準備すれば、簡単な前処理、モデルの学習、学習したモデルの分析(混合行列見たりなど)、そして推論(リアルタイムもバッチも両方)を **コードを書かずに** 実現することができます。
コードを書かなくても良いことがポイントなので、想定しているユーザーは、非エンジニアや、エンジニアだが手軽に機械学習を回したい方々ですね。

SageMaker Studio (Canvas ではなく) がチョットワカル人向けですが、SageMaker Canvas のインフラ部分は SageMa

元記事を表示

AWS リソース取得

“`
import boto3
import json
import os

# AWS Config クライアントの作成
config_client = boto3.client(‘config’, region_name=’ap-northeast-1′)

# 出力したいリソースのリスト
resource_list = [‘AWS::RDS::DBInstance’]

# AWSアカウントIDの取得
sts_client = boto3.client(‘sts’)
account_id = sts_client.get_caller_identity().get(‘Account’)

# リソースキーの取得
resource_keys = []
for resource_type in resource_list:
response = config_client.list_discovered_resources(resourceType=resource_type)
for resource in response[‘resourceIdentifier

元記事を表示

GitHubのSecret scanning alertsを有効化してセキュリティリスクを低減する

# はじめに
本記事はGitHubのSecret scanning alertsについて記載しています。

2023年2月28日、GitHubのブログで[Secret scanning alerts are now available (and free) for all public repositories](https://github.blog/2023-02-28-secret-scanning-alerts-are-now-available-and-free-for-all-public-repositories/)が公開されています。

上記ブログの情報を踏まえて、Secret scanning alertsがすべてのパブリックリポジトリで無料で利用できるようになりました。

従ってSecret scanning alertsを有効化することで、code, issues, description, and commentsに関するクレデンシャル情報が漏洩した場合、アラートを通知することができます。

## Secret scanning alertsの設定
Secret

元記事を表示

Serverless Framework(CloudFormation)でAPI GatewayのAPIキーを差し替えるためにデプロイが2回必要だった話

# 概要

「Serverless Framework(以下Serverless)で構築したシステム」のAPI GatewayのAPIキーをローテーションするというミッションがありましたが、デプロイを二段階で行う必要があったため備忘として経緯と解決方法をまとめます。

# 経緯

## 構成

![old-api_key.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8002/cfbd1344-3409-02a9-91a9-41bc8649cec8.png)

図のとおりAPIキーの値はAPI Gatewayによる自動生成機能を使わず、SSMパラメータストアに保管している文字列を取得して設定するようにしています。

## やろうとしたこと

今回はいくつかの事情があり、一時的に新旧のAPIキーが並存する期間を設けることにしました。

– 新しいAPIキーは古いAPIキーとは異なる名前で作成する
– ローテーション対象の古いAPIキーはすぐに削除せず残しておく
– 一定期間経過した後古いAPIキーを削除す

元記事を表示

Cloud FormationでIP固定EC2のWindowsサーバーを起動し、リモートデスクトップでアクセスする方法

# はじめに
当記事はAWSのCloudFormationを用いてIPを固定したWindows Serverを立ち上げる方法を示しています。
AWS初心者が書いているので間違いやアドバイス等ございましたら指摘していただけると幸いです。

なお、当記事は大いに以下の記事様を参考に書かせていただいております。
[AWS CloudFormationでEC2を構築](https://qiita.com/tyoshitake/items/c5176c0ef4de8d7cf5d8)

# インフラ構成図
インフラ構成図は以下の通りです。
パブリックサブネットにWindows ServeのEC2を起動し、そこにElastic IPをアタッチしています。
また、ローカルのPCからクラウド上のWindows Serverへ接続するには特定のIPからのみアクセスできるように制限してあります。

![exlog-ec2-win.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547651/3a522a80-f8d1-e064

元記事を表示

DynamoDBの設計ベスプラ in 公共系

# 0.はじめに
DynamoDB(KVS)のベスプラは、RDBとは異なり正規化をせず、
同一TBLに色んな情報を正規化を極力しない形で、縦に情報をもつこと。

https://qiita.com/_kensh/items/2351096e6c3bf431ff6f

というのを出来なかったので、真剣に考えてみたシリーズのVol.1です。

なお、この記事は、以下の特性でした。

## 案件特性
① アジャイル案件
② 公共案件&ミッションクリティカルであり、要望はお客様がもっている
 = 事業会社やベンチャーのような自分たちの好き放題できない。
  また、データミスが許容されるようなシステムではない。
  ゆえに、トランザクションも必須。
③ 拡張性が要求される。
 ・突発的なアクセス急増に耐えるアーキテクチャ。
 ・要件拡張として、DB設計の着手前に
  アクセスパターンをすべて抽出することは不可能。
④ 性能要求を最重視する。
 ・ターンアラウンドタイム:0.5秒
⑤ 超大量データになる。
 ・年間で最大約7億レコード
⑥ RDBの思想が強いメンバが圧倒的に占めており、KVSのノウ

元記事を表示

Cloud9からRenderへデプロイ

# はじめに
初投稿になります。
プログラミングについて学び始めてから約8ヶ月。超初心者。まだまだわからないことが多いので間違っている箇所があったらそっと教えてください?
ほとんどが引用になっています。

# 環境
– windows11
– cloud9
– rails 6.1.7
– ruby3.1.2
– postgreSQL 9.2.24
– sqlite2 0.5.4
– sqlite3 (1.6.1-x86_64-linux)

# 経緯
PFとしてCloud9のrailsでショッピングサイトのアプリケーションを作成し、AWSを利用したデプロイ完了。
デプロイの自動化を試みたときにIPアドレスで閲覧できていたサイトが見れない状態になっていたため、四苦八苦しながら原因を探るも解決できず。
転職活動が開始できないという問題のため、スピード重視でAWSからRenderでのデプロイを行うことにしました。

# 結果的に
こちらの記事:[Renderによるデプロイ](https://qiita.com/Naaa0/items/8e2ad76e40e3a638ddfc)
この通りにした

元記事を表示

AWS Serverless デジタルバッジを取得する⑤ スケーリング編

[このデジタルバッジ](https://aws.amazon.com/jp/blogs/news/introducing-new-aws-serverless-digital-learning-badges/)取得のために、AWS Skill Builderの[このコース](https://explore.skillbuilder.aws/learn/lp/1585/serverless-learning-plan-japanese)を学習している記録

自分のスキルレベルは以下。
– SAAは取得
– 4年前ぐらい
– 実務利用なし
– 趣味レベルではあり

# Scaling Serverless Architectures (Japanese) (Sub) 日本語字幕版

https://explore.skillbuilder.aws/learn/course/14336/scaling-serverless-architectures-japanese-sub-ri-ben-yu-zi-mu-ban;lp=1585

## 大規模なサーバーレス

元記事を表示

[AWS]ドメインの登録

# Webページが表示される仕組み
私たちが利用するインターネット上には様々なサーバーが接続されており、そのサーバーそれぞれを識別するのに、数字の羅列で表現されるIPアドレスが存在し、それを人が識別するのは少々難しいところがあります。しかし、このIPアドレスをよりわかりやすくするために数字以外の文字などを利用して、人が理解しやすい表現に置き換えるドメインというものがあります。例えば私たちがよく利用する”google.com”のようなものがドメインです。

ドメイン名からIPアドレスを決定する仕組みをDNSと呼びます。DNSサーバーがあるおかげで、私たちはIPアドレスを意識しなくとも、目的のサーバーにリクエストを行うことができます。

まずは、DNSサーバーからWebページが閲覧できる仕組みを見ていきます。

![AWS_DNS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790379/e050bca1-0534-e7cb-1178-930165e8ff42.png)

①まずクライアントがブラウザから

元記事を表示

AWS 初めてのCloud Formation

# 背景
業務の中でDynamoDbの構築を依頼された。最終的なアウトプットとしてCloud Formationとしてほしいと要望があったため、
今回構築ついでに作成手順についてまとめる。

# Cloud Formationとは
ソース/テキストを元にAWSリソースを構築するサービス。
テキスト化しておくことで同じ環境の構築を簡易的に行うことができる。

# テンプレートファイルの作成
Cloud Formationを使用して環境の構築を実行するには、AWSサービスの構成を記述したテンプレートファイルを用意する必要がある。
今回は依頼されたDynamoDbの構築をサンプルとして作成してみる。

## 構築するDynamoDbの構成
例として生徒の名簿を管理するテーブルを作成する。
– テーブル名:school_member
– primary_key :
– パーテションキー : クラス
– ソートキー : 番号
– LSI : 性別
– GSI : 名前

## テンプレートファイル
“`yaml:sample.yml
# 今回設定が不要のものはコメントアウトし

元記事を表示

(Cognito/Lambda)JWTをBase64でデコードしたときのエラー“` Error: Incorrect padding “`の解決策

# はじめに
Cognitoでログイン画面を実装し、そのログイン情報をlambdaなどで処理する際にJWT(Json Web Token)をデコードして使用するだろう。
基本的にはBase64+jsonでデコード可能なのだが、一部ハマるポイントがある。

# 事象

**処理できる文字列と処理できない文字列が存在した。**

## 問題が起こったコードとその挙動

“`python
import base64

# JWTを”.”で分割して、ヘッダ、ペイロード、署名に分ける
header, payload, signature = jwt_string.split(“.”)

# ヘッダとペイロードをデコード
decoded_header = base64.b64decode(header).decode(“utf-8”)
decoded_payload = base64.b64decode(payload).decode(“utf-8”)

# ヘッダ、ペイロード、署名を表示
print(“Header: “, decoded_header)
print(“Payload: “,

元記事を表示

AWS Security Reference Architecture (AWS SRA) を利用したマルチアカウントのセキュリティ対策

# はじめに
AWSによって **「AWS Security Reference Architecture (AWS SRA)」** と呼ばれるセキュリティリファレンスアーキテクチャが公開されています。
SRAは、AWSのセキュリティ対策をどう実装すべきかを指し示すガイドとしての位置付けであり、SRAを参考にすることで、AWSの数多くのセキュリティサービスをマルチアカウントの環境に最適化する形でデプロイする方法が分かります。

本記事では、このSRAの中身を紐解き、SRAを活用してAWSアカウントのセキュリティ対策がどう実装できるのかを記します。

# 企業の課題
オンプレミスからAWSにサーバ環境を移行し始めたばかりか、既にAWSを利用して様々なアプリケーションを使いこなしているかどうかに関係なく、AWSアカウントにおけるセキュリティアーキテクチャの構築方法、構築後のアップデート方法は、全ての企業が共通して抱えている課題と言えます。
最近では、企業がAWSアカウントをワークロードごとに作成して、複数のアカウントを管理することが当たり前となりつつあり、何を共通化して何を個別化すべきなの

元記事を表示

Amazon Lightsail WordPressで作ったブログを閉鎖する

以前Lightsailで作成したブログを閉鎖することになりましたので、その工程を記録します。
[作成時の記事はこちら](https://qiita.com/e-onm/items/9ac06fc35c6cdb3d5e00 “Amazon Lightsail WordPressでブログサイトを作る”)

## DNSの解除

Lightsail > 対称インスタンス > Domain > 紐付けているドメインを削除
Route53 > ドメイン > 対称ドメイン > 「ドメインの削除」
Route53 > ホストゾーン > 対称ホストゾーン > 「ゾーンを削除する」

## StaticIPの解除

Lightsail > 対称インスタンス > Networking > IPv4 networking > 紐付けているStaticIPをDetach

## インスタンスの削除

Lightsailトップ > Instances > 対称インスタンスの設定ボタン > Delete

## 確認

ドメイン名を使ったURL
StaticIPを使ったURL
どちらもアクセスができなくなってい

元記事を表示

OTHERカテゴリの最新記事