AWS関連のことを調べてみた2021年11月13日

AWS関連のことを調べてみた2021年11月13日
目次

AWS SSO と Google Workspace を連携する

# AWS SSO と Google Workspace を連携する

## この記事の内容
AWS SSO と Google Workspace を連携する方法の記事です。

## なんで書いたか
個人的な思いとして AWS SSO がとても便利で有益だったので、全世界に利用を推奨したい思いがあったためです。
AWS SSO と G Suite との連携記事はよく見かけるが、Google Workspace との連携の記事をあまり見かけなかったので残そうと思いました。
AWS SSO はかなり便利なサービスで、AWS アカウントを Organizations で複数管理している場合、かなり運用が容易になる可能性があります。

:::note info
今回は Google Workspace との連携に関する事のみを記載しています。
外部 Idp で会社のメンバーアカウントを管理していて AWS アカウントを Organizations で複数管理している場合、かなり運用が容易になる可能性があります。
:::

## AWS SSO とは
https://aws.amazon.com

元記事を表示

Step Functions + Fargate + Embulkを使ってDBエクスポートのバッチ処理を作成する

# 概要
データ分析用に複数のテーブルのデータをエクスポートした時の検証作業を備忘録としてまとめる。
元々はEC2インスタンスにEmbulkをインストールしてcronで定期実行すればいいかなと思っていたが、

– エクスポート処理を並列実行したり、実行順序を制御したい
– 処理が失敗した時に通知したい

という要件があり、Step FunctionsとECS(Fargate)に変更してみたら良い感じになったので、構成を変更した。
(AWS Batchも検討したが、うまく動かせなかったので挫折した。。。)

# 手順
## データ出力用S3バケットの作成
エクスポートしたDBデータを保管するS3バケットを作成する。

