AWS関連のことを調べてみた2020年04月02日

AWS関連のことを調べてみた2020年04月02日
目次

【AWS】AWS 認定ソリューションアーキテクト(SAA-C01)に元WEBディレクター開発未経験の人間が受かった話

# 自己紹介
はじめまして。ATARUです。
少し前(2020/3/11)のことになりますが、AWS認定ソリューションアーキテクトに合格しましたので、この度、合格体験記をここに残したいと思います。

### 経歴
まず最初に軽く自己紹介しておきます。

– 1社目(新卒)
某大手EC事業会社のBtoCサイトのプロダクトマネジメント部にて、WEBディレクター的な立ち位置に居りました。
-自社サービスのサイトのABテスト/UIUX改善/機能改修/保守運用/案件管理など。時にはログ調査なども。
-社内ツールの機能改善/性能改善/案件管理など。
すべて管理/調整系の仕事で、エンジニアの用語はほとんど「?」な感じでした。新卒でしたし勘弁してください。。

– 2社目
ITベンチャーへ転職。
主にやったことは受託のWEB制作のディレクター。1社目とは違い、受託だったので制作会社って感じでした。
デザイナーとエンジニアとPMとクライアントに囲まれて気づいたら撮影部隊と海外ロケをしていたり、イベントスタッフをしていたり、てんやわんやな感じでした。ここではディレクターとして?、ひとつWEBサイトの公開を

元記事を表示

AWSの費用をslackに通知する

# クラウドの費用は定期的に確認
日々開発を行なっているとCost Explorerを段々と見なくなり、後になって多額の請求が来て死ぬってことありますとねw
ってことでLambdaで定期的にslackに通知して確認できる様にしました

# 構成
![CostxLambda.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525769/c1fae5e7-d171-e338-36ab-3b2d80d0859d.jpeg)

# Lambdaのソースや詳しい設定方法
https://dev.classmethod.jp/cloud/aws/notify-slack-aws-billing/
classmethodさんよく活用させてもらっています、ありがとうございます!!

元記事を表示

CloudFormation テンプレートで CloudFront の Header を全て Foward する設定

