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

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

re:Invent の SageMaker Workshopに参加してついでに優勝してきた話

本記事はNTTドコモSI部アドベントカレンダー20日目の記事です。
##はじめに
こんにちは。NTTドコモ2年目の矢吹です。
業務ではストリーミング処理基盤の開発やネットワークの分析などに取り組んでいます。
先日、AWSが毎年ラスベガスで開催している**re:Invent 2019**というイベントに参加してきました。
そこで参加した**「Experience the real-world ML lifecycle with Amazon SageMaker」**
というMLシステムの構築についてのワークショップ(メインはSageMakerを利用したモデル作成, デプロイ)の内容について書きます。

## ワークショップの内容
### セッション概要

> In this workshop, you get hands-on experience taking custom machine learning (ML) solutions from prototype to production.
> You use Amazon SageMaker to build, train,

元記事を表示

AWS re:Invent の歩き方

#### AWS re:Invent の歩き方

2019.12.1-6 ラスベガスで開催された [AWS re:Invent](http://reinvent.awseventsjapan.com/) に初めて参加してきました。発表内容は[AWSの公式ページ](https://aws.amazon.com/jp/new/reinvent/) にまとめられているので、ここでは初参加者としてのre:Inventの体験を共有します。

##### 最近日本国内で行われるAWSイベントの感想
– 情報が薄い
– サービスの紹介か、使ってみたで終わるものが多い
– スピーカーはAWSのサービスを開発した人ではない

##### AWS re:Inventの概要
– 参加者: 65000人以上
– 会場: 6箇所以上
– セッション数:3600以上
– 日数:6日
– Key Note:5
– New Release: 77

##### セッションのタイプ
– 20-Minute Presentation : 短いセッション
– Activity : パーティやイベント系。4k/8k Run、

元記事を表示

AWS CLIでAmazon S3のバケットにあるファイルから最新のファイル名を1つ取得する

便利だったのでメモ。

## やりたいこと

以下のように特定のバケットにあるファイルから最新のファイル名を1つ取得したい。

“`console
> aws s3 ls s3://<バケット名>/

2019-11-26 09:01:32 0 hoge1.txt
2019-11-26 09:01:54 0 hoge2.txt
2019-11-26 09:01:25 0 hoge3.txt
2019-11-26 09:01:46 0 hoge4.txt
2019-11-26 09:01:39 0 hoge5.txt

# 「hoge2.txt」がほしい

> <いい感じのコマンド>

hoge2.txt
“`

`aws s3 ls` に最終更新日時が含まれているのでできなくはなかろうと思って調べて試してみました。

## いい感じのコマンド

“`console
> aws s3 ls s3://<バケット名>/ | sort -nr | head -n 1 | awk ‘{print

元記事を表示

超安価&超簡単にウェブサイト運用しよう。CircleCIで、GitHubプッシュ→自動でビルド→S3に自動デプロイ

# はじめに
S3の静的ウェブサイトホスティング機能をご存じでしょうか。
https://aws.amazon.com/jp/s3-hosting/

AWSのストレージサービスであるS3に
HTMLやCSS、JSなどの
ソースファイルをアップロードし、
S3のホスティング機能を有効にするだけで、
非常に安価に、大容量、優れた耐久性のウェブサイトを公開できるという機能です。
 
 

AWSの管理画面から手動でソースファイルをアップロードすれば、
すぐにでもこの静的ウェブサイトホスティングを利用することができます。
https://qiita.com/suuungwoo/items/2e49c3008a04e48581ed
https://qiita.com/dogwood008/items/a92abae789f4b0466f38
 
 

今回は、このS3静的ウェブサイトホスティング機能をさらに便利に利用するために、
CircleCIを利用して

GitHubにソースプッシュ

ソースビルド

S3にデプロイ

という自動の処理を作ります。
 
 

今回は**静的**ウェブサ

元記事を表示

オレオレAWSチートシート

【適時更新】AWSであれがしたいとなったときに自分が見るやつ

# AWS CLI

## プロファイルを分けて使う

アカウントごとにconfigureを実施し、

“`
$ aws configure –profile プロファイル名
“`

使う場合は`–profile=プロファイル名`をコマンドの最後に付与する

“`:例
$ aws s3 ls –profile=dev
“`

– https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-configure.html

# ECR

## イメージをローカルPCに取得
pullしてくる

“`
$ aws ecr get-login –no-include-email –profile=dev
$ (上記の出力結果をコピペしてdocker loginを実行)
$ docker pull ECRのURI
“`

– https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/

元記事を表示

AWSクロスアカウントでS3を読み書きする方法と注意点などを2019年最後にまとめてみた

こんにちは。皆さんあんまりクロスアカウント[^1]ってやっていないのでしょうか。
クロスアカウントのS3アクセスについて、Tipsが1箇所にまとまっておらず個人的に情報収集に少し手こずったのでS3クロスアカウント周りで知っている情報をこちらにまとめて今年2019年を納めたいと思います!
**※以下、「クロスアカウント」は長いのでCAと略したり略さなかったりしますのでご注意**

[^1]: 複数のAWSアカウント間で処理を行ったり、データ連携を行うこと

# やりたいこと
– 2つのAWSアカウント(`アカウントA`と`アカウントB`)がある状況で
– アカウントBに作成したS3バケット(`バケットB`)に、アカウントAのユーザ(`ユーザA`)でファイルを書き込む
– アカウントAでもアカウントBでもS3ファイルのReadができるようにする
– 更に、ちょっと急にピンポイントな話ですが、Glue(pyspark)によるクロスアカウントS3書き込みも行いたい、とする

# 前提
– 一部プログラム例がありますが、すべてTypeScript(Node.js)のコードになります。
– Glu

元記事を表示

「AWS CDK」のセットアップ&操作方法(Mac)

## 「AWS CDK」とは?

「AWS Cloud Development Kit」の略であり、OSSのインフラ構成ツールです。
PythonやTypeScriptなどの言語でCloudFormationのコードを記述するイメージです。

TerraformやServerless Frameworkと異なり、AWSの公式ツールのため、マルチクラウドでないならCDKを選択するのはありだと思います。

v1.0.0がリリースされたのが2019/07/12であり、新しいツールです。
https://github.com/aws/aws-cdk/releases

## 環境

– OS:macOS Catalina 10.15
– CDK:1.19.0 (build 5597bbe)
– Node.js:v12.14.0
– npm:6.13.4

## 前提条件

– Node.jsとnpmをインストールしている

## セットアップ

### CDKのインストール

npmでグローバルにインストールします。

“`shell-session
$ npm install -g aws

元記事を表示

Terraform × パラメータストアでRDSの機密情報をセキュアに扱う

こんにちは。むらってぃーです。
この記事は[AWS Advent Calendar 2019](https://qiita.com/advent-calendar/2019/aws) 20日目の記事です。

# はじめに
皆さんはRDSのインスタンスを立てた際、下記の情報はどこで管理していますか?

* DBホスト名
* DBユーザー名
* DBパスワード

などなど。

Laravelなど、Webフレームワークなどを使ったアプリケーションでこのような情報を使用するとき、DBパスワードなど機密情報の扱いに困る方は多いのではないでしょうか。

* アプリケーションコード内に直接記述する?
* .envファイルに環境変数として書いておく?
* プラットフォーム側で外部から環境変数として注入する?

様々な管理方法があるかと思います。
しかし、**DBパスワードは秘匿情報であるため、gitに載せるなどのことはなるべく避けたい**ですよね。

今回は、業務でTerraformを使う中で知見として得た、「gitやドキュメントなどにパスワードを乗せず、セキュアにRDSの秘匿情報を扱う」方法を紹介し

元記事を表示

AI Platform(GCP)でGPU 100個同時に使いテンションあがった

aiplatform_jobs.gif

ひゃっはー

# 概要

機械学習基盤系のサービスとしてAWSのSageMakerが有名かと思いますが
本投稿ではGCPの類似サービスAI Platformを使ってGPU 100並列同時に動かした話をします。

# AI Platformでできること

SageMakerと似た感じで、AI Platformでは以下のようにうたっています。
([公式ドキュメント](https://cloud.google.com/ml-engine/docs/technical-overview?hl=ja)より引用)

> AI Platform を使用して、ML ワークフローの次の段階を管理できます。
![ml-workflow.png](https://qiita-image-store

元記事を表示

めちゃくちゃ簡単 Amazon Rekognition

AIとか画像解析とか聞くとなんか難しそうだけど、Amazonが提供しているサービスを使うと簡単に実装できるので、試してみた!

## Amazon Rekognitionとは
Amazon Rekognition では、イメージ分析とビデオ分析をアプリケーションに簡単に追加することができます。Amazon Rekognition API にイメージやビデオを指定するだけで、このサービスによってモノ、人物、テキスト、シーン、アクティビティを識別できます。不適切なコンテンツも検出できます。また、Amazon Rekognition では、高精度な顔分析および顔認識も可能です。顔の検出、分析、比較は、ユーザー検証、カタログ作成、人数計数、公共安全など、多岐にわたって活用できます。

## ひとまず実装してみる
環境を作成するのが手間なのでLambdaを使って実装。
プログラムはLambdaで提供があるPython 3.7。

### 顔認識
人物が写っている2枚の写真から同一人物かどうかを判定する。
S3にアップされている写真を比較するサンプルプログラム。

“`Python
from b

元記事を表示

Terraform で CodePipeline を管理する場合の注意点

CodePipeline を作っていてでハマったことの備忘録。

## Terraform で管理する場合の注意点

* OAuth Token の差分が plan/apply のたびに発生する
* API get-CodePipeline が OAuth Token を取得できないため、Terraform や他のどんなツールを使っても冪等にできない
* `aws codepipeline get-codepipeline` を実行すると、 `****` という表示になって隠されている
* 根本的な解決方法がなく、今も Open Issue になっている[\[1\]][1]
* GitHub webhook も定義する場合は、GitHub で発行した OAuth Token の scope に `admin:repo_hook` も必要[\[2\]][2]
* GitHub webhook は update できない
* 一度作成したリソースを修正したい場合は、 taint してから apply する
* Custom Action を定

元記事を表示

CodeDeployを雰囲気だけ理解する。

こちらはCodeDeploy触ってみようとtutorialをやったけど成功しなかったつまらない話です。

ただCodeDeployの流れはなんとなく掴めたので備忘録としてまとめておく。

## 追記 12/19

成功しました。

* [超ミニマムなチュートリアルを通してCodeDeployを理解する。](https://qiita.com/Kept1994/items/fa3516fa8fe326b4ac3b)
* [超ミニマムなチュートリアルを通してCodeDeployを理解する2(AutoScaling編)](https://qiita.com/Kept1994/items/8abeeb8fa0980f95ab56)

## たぶんやってることはこんなこと

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406130/c8e1d74f-7f60-fccf-24b6-1b6ee5d3b5f0.png)

## EC2にAgentを導入する。

デフォルトではCodeDeployから

元記事を表示

超ミニマムなチュートリアルを通してCodeDeployを理解する2(AutoScaling編)

前回記事の続きです。

[超ミニマムなチュートリアルを通してCodeDeployを理解する。](https://qiita.com/Kept1994/items/fa3516fa8fe326b4ac3b)

本記事で取り上げた通り、CodeDeployによるデプロイは以下の要領で行われます。

* `appspec.yml`とデプロイしたいファイルをzip化してS3に格納しておく。
* CodeDeployではデプロイ先と対象のファイルや設定を指定する。

今回は、ロードバランサ配下のAutoScalingGroup(ASG)のインスタンスを対象として`index.html`をデプロイすることを試してみます。

# 1. ASGを用意する。

別記事にまとめたので参考としてください。
→ [独自VPCでEC2のAutoScalingくらい秒で組めるようになりたい](https://qiita.com/Kept1994/items/0a72cec68761084a12e4)

ただし、注意すべき変更箇所があります。
前回のCodeDeployの記事のStepにも含めましたが、デプロイさせ

元記事を表示

EC2とロードバランサでwebサービスを公開する

## はじめに
学生がAWSからサーバを借りてウェブサービスを公開する時、EC2 + 固定IPで公開する場合が多いかと思います。
ですが、AWSの夏インターンに参加した際にAWSにはELB(Elastic Load Balancing)というサービスがあり、必ずそれを設置していました。
ここでは、EC2単体ではない一歩進んだWebサービス公開の方法を紹介します。

## ロードバランサ設置のメリット
WEBサーバが1台でもELBをおいた方がいい理由はこちら書かれています
– https://dev.classmethod.jp/cloud/aws/benefit_elb_with_one_ec2/

負荷分散目的で設置されるロードバランサですが、次の理由でサーバが1台でもロードバランサを設置した方が良いらしいです。

– インスタンス(仮想マシンのこと)の差し替えが容易
– ELB(ロードバランサのこと)のヘルスチェックで死活監視が可能。別のサービスで通知も可能に
– 無料SSL証明書(ドメイン証明書)が利用できる
– などなど

## AWSアカウントの準備
これまでは、クレジッ

元記事を表示

AWS CLIでAMIリージョン間コピーを行うコマンド

AWS CLIの初期設定は終わっているものとします。

## EC2:インスタンスID確認コマンド
まずはAMIを作成するEC2インスタンスを確認。
### タグ:Name、値がMyInstanceのインスタンスの情報を取得する場合
“`
aws ec2 describe-instances –filters “Name=tag:Name,Values=MyInstance”
“`
### インスタンスIDを指定して取得する場合
“`
aws ec2 describe-instances –instance-ids {instance-id}
“`

## AMI作成コマンド
“`
aws ec2 create-image –instance-id {instanceID} –name {ami-name} –description {description} –reboot
“`
{ami-name}は任意のAMI名。
AMI作成時はデータの整合性を保証するために再起動を行うのがデフォルトの動きになっている。–no-rebootを指定すると再起動しないが、デ

元記事を表示

UE4でaws sdk cppを使ってS3アップロードをするプラグインを作ってみた

aws sdk cppを利用してTexture2DをpngでAWS S3に[uuid].pngの名前でアップロード([Bucket名は決め打ち](https://github.com/mechamogera/UE4S3UploadPlugin/blob/41c80a4446f6c6cc274a74f09e44714c2e21f2de/Plugins/AWSSDK/Source/AWSSDK/Public/S3UploadProxy.h#L40))しPre-SignedURLを取得する機能を提供するプラグインを作成してみました。
Windows64bit環境にしか対応してません。
提供された機能はBlueprintで以下のように利用できます。

![bpuploadtexture.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16768/cbe2afaa-c9dd-2de5-766e-3393518d05ae.png)

サンプルプロジェクトは以下に載せてみています。
https://github.com

元記事を表示

openssl コマンドを使用して AWSのsmtp サーバからメールを送信する

## 前提条件

– 送信元 From メールアドレスも送信先 To メールアドレスも SES で認証済みであること

## メール送信できる IAM ユーザーを作成する

“`json:policy
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: “ses:SendRawEmail”,
“Resource”: “*”
}
]
}
“`

## SMTP ユーザ名、パスワードを作成する

1. SMTP ユーザー名は AWS アクセスキー ID と同じ

1. SMTP パスワードを IAM シークレットアクセスキーから生成する

1. 以下のコードで変換する(Bash)

1. export AWS_SECRET_ACCESS_KEY={IAM シークレットアクセスキー} 後、bash実行

“`bash
#!/usr/bin/env

元記事を表示

Lambda関数をそのままAWS Batchに乗せ換える(Python3.6限定)

この記事は [アラタナアドベントカレンダー2019](https://qiita.com/advent-calendar/2019/aratana) 19日目の記事です。

Serverlessでサービスを展開していると、どうしてもRDBを使いたくなったり、どこかでバッチ処理をしたくなったりしますよね。

RDBについては、RDS ProxyがLambdaから使用可能になりそうでいい兆しですね。

[Amazon RDS Proxy](https://aws.amazon.com/jp/rds/proxy/)

バッチ処理についてはかつてからAWS Batchというのが用意されています。

これはECRに用意したDockerを使って処理を実行できる環境です。Queueも用意されているのでかなり自由なバッチ設計ができると思います。

さて、Serverlessで環境を構築している場合、まず選択肢として、AWSBatchよりもLambdaを考えると思います。

StepFunctionやQueue、S3などのイベント、並行処理を駆使して構築する場合もあるでしょう。

ただ、Lambdaの実

元記事を表示

[Datadog]IntegrationがないツールでもDatadogからアラート通知したい

## はじめに

こんにちは、なじむです。
今回はこれまでのCFnの記事からは離れて、[Datadog Advent Calendar 2019](https://qiita.com/advent-calendar/2019/datadog)の12/20(金)分の記事です。[Datadog](https://www.datadoghq.com/product/)にはたくさんのIntegrationがありますが、たまに無いものもあります。「えーイベントの通知は全部Datadogでやりたい」という時に使えるかもしれない「なんちゃってIntegration」です。今回はコンテナセキュリティツールである[Sysdig](https://sysdig.com/)を使用します。

## やりたいこと

障害発生時の運用として以下を考えていました。

**障害発生時に確認するサイト(ダッシュボード)はDatadogに一本化したい!**

いくつかの監視ツールを使用していると「ホスト障害の時はDatadogを見る」、「コンテナ障害の時はSysdigを見る」というように障害の起きた個所で見るべきサイトが

元記事を表示

VXLAN を使って、EC2 で Broadcast を試してみる

たまーに、VPC内でブロードキャストを使いたい時があるのですが、対応していないので自力でなんとかする必要があります。
方法の一つとして VXLAN を利用できるので必要最小限のメモを残しておきます。

# 構成
– シンプルに EC2(10.0.0.0/24) を2台用意
– VXLAN を使って Overlay Network(192.168.1.0/24) を構築
– 192.168.1.0/24 でブロードキャストをためす
– OS は Amazon Linux 2

__EC2-A__

* ENI IP: 10.0.12.137/24
* vxlan interface ip: 192.168.1.1/24
* AZ: us-east1-1c

__EC2-B__

* ENI IP: 10.0.12.99/24
* vxlan interface ip: 192.168.1.2/24
* AZ: us-east1-1c

# 設定

本当に必要最小限の設定だけします。
それぞれのEC2で、vxlan interface を作成し、IPをつけます。

“`bash:EC2

元記事を表示

OTHERカテゴリの最新記事