“`
aws s3api create-bucket –bucket okada-dbexport-20211112 \
–create-bucket-configuration LocationConstraint=ap-northeast-1
aws s3api put-public-access-block –bucket okada-dbexport-202

元記事を表示

【EC2】ssm-userでgit cloneするとPermission denied (publickey).となる。

system managerとかいうサービスを使うと、sshしないで安全に接続できると聞いたので使ってみたのですが、git cloneできなくてハマりました。

間違っていたらご指摘願います。

やったこと↓↓

# sshの設定

・ssh-keygenする
・https://github.com/settings/keys ここに公開鍵を登録

# configを作成
“`
Host github.com
HostName git
Port 22
User xxxxxxxxxx
IdentityFile ~/.ssh/xxxxxxxxx
“`

# ポート開く
(これやっていいのかわからないのですが、) 以下設定する必要があるとかないとか

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355521/b4cbb781-3c72-13f8-99a4-7083fcbf75d2.png)

# 認証させる?
下記コマンドで、ああ、あの鍵使ってるのはお前なんだな、とgithub.comが

元記事を表示

GitHub Actions OpenID Connect (OIDC) で多段 AssumeRole する

# はじめに

GitHub ActionsでOpenID Connectがサポートされましたね。

GitHub ActionsからAWSを操作するにあたって、MFA+外部IDでAssumeRoleを頑張ってましたが、
IAMユーザーの認証情報を持たせる必要がなくなるのでこれに切り替えていこうと思います。

https://github.blog/changelog/2021-10-27-github-actions-secure-cloud-deployments-with-openid-connect/

## 設計方針

– GitHub OIDCプロバイダーはAWSアカウント毎に1つだけ作成する必要がある
– GitHub OIDCは1つであり、複数のIAMロールを引き受けることができるがGitHub Actionsで直接引き受けるIAMロールは1つとする
– GitHub ActionsでAWSを操作を行うためには、多段AssumeRoleさせAWSの操作権限を与える
– GitHub Actionsで引き受けるIAMロールはAWSを操作する権限を与えない(踏み台IAMロー

元記事を表示

# Amazon LightSailからNTT-PC WebARENA Indigo VPSに移動②:初期セットアップ

# Amazon LightSailからNTT-PC WebARENA Indigo VPSに移動②:初期セットアップ

[前回のあらすじ](https://qiita.com/syakesaba/items/34553a66e0d467797629)

> ぼく「国内で安いのは[NTT WebARENA Indigo](https://web.arena.ne.jp/indigo/)かぁ。」
> ぼく「Indigo、OSサポート、AlmaもRockyも無いんだね。Ubuntu LTS 20.04が一番サポート長いから使ってみるか」

# VPSプランの選択
– 選んだプラン: 月額1,399円1時間当たり2.2円
– OS: **Ubuntu 20.04 LTS**
– メモリ: **4GB**
– CPU: **4vCPU**
– SSD: **80GB**
– NW: **500Mbps上限**

# インスタンスを作成
1. 暫定でSSHの鍵ペアをWebコンソールで作る(後で吹き飛ばす)
1. インスタンスを作成(同時にグローバルIPアドレスが付与され

元記事を表示

【やってみた】VPCエンドポイント

## VPCエンドポイント -ゲートウェイエンドポイント-
インターネットを介さずにVPC内のリソースとS3,DynamoDB間をセキュアに接続できる。
これにより、NATゲートウェイを配置しなくてもプライベートサブネットからS3,DynamoDBへ接続ができる。

参考:[VPCエンドポイント](https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpc-endpoints.html)

## この記事でやること
プライベートサブネットからVPCエンドポイントを介してS3に接続します。
![スクリーンショット 2021-11-12 20.40.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500026/0aaa2f96-f45f-99ca-ad67-bd648de38bf0.png)

## 前提条件
以下環境を作成済みとします。
![スクリーンショット 2021-11-12 20.42.09.png](https://qiita-i

元記事を表示

CloudFormationを学びたい方へ 個人的学習法・テンプレート書き方まとめ

CloudFormationを自己学習していて、こう学習するのがいいだろうとか、
テンプレート書く時はこうするとやりやすい、という自分なりの学習法をまとめてみました。
CloudFormationの勉強をされる方の参考になれば幸いです。

# 0. 動作環境
動作環境は以下になります。

– Windows10
– python 3.9.7
– Visual Studio Code 1.62.0

# 1. 前置き
## 1.1. CloudFormationとは
AWSリソースの設定内容を記載したテキストファイル(テンプレートといいます)を作成することで、AWSリソースを自動作成するサービスです。
Infrastructure as Code を実現し、同じ環境をすぐに作成、一括管理できます。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html

## 1.2. CloudFormationを学んでよかったと思うこと
– テンプレートを作成したAWSサービスに詳しくなる。

元記事を表示

ALBのパスベースルーティングをやってみた

ALBにはパスに基づいてリクエストを振り分ける機能があり、巷では「パスベースルーティング」と呼ばれています。
>Application Load Balancer では、URL に基づいてリクエストをターゲットグループに転送するルールを持つリスナーを作成できます。
>[Application Load Balancer でのパスベースのルーティングを実現するにはどうすればよいですか?](https://aws.amazon.com/jp/premiumsupport/knowledge-center/elb-achieve-path-based-routing-alb/)

今回はこのパスベースルーティングを試してみたいと思います。

# 構成図
![temp-Pass.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1162215/1413b5fe-dec2-9dde-34fc-64eb0412cf19.png)

・パブリックサブネットを2つ用意
・ALBをパブリックサブネットに配置

元記事を表示

AWS Organizationsを使って複数のAWSアカウントの管理を行う

AWSには複数のAWSアカウントを管理する機能として AWS Organizationsがあります。
今までは複数のAWSアカウントがある場合、それぞれに個別でログインするかクロスアカウントを使ってログインを柔軟にコントロールすることができます。
具体的には複数のAWSアカウントを同じIAMユーザーのアカウントでログインできるようにしたり、請求を一つにまとめたりすることができます。

受託案件など複数の案件を管理する場合、AWSアカウントから切り分けをしておくことで開発・運用でのアクセスコントロールが強く行うことができたり、ユーザーが混在する状況を解決することができます。

## 要点

– AWSアカウントの作成は簡単(ただしrootアカウントの[パスワードリセット](https://qiita.com/ai-2723/items/d82d072debdbf6d15b34)が必要)
– クレジットカード、電話認証がなくすぐに作成できました
– Organizationsの単位はOU(組織)
– OUは社内の組織を表すイメージ
– SCP(サービスコントロールポリシー)によっ

元記事を表示

Databricks on AWS にデプロイ手順 (in 顧客管理VPC)

# 概要
AWS 上かつ顧客管理 VPC 上で稼働する Databricks の構築方法です。

詳細に解説されている記事が豊富にありますが (参考 URL 参照)、AWS ポータルの触り方を結構忘れていたので、“`Your VPC, custom“` で実装する手順を残しておきます。

# 手順
### Cloudformation テンプレート
Cloudformation で構築します。
以下記事を参考にさせてもらいました。

https://dev.classmethod.jp/articles/getting-started-databricks/

YAML でテンプレートを書き、ローカル環境などに保存します。
今回は、

– VPC=“`/22“`
– Subnet=“`/25“`
– Region=“`ap-northeast-1a“`

で設定しています。
リソース名称や設定を細かく設定したい方は適宜変更しましょう。

“`yaml:databricks-in-customer-managed-vpc-cloudformation-templat