[ドキュメント](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-forwardedvalues.html#cfn-cloudfront-distribution-forwardedvalues-headers)を見ても具体的にどういう値を設定するべきか書いていない。

>A complex type that specifies the Headers, if any, that you want CloudFront to forward to the origin for this cache behavior (whitelisted headers). For the headers that you specify, CloudFront also caches separate versions of a specified object that is based on the header values in vi

元記事を表示

Systems Managerエージェントが通信できないEC2一覧の取得

### 環境
以下の条件に当てはまる環境で、よく発生する問題です。

– 多数のEC2を構築・運用している
– Systems Manager(SSM)を使用できるように各種セットアップ済みである
– Systems ManagerのランコマンドやPatch Manager等を利用している

### 多数のEC2でSystems Managerを利用すると

正しく構成していれば、各EC2のSystems Managerエージェント(SSMエージェント)はSystems Managerサービスと通信できます。
通常は、何ら問題ないです。

しかしながら何らかの原因で、一部のEC2でSSMの通信ができないケースが出てきます。
(原因は本当に色々あって、*IAMの設定不備、VPCルーティング設定不備、セキュリティグループ設定不備、SSMエージェントが落ちている、SSMエージェントのバージョンが古い、169.254.169.xxx の通信など、、*多岐にわたります)
多数のEC2を運用していると、SSMの通信できないEC2の原因を調べるよりも、**どのEC2が通信できててどのEC2

元記事を表示

ローカル開発から本番環境へのエラー対策

##ローカル開発環境からのアップロードができない場合
環境変数を設定し、それをCarrierWaveから使えるようにするには、以下の3箇所の設定が正しい必要があります。
1、CarrierWaveの設定ファイル(CarrierWave.rb)
2、Railsアプリケーション全体の秘密情報を管理するファイル(secrets.yml)
3.OSが提供するデータ共有の仕組み、漏洩のリスクが低い(環境変数)
キーを安全に運用するための仕組みは、CarrierWave.rb=>secrets.yml=>環境変数
となります。
###環境変数およびsecrets.ymlの設定が正しいか
1、ChatSpaceがあるフォルダで、「rails c」を実行します。
2、コンソール内で、以下のコマンドを実行します。
コンソール

“`
Rails.application.secrets.aws_access_key_id
Rails.application.secrets.aws_secret_access_key
“`
「Rails.application.secrets」+「.キーの名前」を実行す

元記事を表示

Chalice を使ってみるなかで調べた小ネタ3点

## 1. 静的ファイルを Lambda 関数に含める方法

– シナリオ: 簡単な設定ファイル (YAML, JSONなど) を Lambda 関数内で読み込むファイルとして扱いたい。
– 問題: `app.py` と同じディレクトリに `env.yml` を置いたが、 `chalice deploy` してもファイルがアップロードされなかった
– 解決策: chalice プロジェクトの下に chalicelib というディレクトリを作って、そこにファイルを置く。 以下のtreeの結果を参照。
– 使うときは `filepath = os.path.join(os.path.dirname(__file__), ‘chalicelib’, ‘env.yml’)` などのように読み込ませて解決。
– [公式マニュアルでも同様のことが示されている](https://chalice.readthedocs.io/en/latest/topics/multifile.html)

“`bash
$ tree -a .
.
├── .chalice
│   └── conf

元記事を表示

awscli v2でタブ補完が効かない場合の対処(macOS Catalina)

# 環境
– mac
– macOS Catalina(10.15.4)
– zsh 5.7.1
-aws-cli/2.0.6 Python/3.7.4 Darwin/19.4.0 botocore/2.0.0dev10

# 事象
mac OS Catalinaでawscliv2をインストールした際にタブ補完が効かない事象に遭遇した。
結論から言うと、macで使用しているデフォルトのzshで`complete`コマンドが `command not found` なのが原因

# 解決策

bashの互換モードを有効にしてcompleteコマンドを読み込ませる。

~/.zshrcに以下3行を追加して様子を見てみる。
追記したら~/.zshrcを再度読み込みます。

“`
autoload bashcompinit
bashcompinit
complete -C ‘/usr/local/bin/aws_completer’ aws
“`

**aws_completer**の場所は事前に`which aws_completer`で調べ、自身の環境の値に変えてください。

元記事を表示

CDKでAPI Gatewayにステージを追加してもLambdaのパーミッションは自動で追加されない

CDKでAPi Gateway+Lambdaの構成を作りました。
Gatewayのステージを2つ持たせて、ステージ毎に変数を持たせてLambdaを叩くという構成にしたかったのですが、追加したステージのパーミッションがLambdaに自動で追加されなかったので、`CfnPermission`を使って自分で追加する必要がありました。
このことにちょっとハマって時間を要したので、コードを残しておきます。

## 環境
CDK CLI: 1.27.0

## コード

“`cdk-lambda-stack.ts
import * as cdk from ‘@aws-cdk/core’
import * as lambda from ‘@aws-cdk/aws-lambda’
import * as apigateway from ‘@aws-cdk/aws-apigateway’
import * as iam from ‘@aws-cdk/aws-iam’

export class CdkLambdaStack extends cdk.Stack {
constructor(scope

元記事を表示

AWSのRDSが日本語対応にならない場合の対処法

##はじめに
 Ruby on Rails初心者です。今回はアプリケーションのデプロイ時に苦戦した箇所があったので
 勉強のために備忘録として残したいと思います。

##前提
  Rails 5.2.4

##問題
 ・AWSのRDSでMySQLインスタンスを作成
 (RDSのMySQLの文字コードは、初期設定は「latin」)
 ・その後「パラメータグループ」で日本語対応にするも本番環境で
  日本語対応されておらず、、

##解決方法
 ・EC2にSSHで接続

“`
ssh -i /Users/ユーザー名/.ssh/キーペア名.pem ec2-user@xx.xx.xx.xx
“`
 ・EC2からRDSにアクセス(パスワード要求されます)

“`
mysql -h エンドポイント -P Port -u ユーザ名 -p データベース名
“`

 ・データベースの状態を確認

“`
mysql> show variables like ‘char%’;
“`

 ・以下のように表示される

“`
+————————–+——-

元記事を表示

【Serverlessconf Tokyo 2018】カンファレンス資料まとめ

2018/9/29に開催されたServerlessconf Tokyo 2018 Conference Day の資料まとめです。

http://tokyo.serverlessconf.io/agenda.html

見つけ次第更新しますが、抜け漏れなどありましたらコメントや編集リクエストいただけましたら幸いです。

都合により途中で離脱してしまいましたが、運営/スタッフのみなさま、登壇者のみなさま、スポンサーのみなさま、このような機会をありがとうございました。

## STUDIO EARTH
* **サーバーレスのこれまでとこれから**
*

* **Serverless for the Enterprise**
*

* **The design for serverless ETL pipeline**
* https://www.slideshare.net/shoujishirotori/the-design-for-serverless-etl-pipeline-489

* **aiboクラウドサービスを支えるサーバーレス技術**

元記事を表示

AWS公式さんがDocker Hubで aws-cli のイメージを公開してくれた!

AWS公式さんがDocker Hubでイメージを公開してくれました。 (2020/03/31)
待ってました :tada: :tada: :tada:

AWS CLI v2 Docker image | AWS Developer Blog
https://aws.amazon.com/jp/blogs/developer/aws-cli-v2-docker-image/

>(Google翻訳) AWS CLI v2の2.0.6のリリースにより、AWS CLI v2がDockerイメージとして利用できるようになったことをお知らせします。
>
>これにより、ユーザーはAWS CLI v2のインストールを自分で管理する必要なく、コンテナベースの環境でAWS CLI v2を使用できます。このDockerイメージを利用するにはさまざまな方法がありますが、特にCI / CD設定では、ローカルマシンのDockerコンテナでAWS CLI v2を実行する方法について説明します。

amazon/aws-cli – Docker Hub
https://hub.docker.com/r/amaz

元記事を表示

AWS で No space left on device と出た時

## はじめに
AWSでアプリケーションを動かしている時に、No space left on device というエラーが出てきたので、詳しく調べてまとめてみた。

## 対処法
dfというコマンドを使用して、ディスクの使用量を確認する。

“`erb:ターミナル
$ df -h

Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 16G 16G 0G 100% /
devtmpfs 993M 56K 993M 1% /dev
tmpfs 1001M 0 1001M 0% /dev/shm
“`
次にduというコマンドを使用して、どのフォルダがディスク容量を多く使っているかを特定する。

“`erb:ターミナル
du -h | sort -rh | head -5

10G .
6.5G ./hoji
4.5G ./hoji/log
1.1G ./hoji
1.2G ./hoji
“`

ここでは、/h

元記事を表示

AWS SAA ななみんメモ

## 経緯
AWS SAA に残念ながら落ちてしまったので改めて学習する中で
自分なりに簡単にまとめたいと思います。誰かのお役に立ててたら嬉しいです
間違いがあったらコメントでご指摘いただければと思います

## VPC
**AWS環境内の仮想ネットワーク**
作成直後はプライベートネットワークだが、
インターネットゲートウェイ・仮想プライベートゲートウェイをアタッチし、
ルートテーブルを設定することでインターネットやオンプレ環境と通信することが可能になる

### サブネット
VPCを小さいブロックに分割したもの

### IPアドレス
VPCのCIDRは/16~/28まで指定することができ、サブネットについても同様

### ルートテーブル
サブネットに1つルートテーブルが存在する
1つのサブネットに複数のルートテーブルは割り当てられないが、
複数のサブネットで1つのルートテーブルを使用することは可能

書き方▶︎宛先アドレス ネクストホップ (例 0.0.0.0/0 igw-●●●●●●●●)

### InterNetGWとNATGWの違い
InterNetGWには、GIPを持

元記事を表示

Amazon CloudWatch EventsのイベントルールでターゲットをAmazon SQSにしてAWS Lambdaでイベントソースにして処理するAWS CloudFormationのテンプレートをつくってみた

AWSマネジメントコンソールからだと簡単に設定できましたが、AWS CloudFormationのテンプレート化するのにいろいろとハマったのでメモ。

## リソース

必要最低限となる構成はこんな感じになりました。
スクリーンショット 2020-03-26 14.04.41.png

利用するサービスは以下になります。

– Amazon S3
– AWS CloudTrail
– Amazon CloudWatch Events
– Amazon SQS
– AWS Lambda
– AWS CloudFormation(リソース管理用)

## ポイント

先にポイントをいくつかあげてみます。
完成形のテンプレートはこのあとにおいてます。

### Amazon S3のバケットを複数用意する

Amazon

元記事を表示

AppSyncで自分のデータだけSubscription

# はじめに

AppSyncのサンプルアプリとかはあちこちありますが、**自分のデータだけ** Subscriptionする方法が、最初取り組んだときに分かりにくかったので、ここにまとめます。

# サンプル

チャットアプリを考えます。
ここでは簡単のために、1対1のチャットを考えます。
以下は、まだSubscriptionを定義していないサンプルスキーマです。

“`graphql:schema.graphql
type ChatRoom {
id: ID!
userIds: [Int!]!
}

type Message {
chatRoomId: ID!
fromUserId: Int!
sendTimestamp: AWSTimestamp!
content: AWSJSON!
}

type Mutation {
addMessage(chatRoomId: ID!, toUserId: Int!, content: AWSJSON!): Message!
}

type Query {
# 本当はページネーションとか考慮いるけど省略

元記事を表示

【Rails】HerokuでAWS s3に画像をアップロードしようとしたらAccess Denied

#事前準備
[Railsでcarrierwaveを使ってAWS S3に画像をアップロードする手順を画像付きで説明する](https://qiita.com/junara/items/1899f23c091bcee3b058#iam%E8%A8%AD%E5%AE%9A)

概要についてはこちらの記事がとても分かりやすかったので参考にさせていただきました。

ただしこのまま`$ git push`すると、アクセスキーがアップロードされてしまうので注意です。
アクセスキーの隠し方については、`heroku 環境変数`とか`gem ‘dotenv-rails’`、`$ heroku config:set ACCESS_KEY=aaaaaa`とか調べると出てくると思います。

#この記事を読むべき人

1. https://myapp.herokuapp.com で画像をs3にアップロードしようとしてもうまくいかない
1. `$ heroku logs`したら`Access Denied`って言われる

この状況の人にはお役に立てるかもしれません。

#手順

元記事を表示

投稿機能でS3に画像をアップロード機能(アップロード)

##画像のアップロード先をS3に変更
CarrierWaveによる画像のアップロード先がアプリ内のpublicフォルダでしたが、これをS3に変更します。
以下の手順で変更していきます。
1.インターネット上にファイルをアップロードするためのGem(fog-aws)をインストールする
2.アップロードにfogを使うよう設定する
3.fogのアップロード先の情報を設定する
4.AWSのキーを安全に扱えるようにする
###fog-awsをインストール
fogとは画像をアップロードする際、外部のストレージを選択しアップロードするのを補助してくれるGemです。
Gemfile

“`
〜省略〜

group :development do
# Access an IRB console on exception pages or by using <%= console %> in views
gem ‘web-console’, ‘~> 2.0’

# Spring speeds up development by keeping your application running

元記事を表示

Elastic BeanstalkでSpring Bootのアプリをデプロイしたときの手順と遭遇したエラー

表題の通りです。
Elastic Beanstalk(以下EB)でのデプロイ時の基本的な流れと、遭遇したエラーを紹介します。
遭遇したエラーというか、ローカル環境のソースをそのままデプロイしてみたときのエラーです。。。
設定漏れ等の参考になれば幸いです。

# 手順
## 事前準備
デプロイしたいアプリケーションのjarかwarを作っておきます。

## 各種設定
今回は、基本的にAWSマネジメントコンソールから操作します。
まず、AWSにログインしたあとのhome画面から、`Elastic Beanstalk`と検索。
スクリーンショット 2020-03-30 11.25.52.png

初回利用時は以下の画面が表示されます。「今すぐ始める」ボタン押す。
スクリーンショ</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>AWS</div>
<div class='tag-cloud-link'>ElasticBeanstalk</div>
<div class='tag-cloud-link'>spring-boot</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/aaaaaayyymmm/items/6fa82521bc7a9c12dd46'>元記事を表示</a></div>
<h3 id=AWS EC2のインスタンスをt2からt3に変える

# 最初に
割と新しいインスタンスはただ単にインスタンスタイプを変えるだけで大丈夫だと思うのですが、古いとENAに対応していないということがあり得ます。
今回変更したかったのはまさにそういうものでした。
OSはCentOS7系でしたが、若干古かったのでENA対応していませんでした。
なので、ENAの対応から始まります。

ENAについては
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking-ena.html

# ENA対応確認
“`
modinfo ena
“`
未対応の場合

“`
modinfo: ERROR: Module ena not found.
“`
が出ると思われる

# update
CentOSならyumでアップデートしてENA対応できるので

“`
sudo yum update
“`
今回古いインスタンスだからかupdateで失敗しました。そういう場合はrepoの情報のmirrorをコメントアウト、baseurlを有効にすればいけるはず。

#

元記事を表示

AWS Command Line Interface (CLI) の出力を `–query` で制御し、パイプラインで活用する

![job_tobisyoku.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486518/bdb20f63-1055-136c-19c4-425689b6a65d.png)

これを

“`
% aws organizations describe-organization
{
“Organization”: {
“MasterAccountEmail”: “master-account@your-organization-example.com”,
“MasterAccountArn”: “arn:aws:organizations::111111111111:account/o-xxxxxxxxxx/111111111111”,
“MasterAccountId”: “111111111111”,
“Id”: “o-xxxxxxxxxx”,
“AvailablePolicyTypes”: [

元記事を表示

OTHERカテゴリの最新記事