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

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

ECRのuntaggedイメージ削除

備忘録です。
ご指摘等ありましたら教えていただけると幸いです。

最近現場で、新システムのインフラにECSの導入→コード化をしています。
latest運用にしており、untaggedイメージが増産されていました。
なのでサイクルを決めて削除するように変更しました。

下記コードは、
・ 1日のサイクルでuntaggedを削除
・ 1つだけイメージを残す

“`terraform:ecr.tf
resource “aws_ecr_repository” “base” {
name = local.service_name
}
resource “aws_ecr_repository” “app” {
name = local.service_name
}

# untaggedイメージの削除
resource “aws_ecr_lifecycle_policy” “base” {
repository = aws_ecr_repository.base.name

policy = <

元記事を表示

AWS GuardDuty 概要

# 概要

※この記事は目下記載中です
AWS のセキュリティ周り、特に GuardDuty の位置づけを理解するためにざっと調べた内容をまとめ。
まず、GuardDuty およびその周辺の AWS リソースの関連は以下のようなイメージ。

![AWS.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9128/b81bb842-b472-83b9-0115-ba73100cb3b8.jpeg)

## 用語補足

| 用語 | 説明 |
|:—–|:—–|
|Data source|GuardDutyが解析するデータの発生源 (Cloud Trail、VPCフローログ、DNSログなど)|
|Finding|GuardDutyが検知したセキュリティ問題の兆候. いくつかのFinding typesがプリセットされている([参考](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html)

元記事を表示

aws1234567

![スクリーンショット 2021-01-06 23.17.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/793436/fdb33e04-f723-b00f-2df9-bc262136fd9c.png)
![スクリーンショット 2021-01-06 23.17.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/793436/f07f436e-f919-b3bd-d1da-bc37803323cc.png)
![スクリーンショット 2021-01-06 23.17.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/793436/a40d4798-c796-da3a-5712-0850df095429.png)

元記事を表示

EC2(AmazonLinux2)でnode.jsを起動するまでの過程記録(nodemonを使う)

###前提として行ったこと
①AWSへの登録
②EC2サーバーの新規立ち上げ
③RDBの新規構築
④ローカル環境で制作したフォルダの、EC2へのアップロード

今回はnodemon を使いました。
これによってシステムの内容に変更があった時、再起動しなくても適応される(はず)。

以下、EC2サーバー上で正しく動作させるために行ったことを記録する。
##目次
行ったこと
→パーミッション設定
→「npm start で起動するようにする」
→必要なもののインストール
→DB情報の書き換え
→エラー「Permission denied」
→nodemonのインストール
おまけ(永久実行)
参考文献

#行ったこと(失敗も含む)
##パーミッション設定
編集したいファイルは、フォルダごと権限を777にした。
“$sudo chmod 777 フォルダ名orファイル名“
権限を変えるのは危ないので「ローカルで書き換えてアップロード」を繰りかえす方

元記事を表示

インスタンスの自動起動停止をする Instance Scheduler を触ってみた

# Instance Scheduler とは

AWS を使っていると、コストを削減するために、定期的に EC2 インスタンスや RDS インスタンスを停止したいときがあります。CloudWatch Event + Lambda を使って独自にプログラムを作っても良いですが、実装するのがめんどくさいです。そういったときに、AWS が提供している Instance Scheduler が便利に使えます。AWS 公式で提供されているソリューションになっていて、多機能で安心感があります。

Instance Scheduler は、AWS のマネージドサービスではなく、いくつかのマネージドサービスを組み合わせて提供されているソリューションです。CloudFormation のテンプレートが提供されており、簡単に Deploy が出来て、自動的に起動停止をしてくれます。

こちらのURL で公開されています。
https://aws.amazon.com/jp/solutions/implementations/instance-scheduler/

アーキテクチャの概要はこんなかんじ

元記事を表示

[RDSとElasticache]のマルチAZとレプリカの違い

# 背景
RDSとElasticacheのコストを削減をしてます。

RDSインスタンスのマルチAZを無効にすることでコストを半減した。考えずにElasticacheのインスタンスで同じことをやってみたら、全然効果がなかったです。ちゃんと両者のマルチAZの違いを理解してなかったのでまとめた。

# 前提
ここのElasticacheはRedisを指してます。

# 違い
## RDS
– マルチAZ
– 有効すると、スタンバイインスタンスを自動的に立ち上げられる
– コストはマルチAZ無効の2倍
– レプリカ
– 別で手動で作成する必要
– インスタンスタイプはプライマリと異なっても大丈夫

## Elasticache
– マルチAZ
– レプリカの存在はマルチAZ有効の前提条件なので、レプリカがないと、マルチAZを有効することができない
– マルチAZ自体は無料
– 故障のとき
– 有効
– 一番遅延が短いレプリカへの自動フェイルオーバーを行われる
– 無効

元記事を表示

docker-compose環境でRuby on Jetsの構築からデプロイまで<後編>

## 概要

以前の記事でRuby on Jetsのローカル環境を作成するところまで書きました。

[docker-compose環境でRuby on Jetsの構築からデプロイまで<前編>](https://qiita.com/takashi-5/items/74b8ac4a342ae7372205)

今回は実際にデプロイするところまでまとめてみたいと思います。

## ユーザを準備

コンソールからIAMユーザを作成し、credentialを取得してください。

[https://console.aws.amazon.com/iam/home#/users](https://console.aws.amazon.com/iam/home#/users)

今回デプロイするためだけのユーザということで「プログラムによるアクセス」にチェックを入れます。

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923148/7649b37b-4e94-b873-4b58-657238748

元記事を表示

SageMakerのエンドポイントを呼び出すAPIをFastAPIを使って非同期処理させる

# はじめに

– AWSのSageMakerに設置した推論エンドポイントを呼び出すAPIを実装するにあたって、推論処理に時間が掛かるため、API側を非同期処理させたいという要件がありました。
– 上記の要件を満たすためにFastAPIを使って非同期処理をするように対応したので、その際のメモ書きになります。
– ちなみに[こちらにあるように](https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/your-algorithms-inference-code.html#your-algorithms-inference-code-container-response)SageMakerのエンドポイントは**60秒以内**にレスポンスを返す必要があるので、注意しましょう。

# 準備

– はじめにSageMaker上に推論処理を行うエンドポイントの設定を行います。
– 今回はサンプルとして以下のようなコードを推論処理のエンドポイントとして設定します。
– リクエストを受けると5秒間スリープしてメッセージを返却する単純な

元記事を表示

AWS Organizationsの用語とその概念をわかりやすく日本語訳しました。

# この記事とは?
以下の記事の日本語訳になります。AWSが出している翻訳がわかりにくかったので、学習も兼ねて私なりに翻訳してみました。誤訳等ありましたらご指摘いただけると嬉しいです。

[AWS Organizations terminology and concepts](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#account)

以下翻訳です。

# AWS Organizations の専門用語とその概念
このトピックではAWS Organizationsの学習に役立つ、重要な概念について解説します。

次の図は、基本的な組織を示しています。この組織は、7 つのメンバーアカウントで構成され、そのアカウントは、ルートアカウントを親として、4つの組織単位 (OU) に分類されています。

一部の組織単位(OU)やアカウントに複数のポリシーがアタッチされています。

これらの各項目の詳細については、以下に記述するこのトピックの定義を参照し

元記事を表示

Salesforce と直接連携する AWS サービス一覧 (随時更新)

初投稿です。

2021年1月時点でのSalesforce と直接連携する AWS サービスの一覧を作成しました。(Heroku や S3 経由など間接的なものは対象としておりません)
随時更新したいと思っているので、過不足ありましたら、コメントでお知らせ頂けると嬉しいです。

## カスタマーエンゲージメント

### [Amazon Connect](https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/salesforce-integration.html)

Salesforce 内でWebRTCブラウザベースの問い合わせコントロールパネル (CCP) を提供し、IVR から 顧客 DB として、Salesforce への問い合わせの連携なども可能です。
![AmazonConnect.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988197/5543f076-ae08-e852-f9d9-f57d05b9bd51.png)

元記事を表示

Slack – APIGateway – Lambda(Python) – RedShift インタラクティブアプリの作り方

## 概要

表題のとおりのSlackアプリケーションを作成する。
まともに書くと長文になるので、以下の要点ポイントのみを重点的に記載する。

– Slackアプリケーションの留意点
– Slack側のアプリケーション設定(権限周り)
– SlackのHomeView(Homeタブ)やattachmentに関して
– Lambda(python)周りの実装とライブラリ利用
– APIGateWay設定

なお、シンプルに試すだけならWebHookURLを設定してLambdaとかをスケジュール実行してPOSTすれば終わるが、SlackClientライブラリを利用したインタラクティブなリクエストに対するメッセージ通知ができるようなシーンを想定している。

手順通りにやれば動くものが作れるというよりは、
調べるのが面倒だったり、案外ハマったポイントを断片的に紹介する点はご承知おきください。

## Slackアプリケーションを作成するにあたっての留意点

#### レスポンスは3秒以内に一旦返す
ボタンをクリックし、レスポンスを返す場合などは3秒を超えるとエラーになる。

これは、処理でひと

元記事を表示

AWSサービス用ロール/ポリシー作成方法メモ

* AWSサービス用のIAMロール/ポリシーの作成方法についてメモする。
* シェルスクリプトからAWS CLIコマンドを叩いて作成ケースを想定。
* 基本的な流れ
* ロール作成→ポリシー作成→ロールにポリシーをアタッチ

## サービスロールの作成

* EC2用ロール(`RoleForEC2`)を作成する場合。

“`shell
trust_policy_path=$(dirname $0)/json/TrustPolicyForEC2.json
trust_policy=$(cat ${trust_policy_path})
tempfile=$(mktemp)
echo ${trust_policy} | envsubst > {tempfile}
aws iam create-role –role-name RoleForEC2 –asume-role-policy-document file://${tempfile}
rm -f ${tempfile}
“`

* 信頼ポリシー (`TrustPolicyForEC2.json`)例
* EC2サービ

元記事を表示

EKSのノードのKubeletが突然Unauthorizedでクラスタ接続不可となった時の調査メモ

ある日開発環境のEKSのマネージドノードが突然クラスタに参加不可の状態になりました。

単純に自分の理解が足りてなかっただけなのですが、調査方法等のTipsを残しておきたいと思います。

# 事象
開発環境で開発をしていたら、ノードが全てNot Readyになっていました。

“`
kubelet[14180]: E0106 06:58:01.678158 14180 reflector.go:178] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: Failed to list *v1.Pod: Unauthorized
kubelet[14180]: E0106 06:58:02.269813 14180 controller.go:136] failed to ensure node lease exists, will retry in 7s, error: Unauthorized
kubelet[14180]: E0106 07:00:31.476224 14180 kubelet_node_sta