元記事を表示

【個人開発】サービスのアーキテクチャをAWSの仮想環境からNetlify + Herokuに移行させたら収支が月約一万円変わった話

# はじめに

「GitHubでコードを管理するように、テストをWeb上でチームで管理するプラットフォームが欲しい!」
そう思い立ち、Nuxt.js + Ruby on Railsで開発した、OSSや個人用のテスト管理プラットフォーム「Itamaster」を運営しております。
ふぁると申します。
[運営者ギルド](https://qiita.com/organizations/admin-guild)に所属しています。皆様にはいつもお世話になっております。
現在はItamasterのみですが、今後も新規のサービス開発・Qiita記事やSNSを用いた発信活動に努めて参りますので、フォロー・LGTMよろしくお願いいたします。
【Twitterリンク】
https://twitter.com/@itamaster_

【Itamaster公開記事リンク】
https://qiita.com/Itamaster/items/f821be4c33caab640a93

【Itamaster】
https://itamaster.work


【AWS】オプトインリージョンへのS3アクセス時の注意

# これは何?

とある事情でLambdaからS3へファイルを転送する構成で、中東(バーレーン)リージョンに導入する必要がありました。
が少し上手くいかなかったのでメモです。

## 状況
いつも通りTerraformにて同じリソースをデプロイした。
しかしながら、S3へログを転送するLambdaでエラーが発生。

## エラー内容
・エラー内容は以下、調べてみるとリージョン系のエラーっぽい。

“`
2021-09-02T10:58:14.881Z fe9ac618-e5a7-46ad-b53e-4e35607db33a ERROR Cannot put object!.
2021-09-02T10:58:14.821Z fe9ac618-e5a7-46ad-b53e-4e35607db33a ERROR IllegalLocationConstraintException: The ap-northeast-1 location constraint is incompatible for the region specific endpoint this request w

【AWS S3】大量のオブジェクトが保存された複数のS3バケットをシェルで一括削除

# これはなに?
大量にあるS3バケットの削除方法についてのメモです。
自分の例だとS3バケットが100個近くあり、オブジェクトも600万オブジェクト(12TB)くらい、その時の消す策として参考になればと思います。

## 事前準備
### S3バケットへの全ての書き込みをバケットポリシーで拒否するようにします。
“`json:policy.json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “ALLWtite”,
“Effect”: “Deny”,
“Principal”: “*”,
“Action”: “s3:PutObject”,
“Resource”: “arn:aws:s3:::バケット名/*”
}
]
}
“`
・下記のライフサイクル設定後などにも、システムが動いていて書き込みが行われ続けるとS3バケットの削除が行えないため、書き込みを全て拒否します。
### S3ライフサイクルを設定して1日後に全てのオブジェクトが消えるよ

Step Functions のパラメータで配列を扱いたい

## 組み込み関数の States.Array を使う
https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-intrinsic-functions.html

> **States.Array**
> This intrinsic takes zero or more arguments. The interpreter returns a JSON array containing the Values of the arguments, in the order provided. For example, given the following input:

>“`
{
“Id”: 123456
}
“`

> You could use

>“`
“BuildId.$”: “States.Array($.Id)”
“`
Which would return “BuildId”: [123456]

## Example
AWS SDK

AWS DeepRacer 日記 第1回(2021/10) ※なんと初月にプロリーグ参加を達成

AWS DeepRacer 日記 2021/10

2021年10月から本格的にDeepRacerリーグに参加し始めました。
今回はDeepRacer日記第1回です。
筆者の試行錯誤を記載していきます。
参考になればうれしいです。

※DeepRacer参加方法については下記にまとめています

https://qiita.com/toma_shohei/items/a79abd8d71a2e284273f

# 10/4
## 学習

### まずは車の作成(メニュー:Reinforcement learning>Your garage)
![スクリーンショット 2021-10-04 220105.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311339/ce7efb15-30fb-03ab-6873-36e6bbdef393.jpeg)

Stereo Cameraは障害物検知に特化なので、タイムトライアルならCamera一択だと思います。
※誰でも参加可能なVirtualLeagueはタイムト

一番レイテンシーの低いAWSリージョンはどこ?ざっと計測するには

# 簡易的な計測方法

API Gateway の API を各リージョンに作って、それにリクエストして・・・となると若干手間がかかってしまいます。そこで、DynamoDB がクレデンシャルもいらない、以下のオープンなリージョナルエンドポイントを公開しているので、そことの通信をもとに計測できます。
– https://dynamodb.us-west-2.amazonaws.com
– https://dynamodb.ap-northeast-1.amazonaws.com

# 使うライブラリ

[measure-region-latency](https://github.com/yoramen/measure-region-latency) にワンライナーで実行するスクリプトを置いたので、これを使えば全リージョンに対してレイテンシーを計測できます。

## 結果サンプル
“`
Response time percentiles (approximated)
Type Name 50% 66% 7

API GatewayのIAM認証が拒否された際の原因調査

API Gatewayで構築したREST APIにてIAM認証を設定した際に、APIコールがIAM認証に阻まれる原因を突き止めるのにさんざんつまづいたので、つまづいた内容や対応手順について整理しておく。

##検証環境

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271327/a133595e-bcbd-b871-dc8c-1ad9ffad07d6.png)

– API Gatewayで構築したAPIは[プライベートREST API](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-private-apis.html)
– VPC内部からAPI Gateway用のVPC Endpoint経由でのみアクセス可能
– APIではGETメソッドを作成
– APIにはAPI GatewayリソースポリシーとIAM認証を設定している
– プライベートAPIの

[チュートリアル]AWSにEC2,RDS,S3の環境を作ってWEBアプリケーションを動かす

#0. はじめに

「AWSの基礎を理解したいのですがどうしたらいいでしょう?」と知人に聞かれて、「こんなことやってみたらいいんじゃないでしょうか!」と提案したものの、自分ではやったことなかったのをきっかけに作り始めたチュートリアルです。

WEBサービスもサーバレスになっていく時代の流れもありますが、このチュートリアルではAWSを勉強し始めたら最初に出てくるEC2(サーバー)とRDS(データベース)とS3(ストレージ)を使ってWEBアプリケーションを作ることを通して、AWSの基礎を理解することを目的にしています。

筆者も何度も環境を作ったり壊したりするうちに、自然とAWSの理解が進みました。このチュートリアルが、みなさんのAWSの理解の一助になれば幸いです。

また、初心者が書いたチュートリアルですので、抜け落ちや間違い等ありましたらご指摘いただけたらと思います。よろしくお願いいたします。

##自己紹介

* WEBエンジニア2年目(インフラは未経験)
* 2年前にAWSのSAA(ソリューションアーキテクトアソシエイト)という設計の資格は取得したものの、その後AWSにまったく触

DynamoDBの自動バックアップ/Export機能を使ってみた

# はじめに

AWSのリソースを引っ越しする要件があってDynamoの移行について調べていたところ、最近エクスポートする機能がリリースされたようで、早速使ってみたので書き残してみます。
以下も参考にしました。

https://qiita.com/bassaaaaa/items/5114bfd28bd3832d1f6a#aws-cli%E3%81%A7dynamodb-export%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B

# PITR:ポイントインタイムリカバリとは

Dynamoのテーブル設定でPITRをONにすることで、日次で自動バックアップが取られ、リカバリができるようになる機能です。
この機能を有効にしないとエクスポートはできません。
エクスポートが済んだら無効に戻すこともできます。

# 使ってみた

上記参照した手順はCLIを使っていますが、マネジメントコンソールからでも簡単に使えます。
テーブルのバックアップ設定で、PITRを有効化します(デフォルト無効)

![image.png](https://

困ったことと解決したことメモ_20211111

#pandasデータフレーム抽出がうまくいかなかった

“`python
pd.drop([1:5])
“`
としても何もならない
##解決方法
“`python
pd.drop(range(1,6))
“`
#変数を作りすぎて訳がわからなくなる
全部dfとかresとかにしてしまうと後半死ぬ
##解決方法
面倒くさがらずに、長くなってもいいので、しっかりネーミングする

#S3からCSVを取り込む
色々エラーが出てよくわからなくなる
とりあえずcsvの型はbytesなので下のようにやるとうまくいく
##解決方法
“`python
obj = bucket.Object(object_key_name)
r = obj.get()
b = r[‘Body’].read()
df = pd.read_csv(io.BytesIO(b))
“`

#Unable to import module ‘app’: No module named ‘app’
cloud9で`sam local invoke`を実行すると発生するエラー
##原因
`template.yaml`の