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

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

serverless framework でローカルPCの環境変数を参照するやり方

[公式の説明](https://www.serverless.com/framework/docs/providers/aws/guide/variables#referencing-environment-variables)に書いてある様にローカルPCの環境変数を使うには`${env:SOME_VAR}`を使うらしいです。

自分の場合、cloudfrontに事前に取得したACMのARNを設定するために環境変数を使用したい。

“`yaml
CloudFrontDistribution:
Type: AWS::CloudFront::Distribution
Properties:
DistributionConfig:
Aliases:
– ${self:custom.siteName}
Origins:
– DomainName: ${self:custom.siteName}.s3-website-${self:provider.region}.amazonaws.com

元記事を表示

JavaScript/TypeScriptでAWSのARNをパースする方法

JavaScript/TypeScriptでAWSのARNをパースして、サービス、リージョン、アカウントID、リソースIDなどを取得する方法をご紹介します。

## ARNとは

**ARN**はAWS上のリソースを一意に識別するための識別子のことで、`arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint`のような文字列で表されます。
単純そうに見えてそのフォーマットにはいくつかのバリエーションがあり、文字列操作や正規表現でパースしようとするのはバグの温床となりえます。

## パッケージをインストール

ARNをパースするためのnpmパッケージはいくつかあるようですが、AWSが公式に提供している[@aws-sdk/util-arn-parser](https://www.npmjs.com/package/@aws-sdk/util-arn-parser)を使うのがいいでしょう。

“`sh
$ npm i @aws-sdk/util-arn-parser
“`

## ARNをパース

JavaScriptの場合:

元記事を表示

AWS Glueのパーティション毎のジョブ実行

# 概要
初めてデータパイプライン(データ分析基盤)を構築する際にAWS Glueを利用しました。
その際に学んだパーティション毎のDynamicFrame作成処理やDataFrameのrepartition関数などについて備忘録としてまとめていきます。

![スクリーンショット 2020-12-23 6.16.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/8958f1cb-5970-d128-73f9-18177f71c599.png)   ![spark-logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274080/6945e6d5-279f-9fb2-d76f-94981dd21084.png)

– [AWS Glue](https://aws.amazon.com/jp/glue/?whats-new-cards.sort-by=item.additionalFields.postD

元記事を表示

AWS Athenaで役立ちそうな機能をまとめてみた

この記事は、ニフティグループ [Advent Calendar 2020](https://qiita.com/advent-calendar/2020/nifty) 22日目の記事です。
昨日は@matsu-matsuさんで「[PaizaIO API でコードジャッジシステムを作ってみた](https://qiita.com/matsu-matsu/items/49e283ec7b98eb5f02f3)」でした。
私も競技プログラミングをしていたのですが、もし社内でコンテストを開きたいときに非常に役立ちそうですね。

# はじめに
以前にも増して社内でのデータ活用が活発になってきており、ETL処理の知識が重要になってきました。
社内で利用されている1.5年程前に開発されたシステムの一部でAthenaをつかってETL処理をしている箇所があるのですが、下記の問題が発生しています。

* 日次でデータが膨大に増える+クエリを複雑にしすぎてAthenaがTimeout
* View機能の使いすぎ
* 日次でパーティションが増えすぎて、Glueオブジェクトのコストが増加
* パ

元記事を表示

オレのブログを安く運用したい。(aws から Oracle Cloud へ移行(その3))

#はじめに
この記事は「Oracle Cloud Infrastructure(その3) Advent Calendar 2020」の12月23日の記事として投稿です。

さて、今日は3日目。今日から読む人たちのために、改めて、記載すると「今あるaws上のブログで使っているインスタンス2つをOCIへ移行させよう!そして、その先に待っているランニングコスト軽減を得るために!!」が目的になります:sparkles:。

昨日は Oracle Cloud のアカウント(参考:オレのブログを安く運用したい。(aws から Oracle Cloud へ移行(その2)))を作りましたので、今日は AWS から OCI への移行手段を考えてみようと思います。

#移行元(aws)と移行先(OCI)の整理
早速、移行方法を考えてみようと思います。今回、移行するために必要なことでザックリ思いつくところは、こんなところ:thinking:。

元記事を表示

[AWS] CloudWatch SyntheticsでVPC内外からのサービス監視を試す

CloudWatch Syntheticsはシンセティック監視(合成監視)を提供するサービスです。アプリケーションエンドポイント(REST API、URL、ウェブサイトコンテンツ等)の死活監視に利用することができますが、スクリプトを実装することで、Syntheticsの名の通り複雑なワークロード(UIアセットのロード、トランザクション、レイテンシー、ウィザードのフロー、途切れたリンク等)を継続的に検証できるようになります。

今回はそのCloudWatch Syntheticsを使用し、VPC内に構築したWebサイトをVPCの内側と外側から監視することを試してみました。

試した構成:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172826/c406ab0a-f6c2-e447-2962-1bc8104280b0.png)

– 監視対象はQiita似のOSS [Knowledge](https://information-knowledge.support-proj

元記事を表示

【初学者向け】最新版AWS認定ソリューションアーキテクト-アソシエイト(SAA-C02)合格までの道のり【2020年12月】

#はじめに
エンジニア未経験の私がAWS SAAを取得した勉強法についてです。
これからAWS SAA取得を目指す方の参考になればと思います。
なお具体的なサービスの内容については記述致しません。
下記の教材で学べば十分合格できると思います。
![AWSASSスコア.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702780/39908584-1bcd-1c14-02a3-d0cf29f55146.png)

#合格時のスキルセット
・実務未経験
・プログラミング学習を本格的に初めて5ヶ月目
・AWS経験は少々(EC2、RDS、CloudWatch等を使用し、ポートフォリオサイトをデプロイしたことがあるレベル)

#勉強した期間
2020年11月7日から12月18日までの約40日間。
計160時間~200時間は学習にあてたと思います。

#使用した教材
[これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)](https://www.ude

元記事を表示

リザーブドインスタンスはいいぞー。

最近の主流であるAWS。
これを活用していない会社はまずWEB系にはないだろ(いや、azureとかGCPで冗長化している会社は多くあると思いますが)

そんな皆さん御用達のAWSのいいところなんてもうすでにネタが切れて、皆さんに細かい部分まで書かれているはず。
私はそれらを超えるものを書ける器量はないと断言できる。

よって実環境のEC2インスタンス(もちろん私が担当しているサービスのみです)がリザーブインスタンス化するとどれぐらいコストを節約したか、皆さんにご報告いたします。

ぶっちゃけ、価格的に節約金額は2割か3割程度なはずだが、グラフを見ると「かなり減ってるやん、これ」と思ってしまう印象のため勢いあまりご紹介したいと思う次第で、殴り書きしております。

# 現状のインスタンス数(一部のサービス)とコスト

まず、私が担当しているサービスのEC2インスタンス環境を公開しよう!

|インスタンスタイプ |インスタンス数|
|—|—|
|c4.xlarge |6|
|c5.xlarge |1|
|c5n.large |1|
|m4.large |1|
|t2.large |4

元記事を表示

Amazon SNS ってどんなサービス?

## 勉強前イメージ

Amazon S*S っていくつかサービスあってややこしくて覚えれてない
SNSのメッセージ送る的なやつ?

## 調査

### Amazon SNSとは

Amazon Simple Notification Service の略で、
アプリケーション間のメッセージや、HTTP、Eメール、モバイルのプッシュ通知を行うことができます。

### Amazon SNSの特徴

– プッシュ型の配信

発信者のトリガーで配信されるため、ポーリング処理よりメッセージの配信に即時性があります

– 複数プロトコルに対応
– Amazon SQS(Simple Queue Service)
– AWS Lambda
– HTTP
– HTTPS
– Eメール
– SMS(Short Message Service)

上記のマルチプロトコルに対応しています

– 低コスト

前払い料金のない従量課金型で安価で提供されています

– シンプルなAPI

他のアプリケーションとも安易に統合させることができます

## 勉強後イメージ

lamdaとかにも入れ

元記事を表示

本番環境でassets/imagesの配下の画像を表示させたい

ローカル環境では
app/assets/imagesの配下の画像を表示させることができているが、本番環境になると、画像をうまく読み込まない。
これは、ローカルと本番環境では、パスが違うかららしい。

ローカルは以下のコードで画像を表示させることができる。

“`erb
<%= image_tag hoge.png", class:"hoge" %>
“`
本番環境では、`asset_path`を使う必要がある。

“`erb
<%= image_tag asset_path("/images/hoge.png", class:"hoge") %>
“`

元記事を表示

CodePipelineを使ってSPAをS3にデプロイしてみた

#目的
1. S3の静的ページホスティング機能を使ってみたかった。
2. code~系のサービス、どれがどんなこと出来るのか分からないので使ってみたかった。

ので、今回SPAをS3に配置して参照出来るものを作成しました。

#作成した仕組み
![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482308/a2ffed0a-e5c1-8d59-1fe2-adc859ebcc30.png)

##デプロイまでの流れ
1. ローカル端末からGithubへ作業ブランチをpush
2. Githubにて作業ブランチをmasterブランチへマージ
3. masterブランチへのマージをトリガーにCodePipeline起動
4. masterブランチのソースをCodeBuildに渡し、ビルド実行
5. ビルドされたものをホスティング機能を有効にしたS3バケットへ格納

#構築
以下の通り構築した。
##S3バケット作成
任意の公開バケットを作成し、静的ホスティング機能を有効にする

元記事を表示

Terraformの式を途中で改行する方法

Terraformにおける式の改行方法を備忘録的に記載していきます。

“`.bash:使用バージョンとプロバイダ
$ terraform version
Terraform v0.14.2
+ provider registry.terraform.io/hashicorp/aws v3.21.0
“`

# 条件式
**改行したい時は”()”で囲む**
例)S3バケット名が変数として指定されていればその名前を、未指定なら特定の命名規則に従ったバケット名を作成したい時

“`terraform:改行無し
variable bucket_name {
default = “”
}
locals {
bucket_name = var.bucket_name == “” ? “test-bucket-${formatdate(“YYYYMMDDhhmmss”, timestamp())}” : var.bucket_name
}
output “assigned_bucket_name” {
value = local.bucket_name
}
“`

`

元記事を表示

AWS CloudFormationテストツール全部入りDockerfileの作成

# アドベントカレンダーについて
APN Ambassador によるアドベントカレンダー「[Japan APN Ambassador Advent Calendar 2020](https://qiita.com/advent-calendar/2020/japan-apn-ambassador)」での22日目の記事となります。
APN Ambassador の詳細については、下記の記事をご覧ください。

– [APN Ambassadorってなんだ?](https://qiita.com/keizoa/items/343af854447f53f7570b)
– [APN Ambassador Program は世界標準!](https://qiita.com/obayk/items/46d9e04d24489d0c6c43)

なお、投稿内容は私個人の意見であり、所属企業を代表するものではありませんので、ご了承ください。

# はじめに
AWSのCloudFormationをYAMLやJSONで書くときに、文法やパラメータの型などを、テンプレートの中身を目視してレビューするのは大変

元記事を表示

【AWS】AWSのネットワークの基本的な概念

#はじめに
インフラ(サーバーやネットワーク)を自分自身で設定し、Webアプリケーションを公開したいという場合に、**AWSを用いて仮想的にネットワークやサーバーを構築すること**は多いです。

しかし、AWSでは仮想的なネットワークやサーバーを構築する際に**いくつかの特殊な用語や概念を使っていくため、従来の物理的な機器との関係性がわかりにくくなってしまいます。**

そこで今回は、AWSの特にネットワークに関するサービスを利用する際に必要となる**特有の概念**について説明していきたいと思います。

ぜひ最後までご覧になってください。

#本記事の内容
[1. リージョン](リージョン)
[2. アベイラビリティーゾーン](#2-アベイラビリティーゾーン)
[3. VPC](#3-VPC)
[4. サブネット](#4-サブネット)
[5. まとめ](#5-まとめ)
[6. 最後に](#6-最後に)
[7. 参照サイト](#7-参照サイト)

#1. リージョン(Region)
「リージョン(Region)」とは、**AWSの各種サービスが提供されている地域**のことを指し、**デ

元記事を表示

AWS Lambda&Seleniumでサイトから定期的に情報を取得する

#はじめに
[AWS Advent Calender](https://qiita.com/advent-calendar/2020/aws) 22日目担当させていただきます,スライと申します.
#やること
僕が利用しているとあるサイトは毎日0時~6時までメンテナンスでアクセスできないようになっています.そこには大学の講義動画にアクセスするためのURLなどが記載されています.

つまり上記のサイトは一日のうち6時間も停止しているわけです.さらに0時~6時といえば(生活リズムの乱れた)学生のゴールデンタイムです.僕にとってもこれは致命的なので,定期的にどこかに情報を保存することにしました.

#システム構成図
![ac.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269896/7d408309-45f9-2c94-6410-9d66f10f8638.jpeg)

auth.html・・・ユーザー名とパスワードを入力する画面
ac.html・・・ワンタイムパスワード入力およびデータの表示を行う画面
au

元記事を表示

AWS EC2からRDSに接続しようとしたら「ERROR 2003 (HY000): Can’t connect to MySQL server」が出た

今回はlaravelでAWSにデプロイをしたいという思いでAWSのエラーと現在格闘中です。
少し詰まった箇所を備忘録として投稿させて頂きます。

今回のエラーは

“`
ERROR 2003 (HY000): Can’t connect to MySQL server
“`

になります。

###今回、参考にして欲しい方は以下の条件になります

`1 インバウンドルールとポートは合っている!!
2 rdsにあるパブリックアクセシビリティは 「はい」 にした。
3 https://noumenon-th.net/programming/2020/04/10/ec2-rds-laravel/
上記のHPを参考にしている `

#エラー対処1

EC2とRDS(MySQL)でLaravel 構築 チュートリアル


を参考にしてインバウンドルールを新たに作成されたと思います。
デプロイしたいインスタンスにルールをちゃんと設定されましたか?
![“スクリーンショット” 2020-12-21 13.15.54.jpg](ht

元記事を表示

SESでバウンス率が高くなってAWSから警告が来たので対応した話

こんにちは。medibaでAWSを利用してサービスを運営しているエンジニアの小川です。
この記事は[mediba Adventカレンダー](https://qiita.com/advent-calendar/2020/mediba)の22日目という事で、ちょうど最近SESのバウンス率で四苦八苦したので、記録として残したいと思います。

# はじめに
### AWSのSESはバウンス率10%で送信停止される

サービス内でメール送信を行っているサービスも多いと思います。
medibaで運用しているサービスでもメール送信を行っているサービスがあるのですが、
実は、SESはサービスの運用中にバウンス率が10%を超えるとAWSからメールの送信機能を停止する旨が規約に記載されています。

“`
アカウントのバウンス率が 10% を超えた場合、当社はお客様のアカウントによる E メール送信機能を一時的に停止することがあります。
“`

( [バウンス率について](https://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/channe

元記事を表示

【ECS】codepipelineでECSへデプロイする

# ゴール
下記で作成したECS環境へのデプロイをcodepipeline化する
https://qiita.com/chanP_yamazaki/items/1760a952c4da8d3fde19

# S3にソースファイルを作成

“` :imagedefinitions.json
[{“name”:”php-fpm”,”imageUri”:”アカウントID.dkr.ecr.ap-northeast-1.amazonaws.com/ECRリポジトリ名:php-fpm”}]
“`
バージョニング設定を有効にしたS3バケットを作成後
上記ファイルを作成し、zip化してからアップロードする

# codepipelineを作成

|ステップ | 名称 | 設定値 |
|:———-|:———-|:——-|
|ステップ1| パイプライン名 | test |
|ステップ2| ソースプロバイダ | Amazon ECR |
|| リポジトリ名 | test |
|| 画像タグ | php-fpm |

元記事を表示

【AWS】RHELのEBSを交換してみた

Qiita初投稿です。

EBSをスナップショットから復元してアタッチしたらうまく起動しなかった!とか、EBS縮小するのにコピーってどうするの?とか、EBS絡みのネタが頻繁に発生しました。

起動失敗した件はUUIDの重複が原因でしたが、そもそもUUIDって何?というレベルでしたので、一度自分でインスタンス間でEBS交換を検証してみました。

そしたらまあハマるハマる…
その度に調べて色々と知識をつけることができ、なんとか成功したので検証手順、あとハマった箇所も一部の切り分け情報を残してメモとして共有します。

#環境

・作業用インスタンス(work)

“`ruby:AmazonLinux2
[ec2-user@work ~]$ cat /etc/system-release
Amazon Linux release 2 (Karoo)
“`

・コピー元インスタンス(source)
・コピー先EBS(dest)

“`ruby:RHEL
[ec2-user@source ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux

元記事を表示

AWS CDK Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment

#事象

CDK で以下のエラーがずっと出てくる。
プロファイルも合っている、MFAも入れていない、リージョンも合っているのになぜだろう・・・

“`

Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment

“`

#解決策

.configの中を調べる

→ ここの設定が間違っていたり ap-northeast-1 などリージョン指定に誤字があってもこのエラーが発生した

元記事を表示

OTHERカテゴリの最新記事