元記事を表示

個人的によく利用するシェルコマンド備忘録

* シェルスクリプト内でAWS CLIコマンドを実行し、AWSリソースを作成することがあり、その際に利用したシェルコマンドを備忘録としてまとめる。

## ファイルの一括読み込み

* **ユースケース**

* 変数ファイル(.env)を一括で読み込み、環境変数に埋め込みたい場合。

“`shell
set -a; for f in ./env/*.env; do . ${f}; done; set +a;
“`

## ディレクトリパスを取得する

* **ユースケース**

* 実行スクリプト内でスクリプトのディレクトリパスを取得したい場合。

“`shell
dir=$(dirname $0)
“`

`/home/bin/create_aws_resource.sh`のように実行した場合、`/home/bin`が取得される。

## 一時的なJSONデータを作成する

* **ユースケース**
* AWS CLIコマンドに渡す一時的なJSONデータを作成したい場合。

### 外部のJS

元記事を表示

ポート開放

#ポートを解放
立ち上げたばかりのEC2インスタンスはsshでアクセスすることはできますが、HTTPなどの他の通信方法では一切つながらないようになっています。そのため、サーバーとして利用するEC2インスタンスは事前にHTTPがつながるように「ポート」を開放する必要があります。
さきほど、config/unicorn.rb内に「listen 3000」と記述しましたが、これは「Railsのサーバを3000番ポートで起動する」ということを意味するのでした。

