- 1. Amazon Chimeでオンラインカンファレンスを開催するときの手順
- 2. [Serverless] サーバーレスのテストの難しさと、契約ベースのテストについて
- 3. 【AWSリソース操作自動化】不要なIAMユーザーをすべて削除する
- 4. CodeBuild/CodeDeployをCodePipelineで繋げてデプロイを自動化する
- 5. AWS 初期編 学びmemo
- 6. Session Managerを使って踏み台サーバーなしにPrivate SubnetのEC2インスタンスにSSHする
- 7. 「セキュアで堅牢なAWSアカウント」を実現する CloudFormationテンプレート – ⑥SSHとRDPのアクセスを制限する
- 8. AWS EC2の初期環境構築:Emacs, zsh, Python3(Miniconda)
- 9. S3 で静的ホスティングされている WEB サイトに対しては POST リクエストは送ることができない
- 10. 東京リージョンに Lightsail を使って手軽に Cloud9 を構築する
- 11. AWS Amplify iOS を試してみる
- 12. API GatewayのAPIキーにスロットリングを効かせたりGitHubのSecretsに登録してActionsから利用したりする
- 13. describe-task-definitionの結果をregister-task-definitionで使うために
- 14. laravelで、「シンボリックリンクを貼っても画像が表示されない」を解決する
- 15. ALB + EC2 httpdで構築したサーバーにiPhoneでのみアクセスできない時
- 16. [AWS]WorkSpaces環境構築
- 17. 【AWS】CodeStarでPython Lambda環境を作ってHelloWorldする
- 18. Athenaでは複数のS3ロケーションを指定できないのでその対応方法
- 19. Amazon S3とは
- 20. 【AWS】SESについて
Amazon Chimeでオンラインカンファレンスを開催するときの手順
Amazon Chimeでオンラインカンファレンスを開催するときの手順メモです。
まだ、実開催していないので、仮バージョンになります。
カンファレンス開催にはPro機能が必要なので、無料期間(最大30日)を過ぎた後に継続利用する場合は、AWSマネジメントコンソールやCLI/SDKを利用してChimeアカウント(チーム)を作成して、主催者となるユーザ(課金単位)を登録する必要があるようです。
# 主催者
## 事前準備
1. amazon.comのアカウントを用意する。(以下のいずれか)
– amazon.comのアカウントを新規に作成する。
– AWSアカウントを作成したときに自動的に作成されるamazon.comのアカウントを利用する。(無料期間終了後も継続利用するならこちら)
2. developper potal 登録
– https://developer.amazon.com/ja/apps-and-games/login-with-amazon
– 1のamazon.comのアカウントで登録する。
3. Amazon Chimeアプリをインストー
[Serverless] サーバーレスのテストの難しさと、契約ベースのテストについて
先日、サーバーレスに深くコミットする堀家さん、Kimさんのお二人によるPodcast “[Serverless NOW](https://serverless.fm/first-talk/)” のファーストトークが配信されました。
自粛中の飯談義で開幕したこの配信ですが、感想としてはとても面白かったです。まあ、私のこんな記事よりも是非 Podcast を直接聞いて欲しくはあるのですが、終盤で特に興味を惹かれるトークがあったので自分の理解のためにもサマりつつ関連キーワードを調査してみようと思いました。
興味を持ったのは、サーバーレスにまつわるテストの難しさに関する話です。難しさの解消を目指すアプローチとして「コントラクト(契約)ベース」によるテストを検証されている、とのお話しがありました。「PACT」と呼ばれるツールを使っているそうです。
「サーバーレスのテスト」「契約ベースのテスト」これらの話題に興味を惹かれ、調べてみることにしました。PACTの使い方に関してはこの記事で言及してません。長くなりそうなので、続編記事として別途アウトプットしようと思ってます。
※ 私自身はサーバー
【AWSリソース操作自動化】不要なIAMユーザーをすべて削除する
# はじめに
皆さん、業務でAWSは使われているでしょうか。
よくセキュリティ的な安全性を保つために、不要なユーザーは削除しましょうとかいいますよね。
これは実際業務でも注意しなければならないところです。
たとえば僕も新しいAWSアカウントをセットアップして、それを起点となるアカウントからアシュームロールして使用するとなると、個人ユーザーは不要だったりするのですべて削除しています。# 問題提起
さて、ユーザーをすべて削除するとは言ったものの、実はユーザー削除は手順を踏む必要があり結構面倒です。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting_cli
`ユーザーのパスワード(使用していた場合)を削除します.
ユーザーのアクセスキーを削除します (使用していた場合)。
ユーザーの署名証明書を削除します。
ユーザーの SSH パブリックキーを削除します (使用していた場合)。
ユーザーの Git 認証情報を削除します。
ユーザーの 多要素認証 (
CodeBuild/CodeDeployをCodePipelineで繋げてデプロイを自動化する
# はじめに
複数のアプリケーションを作っているとアプリケーションごとにビルド・デプロイ環境があると思います。
弊チームでは各アプリケーションごとにビルド・デプロイ環境がEC2だったりローカル環境だったりと異なり、個人によってはインストールされているバージョンが違うことによりビルド・デプロイに失敗することがあり、デプロイ作業が属人化しかけ問題に感じていました。
また、新しいメンバーが増えた際に環境を整えてもらう必要があります。
1度環境を整えてしまえば問題はありませんが、CodeBuildとCodeDeployをCodePipelineで繋げてデプロイを自動化しました。# [CodeBuild](https://aws.amazon.com/jp/codebuild/)
CodeBuildに**buildspec.yml**が必要になります。
###buildspec.yml
CodeBuildがビルド時にどのように動作するかを記述したファイルになり、プログラムのルートディレクトリに配置します。
buildspec.ymlの書き方は、[CodeBuild のビルド仕様に関するリファ
AWS 初期編 学びmemo
#他社との違い
・サービスの幅広さと奥深さ
・イノベーションのペース
・グローバルな展開
・最大のパートナーコミュニティ
・セキュリティ###サービスの幅広さと奥深さ
提供しているサービスが165種類###最大のパートナーコミュニティ
コンサルティングパートナーとテクノロジーパートナーは数万社###セキュリティ
58種類のコンプライアンス認定を取得##クラウドコンピューティング
・パブリック
・プライベート
・ハイブリッド##セキュリティ責任の共有(AWS責任共有モデル)
・オペレーティングシステム
・セキュリティグループの共有
・ネットワークとファイヤウォールの設定
Session Managerを使って踏み台サーバーなしにPrivate SubnetのEC2インスタンスにSSHする
# はじめに
今までPublic Subnetに立てた踏み台サーバーに特定のIPアドレスからのSSHを許可し、踏み台サーバー経由でPrivate SubnetのEC2インスタンスにSSHしていました。
世の中的に在宅勤務が増えため、EC2インスタンスを利用するメンバー分のIPアドレスを踏み台サーバーで許可するのはセキュリティ的に心配です。
そこで、Session Managerを使って踏み台サーバーを使わずにPrivate SubnetのEC2インスタンスにSSHするように設定を行ないました。# 目的
– Private Subnetに起動したEC2インスタンスに踏み台サーバーなしにSSHする# 前提条件
– AWS CLIのバージョンが**1.16.12**以上
– SSM Agentのバージョンが**2.3.672.0**以上# 設定
### SSM Agentのバージョン確認
SSHしたいEC2インスタンスにSSM Agentがインストールされている必要があり、SSM Agentのバージョンが**2.3.672.0**以上である必要があります。
AWS CLIを使って
「セキュアで堅牢なAWSアカウント」を実現する CloudFormationテンプレート – ⑥SSHとRDPのアクセスを制限する
# はじめに
AWSには、アカウントやリソースへの脅威検知に対応した、**AWS IAM Access Analyzer**, **AWS Security Hub**, **Amazon Inspector**, **Amazon GuardDuty**, **AWS CloudTrail**, **AWS Config** などのサービスが用意されています。
また、[**CIS AWS Foundations Benchmark**](https://d1.awsstatic.com/whitepapers/compliance/AWS_CIS_Foundations_Benchmark.pdf) という**セキュリティガイドライン**が公開されており、このガイドラインは、**AWSアカウントをセキュアに保つために必要なAWSのセキュリティ設定**を集めた**ベストプラクティス集**として活用できます。自身のAWSアカウントがこのガイドラインにどの程度準拠しているのかを確認/監査する手段として、**AWS Security Hub**で、**CIS AWS Foundation
AWS EC2の初期環境構築:Emacs, zsh, Python3(Miniconda)
# TL; DR
まっさらなEC2インスタンスにログインして作業環境を構築した際のメモ
– `emacs-nox`をリポジトリから導入
– `zsh`をリポジトリから導入
– `/etc/passwd`を編集しシェルを変更
– `/etc/locale.conf`を編集し文字化けを解消
– `.zshrc`を編集し変更を適用
– `Miniconda3`をインストーラから導入
– `/path/to/conda init zsh`を実行# はじめに
本記事ではAmazon Linux 2を使っているが,Ubuntu Serverを使う場合もあるため,以下に注意する.
– Amazon Linux 2のデフォルトユーザ名は`ec2-user`になる.Ubuntu Serverでは`ubuntu`になる.
– Amazon Linux 2はRedHat系なので,パッケージマネージャには`apt`ではなく`yum`を使う.
# リポジトリの初期化
“`
$ sudo yum update
“`Debian系の`sudo apt updat
S3 で静的ホスティングされている WEB サイトに対しては POST リクエストは送ることができない
# 概要
web で sign in with apple を実装しようとしたときに、S3 で静的ホスティングされている WEB サイトに対して POST リクエストのコールバックをすると 405(Method Not Allowed) エラーが起こりました。そのことがきっかけで S3 で静的ホスティングされている WEB サイトに対して POST リクエストを許可する方法を調べました。
# 結果
S3 で静的ホスティングされている WEB サイトに対して POST リクエストを行うことはできないことがわかりました。
2020/04/16 時点のスクリーンショット> オブジェクトに対しては GET リクエストと HEAD リクエストのみを
東京リージョンに Lightsail を使って手軽に Cloud9 を構築する
Amazon Lightsail を使って Cloud9 を構築したいと思います。
東京リージョンに作成します。# 環境
AWS アカウント: アクセス権限 Lightsail, Cloud9# Lightsail インスタンス作成
Lightsail の `Linux/Unix` `アプリ + OS` `Node.js` を選択し、インスタンスを作成します。
Node.js は Cloud9 が使用します。
インスタンス名、プランは任意に設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123649/145a8527-4cee-2874-b1d0-2d4529a4b0b3.png)次に `ネットワーキング` タブから `静的 IP の作成` をクリックし、作成したインスタンスにアタッチします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123649/7fb
AWS Amplify iOS を試してみる
[AWS Amplify Androidを試したい方はこちらを参照ください](https://qiita.com/ksato2032/items/008c4605eb9bebd841aa)
# はじめに
AWS Amplify iOS を[Getting Started](https://aws-amplify.github.io/docs/sdk/ios/start)にしたがって試してみる。
以降の各章はGetting Startedに合わせている。# Prerequisites
## Amplify CLIのインストールと設定
### node.js のインストール
バージョン 12.14.0
https://nodejs.org/en/### Amplify CLI のインストール
“`shell
npm install -g @aws-amplify/cli
“`### Amplify CLI の設定
“`shell
amplify configure
“`ブラウザにAWSログイン画面が出るため、ログインしておく。
入力を続けると、IAM ユーザ
API GatewayのAPIキーにスロットリングを効かせたりGitHubのSecretsに登録してActionsから利用したりする
# API GatewayのAPIキーにスロットリングを効かせたりGitHubのSecretsに登録してActionsから利用したりする
## はじめに
先日、[静岡県オープンデータカタログ(csv)からCOVID-19対策サイトのデータ(json)に変換して取得するAPI](https://qiita.com/w2or3w/items/55ff3159aea0c7a9e096)という記事を書きました。この時点(4/11)で「認証なし」だったのですが、変な使われ方して課金されてしまったらイヤだなぁと思いまして、遅ればせながらAPIキーによる認証とスロットリングを効かせましたので記事にします。
またこのAPIはGitHub Actionsから呼んで利用しているのですが、そこでのAPIキーの管理方法(Secrets)についても記載します。## API Gatewayに対してAPIキーによる認証設定をする
[この記事](https://qiita.com/w2or3w/items/55ff3159aea0c7a9e096#lambda%E3%82%92%E5%91%BC%E3%81
describe-task-definitionの結果をregister-task-definitionで使うために
※この記事は以下の記事に触発されて書きました。
https://dev.classmethod.jp/articles/describe-task-definition-to-register-task-definition/上記記事の以下の部分をRubyでやってみた。
> 既存のタスク定義をdescribe-task-definitionで取得して、register-task-definitionで登録するには、 taskDefinition の中身を取り出して、 status, compatibilities, taskDefinitionArn, requiresAttributes, revision を削除することで、登録する事ができます!– `describe-task-definition`の標準出力をRubyで処理する。そしてファイル(`taskDef.json`)に出力する。
“`shell
$ aws ecs describe-task-definition –task-definition sampleTask:1 | ruby -r JSON -e
laravelで、「シンボリックリンクを貼っても画像が表示されない」を解決する
[LaravelをAWSのEC2へデプロイする手順](https://qiita.com/masataka715/items/6e46f1f5e53bdff6cd3d)を参考にさせていただき、EC2の中に作成中のLaravelアプリケーションをデプロイしました。
基本的なCRUD処理ができる掲示板アプリです。ローカル環境上では、プロフィール画像を指定しなければ、デフォルトの画像が割り当てられるようにしていました。
EC2にデプロイした後に、同じような形でデフォルト画像を表示しようと思ったのですが、表示されませんでした。
一度、public/storageを削除し、php artisan storage:link として、再度シンボリックリンクを貼ってもうまくいきませんでした。
現在、storage/public配下に、noimage.pngが存在している状態です。Laravelのバージョンは、 5.8.37です。
##シンボリックリンクとは??
ショートカットのようなものです。
今回の例で言うと、laravelアプリの、トップのpublicが、ウェブ上に公開されるディレ
ALB + EC2 httpdで構築したサーバーにiPhoneでのみアクセスできない時
# 事象
ALB + EC2 httpdで構築したWebサーバーに、iPhoneでアクセスをすると
「このサイトにアクセスできません」
って怒られた。SafariでもChromeでもダメ。
PC・Androidは問題なくアクセス可能。# 結論
HTTP/2で通信すると上記事象が発生しうるので、HTTP/1.1にする。# 手順
### 1. ALBのHTTP/2の無効化
EC2 -> ロードバランサー -> ALBを選択 -> 説明 -> 属性の編集 -> HTTP/2 有効化のチェックを外す。### 2. httpd.confの設定確認
“`httpd.conf
Protocols h2 h2c http/1.1
“`ここを、以下に書き換える。
“`httpd.conf
Protocols http/1.1
“`書き換えたら、httpdを再起動してiPhoneで確認。
[AWS]WorkSpaces環境構築
## はじめに
お久しぶりです、なじむです。
前回の更新からだいぶ間が空いてしまいました。端的に言うと凄い忙しく、休日はHPを回復するだけの日々を送っていました。
さてさて、コロナの影響を受けて弊社でも在宅勤務が始まりました。それに伴い、WorkSpacesを触ってみたので、その備忘録として記事を起こします。セキュリティ面は甘々かもしれませんが、先ずは動くよ、というところまでです。## やりたいこと
今回は以下のような観点で構築しました。
– WorkSpacesを利用して、自宅からでも作業できる環境を構築したい!
– WorkSpacesにてブラウザからGoogle Drive等にアクセスされてしまうとデータの持ち出しにつながるため、URLフィルタリングをしたい!
– WorkSpacesから自宅PCへのクリップボードコピーがされてしまうとデータの持ち出しにつながる可能性があるため、それは防ぎたい## 前提
作業者がAdministratorAccessを持っていることを想定しています。
## 全体概要図
![全体概要図.png](https://qiita-im
【AWS】CodeStarでPython Lambda環境を作ってHelloWorldする
## はじめに
### 概要
このところ [AWS CodeStar](https://aws.amazon.com/jp/codestar/) を使った開発を行っています。
CodeStarはざっくりいうとCI/CDサービスとダッシュボードをまとめたサービスという理解でいます。
CI/CDツールもパッケージ化して作成してくれるので書いたコードがすぐに反映されるのでちゃちゃっと試したいときに便利なものではあります。
ただ作り込んでいくと(AWS初心者の私は)権限周りで躓くことが結構ありました。
今後S3アクセスやLambdaのVPC配置、EC2プロジェクトについても随時更新していく予定です。まずはローカルのテキストエディタでコードを編集・Pushして変更を確認するところまで。
### 前提
– 作業日時:2020/4/11
– ローカル環境
– PC:Mac
– OS:Catalina
– インストール済みコマンド:Git CLI, AWS CLI
– AWS環境
– ユーザー:root
– AWSリージョン:東京(ap-northeast-1
Athenaでは複数のS3ロケーションを指定できないのでその対応方法
# Athenaでは単一のディレクトリしかS3を指定できない
2020年4月現在Athenaでは複数のS3ディレクトリ(ディレクトリは存在しないが便宜上ディレクトリと呼びます)を指定できません。
扱うデータを集中させればいいのですが、場合によってはそう行かないこともありえます。例えば以下のようなデータ構成があります。
“`
s3://bucket_name/2019/05/01/foo/1.csv
s3://bucket_name/2019/05/02/foo/1.csv
s3://bucket_name/2019/05/03/foo/1.csv
…
s3://bucket_name/2019/05/01/bar/1.csv
s3://bucket_name/2019/05/02/bar/1.csv
s3://bucket_name/2019/05/03/bar/1.csv
“`上記のような構造で、`foo`テーブルと`bar`テーブルを作成したいのだが、単一のディレクトリを指定するとどうしても両方のファイルが混ざります。
同一形式のファイルであればSQLで対応すれば
Amazon S3とは
#結論S3とは
正式にはAmazon S3と言う。厳密にはAmazon Simple Storage ServiceというAWSの中のサービスの1つ。省略してS3と呼んでいる。
#Amazon Simple Storage Serviceとは
Amazon Web Serviceが提供しているオンラインストレージのWebサービス。2006年にWebサービスを開始し、データに関する幅広いサービスを提供している。
###何がそんなに良いの?
料金設定がとても安価な上に、公式が99.999999999%の耐久性という安全性を兼ね備える。
またデータを無制限にアップロードできる。
【AWS】SESについて
# Amazon Simple Email Service (SES)とは
フルマネージド型 / サーバレス型のコスト効率に優れたEメールサービス– スケーラブルな構成で信頼性が高いマネージド型
– メール送信:トランザクションメールなどの高品質なコンテンツを顧客に送信可能
– メール受信:受信したメールをトリガーにS3やLambdaなどを起動可能
– バウンス処理:メールが送れなかった場合の処理を規定する事ができる## SESのメール送信方法
単なるメールサーバーとして利用するだけでなく、アプリから自動でメール送信や連携処理に利用可能### HTTP REST API
下記のAPIが存在します。
– SendEmail API
From/To/Subject/Bodyだけ用意すればSES側でメッセージを生成して送信する
– SendRawEmail API
メッセージ全体をアプリケーション側で生成して送信する
– 認証
AWSアクセスキーとシークレットアクセスキーを使用### SMTPエンドポイント
・ 生成済みEmailメッセージを受け取ってSESのSM