ポートの設定をするためには、EC2の「セキュリティグループ」という設定を変更する必要があります。
“`「セキュリティグループ」“`とは、EC2サーバが属するまとまりのようなもので、複数のEC2インスタンスのネットワーク設定を一括で行うためのものです。

まず、EC2インスタンス一覧画面から、対象のインスタンスを選択し、「セキュリティ」のタブを開きます。次に、「セキュリティグループ」のリンク(図中では「launch-wizard-1」)をクリックしましょう。![スクリーンショット 2021-01-05 12.37.43.png](h

元記事を表示

EC2 on MacでiOSビルド環境の夢を見た

※個人の感想です
※2021-01-06時点での情報と調査結果をもとに書いているので今後変わる可能性たかし君です

## やろうと思ったこと
2020年12月頭くらいに発表された、EC2でmacが起動できるって話で、
ついにiosビルド環境をクラウドで完結できる日が来たかと思いいわゆるCI/CD環境を構築しようかと思った。

=> 断念

## 苦しい
mac1.metalインスタンスは専有ホストでしか利用できない。これが運用面・料金にダイレクトに響く。

### 起動が結構長い
us-west2でやりましたが、30分近くかかった。

### 1度起動すると24H解放されない
物理マシンを借りてるみたいなもんらしいから致し方なしとは思いますが…

### 専有ホストはインスタンスが起動しているかによらず課金される(多分)
これもし認識違ったらそっと教えて欲しい…けど
専有ホスト作成しようとしたときのコンソールの
`インスタンスごとではなく、割り当てられた専有ホストごとに請求`
って文言や、そもそも物理マシンを借りるって性質である以上、使ってない時間は課金されないなんて虫の良い話があると

元記事を表示

Cloud9でLaravelの環境構築の方法

#手順
###PHPをインストール

“`
$ sudo yum -y update
$ sudo yum -y install php72 php72-mbstring php72-pdo php72-intl php72-pdo_mysql php72-pdo_pgsql php72-xdebug php72-opcache php72-apcu
$ sudo unlink /usr/bin/php
$ sudo ln -s /etc/alternatives/php7 /usr/bin/php
$ php -v
“`

###composerをインストール

“`
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/bin/composer
“`

###Laravelをインストール

“`
$ composer global require “laravel/installer”
$ composer create-project laravel/laravel

元記事を表示

strongSwanでIPv4 over IPv6のVPNトンネルを構成する

strongSwanを利用してIPv4 over IPv6のVPNトンネルを構築します。最終目標はYAMAHAルーターとの拠点間接続ですが、今回は検証のためにAWSにインスタンスを立てて検証します。

# 構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/776880/a703b204-0c17-dcc8-a7bc-31f579d8b927.png)
Terminal AとTerminal Bを通信させるため、strongSwan AとstrongSwan Bの2台のマシンでIPSecトンネルを張ります。今回の構成例では、VPC A(172.31.0.0/16)とSubnet B-1(192.168.0.0/24)に属する端末相互間で自由に接続ができるようにします。

– strongSwan A,Bのスペック
– AMI : Ubuntu Server 20.04 LTS (ami-0d1f7bec0e294ef80)
– インスタンスタイプ : t4g.nano
– str

元記事を表示

AWS管理コンソールにIP制限をかける

## AWS管理のセキュリティの向上
AWSの管理コンソールに対して社内IPからの制限をかけることにした。これによりAccessKey/SecretKeyが万が一漏れても社内IPからしか接続できないためセキュリティの向上を行うことができる。
ただし、デメリットもあり会社が入っている建物が定期点検のためにルータを落としたりする場合は一切接続ができなくなってしまうのでいくつかのアカウントはIP制限をしないようにする必要がある。

## グループに適用する
一つ一つのユーザに対してポリシーをアタッチするのはナンセンスなためグループを作成してそのグループに所属したメンバーはIP制限が適用されるようにする。

## ポリシーの作成
以下のポリシーを作成する。 `aws:SourceIp`で許可するIPを記載する。

“`
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “AdministratorAccess”,
“Effect”: “Allow”,

元記事を表示

Serverless FrameworkとAWS Lambda with Pythonの環境にpipインストール

pipインストールが必要なAWS LambdaのPythonスクリプトをServerless Frameworkでデプロイする方法です。

gemインストールが必要なAWS LambdaのRubyスクリプトについては[前回](https://qiita.com/suzuki-navi/items/1369b11a8f5d7f467645)の記事で書きました。

# 手順概要

プラグインを入れれば簡単にできます。

1. `serverless plugin install -n serverless-python-requirements`
2. `requirements.txt` 作成
3. あとは普通にデプロイすると勝手にいろいろやってくれる

# 手順詳細

## Serverless Frameworkのサービス作成

“`console
$ serverless create –template aws-python3
Serverless: Generating boilerplate…
_______

元記事を表示

OTHERカテゴリの最新記事